@3sln/nook 0.0.0-stage → 0.1.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.
@@ -0,0 +1,1876 @@
1
+ export default `
2
+ :host {
3
+ display: block;
4
+ position: relative;
5
+ min-width: 0;
6
+ -webkit-tap-highlight-color: transparent;
7
+ --nook-accent: light-dark(#7560e8, #ad9bff);
8
+ --nook-on-accent: light-dark(#fff, #211b35);
9
+ --nook-surface: light-dark(#fff, #25232d);
10
+ --nook-text: light-dark(#232237, #f2eef8);
11
+ --nook-muted: light-dark(#77768a, #b7b0c5);
12
+ --nook-border: light-dark(#e9e7ef, #484151);
13
+ --nook-material-background: color-mix(
14
+ in srgb,
15
+ var(--nook-surface) 84%,
16
+ transparent
17
+ );
18
+ --nook-material-blur: 24px;
19
+ --nook-radius: 16px;
20
+ --nook-shadow:
21
+ 0 8px 32px light-dark(#241a4918, #00000048),
22
+ 0 2px 8px light-dark(#241a490a, #00000024);
23
+ --nook-duration: 180ms;
24
+ --nook-pop-duration: 260ms;
25
+ --nook-settle-duration: 240ms;
26
+ --nook-exit-duration: 120ms;
27
+ --nook-font: system-ui, sans-serif;
28
+ --nook-text-xs: 12px;
29
+ --nook-text-sm: 13px;
30
+ --nook-text-md: 14px;
31
+ --nook-text-lg: 16px;
32
+ --nook-line-height: 1.55;
33
+ --nook-heading-weight: 600;
34
+ --nook-label-weight: 550;
35
+ --nook-z: 10000;
36
+ --nook-padding: 16px;
37
+ --nook-gap: 8px;
38
+ --nook-item-size: 48px;
39
+ --nook-root-max-items: 5;
40
+ --nook-surface-offset: 56px;
41
+ --nook-edge-gap: 12px;
42
+ }
43
+ * {
44
+ -webkit-tap-highlight-color: transparent;
45
+ box-sizing: border-box;
46
+ }
47
+ button,
48
+ input,
49
+ select {
50
+ font: inherit;
51
+ }
52
+ button {
53
+ color: inherit;
54
+ cursor: pointer;
55
+ }
56
+ button:focus-visible,
57
+ input:focus-visible,
58
+ select:focus-visible,
59
+ a:focus-visible {
60
+ outline: 3px solid var(--nook-accent);
61
+ outline-offset: 3px;
62
+ }
63
+ button {
64
+ border: 0;
65
+ }
66
+ [hidden] {
67
+ display: none !important;
68
+ }
69
+ .root-measure {
70
+ width: var(--nook-item-size);
71
+ margin-inline-end: var(--nook-gap);
72
+ margin-block-start: var(--nook-surface-offset);
73
+ margin-block-end: var(--nook-edge-gap);
74
+ }
75
+ .anchor {
76
+ font: var(--nook-text-md)/var(--nook-line-height) var(--nook-font);
77
+ color: var(--nook-text);
78
+ color-scheme: var(--nook-color-scheme, var(--nook-inherited-color-scheme, light dark));
79
+ text-align: start;
80
+ -webkit-text-size-adjust: 100%;
81
+ text-size-adjust: 100%;
82
+ position: fixed;
83
+ z-index: var(--nook-z);
84
+ pointer-events: none;
85
+ }
86
+ .anchor > * {
87
+ pointer-events: auto;
88
+ }
89
+ .anchor[data-corner^="bottom"] {
90
+ bottom: var(--nook-bound-bottom, env(safe-area-inset-bottom, 0px));
91
+ }
92
+ .anchor[data-corner^="top"] {
93
+ top: var(--nook-bound-top, env(safe-area-inset-top, 0px));
94
+ }
95
+ .anchor[data-corner$="right"] {
96
+ right: var(--nook-bound-right, env(safe-area-inset-right, 0px));
97
+ }
98
+ .anchor[data-corner$="left"] {
99
+ left: var(--nook-bound-left, env(safe-area-inset-left, 0px));
100
+ }
101
+ .handle {
102
+ display: grid;
103
+ place-items: center;
104
+ position: relative;
105
+ width: 48px;
106
+ height: 48px;
107
+ background: transparent;
108
+ touch-action: none;
109
+ user-select: none;
110
+ -webkit-user-select: none;
111
+ transition:
112
+ opacity 120ms ease,
113
+ transform 120ms ease;
114
+ }
115
+ .handle:before {
116
+ content: "";
117
+ position: absolute;
118
+ inset: 16px 0 0 16px;
119
+ background: var(--nook-accent);
120
+ border-radius: 100% 0 0 0;
121
+ transition: filter var(--nook-duration);
122
+ }
123
+ .handle:hover:before {
124
+ filter: brightness(1.12);
125
+ }
126
+ .mark svg {
127
+ display: block;
128
+ width: 100%;
129
+ height: 100%;
130
+ }
131
+ .mark {
132
+ position: relative;
133
+ color: var(--nook-on-accent);
134
+ width: 16px;
135
+ height: 16px;
136
+ transform: translate(12px, 12px);
137
+ }
138
+ [data-corner$="left"] .handle:before {
139
+ inset: 16px 16px 0 0;
140
+ transform: scaleX(-1);
141
+ }
142
+ [data-corner$="left"] .mark {
143
+ transform: translate(-12px, 12px);
144
+ }
145
+ [data-corner^="top"] .handle:before {
146
+ inset: 0 0 16px 16px;
147
+ transform: scaleY(-1);
148
+ }
149
+ [data-corner^="top"][data-corner$="left"] .handle:before {
150
+ inset: 0 16px 16px 0;
151
+ transform: scale(-1);
152
+ }
153
+ [data-corner^="top"] .mark {
154
+ transform: translate(12px, -12px);
155
+ }
156
+ [data-corner^="top"][data-corner$="left"] .mark {
157
+ transform: translate(-12px, -12px);
158
+ }
159
+ .surface {
160
+ position: absolute;
161
+ width: min(var(--nook-width, 304px), calc(var(--nook-bound-width, 100vw) - 24px));
162
+ max-height: min(640px, calc(var(--nook-bound-height, 100dvh) - 96px));
163
+ overflow: auto;
164
+ background: var(--nook-surface);
165
+ border: 1px solid var(--nook-border);
166
+ border-radius: var(--nook-radius);
167
+ box-shadow: var(--nook-shadow);
168
+ padding: var(--nook-padding);
169
+ animation: arrive var(--nook-pop-duration) cubic-bezier(0.2, 0.8, 0.2, 1);
170
+ overscroll-behavior: contain;
171
+ }
172
+ [data-corner^="bottom"] .surface {
173
+ bottom: var(--nook-surface-offset);
174
+ }
175
+ [data-corner^="top"] .surface {
176
+ top: var(--nook-surface-offset);
177
+ }
178
+ [data-corner$="right"] .surface {
179
+ right: var(--nook-edge-gap);
180
+ }
181
+ [data-corner$="left"] .surface {
182
+ left: var(--nook-edge-gap);
183
+ }
184
+ header {
185
+ display: flex;
186
+ align-items: center;
187
+ gap: var(--nook-gap);
188
+ min-height: 36px;
189
+ margin-bottom: 12px;
190
+ }
191
+ h2 {
192
+ font-size: var(--nook-text-lg);
193
+ line-height: 1.25;
194
+ text-wrap: balance;
195
+ font-weight: var(--nook-heading-weight);
196
+ margin: 0;
197
+ flex: 1;
198
+ letter-spacing: -0.015em;
199
+ }
200
+ .quiet {
201
+ background: transparent;
202
+ color: var(--nook-muted);
203
+ border-radius: 8px;
204
+ min-height: 44px;
205
+ min-width: 44px;
206
+ padding: 8px;
207
+ }
208
+ .quiet:hover {
209
+ background: color-mix(in srgb, var(--nook-accent) 9%, transparent);
210
+ }
211
+ .items {
212
+ display: grid;
213
+ grid-template-columns: repeat(4, minmax(0, 1fr));
214
+ gap: var(--nook-gap);
215
+ }
216
+ .item {
217
+ position: relative;
218
+ display: flex;
219
+ min-width: 0;
220
+ align-items: center;
221
+ justify-content: center;
222
+ flex-direction: column;
223
+ gap: 6px;
224
+ min-height: var(--nook-item-size);
225
+ padding: 10px 6px;
226
+ background: transparent;
227
+ border-radius: 10px;
228
+ transition:
229
+ background var(--nook-duration),
230
+ transform var(--nook-duration);
231
+ }
232
+ .item:hover {
233
+ background: color-mix(in srgb, var(--nook-accent) 8%, var(--nook-surface));
234
+ }
235
+ .icon {
236
+ width: 20px;
237
+ height: 20px;
238
+ display: grid;
239
+ place-items: center;
240
+ font-size: 19px;
241
+ line-height: 1;
242
+ flex: none;
243
+ }
244
+ .icon > * {
245
+ grid-area: 1 / 1;
246
+ display: grid;
247
+ place-items: center;
248
+ line-height: 1;
249
+ }
250
+ .icon svg {
251
+ display: block;
252
+ width: 20px;
253
+ height: 20px;
254
+ margin: 0;
255
+ vertical-align: middle;
256
+ }
257
+ .item-label {
258
+ line-height: 1.35;
259
+ font-weight: var(--nook-label-weight);
260
+ display: var(--nook-label-display, none);
261
+ font-size: var(--nook-text-xs);
262
+ overflow: hidden;
263
+ text-overflow: ellipsis;
264
+ max-width: 100%;
265
+ white-space: nowrap;
266
+ }
267
+ .tooltip {
268
+ left: 50%;
269
+ transform: translateX(-50%);
270
+ max-width: min(220px, calc(var(--nook-bound-width, 100vw) - 64px));
271
+ text-align: center;
272
+ pointer-events: none;
273
+ position: absolute;
274
+ bottom: calc(100% + 6px);
275
+ padding: 5px 9px;
276
+ white-space: normal;
277
+ width: max-content;
278
+ border-radius: 7px;
279
+ background: var(--nook-text);
280
+ color: var(--nook-surface);
281
+ font-size: var(--nook-text-xs);
282
+ opacity: 0;
283
+ transition: opacity var(--nook-duration);
284
+ z-index: 2;
285
+ }
286
+ .item:nth-child(4n + 1) .tooltip {
287
+ left: 0;
288
+ transform: none;
289
+ }
290
+ .item:nth-child(4n) .tooltip,
291
+ .item:last-child .tooltip {
292
+ left: auto;
293
+ right: 0;
294
+ transform: none;
295
+ }
296
+ .item:hover .tooltip,
297
+ .item:focus-visible .tooltip {
298
+ opacity: 1;
299
+ }
300
+ [part="back"] {
301
+ margin-inline-start: -8px;
302
+ }
303
+ [part="close"] {
304
+ display: none;
305
+ margin-inline-end: -8px;
306
+ }
307
+ kbd {
308
+ font: 10px var(--nook-font);
309
+ border: 1px solid var(--nook-border);
310
+ border-radius: 4px;
311
+ padding: 2px 5px;
312
+ }
313
+ .setting {
314
+ display: flex;
315
+ align-items: center;
316
+ justify-content: space-between;
317
+ gap: 16px;
318
+ padding: 12px 0;
319
+ border-bottom: 1px solid var(--nook-border);
320
+ }
321
+ .setting:first-child {
322
+ padding-top: 0;
323
+ }
324
+ .setting:last-child,
325
+ .setting:has(+ [part="settings-footer"]) {
326
+ padding-bottom: 0;
327
+ border-bottom: 0;
328
+ }
329
+ .setting > [part="setting-label"] {
330
+ font-size: var(--nook-text-sm);
331
+ font-weight: var(--nook-label-weight);
332
+ line-height: 1.4;
333
+ min-width: 0;
334
+ flex: 1;
335
+ }
336
+ .setting small {
337
+ font-weight: 400;
338
+ display: block;
339
+ color: var(--nook-muted);
340
+ font-size: var(--nook-text-xs);
341
+ line-height: 1.5;
342
+ margin-top: 3px;
343
+ }
344
+ .setting input {
345
+ accent-color: var(--nook-accent);
346
+ width: 112px;
347
+ max-width: 42%;
348
+ margin: 0;
349
+ }
350
+ .setting select {
351
+ max-width: 46%;
352
+ min-height: 36px;
353
+ border: 1px solid var(--nook-border);
354
+ background: var(--nook-surface);
355
+ color: inherit;
356
+ border-radius: 9px;
357
+ padding: 8px;
358
+ }
359
+ .setting input[type="checkbox"] {
360
+ appearance: none;
361
+ flex: none;
362
+ max-width: none;
363
+ width: 38px;
364
+ height: 22px;
365
+ border-radius: 20px;
366
+ background: var(--nook-border);
367
+ position: relative;
368
+ cursor: pointer;
369
+ }
370
+ .setting input[type="checkbox"]:before {
371
+ content: "";
372
+ position: absolute;
373
+ width: 16px;
374
+ height: 16px;
375
+ border-radius: 100%;
376
+ background: var(--nook-on-accent);
377
+ top: 3px;
378
+ left: 3px;
379
+ transition: transform var(--nook-duration);
380
+ }
381
+ .setting input[type="checkbox"]:checked {
382
+ background: var(--nook-accent);
383
+ }
384
+ .setting input[type="checkbox"]:checked:before {
385
+ transform: translateX(16px);
386
+ }
387
+ .content {
388
+ font-size: var(--nook-text-sm);
389
+ }
390
+ .content > :first-child {
391
+ margin-top: 0;
392
+ }
393
+ .content > :last-child {
394
+ margin-bottom: 0;
395
+ }
396
+ .content form {
397
+ display: grid;
398
+ gap: 12px;
399
+ }
400
+ .content form > * {
401
+ margin: 0;
402
+ }
403
+ .content label {
404
+ display: grid;
405
+ gap: 8px;
406
+ }
407
+ .content textarea {
408
+ display: block;
409
+ resize: vertical;
410
+ min-height: 112px;
411
+ }
412
+ .content button {
413
+ justify-self: start;
414
+ min-height: 40px;
415
+ }
416
+ .content input,
417
+ .content textarea {
418
+ width: 100%;
419
+ border: 1px solid var(--nook-border);
420
+ border-radius: 8px;
421
+ padding: 10px 12px;
422
+ font: inherit;
423
+ color: inherit;
424
+ background: var(--nook-surface);
425
+ }
426
+ .content button {
427
+ padding: 10px 16px;
428
+ background: var(--nook-accent);
429
+ color: var(--nook-on-accent);
430
+ border-radius: 10px;
431
+ }
432
+ .content p {
433
+ line-height: 1.65;
434
+ color: var(--nook-muted);
435
+ }
436
+ .dragging {
437
+ opacity: 0.28;
438
+ cursor: grabbing;
439
+ }
440
+ .handle.dragging::before {
441
+ animation: none;
442
+ }
443
+ .preview,
444
+ .preview > * {
445
+ pointer-events: none;
446
+ }
447
+ .preview .handle {
448
+ opacity: var(--nook-preview-opacity, 0.8);
449
+ }
450
+ .preview .handle::before {
451
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--nook-accent) 18%, transparent);
452
+ }
453
+ [data-corner="bottom-left"] .mark svg {
454
+ transform: rotate(90deg);
455
+ }
456
+ [data-corner="top-left"] .mark svg {
457
+ transform: rotate(180deg);
458
+ }
459
+ [data-corner="top-right"] .mark svg {
460
+ transform: rotate(270deg);
461
+ }
462
+
463
+ .touch-only {
464
+ display: none;
465
+ }
466
+ .live {
467
+ position: absolute;
468
+ width: 1px;
469
+ height: 1px;
470
+ overflow: hidden;
471
+ clip-path: inset(50%);
472
+ }
473
+ @keyframes arrive {
474
+ 0% {
475
+ transform: scale(0.95);
476
+ }
477
+ 70% {
478
+ transform: scale(1.015);
479
+ }
480
+ 100% {
481
+ transform: scale(1);
482
+ }
483
+ }
484
+ @keyframes content-arrive {
485
+ 0% {
486
+ opacity: 0;
487
+ transform: translateY(6px) scale(0.99);
488
+ }
489
+ 72% {
490
+ opacity: 1;
491
+ transform: translateY(-1px) scale(1.004);
492
+ }
493
+ 100% {
494
+ opacity: 1;
495
+ transform: none;
496
+ }
497
+ }
498
+ @media (prefers-reduced-motion: reduce) {
499
+ *,
500
+ *:before,
501
+ *:after {
502
+ animation: none !important;
503
+ transition: none !important;
504
+ }
505
+ }
506
+ @media (pointer: coarse), (hover: none) {
507
+ .tooltip,
508
+ .keyboard-only {
509
+ display: none !important;
510
+ }
511
+ .touch-only {
512
+ display: block;
513
+ }
514
+ .surface {
515
+ max-height: calc(
516
+ var(--nook-bound-height, 100dvh) - 96px - env(safe-area-inset-top, 0px) -
517
+ env(safe-area-inset-bottom, 0px)
518
+ );
519
+ }
520
+ .content input,
521
+ .content textarea,
522
+ .setting select,
523
+ .setting input:not([type="checkbox"]):not([type="range"]) {
524
+ font-size: 16px;
525
+ }
526
+ }
527
+
528
+ /* Compact controls share one material, rather than individual button bubbles. */
529
+ .surface[data-presentation="compact"] {
530
+ background: transparent;
531
+ border: 0;
532
+ border-radius: 0;
533
+ box-shadow: none;
534
+ padding: 0;
535
+ overflow: visible;
536
+ width: max-content;
537
+ max-width: calc(var(--nook-bound-width, 100vw) - 32px);
538
+ }
539
+ .surface[data-presentation="compact"]:has(.setting),
540
+ .surface[data-presentation="compact"][data-view="settings"] {
541
+ width: min(var(--nook-width, 304px), calc(var(--nook-bound-width, 100vw) - 32px));
542
+ }
543
+ .surface[data-presentation="compact"] .items {
544
+ display: flex;
545
+ gap: var(--nook-gap);
546
+ }
547
+ [data-corner$="right"] .surface[data-presentation="compact"] .items {
548
+ justify-content: flex-end;
549
+ }
550
+ [data-corner$="left"] .surface[data-presentation="compact"] .items {
551
+ justify-content: flex-start;
552
+ }
553
+ .surface[data-presentation="compact"] .item {
554
+ flex: 0 0 var(--nook-item-size);
555
+ background: var(--nook-floating-background, transparent);
556
+ border-radius: 10px;
557
+ box-shadow: none;
558
+ }
559
+ .surface[data-presentation="compact"] .item:hover {
560
+ background: color-mix(in srgb, var(--nook-accent) 10%, transparent);
561
+ }
562
+ .surface[data-presentation="compact"][data-view="root"] > header {
563
+ display: none;
564
+ }
565
+ .surface[data-presentation="compact"] kbd {
566
+ background: var(--nook-surface);
567
+ }
568
+ .surface[data-presentation="compact"] .setting {
569
+ background: transparent;
570
+ border-radius: 0;
571
+ padding: 12px 4px;
572
+ margin: 0;
573
+ }
574
+ .surface[data-presentation="compact"] > header h2 {
575
+ min-width: 0;
576
+ overflow-wrap: anywhere;
577
+ }
578
+
579
+ @media (pointer: coarse), (hover: none) {
580
+ .surface[data-presentation="expanded"] [part="close"] {
581
+ display: inline-block;
582
+ }
583
+ .anchor .surface[data-presentation="expanded"] {
584
+ position: fixed;
585
+ inset: 0;
586
+ width: var(--nook-bound-width, 100vw);
587
+ height: var(--nook-bound-height, 100dvh);
588
+ max-height: none;
589
+ border: 0;
590
+ border-radius: 0;
591
+ box-shadow: none;
592
+ background: transparent;
593
+ isolation: isolate;
594
+ padding: calc(24px + env(safe-area-inset-top, 0px))
595
+ calc(24px + env(safe-area-inset-right, 0px))
596
+ calc(24px + env(safe-area-inset-bottom, 0px))
597
+ calc(24px + env(safe-area-inset-left, 0px));
598
+ animation-name: none;
599
+ }
600
+ .surface[data-presentation="expanded"]::before {
601
+ content: "";
602
+ position: fixed;
603
+ inset: 0;
604
+ z-index: -1;
605
+ background: var(--nook-backdrop, var(--nook-material-background));
606
+ -webkit-backdrop-filter: blur(
607
+ var(--nook-backdrop-blur, var(--nook-material-blur))
608
+ )
609
+ saturate(var(--nook-material-saturation, 125%));
610
+ backdrop-filter: blur(var(--nook-backdrop-blur, var(--nook-material-blur)))
611
+ saturate(var(--nook-material-saturation, 125%));
612
+ box-shadow: inset 0 1px 0
613
+ var(
614
+ --nook-material-highlight,
615
+ light-dark(rgb(255 255 255 / 85%), rgb(255 255 255 / 7%))
616
+ );
617
+ pointer-events: none;
618
+ }
619
+ .surface[data-presentation="expanded"] > header,
620
+ .surface[data-presentation="expanded"] > [part="body"] {
621
+ width: 100%;
622
+ max-width: 560px;
623
+ margin-inline: auto;
624
+ }
625
+ .surface[data-presentation="expanded"] > [part="body"] {
626
+ animation: content-arrive var(--nook-pop-duration)
627
+ cubic-bezier(0.2, 0.8, 0.2, 1);
628
+ transform-origin: 50% 0;
629
+ }
630
+ .surface[data-presentation="expanded"] > header {
631
+ margin-bottom: 24px;
632
+ }
633
+ .surface[data-presentation="expanded"] .items {
634
+ gap: 16px;
635
+ }
636
+ .surface[data-presentation="expanded"] .item {
637
+ min-height: 64px;
638
+ }
639
+ .surface[data-presentation="expanded"] .item-label {
640
+ display: block;
641
+ }
642
+ }
643
+ .groups {
644
+ display: none;
645
+ }
646
+ @media (pointer: coarse), (hover: none) {
647
+ .surface[data-presentation="expanded"] > [part="body"] > .items {
648
+ display: none;
649
+ }
650
+ .surface[data-presentation="expanded"] .groups,
651
+ .surface[data-presentation="expanded"] .group-body {
652
+ display: grid;
653
+ grid-template-columns: repeat(auto-fit, minmax(min(64px, 100%), 1fr));
654
+ gap: var(--nook-group-gap, 16px);
655
+ }
656
+ .surface[data-view="root"][data-presentation="expanded"]
657
+ > [part="body"]
658
+ > .items:has(> .setting) {
659
+ display: grid;
660
+ margin-bottom: 16px;
661
+ }
662
+ .surface[data-view="root"][data-presentation="expanded"]
663
+ > [part="body"]
664
+ > .items
665
+ > .item {
666
+ display: none;
667
+ }
668
+ .surface[data-view="root"][data-presentation="expanded"]
669
+ > [part="body"]
670
+ > .items
671
+ > .setting {
672
+ grid-column: 1 / -1;
673
+ }
674
+ .group {
675
+ grid-column: 1 / -1;
676
+ min-width: 0;
677
+ }
678
+ .group + .group {
679
+ margin-top: 8px;
680
+ }
681
+ [part="group-heading"] {
682
+ margin: 0 0 12px;
683
+ font-size: var(--nook-text-sm);
684
+ font-weight: var(--nook-heading-weight);
685
+ color: var(--nook-text);
686
+ }
687
+ .group .group {
688
+ padding-inline-start: 12px;
689
+ border-inline-start: 1px solid var(--nook-border);
690
+ }
691
+ }
692
+
693
+ @keyframes reveal {
694
+ from {
695
+ opacity: 0;
696
+ }
697
+ to {
698
+ opacity: 1;
699
+ }
700
+ }
701
+ .surface[data-view="commands"] {
702
+ width: min(var(--nook-command-width, 480px), calc(var(--nook-bound-width, 100vw) - 24px));
703
+ display: flex;
704
+ flex-direction: column;
705
+ overflow: hidden;
706
+ }
707
+ .surface[data-view="commands"] > header {
708
+ flex: none;
709
+ }
710
+ .surface[data-view="commands"] > [part="body"] {
711
+ display: flex;
712
+ flex-direction: column;
713
+ gap: 12px;
714
+ min-height: 0;
715
+ }
716
+ .command-results {
717
+ min-height: 0;
718
+ overflow: auto;
719
+ overscroll-behavior: contain;
720
+ }
721
+ .command-search {
722
+ flex: none;
723
+ }
724
+ [data-corner^="bottom"] .command-search {
725
+ order: 1;
726
+ }
727
+ @media (pointer: coarse), (hover: none) {
728
+ .surface[data-view="commands"][data-presentation="expanded"] > [part="body"] {
729
+ flex: 1;
730
+ }
731
+ .surface[data-view="commands"][data-presentation="expanded"] .command-results {
732
+ flex: 1;
733
+ }
734
+ }
735
+ .command-search {
736
+ width: 100%;
737
+ min-height: 44px;
738
+ padding: 10px 12px;
739
+ border: 1px solid var(--nook-border);
740
+ border-radius: 10px;
741
+ background: transparent;
742
+ color: var(--nook-text);
743
+ font: inherit;
744
+ }
745
+ .command-list {
746
+ display: grid;
747
+ gap: 4px;
748
+ margin-top: 0;
749
+ }
750
+ .command-result {
751
+ position: relative;
752
+ display: grid;
753
+ grid-template-columns: minmax(0, 1fr) auto;
754
+ gap: 3px 12px;
755
+ padding: 12px;
756
+ text-align: start;
757
+ border-radius: 10px;
758
+ background: transparent;
759
+ color: var(--nook-text);
760
+ }
761
+ .command-result:hover,
762
+ .command-result[data-active="true"] {
763
+ background: color-mix(in srgb, var(--nook-accent) 8%, transparent);
764
+ }
765
+ [part="command-name"] {
766
+ font-size: var(--nook-text-md);
767
+ line-height: 1.4;
768
+ font-weight: var(--nook-label-weight);
769
+ }
770
+ [part="command-description"] {
771
+ color: var(--nook-muted);
772
+ font-size: var(--nook-text-xs);
773
+ line-height: 1.5;
774
+ }
775
+ .command-result [part="command-description"] {
776
+ grid-column: 1;
777
+ }
778
+ .command-result kbd {
779
+ grid-column: 2;
780
+ grid-row: 1 / span 2;
781
+ align-self: center;
782
+ }
783
+ .command-empty {
784
+ color: var(--nook-muted);
785
+ padding: 16px 12px;
786
+ font-size: var(--nook-text-sm);
787
+ margin: 0;
788
+ }
789
+ .command-form,
790
+ .command-fields {
791
+ display: grid;
792
+ gap: 16px;
793
+ }
794
+ .command-description {
795
+ margin: 0;
796
+ }
797
+ .command-field {
798
+ display: grid;
799
+ gap: 6px;
800
+ font-size: var(--nook-text-sm);
801
+ }
802
+ .command-field input,
803
+ .command-field select {
804
+ min-width: 0;
805
+ width: 100%;
806
+ min-height: 40px;
807
+ border: 1px solid var(--nook-border);
808
+ border-radius: 8px;
809
+ padding: 8px 10px;
810
+ font: inherit;
811
+ color: var(--nook-text);
812
+ background: var(--nook-surface);
813
+ }
814
+ .command-field input[type="checkbox"] {
815
+ width: 20px;
816
+ height: 20px;
817
+ min-height: 0;
818
+ accent-color: var(--nook-accent);
819
+ }
820
+ .command-run {
821
+ min-height: 44px;
822
+ padding: 10px 16px;
823
+ border-radius: 8px;
824
+ background: var(--nook-accent);
825
+ color: var(--nook-on-accent);
826
+ justify-self: start;
827
+ }
828
+ .number {
829
+ display: none;
830
+ position: absolute;
831
+ inset-block-start: -4px;
832
+ inset-inline-end: -4px;
833
+ min-width: 19px;
834
+ height: 19px;
835
+ padding: 0 4px;
836
+ border-radius: 6px;
837
+ background: var(--nook-text);
838
+ color: var(--nook-surface);
839
+ font: 10px/19px var(--nook-font);
840
+ text-align: center;
841
+ pointer-events: none;
842
+ z-index: 3;
843
+ }
844
+ .anchor[data-numbering] .number:not([hidden]) {
845
+ display: block;
846
+ }
847
+ @media (pointer: coarse), (hover: none) {
848
+ .command-search,
849
+ .command-field input,
850
+ .command-field select {
851
+ font-size: 16px;
852
+ }
853
+ .anchor[data-numbering] .number {
854
+ display: none;
855
+ }
856
+ }
857
+ .quiet svg {
858
+ display: block;
859
+ width: 18px;
860
+ height: 18px;
861
+ margin: auto;
862
+ }
863
+ .tutorial {
864
+ font-size: var(--nook-text-sm);
865
+ line-height: 1.65;
866
+ margin-bottom: 20px;
867
+ color: var(--nook-muted);
868
+ }
869
+ .tutorial p {
870
+ margin: 0 0 12px;
871
+ }
872
+ .tutorial strong {
873
+ color: var(--nook-text);
874
+ }
875
+ .anchor:not([data-layout-ready]) .layout-hint {
876
+ display: none;
877
+ }
878
+ .handle.inviting::before {
879
+ animation: nook-invite var(--nook-invite-cycle, 2s) ease-out infinite;
880
+ animation-delay: var(--nook-invite-delay, 200ms);
881
+ }
882
+ @keyframes nook-invite {
883
+ 0% {
884
+ box-shadow: 0 0 0 0 color-mix(in srgb, var(--nook-accent) 30%, transparent);
885
+ filter: brightness(1);
886
+ }
887
+ 45% {
888
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--nook-accent) 20%, transparent);
889
+ filter: brightness(1.12);
890
+ }
891
+ 100% {
892
+ box-shadow: 0 0 0 10px color-mix(in srgb, var(--nook-accent) 0%, transparent);
893
+ filter: brightness(1);
894
+ }
895
+ }
896
+ @media (prefers-reduced-motion: reduce) {
897
+ .handle.inviting::before {
898
+ animation: none;
899
+ }
900
+ }
901
+ .handle-tooltip {
902
+ position: absolute;
903
+ width: max-content;
904
+ max-width: min(240px, calc(var(--nook-bound-width, 100vw) - 32px));
905
+ display: grid;
906
+ gap: 3px;
907
+ padding: 9px 12px;
908
+ border-radius: 10px;
909
+ background: var(--nook-text);
910
+ color: var(--nook-surface);
911
+ box-shadow: var(--nook-shadow);
912
+ text-align: start;
913
+ font: 12px/1.5 var(--nook-font);
914
+ opacity: 0;
915
+ visibility: hidden;
916
+ transition:
917
+ opacity var(--nook-duration),
918
+ visibility var(--nook-duration);
919
+ pointer-events: none;
920
+ z-index: 2;
921
+ }
922
+ .handle-tooltip [part="drag-hint"] {
923
+ opacity: 0.8;
924
+ }
925
+ [data-corner^="bottom"] .handle-tooltip {
926
+ bottom: calc(100% + 8px);
927
+ }
928
+ [data-corner^="top"] .handle-tooltip {
929
+ top: calc(100% + 8px);
930
+ }
931
+ [data-corner$="right"] .handle-tooltip {
932
+ right: 8px;
933
+ }
934
+ [data-corner$="left"] .handle-tooltip {
935
+ left: 8px;
936
+ }
937
+ .handle:not(.dragging):not([data-tooltip-dismissed]):hover .handle-tooltip,
938
+ .handle:not(.dragging):not([data-tooltip-dismissed]):focus-visible
939
+ .handle-tooltip {
940
+ opacity: 1;
941
+ visibility: visible;
942
+ }
943
+ @media (pointer: coarse), (hover: none) {
944
+ .handle-tooltip {
945
+ display: none;
946
+ }
947
+ }
948
+ .surface::before,
949
+ .surface > header,
950
+ .surface > [part="body"] {
951
+ animation: reveal var(--nook-duration) ease-out;
952
+ }
953
+ /* Acrylic-style surface for transient controls: neutral tint, strong blur,
954
+ a defined edge, and one elevation shadow. Feathering made the material muddy. */
955
+ .surface[data-presentation="compact"] {
956
+ isolation: isolate;
957
+ }
958
+ .surface[data-presentation="compact"]::before {
959
+ content: "";
960
+ position: absolute;
961
+ inset: var(--nook-halo-inset, -8px);
962
+ z-index: -1;
963
+ pointer-events: none;
964
+ border-radius: var(--nook-radius);
965
+ border: 1px solid
966
+ var(
967
+ --nook-material-edge,
968
+ light-dark(rgb(40 35 60 / 10%), rgb(255 255 255 / 14%))
969
+ );
970
+ background: var(--nook-halo-background, var(--nook-material-background));
971
+ box-shadow:
972
+ inset 0 1px 0
973
+ var(
974
+ --nook-material-highlight,
975
+ light-dark(rgb(255 255 255 / 85%), rgb(255 255 255 / 7%))
976
+ ),
977
+ var(--nook-shadow);
978
+ -webkit-backdrop-filter: blur(
979
+ var(--nook-halo-blur, var(--nook-material-blur))
980
+ )
981
+ saturate(var(--nook-material-saturation, 125%));
982
+ backdrop-filter: blur(var(--nook-halo-blur, var(--nook-material-blur)))
983
+ saturate(var(--nook-material-saturation, 125%));
984
+ }
985
+ @supports not (
986
+ (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))
987
+ ) {
988
+ .surface[data-presentation="compact"]::before,
989
+ .surface[data-presentation="expanded"]::before {
990
+ background: var(--nook-surface);
991
+ }
992
+ }
993
+ @media (prefers-reduced-transparency: reduce) {
994
+ .surface[data-presentation="compact"]::before,
995
+ .surface[data-presentation="expanded"]::before {
996
+ background: var(--nook-surface);
997
+ -webkit-backdrop-filter: none;
998
+ backdrop-filter: none;
999
+ }
1000
+ }
1001
+
1002
+ .landing-zone,
1003
+ .landing-zone > * {
1004
+ pointer-events: none;
1005
+ }
1006
+ .landing-zone .handle::before {
1007
+ background: transparent;
1008
+ border: 1px dashed var(--nook-accent);
1009
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--nook-surface) 82%, transparent);
1010
+ }
1011
+ .landing-zone[data-selected] .handle::before {
1012
+ border: 2px solid var(--nook-accent);
1013
+ background: color-mix(in srgb, var(--nook-accent) 10%, transparent);
1014
+ }
1015
+ .anchor[data-draggable="false"] [part~="drag-hint"] {
1016
+ display: none;
1017
+ }
1018
+ .handle:focus-visible {
1019
+ outline: none;
1020
+ }
1021
+ .handle:focus-visible::before {
1022
+ animation: none;
1023
+ box-shadow:
1024
+ 0 0 0 2px var(--nook-surface),
1025
+ 0 0 0 4px var(--nook-accent);
1026
+ }
1027
+ [data-corner="bottom-right"] .handle,
1028
+ [data-corner="bottom-right"] .surface {
1029
+ transform-origin: 100% 100%;
1030
+ }
1031
+ [data-corner="bottom-left"] .handle,
1032
+ [data-corner="bottom-left"] .surface {
1033
+ transform-origin: 0 100%;
1034
+ }
1035
+ [data-corner="top-left"] .handle,
1036
+ [data-corner="top-left"] .surface {
1037
+ transform-origin: 0 0;
1038
+ }
1039
+ [data-corner="top-right"] .handle,
1040
+ [data-corner="top-right"] .surface {
1041
+ transform-origin: 100% 0;
1042
+ }
1043
+ .quiet,
1044
+ .command-result,
1045
+ .command-run,
1046
+ .content button {
1047
+ transition:
1048
+ background var(--nook-duration),
1049
+ color var(--nook-duration),
1050
+ box-shadow var(--nook-duration),
1051
+ transform 120ms ease;
1052
+ }
1053
+ .item:hover {
1054
+ transform: translateY(-1px);
1055
+ }
1056
+ .item:active,
1057
+ .quiet:active,
1058
+ .command-run:active,
1059
+ .content button:active {
1060
+ transform: scale(0.97);
1061
+ }
1062
+ .landing-zone {
1063
+ animation: reveal 120ms ease-out;
1064
+ }
1065
+ .landing-zone .handle::before {
1066
+ transition:
1067
+ background 120ms ease,
1068
+ border-color 120ms ease,
1069
+ box-shadow 120ms ease;
1070
+ }
1071
+ :host([data-nook-capturing]) .anchor,
1072
+ :host([data-bound-hidden]) .anchor { visibility: hidden !important; pointer-events: none !important; }
1073
+ .enum-control {
1074
+ display: inline-grid;
1075
+ gap: 4px;
1076
+ min-width: 0;
1077
+ max-width: 48%;
1078
+ }
1079
+ .enum-trigger {
1080
+ display: grid;
1081
+ grid-template-columns: minmax(0, 1fr) 16px;
1082
+ align-items: center;
1083
+ gap: 10px;
1084
+ min-height: 40px;
1085
+ width: 100%;
1086
+ padding: 8px 10px;
1087
+ border: 1px solid var(--nook-border);
1088
+ border-radius: 10px;
1089
+ color: var(--nook-text);
1090
+ background: color-mix(in srgb, var(--nook-surface) 72%, transparent);
1091
+ text-align: start;
1092
+ transition:
1093
+ background var(--nook-duration),
1094
+ border-color var(--nook-duration);
1095
+ }
1096
+ .enum-trigger:hover {
1097
+ background: var(--nook-surface);
1098
+ border-color: var(--nook-accent);
1099
+ }
1100
+ .enum-trigger:disabled {
1101
+ opacity: 0.45;
1102
+ cursor: not-allowed;
1103
+ }
1104
+ .enum-current {
1105
+ display: flex;
1106
+ align-items: center;
1107
+ min-width: 0;
1108
+ gap: 8px;
1109
+ }
1110
+ [part="enum-selected-label"] {
1111
+ overflow: hidden;
1112
+ text-overflow: ellipsis;
1113
+ white-space: nowrap;
1114
+ }
1115
+ .enum-chevron,
1116
+ .enum-check {
1117
+ display: grid;
1118
+ place-items: center;
1119
+ width: 16px;
1120
+ height: 16px;
1121
+ }
1122
+ .enum-chevron svg,
1123
+ .enum-check svg {
1124
+ display: block;
1125
+ width: 16px;
1126
+ height: 16px;
1127
+ }
1128
+ .enum-chevron {
1129
+ color: var(--nook-muted);
1130
+ }
1131
+ .enum-value {
1132
+ position: absolute !important;
1133
+ width: 1px !important;
1134
+ height: 1px !important;
1135
+ min-height: 0 !important;
1136
+ padding: 0 !important;
1137
+ border: 0 !important;
1138
+ clip-path: inset(50%);
1139
+ overflow: hidden;
1140
+ pointer-events: none;
1141
+ }
1142
+ .enum-options {
1143
+ max-height: min(440px, calc(var(--nook-bound-height, 100dvh) - 168px));
1144
+ overflow: auto;
1145
+ overscroll-behavior: contain;
1146
+ padding: 4px;
1147
+ display: grid;
1148
+ gap: 6px;
1149
+ }
1150
+ .enum-option {
1151
+ display: grid;
1152
+ grid-template-columns: minmax(0, 1fr) 16px;
1153
+ align-items: center;
1154
+ gap: 14px;
1155
+ width: 100%;
1156
+ min-height: 52px;
1157
+ padding: 12px;
1158
+ border-radius: 12px;
1159
+ text-align: start;
1160
+ background: transparent;
1161
+ transition: background var(--nook-duration);
1162
+ }
1163
+ .enum-option:hover,
1164
+ .enum-option:focus-visible {
1165
+ background: color-mix(in srgb, var(--nook-accent) 7%, transparent);
1166
+ }
1167
+ .enum-option[aria-selected="true"] {
1168
+ background: color-mix(in srgb, var(--nook-accent) 10%, transparent);
1169
+ }
1170
+ .enum-option:disabled {
1171
+ opacity: 0.4;
1172
+ cursor: not-allowed;
1173
+ }
1174
+ .enum-option-content {
1175
+ display: flex;
1176
+ align-items: center;
1177
+ gap: 12px;
1178
+ min-width: 0;
1179
+ }
1180
+ .enum-option-icon {
1181
+ display: grid;
1182
+ place-items: center;
1183
+ flex: none;
1184
+ width: 22px;
1185
+ height: 22px;
1186
+ }
1187
+ .enum-option-icon svg {
1188
+ display: block;
1189
+ width: 22px;
1190
+ height: 22px;
1191
+ }
1192
+ [part="enum-option-label"] {
1193
+ display: block;
1194
+ font-size: var(--nook-text-sm);
1195
+ font-weight: var(--nook-label-weight);
1196
+ }
1197
+ [part="enum-option-description"] {
1198
+ display: block;
1199
+ font-size: var(--nook-text-xs);
1200
+ color: var(--nook-muted);
1201
+ line-height: 1.5;
1202
+ margin-top: 3px;
1203
+ }
1204
+ .enum-check {
1205
+ color: var(--nook-accent);
1206
+ visibility: hidden;
1207
+ }
1208
+ .enum-option[aria-selected="true"] .enum-check {
1209
+ visibility: visible;
1210
+ }
1211
+ .enum-empty {
1212
+ font-size: var(--nook-text-sm);
1213
+ color: var(--nook-muted);
1214
+ margin: 0;
1215
+ }
1216
+ .command-field .enum-control {
1217
+ max-width: none;
1218
+ width: 100%;
1219
+ }
1220
+ .feedback-form {
1221
+ display: grid;
1222
+ gap: 16px;
1223
+ }
1224
+ .feedback-intro {
1225
+ margin: 0;
1226
+ color: var(--nook-muted);
1227
+ font-size: var(--nook-text-sm);
1228
+ }
1229
+ .feedback-types {
1230
+ display: flex;
1231
+ flex-wrap: wrap;
1232
+ gap: 6px;
1233
+ }
1234
+ .feedback-types button {
1235
+ padding: 7px 10px;
1236
+ border-radius: 8px;
1237
+ border: 1px solid var(--nook-border);
1238
+ background: transparent;
1239
+ font-size: var(--nook-text-xs);
1240
+ min-height: 36px;
1241
+ transition:
1242
+ background var(--nook-duration),
1243
+ border-color var(--nook-duration);
1244
+ }
1245
+ .feedback-types button[aria-checked="true"] {
1246
+ border-color: color-mix(in srgb, var(--nook-accent) 45%, var(--nook-border));
1247
+ background: color-mix(in srgb, var(--nook-accent) 10%, transparent);
1248
+ }
1249
+ .feedback-label {
1250
+ display: grid;
1251
+ gap: 8px;
1252
+ font-size: var(--nook-text-xs);
1253
+ font-weight: var(--nook-label-weight);
1254
+ }
1255
+ .feedback-label textarea {
1256
+ width: 100%;
1257
+ min-height: 132px;
1258
+ resize: vertical;
1259
+ font: var(--nook-text-md)/1.6 var(--nook-font);
1260
+ border: 1px solid var(--nook-border);
1261
+ border-radius: 12px;
1262
+ background: color-mix(in srgb, var(--nook-surface) 65%, transparent);
1263
+ color: var(--nook-text);
1264
+ padding: 12px;
1265
+ }
1266
+ textarea:focus-visible {
1267
+ outline: 3px solid var(--nook-accent);
1268
+ outline-offset: 3px;
1269
+ }
1270
+ .feedback-tools {
1271
+ display: flex;
1272
+ flex-wrap: wrap;
1273
+ gap: 8px;
1274
+ }
1275
+ .feedback-tools button {
1276
+ padding: 8px 10px;
1277
+ min-height: 36px;
1278
+ background: transparent;
1279
+ border: 1px solid var(--nook-border);
1280
+ border-radius: 8px;
1281
+ font-size: var(--nook-text-xs);
1282
+ }
1283
+ .feedback-tools button:hover {
1284
+ background: color-mix(in srgb, var(--nook-accent) 6%, transparent);
1285
+ }
1286
+ .feedback-attachments {
1287
+ padding: 0;
1288
+ margin: 0;
1289
+ display: grid;
1290
+ gap: 8px;
1291
+ list-style: none;
1292
+ }
1293
+ .feedback-attachments:empty {
1294
+ display: none;
1295
+ }
1296
+ .feedback-attachment {
1297
+ display: flex;
1298
+ align-items: center;
1299
+ gap: 10px;
1300
+ padding: 8px;
1301
+ border: 1px solid var(--nook-border);
1302
+ border-radius: 10px;
1303
+ }
1304
+ [part="feedback-preview"] {
1305
+ width: 44px;
1306
+ height: 36px;
1307
+ object-fit: cover;
1308
+ border-radius: 5px;
1309
+ }
1310
+ [part="feedback-attachment-name"] {
1311
+ flex: 1;
1312
+ min-width: 0;
1313
+ overflow-wrap: anywhere;
1314
+ font-size: var(--nook-text-xs);
1315
+ color: var(--nook-muted);
1316
+ }
1317
+ [part="feedback-remove"] {
1318
+ display: grid;
1319
+ place-items: center;
1320
+ flex: none;
1321
+ min-width: 32px;
1322
+ min-height: 32px;
1323
+ background: transparent;
1324
+ border-radius: 7px;
1325
+ }
1326
+ [part="feedback-remove"] svg {
1327
+ width: 16px;
1328
+ height: 16px;
1329
+ }
1330
+ .feedback-privacy {
1331
+ margin: 0;
1332
+ font-size: var(--nook-text-xs);
1333
+ line-height: 1.6;
1334
+ color: var(--nook-muted);
1335
+ }
1336
+ .feedback-status {
1337
+ margin: 12px 0 0;
1338
+ font-size: var(--nook-text-xs);
1339
+ color: var(--nook-muted);
1340
+ }
1341
+ .feedback-status:empty {
1342
+ display: none;
1343
+ }
1344
+ .feedback-status[data-error="true"] {
1345
+ color: light-dark(#a82843, #ff9cb1);
1346
+ }
1347
+ .feedback-success h3 {
1348
+ font-size: var(--nook-text-lg);
1349
+ font-weight: var(--nook-heading-weight);
1350
+ line-height: 1.3;
1351
+ margin: 0 0 8px;
1352
+ }
1353
+ .feedback-success p {
1354
+ font-size: var(--nook-text-sm);
1355
+ color: var(--nook-muted);
1356
+ margin: 0 0 16px;
1357
+ }
1358
+ .feedback-success button + button {
1359
+ margin-inline-start: 8px;
1360
+ }
1361
+ .feedback-form [disabled] {
1362
+ opacity: 0.55;
1363
+ cursor: wait;
1364
+ }
1365
+ @media (pointer: coarse), (hover: none) {
1366
+ .feedback-label textarea {
1367
+ font-size: 16px;
1368
+ }
1369
+ .enum-option {
1370
+ min-height: 60px;
1371
+ }
1372
+ }
1373
+ .enum-error { font-size: var(--nook-text-xs); line-height: 1.5; color: light-dark(#a82843,#ff9cb1); }
1374
+ .surface:is([data-view="full"], [data-view="all"]) {
1375
+ width: min(var(--nook-overflow-width, 360px), calc(var(--nook-bound-width, 100vw) - 32px));
1376
+ }
1377
+ .surface:is([data-view="full"], [data-view="all"]) > [part="body"] > .items {
1378
+ display: none;
1379
+ }
1380
+ .overflow-groups {
1381
+ display: grid;
1382
+ gap: 20px;
1383
+ }
1384
+ [part="overflow-group-heading"] {
1385
+ margin: 0 0 6px;
1386
+ padding-inline: 12px;
1387
+ font-size: var(--nook-text-xs);
1388
+ font-weight: var(--nook-heading-weight);
1389
+ line-height: 1.4;
1390
+ color: var(--nook-muted);
1391
+ }
1392
+ [part="overflow-group-body"] {
1393
+ display: grid;
1394
+ gap: 4px;
1395
+ }
1396
+ .overflow-groups .item {
1397
+ flex-direction: row;
1398
+ justify-content: flex-start;
1399
+ gap: 12px;
1400
+ min-width: 0;
1401
+ min-height: 44px;
1402
+ padding: 10px 12px;
1403
+ text-align: start;
1404
+ }
1405
+ .overflow-groups .item-label {
1406
+ display: block;
1407
+ flex: 1;
1408
+ text-align: start;
1409
+ font-size: var(--nook-text-sm);
1410
+ white-space: normal;
1411
+ overflow-wrap: anywhere;
1412
+ }
1413
+ .overflow-groups .tooltip { display: none; }
1414
+ @media (pointer: coarse), (hover: none) {
1415
+ .anchor .surface:is([data-view="full"], [data-view="all"])[data-presentation="expanded"] { width: var(--nook-bound-width, 100vw); }
1416
+ .overflow-groups .item { min-height: 48px; }
1417
+ }
1418
+
1419
+ @media (hover: hover) and (pointer: fine) {
1420
+ .anchor[data-numbering] .surface:not([data-view="commands"]):not([data-view="full"]):not([data-view="all"]):has(.item:not([hidden])) {
1421
+ width: min(var(--nook-keyboard-width, 320px), calc(var(--nook-bound-width, 100vw) - 32px));
1422
+ }
1423
+ .anchor[data-numbering] .surface:not([data-view="full"]):not([data-view="all"]) > [part="body"] > .items {
1424
+ display: grid;
1425
+ grid-template-columns: minmax(0, 1fr);
1426
+ gap: 4px;
1427
+ }
1428
+ .anchor[data-numbering] .item {
1429
+ flex: 0 0 auto;
1430
+ flex-direction: row;
1431
+ justify-content: flex-start;
1432
+ gap: 10px;
1433
+ min-height: 44px;
1434
+ padding: 10px 12px;
1435
+ text-align: start;
1436
+ }
1437
+ .anchor[data-numbering] .item-label {
1438
+ display: block;
1439
+ flex: 1;
1440
+ min-width: 0;
1441
+ max-width: none;
1442
+ white-space: normal;
1443
+ overflow-wrap: anywhere;
1444
+ font-size: var(--nook-text-sm);
1445
+ }
1446
+ .anchor[data-numbering] .item .number { order: -2; }
1447
+ .anchor[data-numbering] .item .icon { order: -1; }
1448
+ .anchor[data-numbering] .number {
1449
+ position: static;
1450
+ flex: none;
1451
+ min-width: 24px;
1452
+ height: 24px;
1453
+ border: 1px solid var(--nook-border);
1454
+ border-radius: 6px;
1455
+ background: color-mix(in srgb, var(--nook-accent) 8%, var(--nook-surface));
1456
+ color: var(--nook-text);
1457
+ font: var(--nook-text-xs)/22px var(--nook-font);
1458
+ }
1459
+ .anchor[data-numbering] .item .tooltip { display: none; }
1460
+ .anchor[data-numbering] .command-result {
1461
+ grid-template-columns: auto minmax(0, 1fr) auto;
1462
+ }
1463
+ .anchor[data-numbering] .command-result .number {
1464
+ grid-column: 1;
1465
+ grid-row: 1 / span 2;
1466
+ align-self: center;
1467
+ }
1468
+ .anchor[data-numbering] [part="command-name"],
1469
+ .anchor[data-numbering] .command-result [part="command-description"] { grid-column: 2; }
1470
+ .anchor[data-numbering] .command-result kbd { grid-column: 3; }
1471
+ }
1472
+
1473
+ /* Alt suppresses duplicate hover/focus labels even while layout data refreshes. */
1474
+ .anchor:is([data-alt-held], [data-numbering]) :is(.tooltip, [role="tooltip"]) {
1475
+ display: none;
1476
+ visibility: hidden;
1477
+ opacity: 0;
1478
+ transition: none;
1479
+ }
1480
+ /* Edge centers keep the anchor untransformed so fullscreen panels remain fixed
1481
+ to the viewport. The visible handle becomes a shallow semicircle. */
1482
+ .anchor[data-corner="top-center"], .anchor[data-corner="bottom-center"] { left: calc(var(--nook-bound-left, 0px) + var(--nook-bound-width, 100vw) / 2 - 32px); }
1483
+ .anchor[data-corner="left-center"] { left: var(--nook-bound-left, env(safe-area-inset-left, 0px)); top: calc(var(--nook-bound-top, 0px) + var(--nook-bound-height, 100dvh) / 2 - 32px); }
1484
+ .anchor[data-corner="right-center"] { right: var(--nook-bound-right, env(safe-area-inset-right, 0px)); top: calc(var(--nook-bound-top, 0px) + var(--nook-bound-height, 100dvh) / 2 - 32px); }
1485
+ [data-corner="top-center"] .handle, [data-corner="bottom-center"] .handle { width: 64px; height: 48px; }
1486
+ [data-corner="left-center"] .handle, [data-corner="right-center"] .handle { width: 48px; height: 64px; }
1487
+ [data-corner="top-center"] .handle::before { inset: 0 0 16px; border-radius: 0 0 32px 32px; transform: none; }
1488
+ [data-corner="bottom-center"] .handle::before { inset: 16px 0 0; border-radius: 32px 32px 0 0; transform: none; }
1489
+ [data-corner="left-center"] .handle::before { inset: 0 16px 0 0; border-radius: 0 32px 32px 0; transform: none; }
1490
+ [data-corner="right-center"] .handle::before { inset: 0 0 0 16px; border-radius: 32px 0 0 32px; transform: none; }
1491
+ [data-corner="top-center"] .mark { transform: translate(0, -8px); }
1492
+ [data-corner="bottom-center"] .mark { transform: translate(0, 8px); }
1493
+ [data-corner="left-center"] .mark { transform: translate(-8px, 0); }
1494
+ [data-corner="right-center"] .mark { transform: translate(8px, 0); }
1495
+ [data-corner="top-center"] .mark svg { transform: rotate(225deg); }
1496
+ [data-corner="bottom-center"] .mark svg { transform: rotate(45deg); }
1497
+ [data-corner="left-center"] .mark svg { transform: rotate(135deg); }
1498
+ [data-corner="right-center"] .mark svg { transform: rotate(315deg); }
1499
+ [data-corner="top-center"] .surface, [data-corner="bottom-center"] .surface { left: 32px; right: auto; translate: -50% 0; }
1500
+ [data-corner="left-center"] .surface { left: var(--nook-surface-offset); right: auto; }
1501
+ [data-corner="right-center"] .surface { right: var(--nook-surface-offset); left: auto; }
1502
+ [data-corner="left-center"] .surface, [data-corner="right-center"] .surface {
1503
+ top: 32px; bottom: auto; translate: 0 -50%;
1504
+ max-height: min(640px, calc(var(--nook-bound-height, 100dvh) - 32px));
1505
+ max-width: calc(var(--nook-bound-width, 100vw) - var(--nook-surface-offset) - var(--nook-edge-gap));
1506
+ }
1507
+ [data-corner="top-center"] .handle, [data-corner="top-center"] .surface { transform-origin: 50% 0; }
1508
+ [data-corner="bottom-center"] .handle, [data-corner="bottom-center"] .surface { transform-origin: 50% 100%; }
1509
+ [data-corner="left-center"] .handle, [data-corner="left-center"] .surface { transform-origin: 0 50%; }
1510
+ [data-corner="right-center"] .handle, [data-corner="right-center"] .surface { transform-origin: 100% 50%; }
1511
+ [data-corner="top-center"] .handle-tooltip { top: calc(100% + 8px); bottom: auto; left: 50%; right: auto; translate: -50% 0; }
1512
+ [data-corner="bottom-center"] .handle-tooltip { bottom: calc(100% + 8px); top: auto; left: 50%; right: auto; translate: -50% 0; }
1513
+ [data-corner="left-center"] .handle-tooltip { left: calc(100% + 8px); right: auto; top: 50%; bottom: auto; translate: 0 -50%; }
1514
+ [data-corner="right-center"] .handle-tooltip { right: calc(100% + 8px); left: auto; top: 50%; bottom: auto; translate: 0 -50%; }
1515
+ [data-corner="left-center"] .surface[data-view="commands"],
1516
+ [data-corner="right-center"] .surface[data-view="commands"] {
1517
+ height: min(var(--nook-command-height, 480px), calc(var(--nook-bound-height, 100dvh) - 32px));
1518
+ }
1519
+ [data-corner="left-center"] .surface[data-view="commands"] > [part="body"],
1520
+ [data-corner="right-center"] .surface[data-view="commands"] > [part="body"] { flex: 1; }
1521
+ @media (pointer: coarse), (hover: none) {
1522
+ .anchor[data-corner$="center"] .surface[data-presentation="expanded"] {
1523
+ inset: 0; translate: none; max-width: none; max-height: none; width: var(--nook-bound-width, 100vw); height: var(--nook-bound-height, 100dvh);
1524
+ }
1525
+ }
1526
+ /* Text must be allowed to shrink inside flex/grid tracks before it wraps. */
1527
+ header { align-items: flex-start; }
1528
+ header h2 {
1529
+ min-width: 0;
1530
+ overflow-wrap: anywhere;
1531
+ max-height: min(6em, calc(var(--nook-bound-height, 100dvh) * .3));
1532
+ overflow: auto;
1533
+ }
1534
+ header > button { flex: none; }
1535
+ .setting > [part="setting-label"], .setting small, .content,
1536
+ [part="command-name"], [part="command-description"],
1537
+ [part="command-arg-label"], [part="group-heading"],
1538
+ [part="overflow-group-heading"], [part="enum-option-text"],
1539
+ [part="enum-option-label"], [part="enum-option-description"] {
1540
+ min-width: 0;
1541
+ overflow-wrap: anywhere;
1542
+ }
1543
+ .setting input { min-width: 0; }
1544
+ [part="enum-option-text"] { flex: 1; }
1545
+ [part="enum-selected-label"] { min-width: 0; }
1546
+ .surface[data-presentation="expanded"] .item-label {
1547
+ white-space: normal;
1548
+ overflow-wrap: anywhere;
1549
+ }
1550
+ .surface[data-view="root"][data-presentation="compact"]:has(.setting) .items { flex-wrap: wrap; }
1551
+ .surface[data-view="root"][data-presentation="compact"] .setting { flex: 1 0 100%; }
1552
+ .surface[data-presentation="expanded"]:not([data-view="commands"]),
1553
+ .surface:is([data-view="full"], [data-view="all"])[data-presentation="compact"] {
1554
+ display: flex;
1555
+ flex-direction: column;
1556
+ }
1557
+ .surface[data-presentation="expanded"]:not([data-view="commands"]) { overflow: hidden; }
1558
+ .surface[data-presentation="expanded"]:not([data-view="commands"]) > header,
1559
+ .surface:is([data-view="full"], [data-view="all"])[data-presentation="compact"] > header { flex: none; }
1560
+ .surface[data-presentation="expanded"]:not([data-view="commands"]) > [part="body"],
1561
+ .surface:is([data-view="full"], [data-view="all"])[data-presentation="compact"] > [part="body"] {
1562
+ min-height: 0;
1563
+ overflow: auto;
1564
+ overscroll-behavior: contain;
1565
+ scroll-padding: 8px;
1566
+ padding: 4px;
1567
+ }
1568
+ .surface[data-presentation="expanded"]:not([data-view="commands"]) > header { padding-inline: 4px; }
1569
+ .command-result { grid-template-columns: minmax(0, 1fr) fit-content(40%); }
1570
+ .command-result kbd { min-width: 0; max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
1571
+ .feedback-types button, .feedback-tools button { max-width: 100%; overflow-wrap: anywhere; }
1572
+ [part="feedback-preview"] { flex: none; }
1573
+ @media (max-width: 420px) {
1574
+ .setting:has(.enum-control), .setting:has(input:not([type="checkbox"])) {
1575
+ flex-direction: column;
1576
+ align-items: stretch;
1577
+ gap: 10px;
1578
+ }
1579
+ .setting .enum-control, .setting input:not([type="checkbox"]) { width: 100%; max-width: none; }
1580
+ .setting:has(input[type="checkbox"]) { align-items: flex-start; }
1581
+ .setting input[type="checkbox"] { margin-block-start: 2px; }
1582
+ }
1583
+ @media (pointer: coarse), (hover: none) {
1584
+ .surface[data-presentation="expanded"]:not([data-view="commands"]) > [part="body"] { flex: 1; }
1585
+ }
1586
+ @media (hover: hover) and (pointer: fine) {
1587
+ .anchor[data-numbering] .surface:not([data-view="commands"]) { display: flex; flex-direction: column; }
1588
+ .anchor[data-numbering] .surface:not([data-view="commands"]) > header { flex: none; }
1589
+ .anchor[data-numbering] .surface:not([data-view="commands"]) > [part="body"] { min-height: 0; overflow: auto; }
1590
+ .anchor[data-numbering] .command-result { grid-template-columns: auto minmax(0,1fr) fit-content(34%); }
1591
+ }
1592
+
1593
+ .surface[data-layout="list"] {
1594
+ width: min(var(--nook-width, 304px), calc(var(--nook-bound-width, 100vw) - 32px));
1595
+ display: flex;
1596
+ flex-direction: column;
1597
+ }
1598
+ .surface[data-layout="list"] > header { flex: none; }
1599
+ .surface[data-layout="list"] > [part="body"],
1600
+ .surface[data-view="root"][data-presentation="compact"]:has(.setting) > [part="body"] {
1601
+ min-height: 0;
1602
+ overflow: auto;
1603
+ overscroll-behavior: contain;
1604
+ }
1605
+ .surface[data-view="root"][data-presentation="compact"]:has(.setting) { display: flex; flex-direction: column; }
1606
+ .surface[data-layout="list"] .items,
1607
+ .surface[data-layout="list"] .groups,
1608
+ .surface[data-layout="list"] .group-body { grid-template-columns: minmax(0, 1fr); }
1609
+ .surface[data-layout="list"][data-presentation="compact"] > [part="body"] > .items { display: grid; }
1610
+ .surface[data-layout="list"] .item { flex-direction: row; justify-content: flex-start; gap: 12px; padding: 10px 12px; text-align: start; }
1611
+ .surface[data-layout="list"] .item-label { display: block; flex: 1; min-width: 0; max-width: none; white-space: normal; overflow-wrap: anywhere; font-size: var(--nook-text-sm); }
1612
+ @media (pointer: coarse), (hover: none) {
1613
+ .anchor .surface[data-layout="list"][data-presentation="expanded"] { width: var(--nook-bound-width, 100vw); }
1614
+ }
1615
+ /* Wrap after choosing a readable layout, then cap extreme text visually. Full
1616
+ strings remain in the DOM and in accessible names/descriptions. */
1617
+ header h2 {
1618
+ display: -webkit-box;
1619
+ -webkit-box-orient: vertical;
1620
+ -webkit-line-clamp: var(--nook-heading-lines, 4);
1621
+ max-height: min(calc(var(--nook-heading-lines, 4) * 1.25em), calc(var(--nook-bound-height, 100dvh) * .3));
1622
+ overflow: hidden;
1623
+ }
1624
+ [part="setting-name"], .setting small,
1625
+ [part="command-name"], [part="command-description"],
1626
+ [part="enum-option-label"], [part="enum-option-description"],
1627
+ [part="group-heading"], [part="overflow-group-heading"],
1628
+ [part="feedback-attachment-name"] {
1629
+ display: -webkit-box;
1630
+ -webkit-box-orient: vertical;
1631
+ overflow: hidden;
1632
+ overflow-wrap: anywhere;
1633
+ }
1634
+ [part="setting-name"], [part="enum-option-label"] {
1635
+ -webkit-line-clamp: var(--nook-label-lines, 3);
1636
+ line-height: 1.4;
1637
+ max-height: calc(var(--nook-label-lines, 3) * 1.4em);
1638
+ }
1639
+ .setting small, [part="enum-option-description"], [part="command-description"] {
1640
+ -webkit-line-clamp: var(--nook-description-lines, 3);
1641
+ line-height: 1.5;
1642
+ max-height: calc(var(--nook-description-lines, 3) * 1.5em);
1643
+ }
1644
+ [part="command-name"] {
1645
+ -webkit-line-clamp: var(--nook-command-name-lines, 2);
1646
+ max-height: calc(var(--nook-command-name-lines, 2) * 1.4em);
1647
+ }
1648
+ [part="group-heading"], [part="overflow-group-heading"] {
1649
+ -webkit-line-clamp: var(--nook-group-lines, 2);
1650
+ line-height: 1.4;
1651
+ max-height: calc(var(--nook-group-lines, 2) * 1.4em);
1652
+ }
1653
+ [part="feedback-attachment-name"] {
1654
+ -webkit-line-clamp: var(--nook-filename-lines, 2);
1655
+ line-height: 1.5;
1656
+ max-height: calc(var(--nook-filename-lines, 2) * 1.5em);
1657
+ }
1658
+ .surface:is([data-view="full"], [data-view="all"], [data-layout="list"], [data-presentation="expanded"]) .item-label,
1659
+ .anchor[data-numbering] .item-label,
1660
+ .surface[data-view="root"]:has(.setting) .item-label {
1661
+ display: -webkit-box;
1662
+ -webkit-box-orient: vertical;
1663
+ -webkit-line-clamp: var(--nook-label-lines, 3);
1664
+ line-height: 1.4;
1665
+ max-height: calc(var(--nook-label-lines, 3) * 1.4em);
1666
+ overflow: hidden;
1667
+ overflow-wrap: anywhere;
1668
+ }
1669
+ .enum-option-content { max-height: var(--nook-option-content-max-height, 12rem); overflow: hidden; }
1670
+ .command-result kbd {
1671
+ display: -webkit-box;
1672
+ -webkit-box-orient: vertical;
1673
+ -webkit-line-clamp: 4;
1674
+ line-height: 1.4;
1675
+ max-height: 5.6em;
1676
+ overflow: hidden;
1677
+ }
1678
+ .feedback-status, .feedback-privacy, .feedback-intro, .feedback-success { min-width: 0; overflow-wrap: anywhere; }
1679
+ .feedback-status {
1680
+ display: -webkit-box;
1681
+ -webkit-box-orient: vertical;
1682
+ -webkit-line-clamp: 6;
1683
+ line-height: 1.5;
1684
+ max-height: 9em;
1685
+ overflow: hidden;
1686
+ }
1687
+ .setting input:not([type="checkbox"]):not([type="range"]):not([type="color"]) {
1688
+ min-height: 40px;
1689
+ border: 1px solid var(--nook-border);
1690
+ border-radius: 8px;
1691
+ padding: 8px 10px;
1692
+ background: var(--nook-surface);
1693
+ color: var(--nook-text);
1694
+ }
1695
+ .tooltip {
1696
+ display: grid;
1697
+ grid-template-rows: minmax(0, 1fr);
1698
+ line-height: 1.4;
1699
+ max-height: calc(var(--nook-bound-height, 100dvh) - 32px);
1700
+ overflow: hidden;
1701
+ }
1702
+ .tooltip-text {
1703
+ display: -webkit-box;
1704
+ -webkit-box-orient: vertical;
1705
+ -webkit-line-clamp: var(--nook-tooltip-lines, 8);
1706
+ min-height: 0;
1707
+ max-height: calc(var(--nook-tooltip-lines, 8) * 1.4em);
1708
+ overflow: hidden;
1709
+ overflow-wrap: anywhere;
1710
+ }
1711
+ [data-corner^="top"] .item .tooltip { top: calc(100% + 6px); bottom: auto; }
1712
+ .items > .item:is(:nth-child(-n + 2 of .item:not([hidden])), :nth-last-child(-n + 2 of .item:not([hidden]))) .tooltip {
1713
+ max-width: min(220px, calc(var(--nook-item-size) * 2 + var(--nook-gap)), calc(var(--nook-bound-width, 100vw) - 32px));
1714
+ }
1715
+ .items > .item:nth-child(1 of .item:not([hidden])) .tooltip { left: 0; right: auto; transform: none; }
1716
+ .items > .item:nth-last-child(1 of .item:not([hidden])) .tooltip { right: 0; left: auto; transform: none; }
1717
+ .surface:is([data-layout="list"], [data-presentation="expanded"]) .tooltip { display: none; }
1718
+ .surface[data-view="root"][data-presentation="compact"]:has(.setting) .item {
1719
+ flex-basis: 100%; flex-direction: row; justify-content: flex-start; gap: 12px; padding: 10px 12px;
1720
+ }
1721
+ .surface[data-view="root"]:has(.setting) .item-label { flex: 1; min-width: 0; max-width: none; white-space: normal; text-align: start; }
1722
+ .surface[data-view="root"]:has(.setting) .tooltip { display: none; }
1723
+ @media (max-height: 360px) {
1724
+ header h2 { -webkit-line-clamp: 2; max-height: 2.5em; }
1725
+ }
1726
+ /* Keep duplicate tooltip suppression last, including while layout data refreshes. */
1727
+ .anchor:is([data-alt-held], [data-numbering]) :is(.tooltip, [role="tooltip"]) { display: none; visibility: hidden; opacity: 0; transition: none; }
1728
+ @media (pointer: coarse), (hover: none) { .tooltip { display: none; } }
1729
+
1730
+ header h2 { margin-block-start: max(0px, calc((44px - 1.25em) / 2)); }
1731
+ [part="command-arg-label"] {
1732
+ display: -webkit-box;
1733
+ -webkit-box-orient: vertical;
1734
+ -webkit-line-clamp: var(--nook-label-lines, 3);
1735
+ line-height: 1.4;
1736
+ max-height: calc(var(--nook-label-lines, 3) * 1.4em);
1737
+ overflow: hidden;
1738
+ }
1739
+ [part="feedback-type"] {
1740
+ display: -webkit-box;
1741
+ -webkit-box-orient: vertical;
1742
+ -webkit-line-clamp: var(--nook-label-lines, 3);
1743
+ line-height: 1.4;
1744
+ max-height: calc(var(--nook-label-lines, 3) * 1.4em + 16px);
1745
+ overflow: hidden;
1746
+ }
1747
+ [part="feedback-success-message"] {
1748
+ display: -webkit-box;
1749
+ -webkit-box-orient: vertical;
1750
+ -webkit-line-clamp: 6;
1751
+ line-height: 1.5;
1752
+ max-height: 9em;
1753
+ overflow: hidden;
1754
+ }
1755
+
1756
+ slot[part="app"] { display: contents; }
1757
+ .boundary-measure {
1758
+ margin-top: var(--nook-inset-top, 0px); margin-right: var(--nook-inset-right, 0px);
1759
+ margin-bottom: var(--nook-inset-bottom, 0px); margin-left: var(--nook-inset-left, 0px);
1760
+ padding-top: env(safe-area-inset-top, 0px); padding-right: env(safe-area-inset-right, 0px);
1761
+ padding-bottom: env(safe-area-inset-bottom, 0px); padding-left: env(safe-area-inset-left, 0px);
1762
+ }
1763
+ .anchor { z-index: var(--nook-handle-z, var(--nook-z)); }
1764
+ .overlay-anchor { z-index: var(--nook-overlay-z, var(--nook-z)); width: 48px; height: 48px; }
1765
+ .overlay-anchor:is([data-corner="top-center"],[data-corner="bottom-center"]) { width: 64px; height: 48px; }
1766
+ .overlay-anchor:is([data-corner="left-center"],[data-corner="right-center"]) { width: 48px; height: 64px; }
1767
+ .preview, .landing-zone { z-index: var(--nook-drag-z, var(--nook-overlay-z, var(--nook-z))); }
1768
+ :host([data-capture-mode]) [part="handle"] { visibility: hidden; pointer-events: none; }
1769
+ @media (pointer: coarse), (hover: none) {
1770
+ .anchor .surface[data-presentation="expanded"],
1771
+ .anchor[data-corner$="center"] .surface[data-presentation="expanded"] {
1772
+ inset: var(--nook-bound-top,0px) var(--nook-bound-right,0px) var(--nook-bound-bottom,0px) var(--nook-bound-left,0px);
1773
+ }
1774
+ .surface[data-presentation="expanded"]::before {
1775
+ inset: var(--nook-bound-top,0px) var(--nook-bound-right,0px) var(--nook-bound-bottom,0px) var(--nook-bound-left,0px);
1776
+ }
1777
+ }
1778
+ .capture-session {
1779
+ position: absolute;
1780
+ width: max-content;
1781
+ max-width: calc(var(--nook-bound-width, 100vw) - 24px);
1782
+ padding: 4px;
1783
+ border: 1px solid var(--nook-border);
1784
+ border-radius: var(--nook-radius);
1785
+ background: var(--nook-material-background);
1786
+ -webkit-backdrop-filter: blur(var(--nook-material-blur));
1787
+ backdrop-filter: blur(var(--nook-material-blur));
1788
+ box-shadow: var(--nook-shadow);
1789
+ max-height: calc(var(--nook-bound-height, 100dvh) - 24px);
1790
+ overflow: auto;
1791
+ }
1792
+ [data-corner^="bottom"] .capture-session { bottom: 12px; }
1793
+ [data-corner^="top"] .capture-session { top: 12px; }
1794
+ [data-corner$="right"] .capture-session { right: 12px; }
1795
+ [data-corner$="left"] .capture-session { left: 12px; }
1796
+ [data-corner="top-center"] .capture-session,[data-corner="bottom-center"] .capture-session { left: 32px; translate: -50% 0; }
1797
+ [data-corner="left-center"] .capture-session { left: 12px; top: 32px; translate: 0 -50%; }
1798
+ [data-corner="right-center"] .capture-session { right: 12px; top: 32px; translate: 0 -50%; }
1799
+ .capture-session:has(.capture-gallery:not([hidden])),
1800
+ .capture-session:has(.capture-status[data-error="true"]:not(:empty)) {
1801
+ width: min(var(--nook-capture-width, 360px), calc(var(--nook-bound-width, 100vw) - 24px));
1802
+ padding: 8px;
1803
+ }
1804
+ .capture-controls { display: flex; gap: 4px; align-items: center; }
1805
+ .capture-controls > button { min-width: 0; min-height: 44px; padding: 8px 12px; font-size: var(--nook-text-sm); overflow-wrap: anywhere; }
1806
+ .capture-controls > [part="capture-done"] { margin-inline-start: auto; }
1807
+ [part="capture-snapshot"] { flex: 1; }
1808
+ [part="capture-review"] { display: inline-flex; align-items: center; justify-content: center; gap: 6px; font-variant-numeric: tabular-nums; }
1809
+ [part="capture-review-icon"] svg { display: block; width: 18px; height: 18px; }
1810
+ .capture-status:not([data-error="true"]) { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
1811
+ .capture-status { margin: 4px 0 0; color: var(--nook-muted); font-size: var(--nook-text-xs); line-height: 1.5; overflow-wrap: anywhere; }
1812
+ .capture-status:empty { display: none; }
1813
+ .capture-status[data-error="true"] { color: var(--nook-error-color, light-dark(#a82843,#ff9cb1)); }
1814
+ .capture-gallery { margin-top: 12px; display: grid; gap: 12px; }
1815
+ .capture-preview-image { width: 100%; max-height: min(320px, 40dvh); object-fit: contain; background: var(--nook-surface); border-radius: 8px; }
1816
+ .capture-thumbnails { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
1817
+ .capture-thumbnail { min-width: 0; display: grid; gap: 4px; }
1818
+ [part="capture-preview"] { min-width: 0; border: 1px solid var(--nook-border); border-radius: 8px; padding: 4px; background: var(--nook-surface); color: var(--nook-text); }
1819
+ [part="capture-preview"][aria-pressed="true"] { border-color: var(--nook-accent); }
1820
+ [part="capture-thumbnail-image"] { display: block; width: 100%; height: 48px; object-fit: cover; border-radius: 4px; }
1821
+ [part="capture-thumbnail-label"] { display: block; margin-top: 4px; font-size: var(--nook-text-xs); overflow-wrap: anywhere; }
1822
+ [part="capture-remove"] { min-height: 36px; padding: 4px; border-radius: 6px; background: transparent; color: var(--nook-muted); font-size: var(--nook-text-xs); }
1823
+ .swipe-dial {
1824
+ position: fixed;
1825
+ inset: var(--nook-bound-top,0px) var(--nook-bound-right,0px) var(--nook-bound-bottom,0px) var(--nook-bound-left,0px);
1826
+ pointer-events: none;
1827
+ opacity: var(--nook-dial-progress,0);
1828
+ transition: opacity 80ms linear;
1829
+ }
1830
+ .swipe-dial::before {
1831
+ content: ""; position: absolute; inset: 0;
1832
+ background: color-mix(in srgb,var(--nook-surface) 18%,transparent);
1833
+ -webkit-backdrop-filter: blur(calc(var(--nook-dial-progress,0) * 3px));
1834
+ backdrop-filter: blur(calc(var(--nook-dial-progress,0) * 3px));
1835
+ mask-image: radial-gradient(circle at var(--nook-dial-origin-x) var(--nook-dial-origin-y), transparent 0 56px, black 76px);
1836
+ }
1837
+ .swipe-dial-option {
1838
+ position: absolute; translate: -50% -50%; box-sizing: border-box; width: 88px; height: 72px; padding: 8px;
1839
+ display: grid; place-content: center; justify-items: center; gap: 4px;
1840
+ border: 1px solid var(--nook-border); border-radius: 20px; background: var(--nook-surface); color: var(--nook-text);
1841
+ box-shadow: var(--nook-shadow); opacity: .72; transition: transform 100ms ease,opacity 100ms ease,background 100ms ease;
1842
+ }
1843
+ .swipe-dial-option[data-selected] { transform: scale(1.08); opacity: 1; background: var(--nook-accent); color: var(--nook-on-accent); }
1844
+ [part="swipe-dial-icon"] svg { display: block; width: 20px; height: 20px; }
1845
+ [part="swipe-dial-label"] { font-size: var(--nook-text-xs); line-height: 1.2; text-align: center; overflow-wrap: anywhere; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; max-height: 2.4em; overflow: hidden; }
1846
+ [part="settings-footer"] {
1847
+ padding-top: var(--nook-settings-footer-gap, 12px);
1848
+ margin-top: 4px;
1849
+ border-top: 1px solid var(--nook-border);
1850
+ }
1851
+ [part="settings-footer"]:first-child { border-top: 0; margin-top: 0; padding-top: 0; }
1852
+ [part="settings-link"] {
1853
+ display: flex; align-items: center; min-height: 44px;
1854
+ padding: 8px 4px; border-radius: 8px;
1855
+ color: var(--nook-settings-link-color, var(--nook-accent));
1856
+ font-size: var(--nook-text-sm); font-weight: var(--nook-label-weight);
1857
+ line-height: var(--nook-line-height); text-decoration: none; overflow-wrap: anywhere;
1858
+ }
1859
+ [part="settings-link"]:hover { text-decoration: underline; text-underline-offset: .2em; }
1860
+ [part="settings-link"]:focus-visible { outline: 2px solid var(--nook-accent); outline-offset: 2px; }
1861
+ /* Form surfaces get their own readable widths instead of the icon-menu width. */
1862
+ .surface[data-view="settings"][data-presentation="compact"] {
1863
+ width: min(var(--nook-settings-width, var(--nook-width, 420px)), calc(var(--nook-bound-width, 100vw) - 32px));
1864
+ }
1865
+ .surface[data-view="feedback"][data-presentation="compact"] {
1866
+ width: min(var(--nook-feedback-width, var(--nook-width, 520px)), calc(var(--nook-bound-width, 100vw) - 32px));
1867
+ }
1868
+ @media (hover: hover) and (pointer: fine) {
1869
+ .surface[data-view="settings"][data-presentation="expanded"] {
1870
+ width: min(var(--nook-settings-width, var(--nook-width, 420px)), calc(var(--nook-bound-width, 100vw) - 32px));
1871
+ }
1872
+ .surface[data-view="feedback"][data-presentation="expanded"] {
1873
+ width: min(var(--nook-feedback-width, var(--nook-width, 520px)), calc(var(--nook-bound-width, 100vw) - 32px));
1874
+ }
1875
+ }
1876
+ `;