@hexclave/js 1.0.13 → 1.0.15

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.
Files changed (117) hide show
  1. package/dist/clickmap/clickmap-core.d.ts +15 -0
  2. package/dist/clickmap/clickmap-core.d.ts.map +1 -0
  3. package/dist/clickmap/clickmap-core.js +1527 -0
  4. package/dist/clickmap/clickmap-core.js.map +1 -0
  5. package/dist/clickmap/clickmap-styles.d.ts +5 -0
  6. package/dist/clickmap/clickmap-styles.d.ts.map +1 -0
  7. package/dist/clickmap/clickmap-styles.js +1095 -0
  8. package/dist/clickmap/clickmap-styles.js.map +1 -0
  9. package/dist/clickmap/index.d.ts +16 -0
  10. package/dist/clickmap/index.d.ts.map +1 -0
  11. package/dist/clickmap/index.js +74 -0
  12. package/dist/clickmap/index.js.map +1 -0
  13. package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
  14. package/dist/dev-tool/dev-tool-core.js +259 -263
  15. package/dist/dev-tool/dev-tool-core.js.map +1 -1
  16. package/dist/dev-tool/dev-tool-styles.d.ts +1 -1
  17. package/dist/dev-tool/dev-tool-styles.d.ts.map +1 -1
  18. package/dist/dev-tool/dev-tool-styles.js +13 -143
  19. package/dist/dev-tool/dev-tool-styles.js.map +1 -1
  20. package/dist/dev-tool/index.d.ts.map +1 -1
  21. package/dist/dev-tool/index.js +5 -12
  22. package/dist/dev-tool/index.js.map +1 -1
  23. package/dist/esm/clickmap/clickmap-core.d.ts +15 -0
  24. package/dist/esm/clickmap/clickmap-core.d.ts.map +1 -0
  25. package/dist/esm/clickmap/clickmap-core.js +1525 -0
  26. package/dist/esm/clickmap/clickmap-core.js.map +1 -0
  27. package/dist/esm/clickmap/clickmap-styles.d.ts +5 -0
  28. package/dist/esm/clickmap/clickmap-styles.d.ts.map +1 -0
  29. package/dist/esm/clickmap/clickmap-styles.js +1093 -0
  30. package/dist/esm/clickmap/clickmap-styles.js.map +1 -0
  31. package/dist/esm/clickmap/index.d.ts +16 -0
  32. package/dist/esm/clickmap/index.d.ts.map +1 -0
  33. package/dist/esm/clickmap/index.js +72 -0
  34. package/dist/esm/clickmap/index.js.map +1 -0
  35. package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
  36. package/dist/esm/dev-tool/dev-tool-core.js +36 -40
  37. package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
  38. package/dist/esm/dev-tool/dev-tool-styles.d.ts +1 -1
  39. package/dist/esm/dev-tool/dev-tool-styles.d.ts.map +1 -1
  40. package/dist/esm/dev-tool/dev-tool-styles.js +13 -143
  41. package/dist/esm/dev-tool/dev-tool-styles.js.map +1 -1
  42. package/dist/esm/dev-tool/index.d.ts.map +1 -1
  43. package/dist/esm/dev-tool/index.js +2 -9
  44. package/dist/esm/dev-tool/index.js.map +1 -1
  45. package/dist/esm/in-page-ui/base-styles.d.ts +5 -0
  46. package/dist/esm/in-page-ui/base-styles.d.ts.map +1 -0
  47. package/dist/esm/in-page-ui/base-styles.js +166 -0
  48. package/dist/esm/in-page-ui/base-styles.js.map +1 -0
  49. package/dist/esm/in-page-ui/dom.d.ts +15 -0
  50. package/dist/esm/in-page-ui/dom.d.ts.map +1 -0
  51. package/dist/esm/in-page-ui/dom.js +44 -0
  52. package/dist/esm/in-page-ui/dom.js.map +1 -0
  53. package/dist/esm/lib/auth.js +1 -1
  54. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +5 -0
  55. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  56. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +20 -0
  57. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  58. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  59. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -2
  60. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  61. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
  62. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts +13 -0
  63. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  64. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js +146 -14
  65. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  66. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js +221 -0
  67. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
  68. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js +1 -1
  69. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +5 -0
  70. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  71. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  72. package/dist/in-page-ui/base-styles.d.ts +5 -0
  73. package/dist/in-page-ui/base-styles.d.ts.map +1 -0
  74. package/dist/in-page-ui/base-styles.js +168 -0
  75. package/dist/in-page-ui/base-styles.js.map +1 -0
  76. package/dist/in-page-ui/dom.d.ts +15 -0
  77. package/dist/in-page-ui/dom.d.ts.map +1 -0
  78. package/dist/in-page-ui/dom.js +51 -0
  79. package/dist/in-page-ui/dom.js.map +1 -0
  80. package/dist/integrations/convex/component/convex.config.d.ts +1 -1
  81. package/dist/lib/auth.js +1 -1
  82. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +5 -0
  83. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  84. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +20 -0
  85. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  86. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  87. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -2
  88. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  89. package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
  90. package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts +13 -0
  91. package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  92. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js +146 -14
  93. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  94. package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js +221 -0
  95. package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
  96. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js +1 -1
  97. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +5 -0
  98. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  99. package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  100. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +1 -1
  101. package/dist/lib/hexclave-app/common.d.ts +1 -1
  102. package/dist/{storage-CG8QLF8G.d.ts → storage-CKsyME2q.d.ts} +1 -1
  103. package/dist/{storage-CG8QLF8G.d.ts.map → storage-CKsyME2q.d.ts.map} +1 -1
  104. package/package.json +2 -2
  105. package/src/clickmap/clickmap-core.ts +1997 -0
  106. package/src/clickmap/clickmap-styles.ts +1102 -0
  107. package/src/clickmap/index.ts +95 -0
  108. package/src/dev-tool/dev-tool-core.ts +38 -65
  109. package/src/dev-tool/dev-tool-styles.ts +13 -142
  110. package/src/dev-tool/index.ts +1 -14
  111. package/src/in-page-ui/base-styles.ts +171 -0
  112. package/src/in-page-ui/dom.ts +80 -0
  113. package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +23 -1
  114. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +7 -0
  115. package/src/lib/hexclave-app/apps/implementations/event-tracker.test.ts +287 -0
  116. package/src/lib/hexclave-app/apps/implementations/event-tracker.ts +226 -16
  117. package/src/lib/hexclave-app/apps/interfaces/admin-app.ts +3 -0
