@nex125/seatmap-editor 0.1.5 → 0.1.6

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 (2) hide show
  1. package/package.json +7 -2
  2. package/src/SeatmapEditor.css +1697 -0
@@ -0,0 +1,1697 @@
1
+ .seatmap-editor {
2
+ --seatmap-surface: var(--ds-surface-container-low, #181818);
3
+ --seatmap-surface-elevated: var(--ds-surface, #131313);
4
+ --seatmap-surface-muted: var(--ds-surface-container, rgba(30, 30, 30, 0.82));
5
+ --seatmap-on-surface: var(--ds-on-surface, #e5e2e1);
6
+ --seatmap-on-surface-variant: var(--ds-on-surface-variant, #9a9694);
7
+ --seatmap-outline: var(--ds-input-border, #3a3836);
8
+ --seatmap-outline-variant: var(--ds-border-subtle, #2b2a29);
9
+ --seatmap-primary: var(--ds-primary, #dfcd72);
10
+ --seatmap-on-primary: var(--ds-on-primary, #1a1816);
11
+ --seatmap-radius-sm: var(--ds-radius-functional, 4px);
12
+ --seatmap-radius-md: var(--ds-radius-structural, 8px);
13
+ --seatmap-shadow-raised: var(--ds-shadow-ambient-sm, 0 8px 20px rgba(0, 0, 0, 0.22));
14
+ --seatmap-focus-ring: color-mix(in srgb, var(--seatmap-primary) 36%, transparent);
15
+ --seatmap-state-layer-hover: color-mix(in srgb, var(--seatmap-primary) 12%, transparent);
16
+ --seatmap-state-layer-pressed: color-mix(in srgb, var(--seatmap-primary) 18%, transparent);
17
+ --seatmap-editor-surface: var(--seatmap-surface);
18
+ --seatmap-editor-surface-elevated: var(--seatmap-surface-elevated);
19
+ --seatmap-editor-surface-muted: var(--seatmap-surface-muted);
20
+ --seatmap-editor-surface-lowest: var(--ds-surface-container-lowest, #0f0f0f);
21
+ --seatmap-editor-control-surface: var(--ds-surface-container-high, #242424);
22
+ --seatmap-editor-border: var(--seatmap-outline);
23
+ --seatmap-editor-border-subtle: var(--seatmap-outline-variant);
24
+ --seatmap-editor-text: var(--seatmap-on-surface);
25
+ --seatmap-editor-text-muted: var(--seatmap-on-surface-variant);
26
+ --seatmap-editor-text-strong: color-mix(in srgb, var(--seatmap-editor-text) 88%, var(--seatmap-editor-text-muted));
27
+ --seatmap-editor-accent: var(--seatmap-primary);
28
+ --seatmap-editor-accent-text: var(--seatmap-on-primary);
29
+ --seatmap-editor-radius-sm: var(--seatmap-radius-sm);
30
+ --seatmap-editor-radius-md: var(--seatmap-radius-md);
31
+ --seatmap-editor-radius-pill: var(--ds-radius-pill, 999px);
32
+ --seatmap-editor-shadow-overlay: var(--seatmap-shadow-raised);
33
+ --seatmap-editor-overlay-info-stroke: rgba(100, 180, 255, 0.8);
34
+ --seatmap-editor-overlay-info-fill: rgba(100, 180, 255, 0.1);
35
+ --seatmap-editor-overlay-success-stroke: rgba(100, 255, 100, 0.8);
36
+ --seatmap-editor-overlay-warning-stroke: rgba(255, 193, 110, 0.9);
37
+ --seatmap-editor-overlay-warning-fill: rgba(255, 193, 110, 0.08);
38
+ --seatmap-editor-overlay-label-bg: rgba(15, 15, 25, 0.9);
39
+ --seatmap-editor-overlay-label-text: #ffd38a;
40
+ --seatmap-editor-overlay-label-border: rgba(255, 193, 110, 0.65);
41
+ --seatmap-editor-scrollbar-size: 11px;
42
+ --seatmap-editor-scrollbar-track: color-mix(in srgb, var(--seatmap-editor-surface-elevated) 64%, transparent);
43
+ --seatmap-editor-scrollbar-thumb: color-mix(in srgb, var(--seatmap-editor-border) 90%, var(--seatmap-editor-text) 10%);
44
+ --seatmap-editor-scrollbar-thumb-hover: color-mix(in srgb, var(--seatmap-editor-border) 80%, var(--seatmap-editor-accent) 20%);
45
+ --seatmap-editor-scrollbar-thumb-active: color-mix(in srgb, var(--seatmap-editor-border) 72%, var(--seatmap-editor-accent) 28%);
46
+ --seatmap-editor-sidebar-surface: var(--ds-surface-container-low, #181818);
47
+ --seatmap-editor-sidebar-separator-wash: color-mix(in srgb, var(--ds-surface-container-lowest, #0f0f0f) 72%, transparent);
48
+ --seatmap-editor-panel-card-bg: color-mix(in srgb, var(--seatmap-editor-surface-muted) 92%, transparent);
49
+ --seatmap-editor-toolbar-bg: color-mix(in srgb, var(--seatmap-editor-surface) 84%, transparent);
50
+ --seatmap-editor-toolbar-separator-wash: color-mix(in srgb, var(--seatmap-editor-border-subtle) 78%, transparent);
51
+ --seatmap-editor-toolbar-button-hover-bg: color-mix(in srgb, var(--seatmap-editor-control-surface) 72%, var(--seatmap-editor-text) 28%);
52
+ --seatmap-editor-toolbar-button-hover-border: color-mix(in srgb, var(--seatmap-editor-border) 52%, var(--seatmap-editor-text) 48%);
53
+ --seatmap-editor-toolbar-button-active-bg: color-mix(in srgb, var(--seatmap-editor-accent) 34%, var(--seatmap-editor-control-surface));
54
+ --seatmap-editor-toolbar-button-active-border: color-mix(in srgb, var(--seatmap-editor-accent) 58%, var(--seatmap-editor-surface-lowest));
55
+ --seatmap-editor-toolbar-button-highlight-ring: color-mix(in srgb, var(--seatmap-editor-accent) 50%, transparent);
56
+ --seatmap-editor-toolbar-button-focus-ring: color-mix(in srgb, var(--seatmap-editor-accent) 36%, transparent);
57
+ --seatmap-editor-tool-options-bg: color-mix(in srgb, var(--seatmap-editor-surface-elevated) 96%, transparent);
58
+ --seatmap-editor-tool-options-bridge-bg: color-mix(in srgb, var(--seatmap-editor-surface-elevated) 74%, transparent);
59
+ --seatmap-editor-tool-options-bridge-top-bg: color-mix(in srgb, var(--seatmap-editor-surface-elevated) 88%, transparent);
60
+ --seatmap-editor-tool-options-bridge-blur: 14px;
61
+ --seatmap-editor-tool-options-shell-blur: 8px;
62
+ --seatmap-editor-option-card-title-subtle: color-mix(in srgb, var(--seatmap-editor-text-muted) 82%, white);
63
+ --seatmap-editor-option-divider-wash: color-mix(in srgb, var(--seatmap-editor-border-subtle) 80%, transparent);
64
+ --seatmap-editor-table-row-bg: color-mix(in srgb, var(--seatmap-editor-surface-muted) 92%, transparent);
65
+ --seatmap-editor-motion-group-divider: color-mix(in srgb, var(--seatmap-editor-text-muted) 62%, var(--seatmap-editor-border-subtle));
66
+ --seatmap-editor-canvas-edge-shadow: inset 0 -10px 14px -14px rgb(0 0 0 / 0.85);
67
+ --seatmap-editor-sidebar-edge-shadow: inset 12px 0 18px -20px rgb(0 0 0 / 0.7);
68
+ --seatmap-editor-background-guide-stroke: color-mix(in srgb, var(--seatmap-editor-overlay-info-stroke) 90%, white 10%);
69
+ --seatmap-editor-background-guide-shadow: 0 0 0 1px color-mix(in srgb, var(--seatmap-editor-surface-lowest) 76%, var(--seatmap-editor-overlay-info-stroke)) inset;
70
+ --seatmap-editor-background-handle-fill: color-mix(in srgb, var(--seatmap-editor-overlay-info-stroke) 88%, white 12%);
71
+ --seatmap-editor-background-handle-stroke: color-mix(in srgb, var(--seatmap-editor-overlay-info-stroke) 45%, var(--seatmap-editor-surface-lowest));
72
+ --seatmap-editor-hint-surface: color-mix(in srgb, var(--seatmap-editor-surface-lowest) 86%, transparent);
73
+ --seatmap-editor-hint-border: color-mix(in srgb, var(--seatmap-editor-overlay-info-stroke) 62%, transparent);
74
+ --seatmap-editor-hint-text: color-mix(in srgb, var(--seatmap-editor-text) 90%, var(--seatmap-editor-overlay-info-stroke));
75
+ --seatmap-editor-hint-shadow: 0 6px 18px rgb(0 0 0 / 0.35);
76
+ --seatmap-editor-status-success: color-mix(in srgb, var(--ds-tertiary, #1f6fe0) 42%, var(--seatmap-editor-text) 58%);
77
+ --seatmap-editor-status-error: color-mix(in srgb, var(--seatmap-editor-danger, #ad3f3f) 65%, var(--seatmap-editor-text) 35%);
78
+ --seatmap-editor-status-idle: color-mix(in srgb, var(--seatmap-editor-text-muted) 82%, var(--seatmap-editor-text) 18%);
79
+ --seatmap-editor-overlay-row-direction-stroke: color-mix(in srgb, var(--seatmap-editor-overlay-warning-stroke) 92%, white 8%);
80
+ --seatmap-editor-overlay-row-direction-fill: color-mix(in srgb, var(--seatmap-editor-overlay-warning-stroke) 28%, transparent);
81
+ --seatmap-editor-overlay-row-direction-origin-stroke: color-mix(in srgb, var(--seatmap-editor-overlay-warning-stroke) 78%, var(--seatmap-editor-surface-lowest));
82
+ --seatmap-editor-overlay-row-direction-origin-fill: color-mix(in srgb, var(--seatmap-editor-overlay-warning-stroke) 35%, transparent);
83
+ --seatmap-editor-font-body: Inter, system-ui, sans-serif;
84
+ --seatmap-editor-font-heading: Manrope, Inter, system-ui, sans-serif;
85
+ --seatmap-editor-type-title-size: var(--ds-heading-sm-size, 1rem);
86
+ --seatmap-editor-type-body-size: var(--ds-body-sm-size, 0.875rem);
87
+ --seatmap-editor-type-label-size: var(--ds-label-sm-size, 0.625rem);
88
+ }
89
+
90
+ .seatmap-editor * {
91
+ scrollbar-width: thin;
92
+ scrollbar-color: var(--seatmap-editor-scrollbar-thumb) var(--seatmap-editor-scrollbar-track);
93
+ }
94
+
95
+ .seatmap-editor *::-webkit-scrollbar {
96
+ width: var(--seatmap-editor-scrollbar-size);
97
+ height: var(--seatmap-editor-scrollbar-size);
98
+ }
99
+
100
+ .seatmap-editor *::-webkit-scrollbar-track {
101
+ background: var(--seatmap-editor-scrollbar-track);
102
+ }
103
+
104
+ .seatmap-editor *::-webkit-scrollbar-thumb {
105
+ background: var(--seatmap-editor-scrollbar-thumb);
106
+ border-radius: 999px;
107
+ border: 2px solid transparent;
108
+ background-clip: content-box;
109
+ }
110
+
111
+ .seatmap-editor *::-webkit-scrollbar-thumb:hover {
112
+ background: var(--seatmap-editor-scrollbar-thumb-hover);
113
+ background-clip: content-box;
114
+ }
115
+
116
+ .seatmap-editor *::-webkit-scrollbar-thumb:active {
117
+ background: var(--seatmap-editor-scrollbar-thumb-active);
118
+ background-clip: content-box;
119
+ }
120
+
121
+ .seatmap-editor--root,
122
+ .seatmap-editor__host {
123
+ display: flex;
124
+ flex-direction: column;
125
+ width: 100%;
126
+ height: 100%;
127
+ }
128
+
129
+ .seatmap-editor__canvas-layout {
130
+ display: flex;
131
+ flex: 1;
132
+ min-height: 0;
133
+ overflow: hidden;
134
+ }
135
+
136
+ .seatmap-editor__toolbar {
137
+ display: flex;
138
+ flex-direction: column;
139
+ width: 100%;
140
+ background: var(--seatmap-editor-toolbar-bg);
141
+ box-shadow: var(--seatmap-editor-canvas-edge-shadow);
142
+ backdrop-filter: blur(8px);
143
+ }
144
+
145
+ .seatmap-editor__toolbar-row {
146
+ display: flex;
147
+ width: 100%;
148
+ gap: 6px;
149
+ align-items: flex-start;
150
+ }
151
+
152
+ .seatmap-editor__toolbar-row--primary {
153
+ padding: 10px 12px;
154
+ align-items: top;
155
+ flex-wrap: wrap;
156
+ }
157
+
158
+ .seatmap-editor__toolbar-divider {
159
+ width: 8px;
160
+ height: 24px;
161
+ background: linear-gradient(
162
+ to right,
163
+ transparent,
164
+ var(--seatmap-editor-toolbar-separator-wash),
165
+ transparent
166
+ );
167
+ margin: 0 4px;
168
+ }
169
+
170
+ .seatmap-editor__toolbar-button {
171
+ appearance: none;
172
+ -webkit-appearance: none;
173
+ border: 1px solid var(--seatmap-editor-border);
174
+ border-radius: var(--seatmap-editor-radius-pill, 999px);
175
+ background: var(--seatmap-editor-control-surface);
176
+ color: var(--seatmap-editor-text);
177
+ cursor: pointer;
178
+ font-size: var(--seatmap-editor-type-body-size);
179
+ line-height: 1.1;
180
+ font-family: var(--seatmap-editor-font-body);
181
+ font-weight: 500;
182
+ letter-spacing: 0.2px;
183
+ min-height: 34px;
184
+ padding: 0 12px;
185
+ display: inline-flex;
186
+ align-items: center;
187
+ justify-content: center;
188
+ gap: 6px;
189
+ transition: border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
190
+ }
191
+
192
+ .seatmap-editor__toolbar-button:hover:not(:disabled) {
193
+ background: var(--seatmap-editor-toolbar-button-hover-bg);
194
+ border-color: var(--seatmap-editor-toolbar-button-hover-border);
195
+ }
196
+
197
+ .seatmap-editor__toolbar-button:focus-visible {
198
+ outline: none;
199
+ box-shadow: 0 0 0 2px var(--seatmap-editor-toolbar-button-focus-ring);
200
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
201
+ }
202
+
203
+ .seatmap-editor__toolbar-button:disabled {
204
+ cursor: default;
205
+ opacity: 0.42;
206
+ }
207
+
208
+ .seatmap-editor__toolbar-button.is-active {
209
+ background: var(--seatmap-editor-toolbar-button-active-bg);
210
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
211
+ color: var(--seatmap-editor-accent-text);
212
+ }
213
+
214
+ .seatmap-editor__toolbar-button.is-highlighted {
215
+ box-shadow: 0 0 0 1px var(--seatmap-editor-toolbar-button-highlight-ring) inset;
216
+ }
217
+
218
+ .seatmap-editor__toolbar-tool-button {
219
+ min-width: 94px;
220
+ }
221
+
222
+ .seatmap-editor__toolbar-icon {
223
+ width: 16px;
224
+ height: 16px;
225
+ flex-shrink: 0;
226
+ }
227
+
228
+ .seatmap-editor__toolbar-button > span:last-child {
229
+ transform: translateY(0.2px);
230
+ }
231
+
232
+ .seatmap-editor__tool-options-overlay {
233
+ position: absolute;
234
+ top: 12px;
235
+ bottom: 12px;
236
+ left: 12px;
237
+ right: 12px;
238
+ z-index: 20;
239
+ pointer-events: none;
240
+ }
241
+
242
+ .seatmap-editor__tool-options-overlay::before {
243
+ content: "";
244
+ position: absolute;
245
+ top: -12px;
246
+ left: 0;
247
+ right: 0;
248
+ height: 14px;
249
+ pointer-events: none;
250
+ background: linear-gradient(
251
+ to bottom,
252
+ var(--seatmap-editor-tool-options-bridge-top-bg) 0%,
253
+ color-mix(in srgb, var(--seatmap-editor-tool-options-bridge-top-bg) 82%, transparent) 55%,
254
+ transparent 100%
255
+ );
256
+ backdrop-filter: blur(var(--seatmap-editor-tool-options-bridge-blur));
257
+ }
258
+
259
+ .seatmap-editor__tool-options-overlay::after {
260
+ content: "";
261
+ position: absolute;
262
+ top: 0;
263
+ right: -12px;
264
+ bottom: 0;
265
+ width: 14px;
266
+ pointer-events: none;
267
+ background: linear-gradient(
268
+ to right,
269
+ transparent 0%,
270
+ var(--seatmap-editor-tool-options-bridge-bg) 65%,
271
+ var(--seatmap-editor-tool-options-bridge-bg) 100%
272
+ );
273
+ backdrop-filter: blur(var(--seatmap-editor-tool-options-bridge-blur));
274
+ }
275
+
276
+ .seatmap-editor__tool-options-shell {
277
+ display: flex;
278
+ align-items: flex-start;
279
+ align-content: flex-start;
280
+ flex-wrap: wrap;
281
+ gap: 10px;
282
+ padding: 8px 12px;
283
+ border: 1px solid var(--seatmap-editor-border);
284
+ border-radius: var(--seatmap-editor-radius-md);
285
+ background: var(--seatmap-editor-tool-options-bg);
286
+ backdrop-filter: blur(var(--seatmap-editor-tool-options-shell-blur));
287
+ box-shadow: var(--seatmap-editor-shadow-overlay);
288
+ pointer-events: auto;
289
+ max-height: 100%;
290
+ overflow-y: auto;
291
+ }
292
+
293
+ .seatmap-editor__tool-options-title {
294
+ color: var(--seatmap-editor-text-strong);
295
+ font-size: var(--seatmap-editor-type-body-size);
296
+ font-family: var(--seatmap-editor-font-heading);
297
+ font-weight: 600;
298
+ letter-spacing: 0.2px;
299
+ }
300
+
301
+ .seatmap-editor__tool-options-divider {
302
+ width: 8px;
303
+ height: 18px;
304
+ background: linear-gradient(
305
+ to right,
306
+ transparent,
307
+ var(--seatmap-editor-toolbar-separator-wash),
308
+ transparent
309
+ );
310
+ }
311
+
312
+ .seatmap-editor__option-card {
313
+ display: flex;
314
+ flex-direction: column;
315
+ align-items: flex-start;
316
+ gap: 8px;
317
+ padding: 8px 10px;
318
+ border: 1px solid var(--seatmap-editor-border);
319
+ border-radius: calc(var(--seatmap-editor-radius-md) - 2px);
320
+ background: var(--seatmap-editor-surface-muted);
321
+ }
322
+
323
+ .seatmap-editor__option-card-title {
324
+ color: var(--seatmap-editor-text-strong);
325
+ font-size: var(--seatmap-editor-type-body-size);
326
+ font-family: var(--seatmap-editor-font-heading);
327
+ font-weight: 600;
328
+ }
329
+
330
+ .seatmap-editor__option-card-title--subtle {
331
+ color: var(--seatmap-editor-option-card-title-subtle);
332
+ font-size: var(--seatmap-editor-type-label-size);
333
+ text-transform: uppercase;
334
+ letter-spacing: 0.25px;
335
+ }
336
+
337
+ .seatmap-editor__option-card-title--group {
338
+ width: 100%;
339
+ text-align: center;
340
+ letter-spacing: 0.2px;
341
+ }
342
+
343
+ .seatmap-editor__option-card-subdivider {
344
+ width: 100%;
345
+ height: 8px;
346
+ background: linear-gradient(
347
+ to bottom,
348
+ transparent,
349
+ var(--seatmap-editor-option-divider-wash),
350
+ transparent
351
+ );
352
+ }
353
+
354
+ .seatmap-editor__option-card-body {
355
+ width: 100%;
356
+ display: flex;
357
+ flex-direction: column;
358
+ align-items: flex-start;
359
+ gap: 8px;
360
+ }
361
+
362
+ .seatmap-editor__option-card-divider {
363
+ width: 100%;
364
+ height: 8px;
365
+ background: linear-gradient(
366
+ to bottom,
367
+ transparent,
368
+ var(--seatmap-editor-option-divider-wash),
369
+ transparent
370
+ );
371
+ }
372
+
373
+ .seatmap-editor__option-row {
374
+ display: flex;
375
+ align-items: center;
376
+ gap: 6px;
377
+ }
378
+
379
+ .seatmap-editor__option-row--end {
380
+ justify-content: flex-end;
381
+ }
382
+
383
+ .seatmap-editor__label {
384
+ color: var(--seatmap-editor-text-muted);
385
+ font-size: var(--seatmap-editor-type-label-size);
386
+ font-family: var(--seatmap-editor-font-body);
387
+ text-transform: uppercase;
388
+ letter-spacing: 0.08em;
389
+ }
390
+
391
+ .seatmap-editor__hint-text {
392
+ color: var(--seatmap-editor-text-muted);
393
+ font-size: var(--seatmap-editor-type-label-size);
394
+ font-family: var(--seatmap-editor-font-body);
395
+ }
396
+
397
+ .seatmap-editor__toolbar-shortcuts-panel {
398
+ display: flex;
399
+ flex-direction: column;
400
+ align-items: flex-start;
401
+ gap: 2px;
402
+ padding: 4px 7px;
403
+ margin-left: auto;
404
+ border: 1px solid var(--seatmap-editor-border);
405
+ border-radius: calc(var(--seatmap-editor-radius-md) - 2px);
406
+ background: color-mix(in srgb, var(--seatmap-editor-surface-muted) 92%, transparent);
407
+ }
408
+
409
+ .seatmap-editor__toolbar-shortcuts-row {
410
+ display: flex;
411
+ flex-direction: column;
412
+ align-items: center;
413
+ align-items: flex-start;
414
+ gap: 1px;
415
+ color: var(--seatmap-editor-text-muted);
416
+ font-size: var(--seatmap-editor-type-label-size);
417
+ font-family: var(--seatmap-editor-font-body);
418
+ }
419
+
420
+ .seatmap-editor__toolbar-shortcuts-title {
421
+ color: var(--seatmap-editor-text-strong);
422
+ font-size: var(--seatmap-editor-type-label-size);
423
+ font-family: var(--seatmap-editor-font-heading);
424
+ font-weight: 600;
425
+ letter-spacing: 0.2px;
426
+ }
427
+
428
+ .seatmap-editor__motion-slider {
429
+ width: 100%;
430
+ display: flex;
431
+ flex-direction: column;
432
+ gap: 6px;
433
+ }
434
+
435
+ .seatmap-editor__motion-slider.is-disabled {
436
+ opacity: 0.55;
437
+ }
438
+
439
+ .seatmap-editor__motion-slider.is-disabled .seatmap-editor__motion-knob {
440
+ cursor: not-allowed;
441
+ border-color: var(--seatmap-editor-border-subtle);
442
+ }
443
+
444
+ .seatmap-editor__motion-slider.is-disabled .seatmap-editor__motion-knob-indicator {
445
+ background: var(--seatmap-editor-text-muted);
446
+ }
447
+
448
+ .seatmap-editor__motion-slider-header {
449
+ display: flex;
450
+ align-items: center;
451
+ justify-content: space-between;
452
+ gap: 8px;
453
+ }
454
+
455
+ .seatmap-editor__motion-slider-value {
456
+ color: var(--seatmap-editor-text-strong);
457
+ font-size: var(--seatmap-editor-type-label-size);
458
+ font-family: var(--seatmap-editor-font-body);
459
+ font-weight: 600;
460
+ min-width: 28px;
461
+ text-align: right;
462
+ }
463
+
464
+ .seatmap-editor__motion-advanced-header {
465
+ display: flex;
466
+ align-items: center;
467
+ justify-content: space-between;
468
+ gap: 8px;
469
+ }
470
+
471
+ .seatmap-editor__motion-knob-row {
472
+ display: flex;
473
+ align-items: center;
474
+ gap: 4px;
475
+ }
476
+
477
+ .seatmap-editor__motion-control-grid {
478
+ width: 100%;
479
+ display: flex;
480
+ flex-direction: column;
481
+ gap: 6px;
482
+ }
483
+
484
+ .seatmap-editor__motion-control-grid.is-knob-grid {
485
+ display: grid;
486
+ grid-template-columns: repeat(4, minmax(0, 1fr));
487
+ gap: 5px 4px;
488
+ }
489
+
490
+ .seatmap-editor__motion-slider--compact-knob {
491
+ align-items: center;
492
+ text-align: center;
493
+ gap: 4px;
494
+ }
495
+
496
+ .seatmap-editor__motion-slider--compact-knob .seatmap-editor__motion-slider-header {
497
+ flex-direction: column;
498
+ justify-content: center;
499
+ align-items: center;
500
+ gap: 2px;
501
+ min-height: 28px;
502
+ width: 100%;
503
+ }
504
+
505
+ .seatmap-editor__motion-slider--compact-knob .seatmap-editor__label {
506
+ text-transform: none;
507
+ letter-spacing: 0.02em;
508
+ font-size: 11px;
509
+ width: 100%;
510
+ white-space: nowrap;
511
+ overflow: hidden;
512
+ text-overflow: ellipsis;
513
+ }
514
+
515
+ .seatmap-editor__motion-slider--compact-knob .seatmap-editor__motion-slider-value {
516
+ min-width: 0;
517
+ text-align: center;
518
+ }
519
+
520
+ .seatmap-editor__motion-slider--compact-knob .seatmap-editor__motion-knob {
521
+ width: 30px;
522
+ height: 30px;
523
+ }
524
+
525
+ .seatmap-editor__motion-slider--compact-knob .seatmap-editor__motion-knob::after {
526
+ inset: 7px;
527
+ }
528
+
529
+ .seatmap-editor__motion-slider--compact-knob .seatmap-editor__motion-knob-indicator {
530
+ height: 8px;
531
+ }
532
+
533
+ .seatmap-editor__motion-slider--label-value-knob {
534
+ gap: 0;
535
+ }
536
+
537
+ .seatmap-editor__motion-slider--label-value-knob .seatmap-editor__motion-knob-row--label-value-knob {
538
+ width: 100%;
539
+ display: grid;
540
+ grid-template-columns: minmax(0, 1fr) auto auto;
541
+ align-items: center;
542
+ column-gap: 6px;
543
+ }
544
+
545
+ .seatmap-editor__motion-slider--label-value-knob .seatmap-editor__label {
546
+ text-transform: none;
547
+ letter-spacing: 0.02em;
548
+ font-size: 11px;
549
+ white-space: nowrap;
550
+ }
551
+
552
+ .seatmap-editor__motion-slider--label-value-knob .seatmap-editor__motion-slider-value {
553
+ min-width: 40px;
554
+ text-align: right;
555
+ }
556
+
557
+ .seatmap-editor__motion-slider-value--knob {
558
+ min-width: 44px;
559
+ text-align: left;
560
+ }
561
+
562
+ .seatmap-editor__motion-knob-right-content {
563
+ margin-left: auto;
564
+ display: flex;
565
+ align-items: center;
566
+ }
567
+
568
+ .seatmap-editor__motion-knob {
569
+ position: relative;
570
+ width: 34px;
571
+ height: 34px;
572
+ border: 1px solid var(--seatmap-editor-border);
573
+ border-radius: 50%;
574
+ background: var(--seatmap-editor-control-surface);
575
+ cursor: ns-resize;
576
+ flex: 0 0 auto;
577
+ }
578
+
579
+ .seatmap-editor__motion-knob-ring {
580
+ position: absolute;
581
+ inset: 3px;
582
+ border-radius: 50%;
583
+ }
584
+
585
+ .seatmap-editor__motion-knob-ring--motion {
586
+ background:
587
+ conic-gradient(
588
+ from var(--motion-knob-start-angle, -130deg),
589
+ var(--seatmap-editor-accent) 0%,
590
+ var(--seatmap-editor-accent) var(--motion-knob-fill, 0%),
591
+ color-mix(in srgb, var(--seatmap-editor-border-subtle) 90%, transparent) var(--motion-knob-fill, 0%),
592
+ color-mix(in srgb, var(--seatmap-editor-border-subtle) 90%, transparent) 100%
593
+ );
594
+ }
595
+
596
+ .seatmap-editor__motion-knob-ring--tool {
597
+ background:
598
+ conic-gradient(
599
+ from var(--tool-knob-start-angle, -130deg),
600
+ var(--seatmap-editor-accent) 0%,
601
+ var(--seatmap-editor-accent) var(--tool-knob-fill, 0%),
602
+ color-mix(in srgb, var(--seatmap-editor-border-subtle) 90%, transparent) var(--tool-knob-fill, 0%),
603
+ color-mix(in srgb, var(--seatmap-editor-border-subtle) 90%, transparent) 100%
604
+ );
605
+ }
606
+
607
+ .seatmap-editor__motion-knob::after {
608
+ content: "";
609
+ position: absolute;
610
+ inset: 8px;
611
+ border-radius: 50%;
612
+ background: var(--seatmap-editor-control-surface);
613
+ }
614
+
615
+ .seatmap-editor__motion-knob-indicator {
616
+ position: absolute;
617
+ left: 50%;
618
+ top: 50%;
619
+ width: 2px;
620
+ height: 10px;
621
+ border-radius: 2px;
622
+ background: var(--seatmap-editor-text);
623
+ transform-origin: 50% 100%;
624
+ z-index: 1;
625
+ }
626
+
627
+ .seatmap-editor__option-card--motion {
628
+ --seatmap-motion-col-width: min(420px, calc((100% - 12px) / 2));
629
+ --seatmap-motion-compact-knob-row-height: 64px;
630
+ --seatmap-motion-grid-row-gap: 5px;
631
+ --seatmap-motion-advanced-max-height: calc(
632
+ (var(--seatmap-motion-compact-knob-row-height) * 3) + (var(--seatmap-motion-grid-row-gap) * 2)
633
+ );
634
+ width: fit-content;
635
+ max-width: min(980px, 96vw);
636
+ display: flex;
637
+ flex-direction: column;
638
+ }
639
+
640
+ .seatmap-editor__option-card--motion .seatmap-editor__option-card-title--group {
641
+ width: 100%;
642
+ align-self: stretch;
643
+ text-align: left;
644
+ }
645
+
646
+ .seatmap-editor__option-card--motion .seatmap-editor__option-card-body {
647
+ max-height: min(54vh, 430px);
648
+ overflow-y: visible;
649
+ overflow-x: hidden;
650
+ padding-right: 4px;
651
+ }
652
+
653
+ .seatmap-editor__motion-layout {
654
+ width: 100%;
655
+ display: flex;
656
+ align-items: flex-start;
657
+ gap: 8px;
658
+ height: auto;
659
+ min-height: 0;
660
+ }
661
+
662
+ .seatmap-editor__motion-column {
663
+ flex: 0 0 var(--seatmap-motion-col-width);
664
+ max-width: var(--seatmap-motion-col-width);
665
+ min-width: 0;
666
+ box-sizing: border-box;
667
+ display: flex;
668
+ flex-direction: column;
669
+ gap: 6px;
670
+ min-height: 0;
671
+ overflow-x: hidden;
672
+ overflow-y: auto;
673
+ padding-right: 0;
674
+ }
675
+
676
+ .seatmap-editor__option-card--motion:not(.is-advanced-open) .seatmap-editor__motion-column--basic {
677
+ flex: 1 1 100%;
678
+ max-width: 100%;
679
+ }
680
+
681
+ .seatmap-editor__option-card--motion.is-advanced-open .seatmap-editor__motion-column {
682
+ flex: 0 0 var(--seatmap-motion-col-width);
683
+ max-width: var(--seatmap-motion-col-width);
684
+ }
685
+
686
+ .seatmap-editor__option-card--motion.is-advanced-open .seatmap-editor__motion-column--basic {
687
+ overflow-y: auto;
688
+ }
689
+
690
+ .seatmap-editor__motion-column--basic {
691
+ padding-right: 2px;
692
+ }
693
+
694
+ .seatmap-editor__motion-column--advanced {
695
+ overflow-x: hidden;
696
+ overflow-y: auto;
697
+ max-height: var(--seatmap-motion-advanced-max-height);
698
+ padding-right: 2px;
699
+ }
700
+
701
+ .seatmap-editor__motion-column--advanced {
702
+ border-left: 1px solid var(--seatmap-editor-border-subtle);
703
+ padding-left: 8px;
704
+ }
705
+
706
+ .seatmap-editor__motion-column--advanced .seatmap-editor__option-card-divider {
707
+ background: color-mix(in srgb, var(--seatmap-editor-border-subtle) 68%, white);
708
+ }
709
+
710
+ .seatmap-editor__motion-column--advanced .seatmap-editor__motion-group-divider {
711
+ display: none;
712
+ }
713
+
714
+ .seatmap-editor__motion-advanced-actions {
715
+ position: sticky;
716
+ bottom: 0;
717
+ z-index: 1;
718
+ width: 100%;
719
+ display: flex;
720
+ justify-content: flex-end;
721
+ padding-top: 6px;
722
+ padding-bottom: 2px;
723
+ background: linear-gradient(
724
+ to top,
725
+ var(--seatmap-editor-surface-muted) 70%,
726
+ color-mix(in srgb, var(--seatmap-editor-surface-muted) 40%, transparent)
727
+ );
728
+ }
729
+
730
+ .seatmap-editor__motion-basic-actions {
731
+ width: 100%;
732
+ }
733
+
734
+ .seatmap-editor__motion-group-divider {
735
+ width: 90%;
736
+ height: 1px;
737
+ min-height: 1px;
738
+ margin: 0px 5% 0px;
739
+ border-radius: 1px;
740
+ background: var(--seatmap-editor-motion-group-divider);
741
+ opacity: 0.80;
742
+ flex: 0 0 auto;
743
+ align-self: left;
744
+ }
745
+
746
+ @media (max-width: 1080px) {
747
+ .seatmap-editor__motion-layout {
748
+ flex-direction: column;
749
+ }
750
+
751
+ .seatmap-editor__option-card--motion .seatmap-editor__option-card-title--group {
752
+ width: 100%;
753
+ }
754
+
755
+ .seatmap-editor__motion-column {
756
+ flex: 1 1 auto;
757
+ max-width: none;
758
+ }
759
+
760
+ .seatmap-editor__motion-column--advanced {
761
+ border-left: none;
762
+ border-top: 1px solid var(--seatmap-editor-border-subtle);
763
+ padding-left: 0;
764
+ padding-top: 10px;
765
+ }
766
+ }
767
+
768
+ .seatmap-editor__row-presets {
769
+ display: flex;
770
+ flex-direction: column;
771
+ gap: 4px;
772
+ align-items: flex-start;
773
+ }
774
+
775
+ .seatmap-editor__row-layout-body {
776
+ display: flex;
777
+ align-items: stretch;
778
+ gap: 6px;
779
+ }
780
+
781
+ .seatmap-editor__row-layout-controls {
782
+ display: flex;
783
+ flex-direction: column;
784
+ gap: 8px;
785
+ }
786
+
787
+ .seatmap-editor__row-layout-separator {
788
+ width: 1px;
789
+ align-self: stretch;
790
+ background: var(--seatmap-editor-border-subtle);
791
+ }
792
+
793
+ .seatmap-editor__row-presets-table {
794
+ border-collapse: separate;
795
+ border-spacing: 2px;
796
+ table-layout: fixed;
797
+ font-family: var(--seatmap-editor-font-body);
798
+ font-size: var(--seatmap-editor-type-label-size);
799
+ }
800
+
801
+ .seatmap-editor__row-presets-table td {
802
+ border: 0;
803
+ padding: 0;
804
+ text-align: center;
805
+ }
806
+
807
+ .seatmap-editor__row-presets-table th.seatmap-editor__row-preset-row-label {
808
+ border: 0;
809
+ padding: 0 3px 0 0;
810
+ text-align: right;
811
+ font-weight: 500;
812
+ font-size: 11px;
813
+ color: color-mix(in srgb, var(--seatmap-editor-text-muted, var(--seatmap-editor-text)) 72%, transparent);
814
+ line-height: 1;
815
+ white-space: nowrap;
816
+ opacity: 0.85;
817
+ }
818
+
819
+ .seatmap-editor__row-preset-button {
820
+ appearance: none;
821
+ -webkit-appearance: none;
822
+ min-width: 31px;
823
+ min-height: 22px;
824
+ border: 1px solid var(--seatmap-editor-border);
825
+ border-radius: var(--seatmap-editor-radius-sm);
826
+ background: var(--seatmap-editor-control-surface);
827
+ color: var(--seatmap-editor-text);
828
+ padding: 1px 2px;
829
+ font-size: var(--seatmap-editor-type-label-size);
830
+ font-family: var(--seatmap-editor-font-body);
831
+ cursor: pointer;
832
+ }
833
+
834
+ .seatmap-editor__row-preset-button:hover {
835
+ border-color: color-mix(in srgb, var(--seatmap-editor-border) 50%, var(--seatmap-editor-text) 50%);
836
+ }
837
+
838
+ .seatmap-editor__row-preset-button.is-active {
839
+ background: color-mix(in srgb, var(--seatmap-editor-accent) 30%, var(--seatmap-editor-control-surface));
840
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
841
+ color: var(--seatmap-editor-accent-text);
842
+ }
843
+
844
+ .seatmap-editor__segmented-button {
845
+ appearance: none;
846
+ -webkit-appearance: none;
847
+ padding: 4px 8px;
848
+ border-radius: calc(var(--seatmap-editor-radius-md) - 2px);
849
+ border: 1px solid var(--seatmap-editor-border);
850
+ background: var(--seatmap-editor-segmented-bg, var(--seatmap-editor-control-surface));
851
+ color: var(--seatmap-editor-segmented-fg, var(--seatmap-editor-text));
852
+ cursor: pointer;
853
+ font-size: var(--seatmap-editor-type-body-size);
854
+ font-family: var(--seatmap-editor-font-body);
855
+ font-weight: 600;
856
+ min-height: 28px;
857
+ transition: border-color 120ms ease, box-shadow 120ms ease, background-color 120ms ease;
858
+ }
859
+
860
+ .seatmap-editor__segmented-button:hover:not(:disabled) {
861
+ border-color: color-mix(in srgb, var(--seatmap-editor-border) 60%, var(--seatmap-editor-text) 40%);
862
+ }
863
+
864
+ .seatmap-editor__segmented-button.is-active {
865
+ --seatmap-editor-segmented-bg: var(--seatmap-editor-accent);
866
+ --seatmap-editor-segmented-fg: var(--seatmap-editor-accent-text);
867
+ }
868
+
869
+ .seatmap-editor__segmented-button:focus-visible {
870
+ outline: none;
871
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--seatmap-editor-accent) 35%, transparent);
872
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
873
+ }
874
+
875
+ .seatmap-editor__input,
876
+ .seatmap-editor__select {
877
+ padding: 3px 6px;
878
+ background: var(--seatmap-editor-control-surface);
879
+ border: 1px solid var(--seatmap-editor-border);
880
+ border-radius: var(--seatmap-editor-radius-sm);
881
+ color: var(--seatmap-editor-text);
882
+ font-size: var(--seatmap-editor-type-body-size);
883
+ font-family: var(--seatmap-editor-font-body);
884
+ }
885
+
886
+ .seatmap-editor__input {
887
+ width: 56px;
888
+ }
889
+
890
+ .seatmap-editor__input-stepper {
891
+ display: inline-flex;
892
+ align-items: center;
893
+ gap: 3px;
894
+ }
895
+
896
+ .seatmap-editor__input--stepper {
897
+ width: 44px;
898
+ text-align: center;
899
+ }
900
+
901
+ .seatmap-editor__input--stepper::-webkit-outer-spin-button,
902
+ .seatmap-editor__input--stepper::-webkit-inner-spin-button {
903
+ -webkit-appearance: none;
904
+ margin: 0;
905
+ }
906
+
907
+ .seatmap-editor__input--stepper[type="number"] {
908
+ -moz-appearance: textfield;
909
+ appearance: textfield;
910
+ }
911
+
912
+ .seatmap-editor__stepper-button {
913
+ appearance: none;
914
+ -webkit-appearance: none;
915
+ width: 24px;
916
+ height: 24px;
917
+ border-radius: var(--seatmap-editor-radius-pill);
918
+ border: 1px solid var(--seatmap-editor-border);
919
+ background: var(--seatmap-editor-control-surface);
920
+ color: var(--seatmap-editor-text-strong);
921
+ font-size: 14px;
922
+ line-height: 1;
923
+ font-weight: 600;
924
+ font-family: var(--seatmap-editor-font-body);
925
+ display: inline-flex;
926
+ align-items: center;
927
+ justify-content: center;
928
+ cursor: pointer;
929
+ transition: border-color 130ms ease, background-color 130ms ease, box-shadow 130ms ease;
930
+ }
931
+
932
+ .seatmap-editor__stepper-button:hover {
933
+ background: var(--seatmap-editor-toolbar-button-hover-bg);
934
+ border-color: var(--seatmap-editor-toolbar-button-hover-border);
935
+ }
936
+
937
+ .seatmap-editor__stepper-button:focus-visible {
938
+ outline: none;
939
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
940
+ box-shadow: 0 0 0 2px var(--seatmap-focus-ring);
941
+ }
942
+
943
+ .seatmap-editor__stepper-button:active {
944
+ background: color-mix(in srgb, var(--seatmap-editor-control-surface) 82%, var(--seatmap-editor-accent) 18%);
945
+ }
946
+
947
+ .seatmap-editor__select {
948
+ padding: 4px 8px;
949
+ font-size: var(--seatmap-editor-type-body-size);
950
+ cursor: pointer;
951
+ }
952
+
953
+ .seatmap-editor__switch {
954
+ display: inline-flex;
955
+ align-items: center;
956
+ gap: 8px;
957
+ color: var(--seatmap-editor-text);
958
+ font-size: var(--seatmap-editor-type-body-size);
959
+ font-family: var(--seatmap-editor-font-body);
960
+ user-select: none;
961
+ }
962
+
963
+ .seatmap-editor__switch-track {
964
+ appearance: none;
965
+ -webkit-appearance: none;
966
+ width: 34px;
967
+ height: 20px;
968
+ border-radius: 999px;
969
+ border: 1px solid var(--seatmap-editor-border);
970
+ padding: 2px;
971
+ display: inline-flex;
972
+ align-items: center;
973
+ transition: all 0.12s ease;
974
+ background: var(--seatmap-editor-control-surface);
975
+ cursor: pointer;
976
+ }
977
+
978
+ .seatmap-editor__switch-track.is-checked {
979
+ background: var(--seatmap-editor-accent);
980
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
981
+ }
982
+
983
+ .seatmap-editor__switch-thumb {
984
+ width: 14px;
985
+ height: 14px;
986
+ border-radius: 50%;
987
+ background: var(--seatmap-editor-text);
988
+ transition: transform 0.12s ease;
989
+ transform: translateX(0);
990
+ }
991
+
992
+ .seatmap-editor__switch-track.is-checked .seatmap-editor__switch-thumb {
993
+ transform: translateX(14px);
994
+ }
995
+
996
+ .seatmap-editor__sidebar {
997
+ width: 260px;
998
+ background: var(--seatmap-editor-sidebar-surface);
999
+ box-shadow: var(--seatmap-editor-sidebar-edge-shadow);
1000
+ overflow-y: auto;
1001
+ flex-shrink: 0;
1002
+ }
1003
+
1004
+ .seatmap-editor__sidebar-separator {
1005
+ height: 8px;
1006
+ background: linear-gradient(
1007
+ to bottom,
1008
+ transparent,
1009
+ var(--seatmap-editor-sidebar-separator-wash),
1010
+ transparent
1011
+ );
1012
+ margin: 4px 16px;
1013
+ }
1014
+
1015
+ .seatmap-editor__canvas-area {
1016
+ flex: 1;
1017
+ position: relative;
1018
+ }
1019
+
1020
+ .seatmap-editor__overlay-svg {
1021
+ position: absolute;
1022
+ inset: 0;
1023
+ width: 100%;
1024
+ height: 100%;
1025
+ pointer-events: none;
1026
+ }
1027
+
1028
+ .seatmap-editor__overlay-svg--polygon {
1029
+ z-index: 10;
1030
+ }
1031
+
1032
+ .seatmap-editor__overlay-svg--drag {
1033
+ z-index: 14;
1034
+ }
1035
+
1036
+ .seatmap-editor__overlay-svg--section-resize {
1037
+ z-index: 16;
1038
+ }
1039
+
1040
+ .seatmap-editor__overlay-svg--row-direction {
1041
+ z-index: 17;
1042
+ }
1043
+
1044
+ .seatmap-editor__overlay-polygon,
1045
+ .seatmap-editor__overlay-polyline {
1046
+ fill: var(--seatmap-editor-overlay-info-fill);
1047
+ stroke: var(--seatmap-editor-overlay-info-stroke);
1048
+ stroke-width: 2;
1049
+ stroke-dasharray: 6 4;
1050
+ }
1051
+
1052
+ .seatmap-editor__overlay-close-line {
1053
+ stroke-width: 2;
1054
+ stroke-dasharray: 4 4;
1055
+ }
1056
+
1057
+ .seatmap-editor__overlay-close-line--active {
1058
+ stroke: var(--seatmap-editor-overlay-success-stroke);
1059
+ }
1060
+
1061
+ .seatmap-editor__overlay-close-line--inactive {
1062
+ stroke: color-mix(in srgb, var(--seatmap-editor-overlay-info-stroke) 40%, transparent);
1063
+ stroke-width: 1;
1064
+ }
1065
+
1066
+ .seatmap-editor__overlay-point {
1067
+ fill: var(--seatmap-editor-overlay-info-stroke);
1068
+ }
1069
+
1070
+ .seatmap-editor__overlay-point--first-active {
1071
+ fill: var(--seatmap-editor-overlay-success-stroke);
1072
+ }
1073
+
1074
+ .seatmap-editor__overlay-drag-outline {
1075
+ fill: color-mix(in srgb, var(--seatmap-editor-overlay-info-fill) 90%, transparent);
1076
+ stroke: color-mix(in srgb, var(--seatmap-editor-overlay-info-stroke) 90%, white 10%);
1077
+ stroke-width: 2;
1078
+ stroke-dasharray: 8 6;
1079
+ }
1080
+
1081
+ .seatmap-editor__overlay-drag-seat {
1082
+ fill: color-mix(in srgb, var(--seatmap-editor-overlay-info-fill) 75%, var(--seatmap-editor-overlay-info-stroke));
1083
+ stroke: color-mix(in srgb, var(--seatmap-editor-overlay-info-stroke) 90%, white 10%);
1084
+ stroke-width: 1.5;
1085
+ }
1086
+
1087
+ .seatmap-editor__overlay-section-outline {
1088
+ fill: var(--seatmap-editor-overlay-warning-fill);
1089
+ stroke: var(--seatmap-editor-overlay-warning-stroke);
1090
+ stroke-width: 1.5;
1091
+ stroke-dasharray: 7 4;
1092
+ }
1093
+
1094
+ .seatmap-editor__overlay-section-side {
1095
+ fill: var(--seatmap-editor-overlay-warning-stroke);
1096
+ stroke: color-mix(in srgb, var(--seatmap-editor-overlay-warning-stroke) 78%, var(--seatmap-editor-surface-lowest));
1097
+ stroke-width: 1;
1098
+ }
1099
+
1100
+ .seatmap-editor__overlay-section-corner {
1101
+ fill: color-mix(in srgb, var(--seatmap-editor-overlay-warning-stroke) 94%, white 6%);
1102
+ stroke: color-mix(in srgb, var(--seatmap-editor-overlay-warning-stroke) 78%, var(--seatmap-editor-surface-lowest));
1103
+ stroke-width: 1.2;
1104
+ }
1105
+
1106
+ .seatmap-editor__overlay-row-direction-line {
1107
+ stroke: var(--seatmap-editor-overlay-row-direction-stroke);
1108
+ }
1109
+
1110
+ .seatmap-editor__overlay-row-direction-arrow {
1111
+ fill: var(--seatmap-editor-overlay-row-direction-stroke);
1112
+ }
1113
+
1114
+ .seatmap-editor__overlay-row-direction-origin {
1115
+ fill: var(--seatmap-editor-overlay-row-direction-origin-fill);
1116
+ stroke: var(--seatmap-editor-overlay-row-direction-origin-stroke);
1117
+ }
1118
+
1119
+ .seatmap-editor__overlay-label-box {
1120
+ fill: var(--seatmap-editor-overlay-label-bg);
1121
+ stroke: var(--seatmap-editor-overlay-label-border);
1122
+ stroke-width: 1;
1123
+ }
1124
+
1125
+ .seatmap-editor__overlay-label-text {
1126
+ fill: var(--seatmap-editor-overlay-label-text);
1127
+ font-size: var(--seatmap-editor-type-label-size);
1128
+ font-family: var(--seatmap-editor-font-body);
1129
+ text-anchor: middle;
1130
+ }
1131
+
1132
+ .seatmap-editor__background-overlay {
1133
+ position: absolute;
1134
+ inset: 0;
1135
+ pointer-events: none;
1136
+ z-index: 15;
1137
+ }
1138
+
1139
+ .seatmap-editor__background-frame {
1140
+ position: absolute;
1141
+ border: 1px dashed var(--seatmap-editor-background-guide-stroke);
1142
+ box-shadow: var(--seatmap-editor-background-guide-shadow);
1143
+ pointer-events: auto;
1144
+ }
1145
+
1146
+ .seatmap-editor__background-handle {
1147
+ position: absolute;
1148
+ width: 10px;
1149
+ height: 10px;
1150
+ border-radius: 2px;
1151
+ background: var(--seatmap-editor-background-handle-fill);
1152
+ border: 1px solid var(--seatmap-editor-background-handle-stroke);
1153
+ pointer-events: auto;
1154
+ }
1155
+
1156
+ .seatmap-editor__hint-bubble {
1157
+ position: absolute;
1158
+ pointer-events: none;
1159
+ z-index: 18;
1160
+ max-width: 280px;
1161
+ background: var(--seatmap-editor-hint-surface);
1162
+ border: 1px solid var(--seatmap-editor-hint-border);
1163
+ border-radius: var(--seatmap-editor-radius-md);
1164
+ color: var(--seatmap-editor-hint-text);
1165
+ font-size: var(--seatmap-editor-type-body-size);
1166
+ font-family: var(--seatmap-editor-font-body);
1167
+ padding: 6px 8px;
1168
+ box-shadow: var(--seatmap-editor-hint-shadow);
1169
+ }
1170
+
1171
+ .seatmap-editor__panel {
1172
+ padding: 16px;
1173
+ }
1174
+
1175
+ .seatmap-editor__panel-title {
1176
+ margin: 0 0 12px;
1177
+ color: var(--seatmap-editor-text);
1178
+ font-size: var(--seatmap-editor-type-title-size);
1179
+ font-weight: 600;
1180
+ font-family: var(--seatmap-editor-font-heading);
1181
+ }
1182
+
1183
+ .seatmap-editor__panel-section {
1184
+ margin-bottom: 12px;
1185
+ }
1186
+
1187
+ .seatmap-editor__panel-section--card {
1188
+ margin-bottom: 12px;
1189
+ padding: 10px;
1190
+ border-radius: calc(var(--seatmap-editor-radius-md) - 2px);
1191
+ background: var(--seatmap-editor-panel-card-bg);
1192
+ }
1193
+
1194
+ .seatmap-editor__panel-section-header {
1195
+ display: flex;
1196
+ justify-content: space-between;
1197
+ align-items: center;
1198
+ gap: 8px;
1199
+ margin-bottom: 10px;
1200
+ }
1201
+
1202
+ .seatmap-editor__panel-label {
1203
+ margin-bottom: 2px;
1204
+ color: var(--seatmap-editor-text-muted);
1205
+ font-size: var(--seatmap-editor-type-label-size);
1206
+ font-family: var(--seatmap-editor-font-body);
1207
+ letter-spacing: 0.08em;
1208
+ text-transform: uppercase;
1209
+ }
1210
+
1211
+ .seatmap-editor__panel-text {
1212
+ color: var(--seatmap-editor-text);
1213
+ font-size: var(--seatmap-editor-type-body-size);
1214
+ font-family: var(--seatmap-editor-font-body);
1215
+ }
1216
+
1217
+ .seatmap-editor__panel-text--strong {
1218
+ font-weight: 600;
1219
+ }
1220
+
1221
+ .seatmap-editor__panel-text--mono-min {
1222
+ min-width: 24px;
1223
+ }
1224
+
1225
+ .seatmap-editor__panel-text--truncate {
1226
+ flex: 1 1 auto;
1227
+ min-width: 0;
1228
+ overflow: hidden;
1229
+ text-overflow: ellipsis;
1230
+ white-space: nowrap;
1231
+ }
1232
+
1233
+ .seatmap-editor__panel-muted {
1234
+ color: var(--seatmap-editor-text-muted);
1235
+ font-size: var(--seatmap-editor-type-body-size);
1236
+ font-family: var(--seatmap-editor-font-body);
1237
+ }
1238
+
1239
+ .seatmap-editor__panel-price {
1240
+ flex: 0 0 auto;
1241
+ white-space: nowrap;
1242
+ margin-right: 2px;
1243
+ }
1244
+
1245
+ .seatmap-editor__panel-muted--small {
1246
+ font-size: var(--seatmap-editor-type-label-size);
1247
+ }
1248
+
1249
+ .seatmap-editor__panel-input,
1250
+ .seatmap-editor__panel-select {
1251
+ width: 100%;
1252
+ box-sizing: border-box;
1253
+ padding: 4px 8px;
1254
+ background: var(--seatmap-editor-control-surface);
1255
+ border: 1px solid var(--seatmap-editor-border);
1256
+ border-radius: var(--seatmap-editor-radius-sm);
1257
+ color: var(--seatmap-editor-text);
1258
+ font-size: var(--seatmap-editor-type-body-size);
1259
+ font-family: var(--seatmap-editor-font-body);
1260
+ }
1261
+
1262
+ .seatmap-editor__panel-input--grow {
1263
+ flex: 1 1 auto;
1264
+ }
1265
+
1266
+ .seatmap-editor__panel-input:focus-visible,
1267
+ .seatmap-editor__panel-select:focus-visible {
1268
+ outline: none;
1269
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
1270
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--seatmap-editor-accent) 32%, transparent);
1271
+ }
1272
+
1273
+ .seatmap-editor__panel-select {
1274
+ cursor: pointer;
1275
+ }
1276
+
1277
+ .seatmap-editor__panel-button {
1278
+ appearance: none;
1279
+ -webkit-appearance: none;
1280
+ border: 1px solid var(--seatmap-editor-border);
1281
+ border-radius: var(--seatmap-editor-radius-sm);
1282
+ background: var(--seatmap-editor-control-surface);
1283
+ color: var(--seatmap-editor-text);
1284
+ font-family: var(--seatmap-editor-font-body);
1285
+ font-size: var(--seatmap-editor-type-body-size);
1286
+ font-weight: 600;
1287
+ padding: 3px 8px;
1288
+ cursor: pointer;
1289
+ }
1290
+
1291
+ .seatmap-editor__panel-button:hover:not(:disabled) {
1292
+ background: color-mix(in srgb, var(--seatmap-editor-control-surface) 86%, var(--seatmap-editor-text) 14%);
1293
+ border-color: color-mix(in srgb, var(--seatmap-editor-border) 58%, var(--seatmap-editor-text) 42%);
1294
+ }
1295
+
1296
+ .seatmap-editor__panel-button:focus-visible {
1297
+ outline: none;
1298
+ box-shadow: 0 0 0 2px var(--seatmap-focus-ring);
1299
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
1300
+ }
1301
+
1302
+ .seatmap-editor__panel-button:disabled {
1303
+ cursor: default;
1304
+ opacity: 0.5;
1305
+ }
1306
+
1307
+ .seatmap-editor__panel-button--danger {
1308
+ border-color: color-mix(in srgb, var(--seatmap-editor-danger, #ad3f3f) 60%, var(--seatmap-editor-surface-lowest));
1309
+ background: color-mix(in srgb, var(--seatmap-editor-danger, #ad3f3f) 30%, var(--seatmap-editor-control-surface));
1310
+ color: var(--seatmap-editor-danger-text, #ffd9df);
1311
+ }
1312
+
1313
+ .seatmap-editor__panel-button--tiny {
1314
+ padding: 1px 5px;
1315
+ font-size: var(--seatmap-editor-type-label-size);
1316
+ }
1317
+
1318
+ .seatmap-editor__panel-button--full {
1319
+ width: 100%;
1320
+ }
1321
+
1322
+ .seatmap-editor__panel-row {
1323
+ display: flex;
1324
+ align-items: center;
1325
+ gap: 8px;
1326
+ }
1327
+
1328
+ .seatmap-editor__panel-row--spaced {
1329
+ margin-top: 10px;
1330
+ }
1331
+
1332
+ .seatmap-editor__panel-actions-end {
1333
+ display: flex;
1334
+ justify-content: flex-end;
1335
+ margin-top: 10px;
1336
+ }
1337
+
1338
+ .seatmap-editor__panel-grid-2 {
1339
+ display: grid;
1340
+ grid-template-columns: 1fr 1fr;
1341
+ gap: 8px;
1342
+ }
1343
+
1344
+ .seatmap-editor__panel-list {
1345
+ display: flex;
1346
+ flex-direction: column;
1347
+ gap: 4px;
1348
+ }
1349
+
1350
+ .seatmap-editor__panel-scroll {
1351
+ overflow-y: auto;
1352
+ }
1353
+
1354
+ .seatmap-editor__panel-scroll--sm {
1355
+ max-height: 200px;
1356
+ }
1357
+
1358
+ .seatmap-editor__panel-scroll--md {
1359
+ max-height: 220px;
1360
+ }
1361
+
1362
+ .seatmap-editor__panel-list-item {
1363
+ display: flex;
1364
+ align-items: center;
1365
+ gap: 6px;
1366
+ padding: 3px 6px;
1367
+ border-radius: var(--seatmap-editor-radius-sm);
1368
+ background: var(--seatmap-editor-control-surface);
1369
+ color: var(--seatmap-editor-text);
1370
+ font-size: var(--seatmap-editor-type-body-size);
1371
+ font-family: var(--seatmap-editor-font-body);
1372
+ }
1373
+
1374
+ .seatmap-editor__panel-list-item--interactive {
1375
+ cursor: pointer;
1376
+ transition: border-color 120ms ease, background-color 120ms ease;
1377
+ border: 1px solid transparent;
1378
+ }
1379
+
1380
+ .seatmap-editor__panel-list-item--interactive-button {
1381
+ width: 100%;
1382
+ text-align: left;
1383
+ font: inherit;
1384
+ }
1385
+
1386
+ .seatmap-editor__panel-list-item--interactive:hover {
1387
+ background: var(--seatmap-editor-toolbar-button-hover-bg);
1388
+ border-color: var(--seatmap-editor-toolbar-button-hover-border);
1389
+ }
1390
+
1391
+ .seatmap-editor__panel-list-item--interactive:focus-visible {
1392
+ outline: none;
1393
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
1394
+ box-shadow: 0 0 0 2px var(--seatmap-editor-toolbar-button-focus-ring);
1395
+ }
1396
+
1397
+ .seatmap-editor__panel-list-item--interactive.is-active {
1398
+ background: var(--seatmap-editor-toolbar-button-active-bg);
1399
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
1400
+ }
1401
+
1402
+ .seatmap-editor__panel-content-grow {
1403
+ flex: 1 1 auto;
1404
+ min-width: 0;
1405
+ }
1406
+
1407
+ .seatmap-editor__panel-divider {
1408
+ height: 8px;
1409
+ background: linear-gradient(
1410
+ to bottom,
1411
+ transparent,
1412
+ var(--seatmap-editor-sidebar-separator-wash),
1413
+ transparent
1414
+ );
1415
+ margin: 14px 0;
1416
+ }
1417
+
1418
+ .seatmap-editor__panel-img-preview {
1419
+ width: 100%;
1420
+ height: 80px;
1421
+ border-radius: var(--seatmap-editor-radius-sm);
1422
+ border: 1px solid var(--seatmap-editor-border);
1423
+ overflow: hidden;
1424
+ margin-bottom: 8px;
1425
+ }
1426
+
1427
+ .seatmap-editor__panel-img-preview > img {
1428
+ width: 100%;
1429
+ height: 100%;
1430
+ object-fit: cover;
1431
+ display: block;
1432
+ }
1433
+
1434
+ .seatmap-editor__panel-checkbox {
1435
+ accent-color: var(--seatmap-editor-accent);
1436
+ }
1437
+
1438
+ .seatmap-editor__panel-range {
1439
+ width: 100%;
1440
+ max-width: 100%;
1441
+ min-width: 0;
1442
+ margin: 0;
1443
+ display: block;
1444
+ box-sizing: border-box;
1445
+ accent-color: var(--seatmap-editor-accent);
1446
+ cursor: pointer;
1447
+ }
1448
+
1449
+ .seatmap-editor__panel-range--inline {
1450
+ flex: 1 1 auto;
1451
+ }
1452
+
1453
+ .seatmap-editor__color-picker-shell {
1454
+ width: 14px;
1455
+ height: 14px;
1456
+ border-radius: 5px;
1457
+ border: 1px solid color-mix(in srgb, var(--seatmap-editor-text-muted) 60%, transparent);
1458
+ overflow: hidden;
1459
+ flex-shrink: 0;
1460
+ background: var(--seatmap-editor-control-surface);
1461
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35), inset 0 0 0 1px color-mix(in srgb, var(--seatmap-editor-text) 16%, transparent);
1462
+ position: relative;
1463
+ }
1464
+
1465
+ .seatmap-editor__color-picker-shell--lg {
1466
+ width: 16px;
1467
+ height: 16px;
1468
+ }
1469
+
1470
+ .seatmap-editor__color-picker-dot {
1471
+ position: absolute;
1472
+ inset: 0;
1473
+ }
1474
+
1475
+ .seatmap-editor__color-picker-input {
1476
+ position: absolute;
1477
+ inset: 0;
1478
+ border: none;
1479
+ padding: 0;
1480
+ margin: 0;
1481
+ background: transparent;
1482
+ opacity: 0;
1483
+ }
1484
+
1485
+ .seatmap-editor__color-picker-input[data-editable="true"] {
1486
+ cursor: pointer;
1487
+ }
1488
+
1489
+ .seatmap-editor__color-picker-input[data-editable="false"] {
1490
+ cursor: default;
1491
+ }
1492
+
1493
+ .seatmap-editor__modal-backdrop {
1494
+ position: fixed;
1495
+ inset: 0;
1496
+ background: color-mix(in srgb, var(--seatmap-editor-surface-lowest) 70%, transparent);
1497
+ z-index: 1000;
1498
+ display: flex;
1499
+ align-items: center;
1500
+ justify-content: center;
1501
+ padding: 16px;
1502
+ }
1503
+
1504
+ .seatmap-editor__modal {
1505
+ width: min(860px, 95vw);
1506
+ max-height: 80vh;
1507
+ overflow: auto;
1508
+ background: var(--seatmap-editor-surface);
1509
+ border: 1px solid color-mix(in srgb, var(--seatmap-editor-border) 70%, transparent);
1510
+ border-radius: calc(var(--seatmap-editor-radius-md) + 2px);
1511
+ padding: 16px;
1512
+ }
1513
+
1514
+ .seatmap-editor__modal-header {
1515
+ display: flex;
1516
+ justify-content: space-between;
1517
+ align-items: center;
1518
+ gap: 8px;
1519
+ margin-bottom: 12px;
1520
+ }
1521
+
1522
+ .seatmap-editor__modal-actions {
1523
+ display: inline-flex;
1524
+ align-items: center;
1525
+ gap: 8px;
1526
+ }
1527
+
1528
+ .seatmap-editor__panel-muted--spaced,
1529
+ .seatmap-editor__status-line {
1530
+ margin-bottom: 10px;
1531
+ }
1532
+
1533
+ .seatmap-editor__status-line--success {
1534
+ color: var(--seatmap-editor-status-success);
1535
+ }
1536
+
1537
+ .seatmap-editor__status-line--error {
1538
+ color: var(--seatmap-editor-status-error);
1539
+ }
1540
+
1541
+ .seatmap-editor__status-line--idle {
1542
+ color: var(--seatmap-editor-status-idle);
1543
+ }
1544
+
1545
+ .seatmap-editor__table-grid {
1546
+ display: grid;
1547
+ grid-template-columns: minmax(160px, 1.6fr) minmax(92px, 0.9fr) minmax(88px, 0.8fr) minmax(188px, 1.4fr) minmax(96px, 0.9fr);
1548
+ gap: 8px;
1549
+ }
1550
+
1551
+ .seatmap-editor__table-head {
1552
+ color: var(--seatmap-editor-text-muted);
1553
+ font-size: var(--seatmap-editor-type-label-size);
1554
+ font-family: var(--seatmap-editor-font-body);
1555
+ }
1556
+
1557
+ .seatmap-editor__table-row {
1558
+ grid-column: 1 / -1;
1559
+ display: grid;
1560
+ grid-template-columns: minmax(160px, 1.6fr) minmax(92px, 0.9fr) minmax(88px, 0.8fr) minmax(188px, 1.4fr) minmax(96px, 0.9fr);
1561
+ gap: 8px;
1562
+ align-items: center;
1563
+ padding: 8px 10px;
1564
+ border-radius: calc(var(--seatmap-editor-radius-md) - 2px);
1565
+ background: var(--seatmap-editor-table-row-bg);
1566
+ }
1567
+
1568
+ .seatmap-editor__table-category-cell {
1569
+ display: flex;
1570
+ align-items: center;
1571
+ gap: 8px;
1572
+ min-width: 0;
1573
+ }
1574
+
1575
+ .seatmap-editor__table-category-swatch {
1576
+ width: 10px;
1577
+ height: 10px;
1578
+ border-radius: 2px;
1579
+ flex-shrink: 0;
1580
+ }
1581
+
1582
+ .seatmap-editor__table-category-name {
1583
+ color: var(--seatmap-editor-text);
1584
+ font-size: 13px;
1585
+ font-family: var(--seatmap-editor-font-body);
1586
+ }
1587
+
1588
+ .seatmap-editor__table-amount {
1589
+ color: color-mix(in srgb, var(--seatmap-editor-text) 86%, var(--seatmap-editor-text-muted));
1590
+ font-size: 12px;
1591
+ font-family: var(--seatmap-editor-font-body);
1592
+ }
1593
+
1594
+ .seatmap-editor__table-effective-price {
1595
+ color: var(--seatmap-editor-text);
1596
+ font-size: 12px;
1597
+ font-family: var(--seatmap-editor-font-body);
1598
+ font-weight: 600;
1599
+ white-space: nowrap;
1600
+ }
1601
+
1602
+ .seatmap-editor__override-editor {
1603
+ position: relative;
1604
+ width: 100%;
1605
+ min-width: 0;
1606
+ max-width: 100%;
1607
+ overflow: hidden;
1608
+ }
1609
+
1610
+ .seatmap-editor__override-input {
1611
+ width: 100%;
1612
+ max-width: 100%;
1613
+ box-sizing: border-box;
1614
+ padding: 4px 92px 4px 8px;
1615
+ border: 1px solid var(--seatmap-editor-border);
1616
+ border-radius: var(--seatmap-editor-radius-sm);
1617
+ background: var(--seatmap-editor-control-surface);
1618
+ color: var(--seatmap-editor-text);
1619
+ font-size: 12px;
1620
+ font-family: var(--seatmap-editor-font-body);
1621
+ -moz-appearance: textfield;
1622
+ appearance: textfield;
1623
+ }
1624
+
1625
+ .seatmap-editor__override-input.is-disabled {
1626
+ color: var(--seatmap-editor-text-muted);
1627
+ background: color-mix(in srgb, var(--seatmap-editor-control-surface) 88%, transparent);
1628
+ }
1629
+
1630
+ .seatmap-editor__override-actions {
1631
+ position: absolute;
1632
+ right: 3px;
1633
+ top: 50%;
1634
+ transform: translateY(-50%);
1635
+ display: inline-flex;
1636
+ gap: 2px;
1637
+ }
1638
+
1639
+ .seatmap-editor__table-action-button {
1640
+ width: 20px;
1641
+ height: 20px;
1642
+ border-radius: var(--seatmap-editor-radius-sm);
1643
+ border: 1px solid var(--seatmap-editor-border);
1644
+ background: var(--seatmap-editor-control-surface);
1645
+ color: color-mix(in srgb, var(--seatmap-editor-text) 88%, var(--seatmap-editor-text-muted));
1646
+ font-size: 12px;
1647
+ line-height: 1;
1648
+ padding: 0;
1649
+ cursor: pointer;
1650
+ }
1651
+
1652
+ .seatmap-editor__table-action-button:hover:not(:disabled) {
1653
+ border-color: var(--seatmap-editor-toolbar-button-hover-border);
1654
+ background: var(--seatmap-editor-toolbar-button-hover-bg);
1655
+ }
1656
+
1657
+ .seatmap-editor__table-action-button:disabled {
1658
+ opacity: 0.55;
1659
+ cursor: not-allowed;
1660
+ }
1661
+
1662
+ .seatmap-editor__table-action-button--apply {
1663
+ border-color: var(--seatmap-editor-toolbar-button-active-border);
1664
+ background: color-mix(in srgb, var(--seatmap-editor-accent) 34%, var(--seatmap-editor-control-surface));
1665
+ color: var(--seatmap-editor-accent-text);
1666
+ }
1667
+
1668
+ .seatmap-editor__table-action-button--reset {
1669
+ border-color: color-mix(in srgb, var(--seatmap-editor-danger, #ad3f3f) 58%, var(--seatmap-editor-surface-lowest));
1670
+ background: color-mix(in srgb, var(--seatmap-editor-danger, #ad3f3f) 34%, var(--seatmap-editor-control-surface));
1671
+ color: var(--seatmap-editor-danger-text, #ffd9df);
1672
+ }
1673
+
1674
+ .seatmap-editor__orientation-toggle {
1675
+ gap: 8px;
1676
+ }
1677
+
1678
+ .seatmap-editor__switch-track--wide {
1679
+ width: 46px;
1680
+ height: 24px;
1681
+ }
1682
+
1683
+ .seatmap-editor__switch-thumb--wide {
1684
+ width: 18px;
1685
+ height: 18px;
1686
+ }
1687
+
1688
+ .seatmap-editor__orientation-label {
1689
+ font-size: var(--seatmap-editor-type-body-size);
1690
+ font-family: var(--seatmap-editor-font-body);
1691
+ font-weight: 600;
1692
+ color: var(--seatmap-editor-text-muted);
1693
+ }
1694
+
1695
+ .seatmap-editor__orientation-label.is-active {
1696
+ color: var(--seatmap-editor-accent);
1697
+ }