@@ -0,0 +1,1102 @@
1
+
2
+ //===========================================
3
+ // THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template
4
+ //===========================================
5
+ // CSS for the standalone clickmap overlay.
6
+ //
7
+ // The clickmap is fully independent from the dev tool: it ships its own
8
+ // stylesheet and panel chrome so the dev tool (and its stylesheet) can be
9
+ // removed without affecting the clickmap. Class names keep the shared `sdt-`
10
+ // prefix on purpose — the analytics ingest/query layers exclude self-clicks by
11
+ // that prefix (see @hexclave/shared/dist/utils/dev-tool).
12
+ // Uses the .hexclave-clickmap scope to avoid conflicts with host app styles.
13
+ // Design tokens + base reset come from the shared in-page-ui module.
14
+
15
+ import { getInPageUiBaseCSS } from "../in-page-ui/base-styles";
16
+
17
+ export const clickmapCSS = getInPageUiBaseCSS('.hexclave-clickmap') + `
18
+ /* Bottom-centered floating panel (the clickmap's only chrome) */
19
+ .hexclave-clickmap .sdt-hm-panel {
20
+ position: fixed;
21
+ left: 50%;
22
+ bottom: 18px;
23
+ z-index: 2147483647;
24
+ width: min(680px, calc(100vw - 24px));
25
+ max-width: calc(100vw - 24px);
26
+ max-height: calc(100vh - 36px);
27
+ transform: translateX(-50%);
28
+ display: flex;
29
+ flex-direction: column;
30
+ overflow: visible;
31
+ }
32
+
33
+ .hexclave-clickmap .sdt-hm-panel-inner {
34
+ display: flex;
35
+ flex-direction: column;
36
+ width: 100%;
37
+ animation: sdt-hm-panel-enter 0.2s ease-out;
38
+ }
39
+
40
+ @keyframes sdt-hm-panel-enter {
41
+ from {
42
+ opacity: 0;
43
+ transform: scale(0.95) translateY(8px);
44
+ }
45
+ to {
46
+ opacity: 1;
47
+ transform: scale(1) translateY(0);
48
+ }
49
+ }
50
+
51
+ /* --- Clickmaps --- */
52
+
53
+ .hexclave-clickmap .sdt-hm {
54
+ height: auto;
55
+ display: flex;
56
+ flex-direction: column;
57
+ gap: 8px;
58
+ overflow: visible;
59
+ background: transparent;
60
+ }
61
+
62
+ /* One spacing rhythm across the pill: a tight 2px base gap so adjacent
63
+ controls read as clusters, with the wider between-group separation
64
+ coming only from the metrics block's own padding (and the title's
65
+ trailing padding). Item-level whitespace inside ghost icon buttons
66
+ already provides the rest of the breathing room. */
67
+ .hexclave-clickmap .sdt-hm-toolbar {
68
+ position: relative;
69
+ z-index: 4;
70
+ display: flex;
71
+ align-items: center;
72
+ gap: 2px;
73
+ min-height: 44px;
74
+ padding: 6px 8px;
75
+ border: 1px solid var(--sdt-border);
76
+ border-radius: 999px;
77
+ background: var(--sdt-overlay-bg);
78
+ box-shadow: 0 18px 48px rgba(0, 0, 0, 0.24);
79
+ backdrop-filter: blur(18px);
80
+ }
81
+
82
+ .hexclave-clickmap .sdt-hm-toolbar-title {
83
+ flex-shrink: 0;
84
+ padding: 0 6px 0 2px;
85
+ font-size: 13px;
86
+ font-weight: 650;
87
+ color: var(--sdt-text);
88
+ line-height: 1.1;
89
+ }
90
+
91
+ .hexclave-clickmap .sdt-hm-toolbar-filters {
92
+ flex: 1;
93
+ min-width: 0;
94
+ display: flex;
95
+ align-items: center;
96
+ gap: 6px;
97
+ }
98
+
99
+ .hexclave-clickmap .sdt-hm-toolbar-filters .sdt-hm-filter-input {
100
+ height: 28px;
101
+ border-radius: 999px;
102
+ font-size: 11.5px;
103
+ }
104
+
105
+ .hexclave-clickmap .sdt-hm-toolbar-filters > .sdt-hm-filter-input {
106
+ flex-shrink: 0;
107
+ width: auto;
108
+ max-width: 120px;
109
+ padding-right: 4px;
110
+ }
111
+
112
+ .hexclave-clickmap .sdt-hm-toolbar-url {
113
+ position: relative;
114
+ flex: 1;
115
+ min-width: 0;
116
+ display: flex;
117
+ align-items: center;
118
+ /* The revert/info ghost buttons hug the input they belong to. */
119
+ gap: 2px;
120
+ }
121
+
122
+ .hexclave-clickmap .sdt-hm-toolbar-url .sdt-hm-filter-input {
123
+ flex: 1;
124
+ }
125
+
126
+ .hexclave-clickmap .sdt-hm-mode {
127
+ flex-shrink: 0;
128
+ display: inline-flex;
129
+ align-items: center;
130
+ gap: 2px;
131
+ padding: 2px;
132
+ border-radius: 999px;
133
+ background: var(--sdt-bg-elevated);
134
+ border: 1px solid var(--sdt-border-subtle);
135
+ }
136
+
137
+ .hexclave-clickmap .sdt-hm-mode-btn {
138
+ min-width: 24px;
139
+ height: 20px;
140
+ display: inline-flex;
141
+ align-items: center;
142
+ justify-content: center;
143
+ border: 0;
144
+ border-radius: 999px;
145
+ background: transparent;
146
+ color: var(--sdt-text-tertiary);
147
+ padding: 0 7px;
148
+ font: inherit;
149
+ font-family: var(--sdt-font-mono, ui-monospace, monospace);
150
+ font-size: 11px;
151
+ font-weight: 600;
152
+ cursor: pointer;
153
+ }
154
+
155
+ .hexclave-clickmap .sdt-hm-mode-btn:not(.sdt-hm-mode-btn-active):hover {
156
+ color: var(--sdt-text);
157
+ }
158
+
159
+ .hexclave-clickmap .sdt-hm-mode-btn-active {
160
+ background: var(--sdt-accent);
161
+ color: white;
162
+ }
163
+
164
+ .hexclave-clickmap .sdt-hm-filter-input-error,
165
+ .hexclave-clickmap .sdt-hm-filter-input-error:focus {
166
+ border-color: var(--sdt-error);
167
+ }
168
+
169
+ .hexclave-clickmap .sdt-hm-filter-info {
170
+ flex-shrink: 0;
171
+ width: 20px;
172
+ height: 20px;
173
+ display: inline-flex;
174
+ align-items: center;
175
+ justify-content: center;
176
+ border: 0;
177
+ border-radius: 999px;
178
+ background: transparent;
179
+ color: var(--sdt-text-tertiary);
180
+ cursor: pointer;
181
+ padding: 0;
182
+ }
183
+
184
+ .hexclave-clickmap .sdt-hm-filter-info:hover,
185
+ .hexclave-clickmap .sdt-hm-filter-info[aria-expanded="true"] {
186
+ background: var(--sdt-bg-hover);
187
+ color: var(--sdt-text);
188
+ }
189
+
190
+ .hexclave-clickmap .sdt-hm-url-help {
191
+ display: none;
192
+ position: absolute;
193
+ bottom: calc(100% + 10px);
194
+ right: 0;
195
+ z-index: 6;
196
+ width: 320px;
197
+ max-width: min(320px, calc(100vw - 32px));
198
+ box-sizing: border-box;
199
+ padding: 14px;
200
+ border: 1px solid var(--sdt-border);
201
+ border-radius: var(--sdt-radius-lg);
202
+ background: var(--sdt-bg);
203
+ box-shadow: 0 18px 48px rgba(0, 0, 0, 0.28);
204
+ backdrop-filter: blur(18px);
205
+ cursor: default;
206
+ }
207
+
208
+ .hexclave-clickmap .sdt-hm-url-help-open {
209
+ display: block;
210
+ }
211
+
212
+ .hexclave-clickmap .sdt-hm-url-help-title {
213
+ font-size: 12px;
214
+ font-weight: 650;
215
+ color: var(--sdt-text);
216
+ margin-bottom: 6px;
217
+ }
218
+
219
+ .hexclave-clickmap .sdt-hm-url-help-body {
220
+ font-size: 11.5px;
221
+ line-height: 1.5;
222
+ color: var(--sdt-text-secondary);
223
+ }
224
+
225
+ .hexclave-clickmap .sdt-hm-url-help-rows {
226
+ display: flex;
227
+ flex-direction: column;
228
+ gap: 6px;
229
+ margin-top: 12px;
230
+ padding-top: 12px;
231
+ border-top: 1px solid var(--sdt-border-subtle);
232
+ }
233
+
234
+ .hexclave-clickmap .sdt-hm-url-help-row {
235
+ display: flex;
236
+ align-items: baseline;
237
+ gap: 10px;
238
+ }
239
+
240
+ .hexclave-clickmap .sdt-hm-url-help-code {
241
+ flex-shrink: 0;
242
+ border-radius: var(--sdt-radius);
243
+ background: var(--sdt-bg-elevated);
244
+ border: 1px solid var(--sdt-border-subtle);
245
+ padding: 1px 6px;
246
+ font-family: var(--sdt-font-mono, ui-monospace, monospace);
247
+ font-size: 11px;
248
+ color: var(--sdt-text);
249
+ white-space: nowrap;
250
+ }
251
+
252
+ .hexclave-clickmap .sdt-hm-url-help-desc {
253
+ font-size: 11px;
254
+ line-height: 1.4;
255
+ color: var(--sdt-text-secondary);
256
+ }
257
+
258
+ .hexclave-clickmap .sdt-hm-toolbar-metrics {
259
+ flex-shrink: 0;
260
+ display: flex;
261
+ align-items: center;
262
+ gap: 8px;
263
+ /* Side padding is what separates the metrics group from the url field
264
+ on its left and the toggle cluster on its right. */
265
+ padding: 0 8px;
266
+ }
267
+
268
+ .hexclave-clickmap .sdt-hm-toolbar-metric {
269
+ display: inline-flex;
270
+ align-items: center;
271
+ gap: 4px;
272
+ color: var(--sdt-text-secondary);
273
+ }
274
+
275
+ .hexclave-clickmap .sdt-hm-toolbar-metric-value {
276
+ font-size: 12px;
277
+ font-weight: 700;
278
+ color: var(--sdt-text);
279
+ font-variant-numeric: tabular-nums;
280
+ }
281
+
282
+ .hexclave-clickmap .sdt-hm-toolbar-metric-icon {
283
+ display: inline-flex;
284
+ align-items: center;
285
+ color: var(--sdt-text-tertiary);
286
+ }
287
+
288
+ .hexclave-clickmap .sdt-hm-icon-btn {
289
+ width: 28px;
290
+ height: 28px;
291
+ display: inline-flex;
292
+ align-items: center;
293
+ justify-content: center;
294
+ flex-shrink: 0;
295
+ border: 0;
296
+ border-radius: 999px;
297
+ background: transparent;
298
+ color: var(--sdt-text-secondary);
299
+ cursor: pointer;
300
+ }
301
+
302
+ .hexclave-clickmap .sdt-hm-icon-btn:hover {
303
+ background: var(--sdt-bg-hover);
304
+ color: var(--sdt-text);
305
+ }
306
+
307
+ /* Presses must always target the button itself: the chevron svg is replaced
308
+ when the panel toggles, and a press whose mousedown landed on a since-
309
+ detached svg never produces a click. */
310
+ .hexclave-clickmap .sdt-hm-icon-btn svg {
311
+ pointer-events: none;
312
+ }
313
+
314
+ /* Styled tooltips for toolbar controls, driven by a data-sdt-tip attribute
315
+ instead of native title so they match the overlay theme and also show on
316
+ keyboard focus. The hover transition-delay acts as a hover-intent gate so
317
+ tooltips don't flash while the pointer crosses the toolbar; hover-out has
318
+ no delay, so they dismiss instantly. */
319
+ .hexclave-clickmap [data-sdt-tip] {
320
+ position: relative;
321
+ }
322
+
323
+ .hexclave-clickmap [data-sdt-tip]::after {
324
+ content: attr(data-sdt-tip);
325
+ position: absolute;
326
+ bottom: calc(100% + 8px);
327
+ left: 50%;
328
+ transform: translateX(-50%) translateY(2px);
329
+ padding: 4px 8px;
330
+ border: 1px solid var(--sdt-border);
331
+ border-radius: var(--sdt-radius);
332
+ background: var(--sdt-overlay-bg);
333
+ backdrop-filter: blur(18px);
334
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.24);
335
+ color: var(--sdt-text);
336
+ font-size: 11px;
337
+ font-weight: 600;
338
+ line-height: 1.2;
339
+ white-space: nowrap;
340
+ pointer-events: none;
341
+ opacity: 0;
342
+ transition: opacity 0.12s ease, transform 0.12s ease;
343
+ z-index: 3;
344
+ }
345
+
346
+ .hexclave-clickmap [data-sdt-tip]:hover::after,
347
+ .hexclave-clickmap [data-sdt-tip]:focus-visible::after {
348
+ opacity: 1;
349
+ transform: translateX(-50%) translateY(0);
350
+ transition-delay: 0.35s;
351
+ }
352
+
353
+ /* The info button's tooltip would sit on top of its own help popover. */
354
+ .hexclave-clickmap .sdt-hm-filter-info[aria-expanded="true"]::after {
355
+ opacity: 0;
356
+ }
357
+
358
+ .hexclave-clickmap .sdt-hm-details {
359
+ display: none;
360
+ position: relative;
361
+ z-index: 1;
362
+ max-height: min(460px, calc(100vh - 98px));
363
+ overflow: hidden;
364
+ border: 1px solid var(--sdt-border);
365
+ border-radius: var(--sdt-radius-lg);
366
+ background: var(--sdt-bg);
367
+ box-shadow: 0 18px 48px rgba(0, 0, 0, 0.22);
368
+ }
369
+
370
+ .hexclave-clickmap .sdt-hm-expanded .sdt-hm-details {
371
+ display: flex;
372
+ flex-direction: column;
373
+ }
374
+
375
+ .hexclave-clickmap .sdt-hm-head {
376
+ flex-shrink: 0;
377
+ display: flex;
378
+ flex-direction: column;
379
+ gap: 14px;
380
+ padding: 16px;
381
+ border-bottom: 1px solid var(--sdt-border-subtle);
382
+ }
383
+
384
+ .hexclave-clickmap .sdt-hm-filters {
385
+ display: flex;
386
+ flex-direction: column;
387
+ gap: 12px;
388
+ }
389
+
390
+ .hexclave-clickmap .sdt-hm-filter-row {
391
+ display: grid;
392
+ grid-template-columns: repeat(2, minmax(0, 1fr));
393
+ gap: 12px;
394
+ }
395
+
396
+ .hexclave-clickmap .sdt-hm-seg {
397
+ position: relative;
398
+ display: flex;
399
+ align-items: stretch;
400
+ gap: 2px;
401
+ height: 30px;
402
+ padding: 3px;
403
+ border-radius: var(--sdt-radius);
404
+ border: 1px solid var(--sdt-border-subtle);
405
+ background: var(--sdt-bg-elevated);
406
+ box-sizing: border-box;
407
+ }
408
+
409
+ .hexclave-clickmap .sdt-hm-seg-thumb {
410
+ position: absolute;
411
+ top: 3px;
412
+ left: 0;
413
+ bottom: 3px;
414
+ width: 0;
415
+ border-radius: calc(var(--sdt-radius) - 2px);
416
+ background: var(--sdt-bg);
417
+ border: 1px solid var(--sdt-border);
418
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
419
+ transform: translateX(0);
420
+ transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1), width 220ms cubic-bezier(0.22, 1, 0.36, 1);
421
+ pointer-events: none;
422
+ }
423
+
424
+ .hexclave-clickmap .sdt-hm-seg-btn {
425
+ position: relative;
426
+ z-index: 1;
427
+ flex: 1 1 0;
428
+ min-width: 0;
429
+ border: 0;
430
+ background: transparent;
431
+ color: var(--sdt-text-tertiary);
432
+ font: inherit;
433
+ font-family: var(--sdt-font);
434
+ font-size: 11px;
435
+ font-weight: 600;
436
+ line-height: 1;
437
+ padding: 0 4px;
438
+ border-radius: calc(var(--sdt-radius) - 2px);
439
+ cursor: pointer;
440
+ white-space: nowrap;
441
+ overflow: hidden;
442
+ text-overflow: ellipsis;
443
+ transition: color 160ms ease;
444
+ }
445
+
446
+ .hexclave-clickmap .sdt-hm-seg-btn:hover {
447
+ color: var(--sdt-text-secondary);
448
+ }
449
+
450
+ .hexclave-clickmap .sdt-hm-seg-btn[aria-checked="true"] {
451
+ color: var(--sdt-text);
452
+ }
453
+
454
+ .hexclave-clickmap .sdt-hm-seg-btn:focus-visible {
455
+ outline: 2px solid var(--sdt-accent);
456
+ outline-offset: -2px;
457
+ }
458
+
459
+ @media (prefers-reduced-motion: reduce) {
460
+ .hexclave-clickmap .sdt-hm-seg-thumb {
461
+ transition: none;
462
+ }
463
+ }
464
+
465
+ .hexclave-clickmap .sdt-hm-filter-field {
466
+ display: flex;
467
+ flex-direction: column;
468
+ gap: 5px;
469
+ min-width: 0;
470
+ }
471
+
472
+ .hexclave-clickmap .sdt-hm-filter-label-row {
473
+ display: flex;
474
+ align-items: center;
475
+ justify-content: space-between;
476
+ gap: 6px;
477
+ min-height: 13px;
478
+ }
479
+
480
+ .hexclave-clickmap .sdt-hm-filter-label {
481
+ font-size: 10px;
482
+ font-weight: 600;
483
+ text-transform: uppercase;
484
+ letter-spacing: 0.04em;
485
+ color: var(--sdt-text-tertiary);
486
+ }
487
+
488
+ .hexclave-clickmap .sdt-hm-filter-reset {
489
+ display: none;
490
+ flex-shrink: 0;
491
+ width: 20px;
492
+ height: 20px;
493
+ align-items: center;
494
+ justify-content: center;
495
+ border: 0;
496
+ border-radius: 999px;
497
+ background: transparent;
498
+ padding: 0;
499
+ color: var(--sdt-accent);
500
+ cursor: pointer;
501
+ }
502
+
503
+ .hexclave-clickmap .sdt-hm-filter-reset:hover {
504
+ background: var(--sdt-bg-hover);
505
+ color: var(--sdt-accent-hover);
506
+ }
507
+
508
+ .hexclave-clickmap .sdt-hm-filter-reset-visible {
509
+ display: inline-flex;
510
+ }
511
+
512
+ .hexclave-clickmap .sdt-hm-filter-input {
513
+ height: 30px;
514
+ border-radius: var(--sdt-radius);
515
+ border: 1px solid var(--sdt-border-subtle);
516
+ background: var(--sdt-bg-elevated);
517
+ color: var(--sdt-text);
518
+ padding: 0 9px;
519
+ font: inherit;
520
+ font-size: 12px;
521
+ font-family: var(--sdt-font);
522
+ min-width: 0;
523
+ width: 100%;
524
+ box-sizing: border-box;
525
+ }
526
+
527
+ .hexclave-clickmap .sdt-hm-filter-input:focus {
528
+ outline: none;
529
+ border-color: var(--sdt-accent);
530
+ }
531
+
532
+ .hexclave-clickmap .sdt-hm-actions {
533
+ display: flex;
534
+ align-items: stretch;
535
+ gap: 10px;
536
+ }
537
+
538
+ .hexclave-clickmap .sdt-hm-actions .sdt-hm-btn {
539
+ height: auto;
540
+ flex-shrink: 0;
541
+ white-space: nowrap;
542
+ padding: 0 16px;
543
+ }
544
+
545
+ .hexclave-clickmap .sdt-hm-btn {
546
+ height: 30px;
547
+ border-radius: var(--sdt-radius);
548
+ border: 1px solid var(--sdt-border-subtle);
549
+ background: var(--sdt-bg-elevated);
550
+ color: var(--sdt-text-secondary);
551
+ padding: 0 10px;
552
+ font: inherit;
553
+ font-size: 12px;
554
+ cursor: pointer;
555
+ transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
556
+ }
557
+
558
+ .hexclave-clickmap .sdt-hm-btn:hover {
559
+ background: var(--sdt-bg-hover);
560
+ color: var(--sdt-text);
561
+ transition: none;
562
+ }
563
+
564
+ .hexclave-clickmap .sdt-hm-btn-primary {
565
+ background: var(--sdt-accent);
566
+ border-color: var(--sdt-accent);
567
+ color: white;
568
+ }
569
+
570
+ .hexclave-clickmap .sdt-hm-btn-primary:hover {
571
+ background: var(--sdt-accent);
572
+ border-color: var(--sdt-accent);
573
+ color: white;
574
+ transition: none;
575
+ }
576
+
577
+ .hexclave-clickmap .sdt-hm-btn-sm {
578
+ height: 24px;
579
+ flex-shrink: 0;
580
+ border-radius: 999px;
581
+ padding: 0 10px;
582
+ font-size: 11px;
583
+ font-weight: 600;
584
+ white-space: nowrap;
585
+ }
586
+
587
+ .hexclave-clickmap .sdt-hm-btn:disabled {
588
+ opacity: 0.45;
589
+ pointer-events: none;
590
+ }
591
+
592
+ /* Dead-clicks-only filter toggle (toolbar icon button + expanded-panel
593
+ button). Active state borrows the error tint used by the dead chips so
594
+ the mode reads as "you are looking at failures". */
595
+ .hexclave-clickmap .sdt-hm-dead-toggle {
596
+ display: inline-flex;
597
+ align-items: center;
598
+ justify-content: center;
599
+ gap: 6px;
600
+ }
601
+
602
+ .hexclave-clickmap .sdt-hm-dead-toggle-icon {
603
+ display: inline-flex;
604
+ align-items: center;
605
+ }
606
+
607
+ .hexclave-clickmap .sdt-hm-dead-toggle-active,
608
+ .hexclave-clickmap .sdt-hm-dead-toggle-active:hover {
609
+ background: var(--sdt-error-muted);
610
+ border-color: var(--sdt-error);
611
+ color: var(--sdt-error);
612
+ transition: none;
613
+ }
614
+
615
+ /* Toolbar overlay toggle while the overlay is hidden: tinted so the off
616
+ state reads at a glance, eye-off icon carries the meaning. */
617
+ .hexclave-clickmap .sdt-hm-overlay-mini-off,
618
+ .hexclave-clickmap .sdt-hm-overlay-mini-off:hover {
619
+ background: var(--sdt-accent-muted);
620
+ color: var(--sdt-accent-hover);
621
+ }
622
+
623
+ .hexclave-clickmap .sdt-hm-stats {
624
+ flex: 1;
625
+ min-width: 0;
626
+ display: grid;
627
+ grid-template-columns: repeat(3, minmax(0, 1fr));
628
+ gap: 8px;
629
+ }
630
+
631
+ .hexclave-clickmap .sdt-hm-stat {
632
+ min-width: 0;
633
+ display: flex;
634
+ flex-direction: column;
635
+ gap: 2px;
636
+ border-radius: var(--sdt-radius);
637
+ background: var(--sdt-bg-elevated);
638
+ padding: 7px 10px;
639
+ }
640
+
641
+ .hexclave-clickmap .sdt-hm-stat-label {
642
+ font-size: 9.5px;
643
+ font-weight: 600;
644
+ text-transform: uppercase;
645
+ letter-spacing: 0.04em;
646
+ color: var(--sdt-text-tertiary);
647
+ }
648
+
649
+ .hexclave-clickmap .sdt-hm-stat-value {
650
+ font-size: 15px;
651
+ font-weight: 650;
652
+ color: var(--sdt-text);
653
+ font-variant-numeric: tabular-nums;
654
+ }
655
+
656
+ /* No top padding on the scroller: the sticky list header pins at top 0,
657
+ and scroller padding reads as a see-through strip above it while the
658
+ list scrolls (Chromium offsets sticky insets by the scroll container's
659
+ padding). The status line below carries the 12px instead. */
660
+ .hexclave-clickmap .sdt-hm-body {
661
+ flex: 1;
662
+ min-height: 0;
663
+ overflow: auto;
664
+ display: flex;
665
+ flex-direction: column;
666
+ gap: 10px;
667
+ padding: 0 16px 14px;
668
+ }
669
+
670
+ .hexclave-clickmap .sdt-hm-token-status {
671
+ color: var(--sdt-text-secondary);
672
+ padding: 12px 2px 0;
673
+ font-size: 11.5px;
674
+ line-height: 1.45;
675
+ }
676
+
677
+ .hexclave-clickmap .sdt-hm-token-status-error {
678
+ color: var(--sdt-error);
679
+ }
680
+
681
+ .hexclave-clickmap .sdt-hm-viewport-warning {
682
+ display: none;
683
+ gap: 8px;
684
+ padding: 10px;
685
+ border-radius: var(--sdt-radius);
686
+ border: 1px solid rgba(234, 179, 8, 0.24);
687
+ background: var(--sdt-warning-muted);
688
+ color: var(--sdt-text);
689
+ }
690
+
691
+ .hexclave-clickmap .sdt-hm-viewport-warning-visible {
692
+ display: flex;
693
+ flex-direction: column;
694
+ }
695
+
696
+ .hexclave-clickmap .sdt-hm-viewport-warning-title {
697
+ font-size: 12px;
698
+ font-weight: 650;
699
+ color: var(--sdt-text);
700
+ line-height: 1.2;
701
+ }
702
+
703
+ .hexclave-clickmap .sdt-hm-viewport-warning-body {
704
+ font-size: 11.5px;
705
+ line-height: 1.45;
706
+ color: var(--sdt-text-secondary);
707
+ }
708
+
709
+ .hexclave-clickmap .sdt-hm-viewport-warning-actions {
710
+ display: flex;
711
+ flex-wrap: wrap;
712
+ gap: 8px;
713
+ }
714
+
715
+ .hexclave-clickmap .sdt-hm-viewport-warning-action {
716
+ min-width: 0;
717
+ display: inline-flex;
718
+ align-items: center;
719
+ gap: 6px;
720
+ border-radius: var(--sdt-radius);
721
+ border: 1px solid var(--sdt-border-subtle);
722
+ background: var(--sdt-bg-elevated);
723
+ padding: 4px 5px 4px 8px;
724
+ }
725
+
726
+ .hexclave-clickmap .sdt-hm-viewport-warning-label {
727
+ font-size: 10px;
728
+ font-weight: 600;
729
+ text-transform: uppercase;
730
+ letter-spacing: 0.04em;
731
+ color: var(--sdt-text-tertiary);
732
+ }
733
+
734
+ .hexclave-clickmap .sdt-hm-viewport-warning-code {
735
+ font-family: var(--sdt-font-mono);
736
+ font-size: 11.5px;
737
+ font-weight: 650;
738
+ color: var(--sdt-text);
739
+ font-variant-numeric: tabular-nums;
740
+ }
741
+
742
+ .hexclave-clickmap .sdt-hm-copy-btn {
743
+ height: 22px;
744
+ border: 1px solid var(--sdt-border-subtle);
745
+ border-radius: 999px;
746
+ background: var(--sdt-bg);
747
+ color: var(--sdt-text-secondary);
748
+ padding: 0 8px;
749
+ font: inherit;
750
+ font-size: 10.5px;
751
+ font-weight: 600;
752
+ cursor: pointer;
753
+ transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
754
+ }
755
+
756
+ .hexclave-clickmap .sdt-hm-copy-btn:hover {
757
+ background: var(--sdt-bg-hover);
758
+ border-color: var(--sdt-border);
759
+ color: var(--sdt-text);
760
+ transition: none;
761
+ }
762
+
763
+ .hexclave-clickmap .sdt-hm-list {
764
+ display: flex;
765
+ flex-direction: column;
766
+ gap: 2px;
767
+ }
768
+
769
+ /* Datagrid-style header above the element list. Sticky inside the
770
+ scrolling body (full-bleed via negative margins) so select-all and the
771
+ bulk show/hide actions stay reachable while the list scrolls. The 24px
772
+ left padding lines its master checkbox up with the row checkboxes
773
+ (16px body padding + 8px row padding). */
774
+ .hexclave-clickmap .sdt-hm-list-header {
775
+ display: none;
776
+ position: sticky;
777
+ top: 0;
778
+ z-index: 2;
779
+ align-items: center;
780
+ gap: 8px;
781
+ margin: 0 -16px;
782
+ padding: 8px 24px;
783
+ background: var(--sdt-bg);
784
+ border-bottom: 1px solid var(--sdt-border-subtle);
785
+ }
786
+
787
+ .hexclave-clickmap .sdt-hm-list-header-visible {
788
+ display: flex;
789
+ }
790
+
791
+ .hexclave-clickmap .sdt-hm-list-header-summary {
792
+ flex: 1;
793
+ min-width: 0;
794
+ overflow: hidden;
795
+ text-overflow: ellipsis;
796
+ white-space: nowrap;
797
+ font-size: 11px;
798
+ font-weight: 600;
799
+ color: var(--sdt-text-secondary);
800
+ font-variant-numeric: tabular-nums;
801
+ }
802
+
803
+ /* Element search, compacted to header height. Shrinks before the summary
804
+ does, but never below a usable width. */
805
+ .hexclave-clickmap .sdt-hm-list-header .sdt-hm-filter-input {
806
+ flex: 0 1 220px;
807
+ width: auto;
808
+ min-width: 90px;
809
+ height: 24px;
810
+ border-radius: 999px;
811
+ font-size: 11px;
812
+ padding: 0 10px;
813
+ }
814
+
815
+ .hexclave-clickmap .sdt-hm-empty {
816
+ display: flex;
817
+ align-items: center;
818
+ justify-content: center;
819
+ min-height: 140px;
820
+ border-radius: var(--sdt-radius);
821
+ border: 1px dashed var(--sdt-border);
822
+ color: var(--sdt-text-tertiary);
823
+ font-size: 12px;
824
+ text-align: center;
825
+ padding: 0 16px;
826
+ }
827
+
828
+ .hexclave-clickmap .sdt-hm-row {
829
+ width: 100%;
830
+ display: grid;
831
+ grid-template-columns: 16px minmax(42px, auto) minmax(0, 1fr) 24px;
832
+ align-items: center;
833
+ gap: 10px;
834
+ border: 0;
835
+ border-radius: var(--sdt-radius);
836
+ background: transparent;
837
+ color: var(--sdt-text);
838
+ padding: 8px;
839
+ text-align: left;
840
+ cursor: pointer;
841
+ font-family: var(--sdt-font);
842
+ user-select: none;
843
+ }
844
+
845
+ .hexclave-clickmap .sdt-hm-row:hover {
846
+ background: var(--sdt-bg-hover);
847
+ transition: none;
848
+ }
849
+
850
+ .hexclave-clickmap .sdt-hm-row:focus-visible {
851
+ outline: 2px solid var(--sdt-accent);
852
+ outline-offset: 2px;
853
+ }
854
+
855
+ .hexclave-clickmap .sdt-hm-row-muted {
856
+ opacity: 0.52;
857
+ }
858
+
859
+ .hexclave-clickmap .sdt-hm-row-highlighted {
860
+ background: rgba(250, 204, 21, 0.12);
861
+ }
862
+
863
+ /* Declared after -highlighted and with a :hover pair so the selection tint
864
+ wins over both the lead-highlight wash and the plain hover background. */
865
+ .hexclave-clickmap .sdt-hm-row-selected,
866
+ .hexclave-clickmap .sdt-hm-row-selected:hover {
867
+ background: var(--sdt-accent-muted);
868
+ }
869
+
870
+ /* Row checkbox (also reused as the list header's master checkbox). A
871
+ button with role=checkbox instead of a native input so it can render the
872
+ overlay-themed check/indeterminate icons. */
873
+ .hexclave-clickmap .sdt-hm-row-check {
874
+ display: inline-flex;
875
+ align-items: center;
876
+ justify-content: center;
877
+ width: 16px;
878
+ height: 16px;
879
+ flex-shrink: 0;
880
+ border: 1px solid var(--sdt-border);
881
+ border-radius: calc(var(--sdt-radius) - 3px);
882
+ background: var(--sdt-bg-elevated);
883
+ color: white;
884
+ appearance: none;
885
+ padding: 0;
886
+ cursor: pointer;
887
+ }
888
+
889
+ .hexclave-clickmap .sdt-hm-row-check:hover {
890
+ border-color: var(--sdt-accent);
891
+ }
892
+
893
+ .hexclave-clickmap .sdt-hm-row-check[aria-checked="true"],
894
+ .hexclave-clickmap .sdt-hm-row-check[aria-checked="mixed"] {
895
+ background: var(--sdt-accent);
896
+ border-color: var(--sdt-accent);
897
+ }
898
+
899
+ .hexclave-clickmap .sdt-hm-row-check:focus-visible {
900
+ outline: 2px solid var(--sdt-accent);
901
+ outline-offset: 2px;
902
+ }
903
+
904
+ .hexclave-clickmap .sdt-hm-row-check svg {
905
+ pointer-events: none;
906
+ }
907
+
908
+ .hexclave-clickmap .sdt-hm-row-count {
909
+ display: inline-flex;
910
+ align-items: center;
911
+ justify-content: center;
912
+ height: 24px;
913
+ border-radius: calc(var(--sdt-radius) - 2px);
914
+ background: var(--sdt-accent-muted);
915
+ color: var(--sdt-accent-hover);
916
+ padding: 0 7px;
917
+ font-size: 12px;
918
+ font-weight: 700;
919
+ font-variant-numeric: tabular-nums;
920
+ font-family: var(--sdt-font);
921
+ }
922
+
923
+ .hexclave-clickmap .sdt-hm-row-muted .sdt-hm-row-count {
924
+ background: var(--sdt-bg-elevated);
925
+ color: var(--sdt-text-tertiary);
926
+ }
927
+
928
+ .hexclave-clickmap .sdt-hm-row-eye {
929
+ display: inline-flex;
930
+ align-items: center;
931
+ justify-content: center;
932
+ width: 24px;
933
+ height: 24px;
934
+ border: 1px solid var(--sdt-border-subtle);
935
+ border-radius: calc(var(--sdt-radius) - 2px);
936
+ background: var(--sdt-bg-elevated);
937
+ color: var(--sdt-text-secondary);
938
+ appearance: none;
939
+ padding: 0;
940
+ cursor: pointer;
941
+ opacity: 0;
942
+ pointer-events: none;
943
+ }
944
+
945
+ .hexclave-clickmap .sdt-hm-row:hover .sdt-hm-row-eye,
946
+ .hexclave-clickmap .sdt-hm-row:focus-within .sdt-hm-row-eye,
947
+ .hexclave-clickmap .sdt-hm-row-muted .sdt-hm-row-eye {
948
+ opacity: 1;
949
+ pointer-events: auto;
950
+ }
951
+
952
+ .hexclave-clickmap .sdt-hm-row-eye:hover {
953
+ background: var(--sdt-bg-hover);
954
+ border-color: var(--sdt-border);
955
+ color: var(--sdt-text);
956
+ transition: none;
957
+ }
958
+
959
+ .hexclave-clickmap .sdt-hm-row-eye:focus-visible {
960
+ outline: 2px solid var(--sdt-accent);
961
+ outline-offset: 2px;
962
+ }
963
+
964
+ .hexclave-clickmap .sdt-hm-row-meta {
965
+ min-width: 0;
966
+ display: flex;
967
+ flex-direction: column;
968
+ gap: 1px;
969
+ }
970
+
971
+ .hexclave-clickmap .sdt-hm-row-label-row {
972
+ display: flex;
973
+ align-items: center;
974
+ gap: 6px;
975
+ min-width: 0;
976
+ }
977
+
978
+ .hexclave-clickmap .sdt-hm-row-label {
979
+ overflow: hidden;
980
+ text-overflow: ellipsis;
981
+ white-space: nowrap;
982
+ min-width: 0;
983
+ font-size: 12px;
984
+ font-weight: 600;
985
+ }
986
+
987
+ .hexclave-clickmap .sdt-hm-row-dead {
988
+ display: none;
989
+ flex: none;
990
+ align-items: center;
991
+ height: 16px;
992
+ border-radius: calc(var(--sdt-radius) - 3px);
993
+ background: var(--sdt-error-muted);
994
+ color: var(--sdt-error);
995
+ padding: 0 5px;
996
+ font-size: 10px;
997
+ font-weight: 700;
998
+ font-variant-numeric: tabular-nums;
999
+ white-space: nowrap;
1000
+ }
1001
+
1002
+ .hexclave-clickmap .sdt-hm-row-dead-visible {
1003
+ display: inline-flex;
1004
+ }
1005
+
1006
+ .hexclave-clickmap .sdt-hm-row-selector {
1007
+ overflow: hidden;
1008
+ text-overflow: ellipsis;
1009
+ white-space: nowrap;
1010
+ font-family: var(--sdt-font-mono);
1011
+ font-size: 10.5px;
1012
+ color: var(--sdt-text-tertiary);
1013
+ }
1014
+
1015
+ .sdt-hm-overlay-root {
1016
+ position: fixed;
1017
+ inset: 0;
1018
+ z-index: 2147483646;
1019
+ pointer-events: none;
1020
+ --resize-dur: 320ms;
1021
+ --resize-ease: cubic-bezier(0.22, 1, 0.36, 1);
1022
+ }
1023
+
1024
+ .sdt-hm-overlay-root .sdt-hm-marker {
1025
+ position: fixed;
1026
+ transform: translate(-50%, -50%);
1027
+ min-width: 28px;
1028
+ height: 24px;
1029
+ border-radius: 999px;
1030
+ padding: 0 8px;
1031
+ display: flex;
1032
+ align-items: center;
1033
+ justify-content: center;
1034
+ border: 0;
1035
+ color: rgba(10, 10, 11, 0.92);
1036
+ font: 700 12px/1 var(--sdt-font, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);
1037
+ font-variant-numeric: tabular-nums;
1038
+ cursor: pointer;
1039
+ pointer-events: auto;
1040
+ transition: opacity 0.15s ease, transform 0.15s ease, filter 0.15s ease;
1041
+ }
1042
+
1043
+ .sdt-hm-overlay-root .sdt-hm-marker:hover {
1044
+ transform: translate(-50%, -50%) scale(1.06);
1045
+ transition: none;
1046
+ }
1047
+
1048
+ .sdt-hm-overlay-root .sdt-hm-marker-muted {
1049
+ opacity: 0.18;
1050
+ filter: saturate(0.25);
1051
+ text-decoration: line-through;
1052
+ }
1053
+
1054
+ .sdt-hm-overlay-root .sdt-hm-marker-highlighted {
1055
+ transform: translate(-50%, -50%) scale(1.08);
1056
+ }
1057
+
1058
+ .sdt-hm-overlay-root .sdt-hm-outline {
1059
+ position: fixed;
1060
+ border: 1px solid;
1061
+ border-radius: 4px;
1062
+ background: rgba(99, 102, 241, 0.04);
1063
+ transition: opacity 0.15s ease, background 0.15s ease, border-color 0.15s ease;
1064
+ }
1065
+
1066
+ .sdt-hm-overlay-root .sdt-hm-outline-muted {
1067
+ opacity: 0;
1068
+ }
1069
+
1070
+ .sdt-hm-overlay-root .sdt-hm-outline-highlighted {
1071
+ border-color: rgba(250, 204, 21, 0.92) !important;
1072
+ }
1073
+
1074
+ .sdt-hm-overlay-root .sdt-hm-highlight {
1075
+ position: fixed;
1076
+ border-radius: 5px;
1077
+ background: rgba(250, 204, 21, 0.28);
1078
+ box-shadow: 0 0 0 1px rgba(250, 204, 21, 0.7), 0 0 0 9999px rgba(0, 0, 0, 0.04);
1079
+ opacity: 0;
1080
+ will-change: top, left, width, height;
1081
+ transition: opacity 0.18s ease;
1082
+ }
1083
+
1084
+ .sdt-hm-overlay-root .sdt-hm-highlight-visible {
1085
+ opacity: 1;
1086
+ }
1087
+
1088
+ .sdt-hm-overlay-root .sdt-hm-highlight-animating {
1089
+ transition:
1090
+ top var(--resize-dur) var(--resize-ease),
1091
+ left var(--resize-dur) var(--resize-ease),
1092
+ width var(--resize-dur) var(--resize-ease),
1093
+ height var(--resize-dur) var(--resize-ease),
1094
+ opacity 0.18s ease;
1095
+ }
1096
+
1097
+ @media (prefers-reduced-motion: reduce) {
1098
+ .sdt-hm-overlay-root .sdt-hm-highlight-animating {
1099
+ transition: opacity 0.18s ease;
1100
+ }
1101
+ }
1102
+ `;