@mhmttosun/dnd 0.0.0-stage → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3278 @@
1
+ /* ==========================================================================
2
+ EDITOR CSS - DND Minimalist Arayüz & Bağlamsal Mini Araç Çubuğu
3
+ Sağ ve sol yan paneller kaldırılmış, tam ekran tuval düzeni.
4
+ ========================================================================== */
5
+
6
+ .dnd-editor-root {
7
+ --primary: #2563eb;
8
+ --primary-hover: #1d4ed8;
9
+ --primary-light: #eff6ff;
10
+ --primary-border: #bfdbfe;
11
+
12
+ --success: #10b981;
13
+ --success-light: #ecfdf5;
14
+ --danger: #ef4444;
15
+ --danger-light: #fef2f2;
16
+ --warning: #f59e0b;
17
+ --warning-light: #fffbeb;
18
+
19
+ --bg-app: #f8fafc;
20
+ --bg-surface: #ffffff;
21
+ --bg-workspace: #f1f5f9;
22
+
23
+ --border-color: #e2e8f0;
24
+ --border-subtle: #f1f5f9;
25
+
26
+ --text-main: #0f172a;
27
+ --text-muted: #64748b;
28
+ --text-light: #94a3b8;
29
+
30
+ --radius-sm: 6px;
31
+ --radius-md: 10px;
32
+ --radius-lg: 14px;
33
+ --radius-full: 9999px;
34
+
35
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
36
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.06);
37
+ --shadow-lg: 0 10px 25px -3px rgba(15, 23, 42, 0.08), 0 4px 6px -4px rgba(15, 23, 42, 0.04);
38
+ --shadow-popup: 0 12px 32px rgba(15, 23, 42, 0.12), 0 2px 8px rgba(15, 23, 42, 0.04);
39
+ }
40
+
41
+ *, *::before, *::after {
42
+ box-sizing: border-box;
43
+ margin: 0;
44
+ padding: 0;
45
+ }
46
+
47
+ .dnd-editor-root {
48
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
49
+ background-color: var(--bg-workspace);
50
+ color: var(--text-main);
51
+ height: 100vh;
52
+ width: 100vw;
53
+ overflow: hidden;
54
+ display: flex;
55
+ flex-direction: column;
56
+ }
57
+
58
+ /* ==========================================
59
+ 1. ÜST BAŞLIK SATIRI (TOP HEADER)
60
+ ========================================== */
61
+ .app-top-header {
62
+ height: 58px;
63
+ background-color: var(--bg-surface);
64
+ border-bottom: 1px solid var(--border-color);
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: space-between;
68
+ padding: 0 24px;
69
+ z-index: 50;
70
+ transition: opacity 0.2s ease, transform 0.2s ease;
71
+ }
72
+
73
+ /* Gömülü Mod (Embedded Mode): Başka uygulamalara entegre edildiğinde header gizlenir */
74
+ .dnd-editor-root.is-embedded .app-top-header {
75
+ display: none !important;
76
+ }
77
+
78
+ .dnd-editor-root.is-embedded {
79
+ min-height: 0;
80
+ }
81
+
82
+ .dnd-editor-root.is-embedded .editor-workspace {
83
+ flex: 1 1 0;
84
+ height: auto;
85
+ min-height: 0;
86
+ }
87
+
88
+ .top-header-left {
89
+ display: flex;
90
+ align-items: center;
91
+ gap: 14px;
92
+ }
93
+
94
+ .app-brand-icon {
95
+ width: 36px;
96
+ height: 36px;
97
+ border-radius: var(--radius-md);
98
+ background: #eff6ff;
99
+ border: 1px solid var(--primary-border);
100
+ display: flex;
101
+ align-items: center;
102
+ justify-content: center;
103
+ }
104
+
105
+ .header-titles-box {
106
+ display: flex;
107
+ flex-direction: column;
108
+ gap: 1px;
109
+ }
110
+
111
+ .app-subtitle {
112
+ font-size: 0.65rem;
113
+ font-weight: 700;
114
+ color: var(--text-muted);
115
+ text-transform: uppercase;
116
+ letter-spacing: 0.06em;
117
+ }
118
+
119
+ .project-title-row {
120
+ display: flex;
121
+ align-items: center;
122
+ }
123
+
124
+ .project-title-input {
125
+ border: none;
126
+ background: transparent;
127
+ font-size: 1.02rem;
128
+ font-weight: 700;
129
+ color: var(--text-main);
130
+ outline: none;
131
+ width: 260px;
132
+ padding: 0;
133
+ font-family: inherit;
134
+ }
135
+
136
+ .project-title-input:hover,
137
+ .project-title-input:focus {
138
+ color: var(--primary);
139
+ }
140
+
141
+ .project-save-status {
142
+ display: flex;
143
+ align-items: center;
144
+ gap: 5px;
145
+ font-size: 0.72rem;
146
+ font-weight: 600;
147
+ color: var(--text-muted);
148
+ }
149
+
150
+ .status-dot {
151
+ width: 7px;
152
+ height: 7px;
153
+ border-radius: 50%;
154
+ background-color: var(--warning);
155
+ }
156
+
157
+ .project-save-status.is-saved .status-dot {
158
+ background-color: var(--success);
159
+ }
160
+
161
+ .top-header-right {
162
+ display: flex;
163
+ align-items: center;
164
+ gap: 8px;
165
+ }
166
+
167
+ .top-icon-btn {
168
+ width: 38px;
169
+ height: 38px;
170
+ border-radius: var(--radius-md);
171
+ border: 1px solid var(--border-color);
172
+ background: var(--bg-surface);
173
+ color: var(--text-main);
174
+ display: flex;
175
+ align-items: center;
176
+ justify-content: center;
177
+ cursor: pointer;
178
+ transition: all 0.15s ease;
179
+ }
180
+
181
+ .top-icon-btn:hover {
182
+ background: var(--bg-app);
183
+ border-color: #cbd5e1;
184
+ color: var(--primary);
185
+ }
186
+
187
+ .top-primary-save-btn {
188
+ height: 38px;
189
+ padding: 0 18px;
190
+ border-radius: var(--radius-md);
191
+ border: none;
192
+ background: var(--primary);
193
+ color: #ffffff;
194
+ font-size: 0.88rem;
195
+ font-weight: 700;
196
+ display: flex;
197
+ align-items: center;
198
+ gap: 8px;
199
+ cursor: pointer;
200
+ transition: all 0.15s ease;
201
+ box-shadow: 0 2px 4px rgba(37, 99, 235, 0.2);
202
+ }
203
+
204
+ .top-primary-save-btn:hover {
205
+ background: var(--primary-hover);
206
+ transform: translateY(-1px);
207
+ }
208
+
209
+ /* ==========================================
210
+ 2. İKİNCİL ARAÇ ÇUBUĞU (SECONDARY TOOLBAR)
211
+ ========================================== */
212
+ .app-sub-toolbar {
213
+ height: 48px;
214
+ background-color: var(--bg-surface);
215
+ border-bottom: 1px solid var(--border-color);
216
+ display: flex;
217
+ align-items: center;
218
+ justify-content: space-between;
219
+ padding: 0 24px;
220
+ z-index: 40;
221
+ }
222
+
223
+ .sub-toolbar-cluster {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: 6px;
227
+ }
228
+
229
+ .mode-pill-group {
230
+ display: flex;
231
+ align-items: center;
232
+ background: #f1f5f9;
233
+ padding: 3px;
234
+ border-radius: var(--radius-full);
235
+ gap: 2px;
236
+ }
237
+
238
+ .mode-toggle-btn {
239
+ width: 32px;
240
+ height: 32px;
241
+ border-radius: var(--radius-full);
242
+ border: none;
243
+ background: transparent;
244
+ color: var(--text-muted);
245
+ display: flex;
246
+ align-items: center;
247
+ justify-content: center;
248
+ cursor: pointer;
249
+ transition: all 0.15s ease;
250
+ }
251
+
252
+ .mode-toggle-btn:hover {
253
+ color: var(--text-main);
254
+ }
255
+
256
+ .mode-toggle-btn.active {
257
+ background: #ffffff;
258
+ color: var(--primary);
259
+ box-shadow: var(--shadow-sm);
260
+ }
261
+
262
+ .sub-tool-btn {
263
+ width: 34px;
264
+ height: 34px;
265
+ border-radius: var(--radius-md);
266
+ border: 1px solid transparent;
267
+ background: transparent;
268
+ color: #475569;
269
+ display: flex;
270
+ align-items: center;
271
+ justify-content: center;
272
+ cursor: pointer;
273
+ transition: all 0.15s ease;
274
+ }
275
+
276
+ .sub-tool-btn:hover:not(:disabled) {
277
+ background: #f1f5f9;
278
+ color: var(--text-main);
279
+ }
280
+
281
+ .sub-tool-btn.active {
282
+ background: #eff6ff;
283
+ border-color: var(--primary-border);
284
+ color: var(--primary);
285
+ }
286
+
287
+ .sub-tool-btn:disabled {
288
+ opacity: 0.35;
289
+ cursor: not-allowed;
290
+ }
291
+
292
+ .sub-divider {
293
+ width: 1px;
294
+ height: 20px;
295
+ background-color: var(--border-color);
296
+ margin: 0 4px;
297
+ }
298
+
299
+ /* Şablon Açılır Menüsü */
300
+ .template-dropdown-wrapper {
301
+ position: relative;
302
+ }
303
+
304
+ .templates-menu {
305
+ position: absolute;
306
+ top: 42px;
307
+ left: 0;
308
+ background: #ffffff;
309
+ border: 1px solid var(--border-color);
310
+ border-radius: var(--radius-lg);
311
+ box-shadow: var(--shadow-popup);
312
+ padding: 8px;
313
+ display: flex;
314
+ flex-direction: column;
315
+ gap: 4px;
316
+ width: 280px;
317
+ z-index: 1000;
318
+ }
319
+
320
+ .menu-title {
321
+ font-size: 0.72rem;
322
+ font-weight: 700;
323
+ color: var(--text-muted);
324
+ text-transform: uppercase;
325
+ letter-spacing: 0.05em;
326
+ padding: 6px 10px;
327
+ }
328
+
329
+ .template-menu-item {
330
+ width: 100%;
331
+ text-align: left;
332
+ background: transparent;
333
+ border: none;
334
+ padding: 8px 12px;
335
+ border-radius: var(--radius-sm);
336
+ font-size: 0.82rem;
337
+ font-weight: 600;
338
+ color: var(--text-main);
339
+ cursor: pointer;
340
+ transition: background 0.15s ease;
341
+ }
342
+
343
+ .template-menu-item:hover {
344
+ background: #eff6ff;
345
+ color: var(--primary);
346
+ }
347
+
348
+ /* Sağ Küme ve Geçmiş / Yakınlaştırma */
349
+ .cluster-history-zoom {
350
+ display: flex;
351
+ align-items: center;
352
+ gap: 6px;
353
+ }
354
+
355
+ /* Daha Fazla Seçenek Açılır Menüsü (Proje Aç, Çevrimdışı HTML İndir, Kaydet) */
356
+ .more-menu-wrapper {
357
+ position: relative;
358
+ display: flex;
359
+ align-items: center;
360
+ }
361
+
362
+ .more-dropdown-menu {
363
+ position: absolute;
364
+ top: 42px;
365
+ right: 0;
366
+ background: #ffffff;
367
+ border: 1px solid var(--border-color);
368
+ border-radius: var(--radius-lg);
369
+ box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.12), 0 8px 10px -6px rgba(15, 23, 42, 0.08);
370
+ padding: 6px;
371
+ display: flex;
372
+ flex-direction: column;
373
+ gap: 2px;
374
+ width: 215px;
375
+ z-index: 1000;
376
+ }
377
+
378
+ .more-menu-item {
379
+ width: 100%;
380
+ display: flex;
381
+ align-items: center;
382
+ gap: 10px;
383
+ background: transparent;
384
+ border: none;
385
+ padding: 8px 12px;
386
+ border-radius: var(--radius-md);
387
+ font-size: 0.84rem;
388
+ font-weight: 500;
389
+ color: var(--text-main);
390
+ cursor: pointer;
391
+ transition: all 0.15s ease;
392
+ text-align: left;
393
+ user-select: none;
394
+ }
395
+
396
+ .more-menu-item svg {
397
+ color: var(--text-muted);
398
+ flex-shrink: 0;
399
+ transition: color 0.15s ease;
400
+ }
401
+
402
+ .more-menu-item:hover {
403
+ background: #f1f5f9;
404
+ color: var(--primary);
405
+ }
406
+
407
+ .more-menu-item:hover svg {
408
+ color: var(--primary);
409
+ }
410
+
411
+ .more-menu-item#btn-save-project {
412
+ font-weight: 600;
413
+ }
414
+
415
+ .more-menu-item#btn-save-project:hover {
416
+ background: #eff6ff;
417
+ color: var(--primary);
418
+ }
419
+
420
+ /* ==========================================
421
+ 3. ÇALIŞMA ALANI (FULL CANVAS WORKSPACE)
422
+ ========================================== */
423
+ .editor-workspace {
424
+ flex: 1 1 0%;
425
+ min-height: 0;
426
+ width: 100%;
427
+ background-color: var(--bg-workspace);
428
+ position: relative;
429
+ overflow: hidden;
430
+ display: flex;
431
+ }
432
+
433
+ .stage-viewport {
434
+ width: 100%;
435
+ height: 100%;
436
+ flex: 1 1 0%;
437
+ position: relative;
438
+ overflow: auto;
439
+ overscroll-behavior: contain;
440
+ touch-action: pan-x pan-y;
441
+ scrollbar-width: thin;
442
+ scrollbar-color: rgba(148, 163, 184, 0.45) transparent;
443
+ }
444
+
445
+ /* Modern İnce Scrollbar (Webkit) */
446
+ .stage-viewport::-webkit-scrollbar {
447
+ width: 10px;
448
+ height: 10px;
449
+ }
450
+
451
+ .stage-viewport::-webkit-scrollbar-track {
452
+ background: transparent;
453
+ }
454
+
455
+ .stage-viewport::-webkit-scrollbar-thumb {
456
+ background-color: rgba(148, 163, 184, 0.35);
457
+ border-radius: 9999px;
458
+ border: 2px solid transparent;
459
+ background-clip: padding-box;
460
+ transition: background-color 0.2s ease;
461
+ }
462
+
463
+ .stage-viewport::-webkit-scrollbar-thumb:hover {
464
+ background-color: rgba(100, 116, 139, 0.65);
465
+ }
466
+
467
+ .stage-viewport::-webkit-scrollbar-corner {
468
+ background: transparent;
469
+ }
470
+
471
+ /* Sahne Kapsayıcı ve Ölçekleyici (Scroll & Center Mimari) */
472
+ .stage-container {
473
+ min-width: 100%;
474
+ min-height: 100%;
475
+ width: max-content;
476
+ height: max-content;
477
+ display: flex;
478
+ align-items: center;
479
+ justify-content: center;
480
+ padding: 40px;
481
+ box-sizing: border-box;
482
+ position: relative;
483
+ }
484
+
485
+ .stage-scaler {
486
+ position: relative;
487
+ flex-shrink: 0;
488
+ margin: auto;
489
+ border-radius: 16px;
490
+ box-shadow: 0 12px 35px rgba(15, 23, 42, 0.08), 0 2px 6px rgba(15, 23, 42, 0.04);
491
+ }
492
+
493
+ /* ==========================================
494
+ 4. BAĞLAMSAL MİNİ ARAÇ ÇUBUĞU (MINI TOOLBAR)
495
+ ========================================== */
496
+ .mini-toolbar-container {
497
+ position: fixed;
498
+ z-index: 9999;
499
+ display: flex;
500
+ flex-direction: column;
501
+ align-items: center;
502
+ pointer-events: auto;
503
+ user-select: none;
504
+ }
505
+
506
+ .mini-toolbar-pill {
507
+ display: flex;
508
+ align-items: center;
509
+ gap: 3px;
510
+ background: #ffffff;
511
+ border: 1px solid var(--border-color);
512
+ border-radius: var(--radius-lg);
513
+ padding: 5px 8px;
514
+ box-shadow: 0 10px 25px rgba(15, 23, 42, 0.12), 0 2px 6px rgba(15, 23, 42, 0.04);
515
+ width: 252px;
516
+ min-width: 252px;
517
+ box-sizing: border-box;
518
+ justify-content: space-between;
519
+ }
520
+
521
+ .mini-toolbar-pill.line-mini-toolbar-pill {
522
+ width: 252px;
523
+ min-width: 252px;
524
+ box-sizing: border-box;
525
+ justify-content: center;
526
+ gap: 14px;
527
+ }
528
+
529
+ .mini-toolbar-pill.is-multi {
530
+ width: max-content;
531
+ min-width: 252px;
532
+ justify-content: flex-start;
533
+ gap: 3px;
534
+ }
535
+
536
+ .mt-btn {
537
+ width: 32px;
538
+ height: 32px;
539
+ border-radius: var(--radius-md);
540
+ border: 1px solid transparent;
541
+ background: transparent;
542
+ color: #475569;
543
+ display: flex;
544
+ align-items: center;
545
+ justify-content: center;
546
+ cursor: pointer;
547
+ transition: all 0.15s ease;
548
+ }
549
+
550
+ .mt-btn:hover {
551
+ background: #f1f5f9;
552
+ color: #0f172a;
553
+ }
554
+
555
+ .mt-btn.active {
556
+ background: #f1f5f9;
557
+ border-color: #cbd5e1;
558
+ color: #0f172a;
559
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
560
+ }
561
+
562
+ .mt-btn-danger:hover {
563
+ background: #fef2f2;
564
+ color: var(--danger);
565
+ }
566
+
567
+ .mt-text-icon {
568
+ font-size: 0.95rem;
569
+ font-weight: 800;
570
+ letter-spacing: -0.05em;
571
+ }
572
+
573
+ .mt-divider {
574
+ width: 1px;
575
+ height: 18px;
576
+ background: var(--border-color);
577
+ margin: 0 4px;
578
+ }
579
+
580
+ /* ==========================================
581
+ 5. POPUP KARTLARI (ROLES, STYLE, TEXT, ETC)
582
+ ========================================== */
583
+ .mini-toolbar-container.placement-above {
584
+ flex-direction: column-reverse;
585
+ }
586
+
587
+ .mini-toolbar-container.placement-above .mt-popup-card {
588
+ margin-top: 0;
589
+ margin-bottom: 8px;
590
+ }
591
+
592
+ .mini-toolbar-container.placement-above .mt-popup-card.is-opening {
593
+ animation: popupSlideUp 0.18s cubic-bezier(0.2, 0.8, 0.2, 1);
594
+ }
595
+
596
+ @keyframes popupSlideUp {
597
+ from { opacity: 0; transform: translateY(6px); }
598
+ to { opacity: 1; transform: translateY(0); }
599
+ }
600
+
601
+ .mt-popup-card {
602
+ margin-top: 8px;
603
+ background: #ffffff;
604
+ border: 1px solid var(--border-color);
605
+ border-radius: var(--radius-lg);
606
+ padding: 14px 16px;
607
+ box-shadow: var(--shadow-popup);
608
+ display: flex;
609
+ flex-direction: column;
610
+ gap: 10px;
611
+ min-width: 250px;
612
+ width: 252px;
613
+ max-width: 100%;
614
+ box-sizing: border-box;
615
+ max-height: calc(100vh - 180px);
616
+ overflow-y: auto;
617
+ scrollbar-width: thin;
618
+ }
619
+
620
+ .mt-popup-card.is-opening {
621
+ animation: popupSlideDown 0.18s cubic-bezier(0.2, 0.8, 0.2, 1);
622
+ }
623
+
624
+ @keyframes popupSlideDown {
625
+ from { opacity: 0; transform: translateY(-6px); }
626
+ to { opacity: 1; transform: translateY(0); }
627
+ }
628
+
629
+ /* Minimalist ve kaydırma çubuğuz ortak popup kart tabanı */
630
+ .mt-popup-card {
631
+ padding: 10px 12px;
632
+ gap: 8px;
633
+ box-shadow: 0 8px 24px -4px rgba(15, 23, 42, 0.08), 0 2px 6px -1px rgba(15, 23, 42, 0.04);
634
+ scrollbar-width: none !important;
635
+ -ms-overflow-style: none !important;
636
+ overflow: hidden;
637
+ }
638
+
639
+ .mt-popup-card::-webkit-scrollbar {
640
+ display: none !important;
641
+ width: 0 !important;
642
+ height: 0 !important;
643
+ }
644
+
645
+ .mt-popup-title,
646
+ .mt-line-popup-title,
647
+ .mt-palette-header {
648
+ font-size: 0.72rem;
649
+ font-weight: 600;
650
+ color: #64748b;
651
+ text-transform: uppercase;
652
+ letter-spacing: 0.05em;
653
+ margin: 0;
654
+ user-select: none;
655
+ }
656
+
657
+ /* Çizgi, Nesne Görünümü ve Metin: ortak kompakt sekmeli kartlar */
658
+ .mt-line-popup,
659
+ .mt-style-popup,
660
+ .mt-text-popup {
661
+ width: 252px;
662
+ min-width: 252px;
663
+ max-width: 100%;
664
+ box-sizing: border-box;
665
+ padding: 12px;
666
+ gap: 8px;
667
+ border-radius: var(--radius-lg);
668
+ background: #ffffff;
669
+ box-shadow: 0 8px 24px -4px rgba(15, 23, 42, 0.1);
670
+ border: 1px solid var(--border-color);
671
+ display: flex;
672
+ flex-direction: column;
673
+ }
674
+
675
+ .mt-line-title,
676
+ .mt-style-title,
677
+ .mt-text-title {
678
+ font-size: 0.95rem;
679
+ font-weight: 500;
680
+ color: #1e293b;
681
+ margin: 0 0 4px 0;
682
+ line-height: 1.2;
683
+ }
684
+
685
+ /* Üst Menü / Sekme Çubuğu */
686
+ .mt-line-tabs-bar,
687
+ .mt-style-tabs-bar,
688
+ .mt-text-tabs-bar {
689
+ display: flex;
690
+ align-items: center;
691
+ justify-content: space-between;
692
+ gap: 4px;
693
+ width: 100%;
694
+ }
695
+
696
+ .mt-line-tab-btn,
697
+ .mt-style-tab-btn,
698
+ .mt-text-tab-btn {
699
+ flex: 1;
700
+ min-width: 0;
701
+ height: 40px;
702
+ border-radius: 8px;
703
+ background: transparent;
704
+ border: 1px solid transparent;
705
+ color: #334155;
706
+ display: flex;
707
+ align-items: center;
708
+ justify-content: center;
709
+ gap: 3px;
710
+ cursor: pointer;
711
+ padding: 0 2px;
712
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
713
+ }
714
+
715
+ .mt-line-tab-btn:hover,
716
+ .mt-style-tab-btn:hover,
717
+ .mt-text-tab-btn:hover {
718
+ background: #f1f5f9;
719
+ border-color: #cbd5e1;
720
+ color: #0f172a;
721
+ }
722
+
723
+ .mt-line-tab-btn.active,
724
+ .mt-style-tab-btn.active,
725
+ .mt-text-tab-btn.active {
726
+ background: #eff6ff;
727
+ border-color: #bfdbfe;
728
+ color: #1d4ed8;
729
+ }
730
+
731
+ .mt-line-tab-swatch,
732
+ .mt-style-tab-swatch,
733
+ .mt-text-tab-swatch {
734
+ width: 18px;
735
+ height: 18px;
736
+ border-radius: 50%;
737
+ display: inline-block;
738
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15);
739
+ transition: transform 0.15s ease;
740
+ }
741
+
742
+ .mt-line-tab-width-icon {
743
+ display: flex;
744
+ align-items: center;
745
+ color: inherit;
746
+ }
747
+
748
+ .mt-line-tab-width-text,
749
+ .mt-style-tab-width-text {
750
+ font-size: 0.76rem;
751
+ font-weight: 500;
752
+ color: inherit;
753
+ }
754
+
755
+ /* Alt Ayar Kartı Paneli */
756
+ .mt-line-panel,
757
+ .mt-style-panel,
758
+ .mt-text-panel {
759
+ display: flex;
760
+ flex-direction: column;
761
+ gap: 10px;
762
+ padding: 12px 0 0;
763
+ border-top: 1px solid #edf0f4;
764
+ box-sizing: border-box;
765
+ }
766
+
767
+ .mt-line-panel-title,
768
+ .mt-style-panel-title,
769
+ .mt-text-panel-title {
770
+ font-size: 0.78rem;
771
+ font-weight: 500;
772
+ color: #1e293b;
773
+ margin: 0;
774
+ line-height: 1.2;
775
+ }
776
+
777
+ .mt-line-panel-desc {
778
+ font-size: 0.74rem;
779
+ font-weight: 400;
780
+ color: #64748b;
781
+ margin-top: 2px;
782
+ user-select: none;
783
+ }
784
+
785
+ /* Çizgi Tipi Butonları */
786
+ .mt-line-type-row,
787
+ .mt-style-type-row {
788
+ display: flex;
789
+ align-items: center;
790
+ gap: 6px;
791
+ width: 100%;
792
+ }
793
+
794
+ .mt-line-type-btn,
795
+ .mt-style-type-btn {
796
+ flex: 1;
797
+ min-height: 40px;
798
+ border-radius: 8px;
799
+ border: 1px solid #e2e8f0;
800
+ background: #ffffff;
801
+ color: #334155;
802
+ display: flex;
803
+ align-items: center;
804
+ justify-content: center;
805
+ cursor: pointer;
806
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
807
+ }
808
+
809
+ .mt-line-type-btn:hover,
810
+ .mt-style-type-btn:hover {
811
+ background: #f8fafc;
812
+ color: #0f172a;
813
+ }
814
+
815
+ .mt-line-type-btn.active,
816
+ .mt-style-type-btn.active {
817
+ background: #eff6ff;
818
+ border-color: #93c5fd;
819
+ color: #1d4ed8;
820
+ font-weight: 500;
821
+ }
822
+
823
+ /* Kalınlık Paneli Elemanları */
824
+ .mt-line-chips-row {
825
+ display: flex;
826
+ align-items: center;
827
+ justify-content: space-between;
828
+ gap: 6px;
829
+ width: 100%;
830
+ }
831
+
832
+ .mt-line-chip-btn {
833
+ flex: 1;
834
+ min-width: 0;
835
+ min-height: 46px;
836
+ padding: 6px 2px;
837
+ flex-direction: column;
838
+ gap: 5px;
839
+ border-radius: 8px;
840
+ border: 1px solid #e2e8f0;
841
+ background: #ffffff;
842
+ color: #334155;
843
+ font-size: 0.82rem;
844
+ font-weight: 500;
845
+ display: flex;
846
+ align-items: center;
847
+ justify-content: center;
848
+ cursor: pointer;
849
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
850
+ }
851
+
852
+ .mt-line-chip-btn:hover {
853
+ background: #f8fafc;
854
+ color: #0f172a;
855
+ }
856
+
857
+ .mt-line-chip-btn.active {
858
+ background: #eff6ff;
859
+ border-color: #93c5fd;
860
+ color: #1d4ed8;
861
+ font-weight: 500;
862
+ }
863
+
864
+ /* Renk Paneli Elemanları */
865
+ .mt-line-color-grid,
866
+ .mt-style-color-grid {
867
+ display: grid;
868
+ grid-template-columns: repeat(6, 1fr);
869
+ gap: 6px;
870
+ align-items: center;
871
+ }
872
+
873
+ .mt-line-color-swatch,
874
+ .mt-style-color-swatch {
875
+ width: 100%;
876
+ height: 34px;
877
+ border: 0;
878
+ border-radius: 6px;
879
+ background: transparent;
880
+ cursor: pointer;
881
+ display: flex;
882
+ align-items: center;
883
+ justify-content: center;
884
+ padding: 4px;
885
+ }
886
+
887
+ .mt-line-color-swatch:hover,
888
+ .mt-style-color-swatch:hover {
889
+ background: #f1f5f9;
890
+ }
891
+
892
+ .mt-line-color-dot,
893
+ .mt-style-color-dot {
894
+ width: 24px;
895
+ height: 24px;
896
+ flex-shrink: 0;
897
+ border-radius: 50%;
898
+ background: var(--line-color);
899
+ color: var(--line-check-color);
900
+ display: flex;
901
+ align-items: center;
902
+ justify-content: center;
903
+ box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.08);
904
+ }
905
+
906
+ .mt-line-color-check,
907
+ .mt-style-color-check {
908
+ opacity: 0;
909
+ font-size: 0.8rem;
910
+ font-weight: 600;
911
+ }
912
+
913
+ .mt-line-color-swatch.is-active .mt-line-color-dot,
914
+ .mt-style-color-swatch.is-active .mt-style-color-dot {
915
+ outline: 2px solid #3b82f6;
916
+ outline-offset: 2px;
917
+ }
918
+
919
+ .mt-line-color-swatch.is-active .mt-line-color-check,
920
+ .mt-style-color-swatch.is-active .mt-style-color-check {
921
+ opacity: 1;
922
+ }
923
+
924
+ /* Ok Uçları Butonları */
925
+ .mt-line-arrow-grid {
926
+ display: grid;
927
+ grid-template-columns: repeat(2, 1fr);
928
+ gap: 6px;
929
+ }
930
+
931
+ .mt-line-arrow-btn {
932
+ min-height: 40px;
933
+ border-radius: 8px;
934
+ border: 1px solid #e2e8f0;
935
+ background: #ffffff;
936
+ color: #475569;
937
+ font-size: 0.74rem;
938
+ font-weight: 500;
939
+ display: flex;
940
+ align-items: center;
941
+ justify-content: center;
942
+ gap: 6px;
943
+ cursor: pointer;
944
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
945
+ }
946
+
947
+ .mt-line-arrow-btn:hover {
948
+ background: #f8fafc;
949
+ color: #0f172a;
950
+ }
951
+
952
+ .mt-line-arrow-btn.active {
953
+ background: #eff6ff;
954
+ border-color: #93c5fd;
955
+ color: #1d4ed8;
956
+ font-weight: 500;
957
+ }
958
+
959
+ /* Hizalama Butonları */
960
+ .mt-line-align-grid {
961
+ display: flex;
962
+ gap: 6px;
963
+ }
964
+
965
+ .mt-line-align-btn {
966
+ flex: 1;
967
+ min-height: 40px;
968
+ border-radius: 8px;
969
+ border: 1px solid #e2e8f0;
970
+ background: #ffffff;
971
+ color: #475569;
972
+ font-size: 0.76rem;
973
+ font-weight: 500;
974
+ display: flex;
975
+ align-items: center;
976
+ justify-content: center;
977
+ gap: 6px;
978
+ cursor: pointer;
979
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
980
+ }
981
+
982
+ .mt-line-align-btn:hover {
983
+ background: #f8fafc;
984
+ color: #0f172a;
985
+ }
986
+
987
+ .mt-line-align-btn.active {
988
+ background: #eff6ff;
989
+ border-color: #93c5fd;
990
+ color: #1d4ed8;
991
+ font-weight: 500;
992
+ }
993
+
994
+ .mt-line-unit {
995
+ margin-left: 4px;
996
+ color: #64748b;
997
+ font-size: 0.72rem;
998
+ font-weight: 400;
999
+ }
1000
+
1001
+ .mt-line-width-sample {
1002
+ width: 18px;
1003
+ height: 8px;
1004
+ display: flex;
1005
+ align-items: center;
1006
+ }
1007
+
1008
+ .mt-line-width-sample::before {
1009
+ content: '';
1010
+ width: 100%;
1011
+ height: var(--line-width);
1012
+ border-radius: 4px;
1013
+ background: currentColor;
1014
+ }
1015
+
1016
+ .mt-line-popup button:focus-visible,
1017
+ .mt-style-popup button:focus-visible,
1018
+ .mt-text-popup button:focus-visible {
1019
+ outline: 2px solid #2563eb;
1020
+ outline-offset: 2px;
1021
+ }
1022
+
1023
+ @media (pointer: coarse) {
1024
+ .mini-toolbar-pill.line-mini-toolbar-pill,
1025
+ .mt-line-popup {
1026
+ width: 280px;
1027
+ min-width: 280px;
1028
+ }
1029
+
1030
+ .mt-line-tabs-bar {
1031
+ gap: 4px;
1032
+ }
1033
+
1034
+ .mt-line-popup button {
1035
+ min-height: 44px;
1036
+ }
1037
+
1038
+ .mt-line-chips-row {
1039
+ display: grid;
1040
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1041
+ }
1042
+
1043
+ .mt-line-color-grid {
1044
+ grid-template-columns: repeat(4, minmax(0, 1fr));
1045
+ }
1046
+ }
1047
+
1048
+ @media (prefers-reduced-motion: reduce) {
1049
+ .mt-line-popup,
1050
+ .mt-line-popup *,
1051
+ .mt-line-popup.is-opening,
1052
+ .mt-style-popup,
1053
+ .mt-style-popup *,
1054
+ .mt-style-popup.is-opening,
1055
+ .mt-text-popup,
1056
+ .mt-text-popup *,
1057
+ .mt-text-popup.is-opening {
1058
+ animation: none;
1059
+ transition: none;
1060
+ }
1061
+ }
1062
+
1063
+ .mt-line-group-divider {
1064
+ width: 1px;
1065
+ height: 16px;
1066
+ background-color: #cbd5e1;
1067
+ margin: 0 2px;
1068
+ }
1069
+
1070
+ .mt-popup-header-row {
1071
+ display: flex;
1072
+ align-items: center;
1073
+ justify-content: space-between;
1074
+ }
1075
+
1076
+ .mt-row {
1077
+ display: flex;
1078
+ align-items: center;
1079
+ gap: 8px;
1080
+ }
1081
+
1082
+ .mt-pill-group {
1083
+ display: flex;
1084
+ align-items: center;
1085
+ background: #f1f5f9;
1086
+ border-radius: 8px;
1087
+ padding: 2.5px;
1088
+ gap: 2px;
1089
+ box-sizing: border-box;
1090
+ }
1091
+
1092
+ .mt-role-btn {
1093
+ min-width: 0;
1094
+ min-height: 56px;
1095
+ padding: 7px 4px;
1096
+ border-radius: 8px;
1097
+ border: 1px solid #e2e8f0;
1098
+ background: #ffffff;
1099
+ color: #475569;
1100
+ font-size: 0.76rem;
1101
+ font-weight: 500;
1102
+ cursor: pointer;
1103
+ display: flex;
1104
+ flex-direction: column;
1105
+ align-items: center;
1106
+ justify-content: center;
1107
+ gap: 4px;
1108
+ user-select: none;
1109
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
1110
+ }
1111
+
1112
+ .mt-role-btn:hover {
1113
+ color: #0f172a;
1114
+ background: #f8fafc;
1115
+ border-color: #cbd5e1;
1116
+ }
1117
+
1118
+ .mt-role-btn.active {
1119
+ background: #eff6ff;
1120
+ border-color: #bfdbfe;
1121
+ color: #1d4ed8;
1122
+ }
1123
+
1124
+ .mt-role-popup {
1125
+ width: 252px;
1126
+ min-width: 252px;
1127
+ max-width: 100%;
1128
+ box-sizing: border-box;
1129
+ padding: 10px 12px;
1130
+ gap: 6px;
1131
+ }
1132
+
1133
+ .mt-role-section {
1134
+ display: flex;
1135
+ flex-direction: column;
1136
+ gap: 6px;
1137
+ width: 100%;
1138
+ }
1139
+
1140
+ .mt-role-section-label {
1141
+ font-size: 0.74rem;
1142
+ font-weight: 500;
1143
+ color: #64748b;
1144
+ }
1145
+
1146
+ .mt-role-grid {
1147
+ display: grid;
1148
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1149
+ gap: 6px;
1150
+ }
1151
+
1152
+ @media (pointer: coarse) {
1153
+ .mt-role-popup {
1154
+ width: 280px;
1155
+ min-width: 280px;
1156
+ }
1157
+
1158
+ .mt-role-btn {
1159
+ min-height: 64px;
1160
+ }
1161
+ }
1162
+
1163
+ /* Kenarlık ve Görünüm Kontrolleri */
1164
+ .mt-border-style-row {
1165
+ justify-content: space-between;
1166
+ }
1167
+
1168
+ .mt-icon-btn {
1169
+ width: 28px;
1170
+ height: 28px;
1171
+ border-radius: 6px;
1172
+ border: none;
1173
+ background: transparent;
1174
+ color: #64748b;
1175
+ font-size: 0.85rem;
1176
+ display: flex;
1177
+ align-items: center;
1178
+ justify-content: center;
1179
+ cursor: pointer;
1180
+ transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
1181
+ user-select: none;
1182
+ }
1183
+
1184
+ .mt-icon-btn:hover {
1185
+ color: #0f172a;
1186
+ background: rgba(255, 255, 255, 0.5);
1187
+ }
1188
+
1189
+ .mt-icon-btn.active {
1190
+ background: #ffffff;
1191
+ color: #0f172a;
1192
+ font-weight: 600;
1193
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
1194
+ }
1195
+
1196
+ .mt-icon-btn:disabled,
1197
+ .mt-icon-btn[disabled] {
1198
+ opacity: 0.35;
1199
+ cursor: not-allowed;
1200
+ pointer-events: none;
1201
+ }
1202
+
1203
+ .mt-stepper-row {
1204
+ display: flex;
1205
+ align-items: center;
1206
+ gap: 8px;
1207
+ }
1208
+
1209
+ .mt-stepper-group {
1210
+ display: flex;
1211
+ align-items: center;
1212
+ background: #f1f5f9;
1213
+ border-radius: 8px;
1214
+ padding: 2.5px 5px;
1215
+ gap: 2px;
1216
+ box-sizing: border-box;
1217
+ }
1218
+
1219
+ .mt-stepper-label-icon {
1220
+ font-size: 0.82rem;
1221
+ font-weight: 600;
1222
+ color: #94a3b8;
1223
+ padding: 0 3px;
1224
+ user-select: none;
1225
+ }
1226
+
1227
+ .mt-step-btn {
1228
+ width: 22px;
1229
+ height: 22px;
1230
+ border-radius: 5px;
1231
+ border: none;
1232
+ background: transparent;
1233
+ font-size: 0.85rem;
1234
+ font-weight: 600;
1235
+ color: #64748b;
1236
+ cursor: pointer;
1237
+ display: flex;
1238
+ align-items: center;
1239
+ justify-content: center;
1240
+ line-height: 1;
1241
+ transition: all 0.15s ease;
1242
+ user-select: none;
1243
+ }
1244
+
1245
+ .mt-step-btn:hover {
1246
+ background: #ffffff;
1247
+ color: #0f172a;
1248
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08);
1249
+ }
1250
+
1251
+ .mt-step-btn:active {
1252
+ transform: scale(0.95);
1253
+ }
1254
+
1255
+ .mt-step-val {
1256
+ font-size: 0.8rem;
1257
+ font-weight: 600;
1258
+ color: #0f172a;
1259
+ min-width: 18px;
1260
+ text-align: center;
1261
+ user-select: none;
1262
+ }
1263
+
1264
+ .mt-step-unit {
1265
+ font-size: 0.68rem;
1266
+ font-weight: 500;
1267
+ color: #94a3b8;
1268
+ margin-right: 2px;
1269
+ user-select: none;
1270
+ }
1271
+
1272
+ .mt-style-color-grid {
1273
+ grid-template-columns: repeat(7, minmax(0, 1fr));
1274
+ gap: 4px;
1275
+ }
1276
+
1277
+ .mt-style-color-swatch {
1278
+ padding: 2px;
1279
+ }
1280
+
1281
+ .mt-style-border-preview {
1282
+ width: 18px;
1283
+ height: 18px;
1284
+ border: 3px solid;
1285
+ border-radius: 5px;
1286
+ }
1287
+
1288
+ .mt-style-popup .is-transparent {
1289
+ background-image: linear-gradient(135deg, transparent 45%, #94a3b8 46%, #94a3b8 54%, transparent 55%);
1290
+ background-color: #ffffff;
1291
+ box-shadow: inset 0 0 0 1px #cbd5e1;
1292
+ }
1293
+
1294
+ .mt-style-popup .mt-stepper-group,
1295
+ .mt-text-popup .mt-stepper-group {
1296
+ background: #ffffff;
1297
+ border: 1px solid #e2e8f0;
1298
+ padding: 3px;
1299
+ gap: 8px;
1300
+ }
1301
+
1302
+ .mt-style-popup .mt-step-btn,
1303
+ .mt-text-popup .mt-step-btn {
1304
+ width: 36px;
1305
+ height: 34px;
1306
+ flex-shrink: 0;
1307
+ font-size: 1rem;
1308
+ font-weight: 500;
1309
+ }
1310
+
1311
+ .mt-style-popup .mt-step-btn:hover,
1312
+ .mt-text-popup .mt-step-btn:hover {
1313
+ background: #f1f5f9;
1314
+ box-shadow: none;
1315
+ }
1316
+
1317
+ .mt-style-step-value {
1318
+ display: flex;
1319
+ flex: 1;
1320
+ align-items: center;
1321
+ justify-content: center;
1322
+ gap: 4px;
1323
+ }
1324
+
1325
+ .mt-style-popup .mt-step-val,
1326
+ .mt-text-popup .mt-step-val {
1327
+ font-weight: 500;
1328
+ font-variant-numeric: tabular-nums;
1329
+ }
1330
+
1331
+ @media (pointer: coarse) {
1332
+ .mt-style-popup {
1333
+ width: 280px;
1334
+ min-width: 280px;
1335
+ }
1336
+
1337
+ .mt-style-popup button {
1338
+ min-height: 44px;
1339
+ }
1340
+
1341
+ .mt-style-popup .mt-step-btn,
1342
+ .mt-text-popup .mt-step-btn {
1343
+ width: 44px;
1344
+ }
1345
+
1346
+ .mt-style-color-grid {
1347
+ grid-template-columns: repeat(5, minmax(0, 1fr));
1348
+ }
1349
+ }
1350
+
1351
+ /* Renk Paleti Swatch Izgarası */
1352
+ .mt-color-palette {
1353
+ display: grid;
1354
+ grid-template-columns: repeat(7, 1fr);
1355
+ gap: 7px;
1356
+ margin-top: 2px;
1357
+ }
1358
+
1359
+ .mt-color-swatch {
1360
+ width: 24px;
1361
+ height: 24px;
1362
+ border-radius: 50%;
1363
+ border: 1.5px solid rgba(0, 0, 0, 0.12);
1364
+ cursor: pointer;
1365
+ display: flex;
1366
+ align-items: center;
1367
+ justify-content: center;
1368
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
1369
+ }
1370
+
1371
+ .mt-color-swatch:hover {
1372
+ transform: scale(1.15);
1373
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
1374
+ }
1375
+
1376
+ .mt-color-swatch.is-transparent {
1377
+ position: relative;
1378
+ border-color: #cbd5e1;
1379
+ }
1380
+
1381
+ .slash-line {
1382
+ font-size: 0.85rem;
1383
+ color: #ef4444;
1384
+ font-weight: 800;
1385
+ }
1386
+
1387
+ /* Metin Popup Stilleri */
1388
+ .mt-text-popup {
1389
+ width: 252px;
1390
+ min-width: 252px;
1391
+ max-width: 100%;
1392
+ box-sizing: border-box;
1393
+ padding: 10px 12px;
1394
+ gap: 8px;
1395
+ }
1396
+
1397
+ .mt-format-btn {
1398
+ width: 28px;
1399
+ height: 28px;
1400
+ border-radius: 6px;
1401
+ border: none;
1402
+ background: transparent;
1403
+ font-size: 0.85rem;
1404
+ cursor: pointer;
1405
+ display: flex;
1406
+ align-items: center;
1407
+ justify-content: center;
1408
+ color: #64748b;
1409
+ transition: all 0.15s ease;
1410
+ }
1411
+
1412
+ .mt-format-btn:hover {
1413
+ color: #0f172a;
1414
+ background: rgba(255, 255, 255, 0.5);
1415
+ }
1416
+
1417
+ .mt-format-btn.active {
1418
+ background: #ffffff;
1419
+ color: #0f172a;
1420
+ font-weight: 700;
1421
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
1422
+ }
1423
+
1424
+ .mt-size-stepper {
1425
+ display: flex;
1426
+ align-items: center;
1427
+ gap: 3px;
1428
+ background: #f1f5f9;
1429
+ padding: 2px 6px;
1430
+ border-radius: 8px;
1431
+ height: 28px;
1432
+ box-sizing: border-box;
1433
+ }
1434
+
1435
+ .mt-size-val {
1436
+ font-size: 0.82rem;
1437
+ font-weight: 600;
1438
+ color: #0f172a;
1439
+ min-width: 20px;
1440
+ text-align: center;
1441
+ }
1442
+
1443
+ .mt-stepper-arrows {
1444
+ display: flex;
1445
+ flex-direction: column;
1446
+ gap: 1px;
1447
+ }
1448
+
1449
+ .mt-stepper-arrows button {
1450
+ border: none;
1451
+ background: transparent;
1452
+ font-size: 0.55rem;
1453
+ cursor: pointer;
1454
+ padding: 0 1px;
1455
+ line-height: 1;
1456
+ color: #64748b;
1457
+ }
1458
+
1459
+ .mt-stepper-arrows button:hover {
1460
+ color: #0f172a;
1461
+ }
1462
+
1463
+ .mt-size-unit {
1464
+ font-size: 0.72rem;
1465
+ color: var(--text-muted);
1466
+ font-weight: 600;
1467
+ }
1468
+
1469
+ .mt-color-preview-btn {
1470
+ width: 28px;
1471
+ height: 28px;
1472
+ border-radius: 6px;
1473
+ border: 1.5px solid #e2e8f0;
1474
+ background: #f1f5f9;
1475
+ display: flex;
1476
+ align-items: center;
1477
+ justify-content: center;
1478
+ cursor: pointer;
1479
+ transition: all 0.15s ease;
1480
+ padding: 0;
1481
+ }
1482
+
1483
+ .mt-color-preview-btn:hover {
1484
+ border-color: #cbd5e1;
1485
+ background: #ffffff;
1486
+ }
1487
+
1488
+ .mt-color-preview-btn.active {
1489
+ border-color: #0f172a;
1490
+ background: #ffffff;
1491
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
1492
+ }
1493
+
1494
+ .mt-color-circle {
1495
+ width: 18px;
1496
+ height: 18px;
1497
+ border-radius: 50%;
1498
+ border: 1.5px solid rgba(0, 0, 0, 0.18);
1499
+ display: block;
1500
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
1501
+ }
1502
+
1503
+ .mt-text-palette-section {
1504
+ display: flex;
1505
+ flex-direction: column;
1506
+ gap: 6px;
1507
+ padding-top: 8px;
1508
+ border-top: 1px solid #f1f5f9;
1509
+ }
1510
+
1511
+ .mt-text-palette-section.is-opening {
1512
+ animation: popupSlideDown 0.16s ease;
1513
+ }
1514
+
1515
+ .mt-palette-header {
1516
+ font-size: 0.72rem;
1517
+ font-weight: 600;
1518
+ color: #64748b;
1519
+ text-transform: uppercase;
1520
+ letter-spacing: 0.05em;
1521
+ }
1522
+
1523
+ .mt-color-swatch.is-active-swatch {
1524
+ transform: scale(1.15);
1525
+ box-shadow: 0 0 0 2px #0f172a, 0 2px 5px rgba(0, 0, 0, 0.2);
1526
+ border-color: transparent;
1527
+ }
1528
+
1529
+ .swatch-check {
1530
+ font-size: 0.72rem;
1531
+ font-weight: 900;
1532
+ color: #ffffff;
1533
+ line-height: 1;
1534
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8);
1535
+ }
1536
+
1537
+ .mt-text-format-grid,
1538
+ .mt-text-align-grid {
1539
+ display: grid;
1540
+ gap: 8px;
1541
+ width: 100%;
1542
+ }
1543
+
1544
+ .mt-text-format-grid {
1545
+ grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
1546
+ }
1547
+
1548
+ .mt-text-align-grid {
1549
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1550
+ }
1551
+
1552
+ .mt-text-format-column,
1553
+ .mt-text-align-column {
1554
+ display: flex;
1555
+ flex-direction: column;
1556
+ gap: 6px;
1557
+ min-width: 0;
1558
+ }
1559
+
1560
+ .mt-text-section-label {
1561
+ font-size: 0.74rem;
1562
+ color: #64748b;
1563
+ font-weight: 500;
1564
+ }
1565
+
1566
+ .mt-text-format-column .mt-pill-group,
1567
+ .mt-text-align-column .mt-pill-group {
1568
+ width: 100%;
1569
+ }
1570
+
1571
+ .mt-text-format-column .mt-format-btn,
1572
+ .mt-text-align-column .mt-icon-btn {
1573
+ flex: 1;
1574
+ width: auto;
1575
+ min-width: 0;
1576
+ min-height: 36px;
1577
+ }
1578
+
1579
+ .mt-text-format-column .mt-stepper-group {
1580
+ width: 100%;
1581
+ }
1582
+
1583
+ /* Metin sekme ikonu */
1584
+ .mt-text-tab-font-icon {
1585
+ font-family: inherit;
1586
+ letter-spacing: -0.02em;
1587
+ }
1588
+
1589
+ @media (pointer: coarse) {
1590
+ .mt-text-popup {
1591
+ width: 280px;
1592
+ min-width: 280px;
1593
+ }
1594
+
1595
+ .mt-text-popup button {
1596
+ min-height: 44px;
1597
+ min-width: 44px;
1598
+ }
1599
+
1600
+ .mt-text-popup .mt-color-palette {
1601
+ grid-template-columns: repeat(5, minmax(0, 1fr));
1602
+ gap: 6px;
1603
+ }
1604
+
1605
+ .mt-text-popup .mt-color-swatch {
1606
+ width: 44px;
1607
+ height: 44px;
1608
+ }
1609
+ }
1610
+
1611
+ .mt-custom-color-swatch {
1612
+ position: relative;
1613
+ background: #f8fafc !important;
1614
+ border: 1.5px dashed #94a3b8 !important;
1615
+ cursor: pointer;
1616
+ }
1617
+
1618
+ .mt-custom-color-swatch:hover {
1619
+ border-color: #0f172a !important;
1620
+ background: #f1f5f9 !important;
1621
+ }
1622
+
1623
+ .custom-color-icon {
1624
+ font-size: 1rem;
1625
+ font-weight: 800;
1626
+ color: var(--text-muted);
1627
+ line-height: 1;
1628
+ }
1629
+
1630
+ /* Katman sırası ve kilit popup */
1631
+ .mt-layer-popup {
1632
+ width: 252px;
1633
+ min-width: 252px;
1634
+ max-width: 100%;
1635
+ box-sizing: border-box;
1636
+ padding: 10px 12px;
1637
+ gap: 10px;
1638
+ border-radius: var(--radius-lg);
1639
+ background: #ffffff;
1640
+ box-shadow: var(--shadow-popup);
1641
+ border: 1px solid var(--border-color);
1642
+ }
1643
+
1644
+ .mt-layer-section {
1645
+ display: flex;
1646
+ flex-direction: column;
1647
+ gap: 6px;
1648
+ width: 100%;
1649
+ }
1650
+
1651
+ .mt-layer-section-label {
1652
+ font-size: 0.74rem;
1653
+ font-weight: 500;
1654
+ color: #64748b;
1655
+ }
1656
+
1657
+ .mt-layer-order-grid {
1658
+ display: grid;
1659
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1660
+ gap: 6px;
1661
+ }
1662
+
1663
+ .mt-layer-btn {
1664
+ min-width: 0;
1665
+ min-height: 40px;
1666
+ padding: 0 10px;
1667
+ display: flex;
1668
+ align-items: center;
1669
+ justify-content: center;
1670
+ gap: 6px;
1671
+ border: 1px solid #e2e8f0;
1672
+ border-radius: 8px;
1673
+ background: #ffffff;
1674
+ color: #475569;
1675
+ font-size: 0.76rem;
1676
+ font-weight: 500;
1677
+ cursor: pointer;
1678
+ user-select: none;
1679
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
1680
+ box-sizing: border-box;
1681
+ }
1682
+
1683
+ .mt-layer-btn:hover {
1684
+ background: #f8fafc;
1685
+ border-color: #cbd5e1;
1686
+ color: #0f172a;
1687
+ }
1688
+
1689
+ .mt-layer-btn:active {
1690
+ transform: scale(0.98);
1691
+ }
1692
+
1693
+ .mt-layer-btn svg {
1694
+ flex-shrink: 0;
1695
+ }
1696
+
1697
+ .mt-layer-lock-section {
1698
+ padding-top: 10px;
1699
+ border-top: 1px solid #edf0f4;
1700
+ }
1701
+
1702
+ .mt-layer-lock-item {
1703
+ width: 100%;
1704
+ }
1705
+
1706
+ .mt-layer-lock-item.is-locked,
1707
+ .mt-layer-lock-item.active-lock {
1708
+ background: #eff6ff;
1709
+ border-color: #bfdbfe;
1710
+ color: #1d4ed8;
1711
+ }
1712
+
1713
+ @media (pointer: coarse) {
1714
+ .mt-layer-popup {
1715
+ width: 280px;
1716
+ min-width: 280px;
1717
+ }
1718
+
1719
+ .mt-layer-btn {
1720
+ min-height: 44px;
1721
+ }
1722
+ }
1723
+
1724
+ /* Çoklu Seçim Gruplama Butonu */
1725
+ .mt-group-action-btn {
1726
+ display: flex;
1727
+ align-items: center;
1728
+ gap: 5px;
1729
+ padding: 4px 8px;
1730
+ background: #f1f5f9;
1731
+ border: 1px solid #e2e8f0;
1732
+ border-radius: 6px;
1733
+ font-size: 0.76rem;
1734
+ font-weight: 500;
1735
+ color: #475569;
1736
+ cursor: pointer;
1737
+ transition: all 0.15s ease;
1738
+ }
1739
+
1740
+ .mt-group-action-btn:hover {
1741
+ background: #ffffff;
1742
+ border-color: #cbd5e1;
1743
+ color: #0f172a;
1744
+ }
1745
+
1746
+ .mt-group-action-btn.active-group {
1747
+ background: #ffffff;
1748
+ border-color: #0f172a;
1749
+ color: #0f172a;
1750
+ font-weight: 600;
1751
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
1752
+ }
1753
+
1754
+ .mt-align-popup {
1755
+ width: 252px;
1756
+ min-width: 252px;
1757
+ max-width: 100%;
1758
+ box-sizing: border-box;
1759
+ padding: 10px 12px;
1760
+ gap: 8px;
1761
+ }
1762
+
1763
+ .mt-align-popup .mt-group-action-btn {
1764
+ padding: 4px 8px;
1765
+ font-size: 0.76rem;
1766
+ gap: 4px;
1767
+ }
1768
+
1769
+ /* ==========================================
1770
+ TOAST BİLDİRİMLERİ
1771
+ ========================================== */
1772
+ .app-toast {
1773
+ position: fixed;
1774
+ bottom: 24px;
1775
+ right: 24px;
1776
+ padding: 12px 20px;
1777
+ border-radius: var(--radius-md);
1778
+ font-size: 0.88rem;
1779
+ font-weight: 600;
1780
+ color: #ffffff;
1781
+ background: #1e293b;
1782
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
1783
+ z-index: 99999;
1784
+ opacity: 0;
1785
+ transform: translateY(20px);
1786
+ transition: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
1787
+ pointer-events: none;
1788
+ }
1789
+
1790
+ .app-toast.is-visible {
1791
+ opacity: 1;
1792
+ transform: translateY(0);
1793
+ }
1794
+
1795
+ .app-toast.toast-success { background: #059669; }
1796
+ .app-toast.toast-error { background: #dc2626; }
1797
+ .app-toast.toast-info { background: #2563eb; }
1798
+
1799
+ /* ==========================================================================
1800
+ STAGE CSS - 1200x675 Mantıksal Tuval, Nesneler ve Dönüşüm Tutamaçları
1801
+ ========================================================================== */
1802
+
1803
+ .stage {
1804
+ position: absolute;
1805
+ top: 0;
1806
+ left: 0;
1807
+ width: 1200px;
1808
+ height: 675px;
1809
+ background-color: #ffffff;
1810
+ border: 1px solid #e2e8f0;
1811
+ border-radius: 16px;
1812
+ overflow: visible;
1813
+ touch-action: none;
1814
+ user-select: none;
1815
+ -webkit-user-select: none;
1816
+ transform-origin: top left;
1817
+ }
1818
+
1819
+ /* Izgara (Grid) Çizgileri */
1820
+ .stage.grid-visible::before {
1821
+ content: '';
1822
+ position: absolute;
1823
+ top: 0;
1824
+ left: 0;
1825
+ width: 100%;
1826
+ height: 100%;
1827
+ pointer-events: none;
1828
+ background-size: 20px 20px;
1829
+ background-image:
1830
+ linear-gradient(to right, rgba(203, 213, 225, 0.4) 1px, transparent 1px),
1831
+ linear-gradient(to bottom, rgba(203, 213, 225, 0.4) 1px, transparent 1px);
1832
+ z-index: 0;
1833
+ }
1834
+
1835
+ /* SVG Bağlantı ve Çizim Katmanı */
1836
+ .stage-svg-overlay {
1837
+ position: absolute;
1838
+ top: 0;
1839
+ left: 0;
1840
+ width: 100%;
1841
+ height: 100%;
1842
+ pointer-events: none;
1843
+ z-index: 500;
1844
+ overflow: visible;
1845
+ }
1846
+
1847
+ /* Nesneler Katmanı */
1848
+ .stage-objects {
1849
+ position: absolute;
1850
+ top: 0;
1851
+ left: 0;
1852
+ width: 100%;
1853
+ height: 100%;
1854
+ pointer-events: none;
1855
+ }
1856
+
1857
+ /* ==========================================
1858
+ SAHNE NESNELERİ (.stage-object)
1859
+ ========================================== */
1860
+ .stage-object {
1861
+ position: absolute;
1862
+ top: 0;
1863
+ left: 0;
1864
+ pointer-events: auto;
1865
+ box-sizing: border-box;
1866
+ display: flex;
1867
+ align-items: center;
1868
+ justify-content: center;
1869
+ user-select: none;
1870
+ -webkit-user-select: none;
1871
+ cursor: move;
1872
+ }
1873
+
1874
+ .stage-object.is-locked {
1875
+ cursor: pointer;
1876
+ }
1877
+
1878
+ .stage-object.is-hidden {
1879
+ display: none !important;
1880
+ }
1881
+
1882
+ /* Metin Kutusu Nesnesi Stilleri (Tasarım Modunda Ayırt Edilebilirlik) */
1883
+ .stage-object[data-type="text"][data-role="decorative"] {
1884
+ transition: outline 0.15s ease;
1885
+ }
1886
+
1887
+ .stage-object[data-type="text"][data-role="decorative"]:hover {
1888
+ outline: 1px dashed rgba(59, 130, 246, 0.45);
1889
+ outline-offset: 2px;
1890
+ }
1891
+
1892
+ /* Çizgi Nesnesi Stilleri */
1893
+ .stage-object[data-type="line"] {
1894
+ background-color: transparent !important;
1895
+ border: none !important;
1896
+ box-shadow: none !important;
1897
+ overflow: visible !important;
1898
+ }
1899
+
1900
+ .stage-object[data-type="line"] .object-inner-content {
1901
+ width: 100%;
1902
+ height: 100%;
1903
+ padding: 0 !important;
1904
+ overflow: visible !important;
1905
+ }
1906
+
1907
+ .object-line-bar {
1908
+ width: 100%;
1909
+ height: 100%;
1910
+ display: block;
1911
+ pointer-events: none;
1912
+ box-sizing: border-box;
1913
+ overflow: visible;
1914
+ }
1915
+
1916
+ /* İçerik Kutusu */
1917
+ .object-inner-content {
1918
+ width: 100%;
1919
+ height: 100%;
1920
+ display: flex;
1921
+ flex-direction: column;
1922
+ align-items: center;
1923
+ justify-content: center;
1924
+ pointer-events: none;
1925
+ word-break: break-word;
1926
+ white-space: pre-wrap;
1927
+ }
1928
+
1929
+ .object-inner-content span,
1930
+ .object-inner-content .object-text-span {
1931
+ width: 100%;
1932
+ display: block;
1933
+ text-align: inherit;
1934
+ box-sizing: border-box;
1935
+ }
1936
+
1937
+ .object-text-span:empty::before {
1938
+ content: 'Metin girin...';
1939
+ color: #94a3b8;
1940
+ font-style: italic;
1941
+ pointer-events: none;
1942
+ }
1943
+
1944
+ /* ==========================================
1945
+ YERİNDE METİN DÜZENLEME (INLINE EDITING)
1946
+ ========================================== */
1947
+ .stage-object.is-editing-text {
1948
+ cursor: text !important;
1949
+ }
1950
+
1951
+ .stage-object.is-editing-text .object-inner-content {
1952
+ pointer-events: auto !important;
1953
+ user-select: text !important;
1954
+ -webkit-user-select: text !important;
1955
+ }
1956
+
1957
+ .stage-object.is-editing-text [contenteditable="true"] {
1958
+ pointer-events: auto !important;
1959
+ user-select: text !important;
1960
+ -webkit-user-select: text !important;
1961
+ cursor: text !important;
1962
+ outline: 2px dashed #0ea5e9 !important;
1963
+ outline-offset: 4px !important;
1964
+ border-radius: 4px !important;
1965
+ min-height: 1.2em;
1966
+ }
1967
+
1968
+ /* Seçim kutusunun düzenleme sırasında tıklamaları engellememesi */
1969
+ .selection-box.is-editing-text {
1970
+ pointer-events: none !important;
1971
+ }
1972
+
1973
+ .selection-box.is-editing-text .selection-border {
1974
+ pointer-events: none !important;
1975
+ border-color: rgba(14, 165, 233, 0.3) !important;
1976
+ border-style: dotted !important;
1977
+ }
1978
+
1979
+ .selection-box.is-editing-text .resize-handle,
1980
+ .selection-box.is-editing-text .rotate-handle,
1981
+ .selection-box.is-editing-text .rotate-stem {
1982
+ display: none !important;
1983
+ }
1984
+
1985
+ .object-inner-content img {
1986
+ max-width: 100%;
1987
+ max-height: 100%;
1988
+ object-fit: contain;
1989
+ pointer-events: none;
1990
+ }
1991
+
1992
+ .image-caption {
1993
+ margin-top: 4px;
1994
+ font-size: 0.82rem;
1995
+ font-weight: 600;
1996
+ }
1997
+
1998
+ /* Kategori Başlığı ve Alanı */
1999
+ .category-header {
2000
+ font-size: 1.15rem;
2001
+ font-weight: 800;
2002
+ color: #065f46;
2003
+ margin-bottom: 6px;
2004
+ }
2005
+
2006
+ .category-drop-hint {
2007
+ font-size: 0.8rem;
2008
+ color: #10b981;
2009
+ font-style: italic;
2010
+ }
2011
+
2012
+ /* Sıralama Kutusu */
2013
+ .sequence-slot-number {
2014
+ font-size: 1.6rem;
2015
+ font-weight: 800;
2016
+ color: #6d28d9;
2017
+ }
2018
+
2019
+ .sequence-slot-label {
2020
+ font-size: 0.85rem;
2021
+ font-weight: 600;
2022
+ color: #64748b;
2023
+ }
2024
+
2025
+ /* Kilit İkonu (Tıklanabilir buton) */
2026
+ .lock-indicator {
2027
+ position: absolute;
2028
+ top: 4px;
2029
+ right: 4px;
2030
+ font-size: 0.85rem;
2031
+ background: #ffffff;
2032
+ border: 1px solid #cbd5e1;
2033
+ border-radius: 6px;
2034
+ padding: 2px 5px;
2035
+ cursor: pointer;
2036
+ pointer-events: auto;
2037
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
2038
+ transition: all 0.15s ease;
2039
+ z-index: 101;
2040
+ display: inline-flex;
2041
+ align-items: center;
2042
+ justify-content: center;
2043
+ }
2044
+
2045
+ .lock-indicator:hover {
2046
+ background: #fef2f2;
2047
+ border-color: #ef4444;
2048
+ transform: scale(1.15);
2049
+ }
2050
+
2051
+ /* ==========================================
2052
+ SEÇİM VE DÖNÜŞÜM ÇERÇEVESİ (.selection-box)
2053
+ ========================================== */
2054
+ .selection-box {
2055
+ position: absolute;
2056
+ top: 0;
2057
+ left: 0;
2058
+ pointer-events: auto;
2059
+ z-index: 1000;
2060
+ display: none;
2061
+ }
2062
+
2063
+ .selection-border {
2064
+ position: absolute;
2065
+ top: -1px;
2066
+ left: -1px;
2067
+ width: calc(100% + 2px);
2068
+ height: calc(100% + 2px);
2069
+ border: 1.5px solid #0ea5e9;
2070
+ pointer-events: auto;
2071
+ cursor: move;
2072
+ }
2073
+
2074
+ .selection-box.multi-select .selection-border {
2075
+ border: 1.5px dashed #0ea5e9;
2076
+ }
2077
+
2078
+ .selection-border.group-border {
2079
+ border: 1.5px solid #6366f1 !important;
2080
+ }
2081
+
2082
+ .multi-count-badge.is-group-badge {
2083
+ background: #6366f1 !important;
2084
+ }
2085
+
2086
+ /* Kilitli Nesne Seçim Stili */
2087
+ .selection-box.is-locked-selection .locked-border {
2088
+ border: 1.5px dashed #f59e0b;
2089
+ cursor: default;
2090
+ }
2091
+
2092
+ .selection-lock-floating-pill {
2093
+ position: absolute;
2094
+ top: -38px;
2095
+ left: 50%;
2096
+ transform: translateX(-50%);
2097
+ display: flex;
2098
+ align-items: center;
2099
+ justify-content: center;
2100
+ pointer-events: auto;
2101
+ white-space: nowrap;
2102
+ z-index: 1020;
2103
+ }
2104
+
2105
+ .lock-pill-unlock-btn {
2106
+ background: #1e293b;
2107
+ color: #ffffff;
2108
+ border: 1px solid rgba(255, 255, 255, 0.15);
2109
+ border-radius: 9999px;
2110
+ padding: 5px 12px;
2111
+ font-size: 0.76rem;
2112
+ font-weight: 600;
2113
+ cursor: pointer;
2114
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
2115
+ display: inline-flex;
2116
+ align-items: center;
2117
+ gap: 6px;
2118
+ transition: all 0.15s ease;
2119
+ user-select: none;
2120
+ }
2121
+
2122
+ .lock-pill-unlock-btn:hover {
2123
+ background: #0f172a;
2124
+ transform: scale(1.05);
2125
+ border-color: #f59e0b;
2126
+ color: #fbbf24;
2127
+ }
2128
+
2129
+ /* 8 Yönlü Boyutlandırma Tutamaçları */
2130
+ .resize-handle {
2131
+ position: absolute;
2132
+ width: 8px;
2133
+ height: 8px;
2134
+ background-color: #ffffff;
2135
+ border: 1.5px solid #0ea5e9;
2136
+ border-radius: 1px;
2137
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
2138
+ z-index: 1010;
2139
+ pointer-events: auto;
2140
+ }
2141
+
2142
+ .handle-nw { top: -5px; left: -5px; cursor: nwse-resize; }
2143
+ .handle-n { top: -5px; left: calc(50% - 4px); cursor: ns-resize; }
2144
+ .handle-ne { top: -5px; right: -5px; cursor: nesw-resize; }
2145
+ .handle-e { top: calc(50% - 4px); right: -5px; cursor: ew-resize; }
2146
+ .handle-se { bottom: -5px; right: -5px; cursor: nwse-resize; }
2147
+ .handle-s { bottom: -5px; left: calc(50% - 4px); cursor: ns-resize; }
2148
+ .handle-sw { bottom: -5px; left: -5px; cursor: nesw-resize; }
2149
+ .handle-w { top: calc(50% - 4px); left: -5px; cursor: ew-resize; }
2150
+
2151
+ /* Döndürme Tutamacı */
2152
+ .rotate-stem {
2153
+ position: absolute;
2154
+ top: -22px;
2155
+ left: 50%;
2156
+ width: 1px;
2157
+ height: 18px;
2158
+ background-color: #0ea5e9;
2159
+ pointer-events: none;
2160
+ }
2161
+
2162
+ .rotate-handle {
2163
+ position: absolute;
2164
+ top: -30px;
2165
+ left: calc(50% - 6px);
2166
+ width: 12px;
2167
+ height: 12px;
2168
+ background-color: #ffffff;
2169
+ border: 1.5px solid #0ea5e9;
2170
+ border-radius: 50%;
2171
+ cursor: grab;
2172
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
2173
+ z-index: 1020;
2174
+ pointer-events: auto;
2175
+ }
2176
+
2177
+ .rotate-handle:active {
2178
+ cursor: grabbing;
2179
+ }
2180
+
2181
+ /* Çizgi Seçim Tutamaçları ve Çerçevesi */
2182
+ .selection-box.is-line-selection {
2183
+ pointer-events: none;
2184
+ }
2185
+
2186
+ .selection-box.is-line-selection .selection-border {
2187
+ display: none !important;
2188
+ }
2189
+
2190
+ .line-endpoint-handle {
2191
+ position: absolute;
2192
+ width: 18px;
2193
+ height: 18px;
2194
+ border-radius: 50% !important;
2195
+ background-color: #ffffff !important;
2196
+ border: 3px solid #f97316 !important;
2197
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
2198
+ z-index: 1010;
2199
+ pointer-events: auto;
2200
+ cursor: grab;
2201
+ transition: transform 0.12s ease;
2202
+ box-sizing: border-box;
2203
+ }
2204
+
2205
+ .line-endpoint-handle:hover {
2206
+ transform: scale(1.2);
2207
+ border-color: #ea580c !important;
2208
+ }
2209
+
2210
+ .line-endpoint-handle:active {
2211
+ cursor: grabbing;
2212
+ }
2213
+
2214
+ .line-endpoint-handle.handle-start {
2215
+ left: -9px;
2216
+ top: calc(50% - 9px);
2217
+ }
2218
+
2219
+ .line-endpoint-handle.handle-end {
2220
+ right: -9px;
2221
+ top: calc(50% - 9px);
2222
+ }
2223
+
2224
+ .line-rotate-stem {
2225
+ top: -24px;
2226
+ height: 20px;
2227
+ }
2228
+
2229
+ .line-rotate-handle {
2230
+ top: -32px;
2231
+ }
2232
+
2233
+ /* Çoklu Seçim Sayacı */
2234
+ .multi-count-badge {
2235
+ position: absolute;
2236
+ top: -26px;
2237
+ left: 0;
2238
+ background: #0ea5e9;
2239
+ color: #ffffff;
2240
+ font-size: 0.72rem;
2241
+ font-weight: 700;
2242
+ padding: 2px 8px;
2243
+ border-radius: 4px;
2244
+ pointer-events: none;
2245
+ }
2246
+
2247
+ /* ==========================================
2248
+ MARQUEE (ALAN SEÇİMİ) KUTUSU
2249
+ ========================================== */
2250
+ .stage-marquee-selection {
2251
+ position: absolute;
2252
+ border: 1px solid #0ea5e9;
2253
+ background-color: rgba(14, 165, 233, 0.12);
2254
+ pointer-events: none;
2255
+ z-index: 999;
2256
+ display: none;
2257
+ }
2258
+
2259
+ /* ==========================================
2260
+ AKILLI KILAVUZ ÇİZGİLERİ (GUIDELINES)
2261
+ ========================================== */
2262
+ .stage-guidelines {
2263
+ position: absolute;
2264
+ top: 0;
2265
+ left: 0;
2266
+ width: 100%;
2267
+ height: 100%;
2268
+ pointer-events: none;
2269
+ z-index: 998;
2270
+ }
2271
+
2272
+ .guideline {
2273
+ position: absolute;
2274
+ background-color: #06b6d4;
2275
+ box-shadow: 0 0 4px #06b6d4;
2276
+ }
2277
+
2278
+ .guideline-h {
2279
+ left: 0;
2280
+ width: 100%;
2281
+ height: 1px;
2282
+ }
2283
+
2284
+ .guideline-v {
2285
+ top: 0;
2286
+ height: 100%;
2287
+ width: 1px;
2288
+ }
2289
+
2290
+ /* ==========================================================================
2291
+ ANSWER KEY CSS - Cevap Anahtarı Modu Görsel Eşleştirme Stilleri
2292
+ ========================================================================== */
2293
+
2294
+ /* Cevap Anahtarı Modunda Nesneler */
2295
+ .mode-answer-key .stage-object {
2296
+ cursor: default;
2297
+ }
2298
+
2299
+ .mode-answer-key .stage-object[data-role="draggable"] {
2300
+ cursor: pointer !important;
2301
+ }
2302
+
2303
+ /* Seçilen Kaynak Sürüklenebilir Öğe (Sadece seçili nesne vurgulanır, konumu korunur) */
2304
+ .mode-answer-key .stage-object.ak-source-active {
2305
+ outline: 3px solid #6366f1 !important;
2306
+ outline-offset: 3px !important;
2307
+ box-shadow: 0 0 0 2px #ffffff, 0 8px 24px rgba(99, 102, 241, 0.35) !important;
2308
+ z-index: 1000 !important;
2309
+ cursor: pointer !important;
2310
+ }
2311
+
2312
+ /* ==========================================================================
2313
+ Hedef Seçim Aşaması: Sürüklenecek nesne seçildikten sonra
2314
+ Sadece sahne rolü "Hedef" olan nesneler tıklanabilir olmalıdır.
2315
+ ========================================================================== */
2316
+ .mode-answer-key.ak-selecting-target .stage-object {
2317
+ cursor: default;
2318
+ pointer-events: none; /* Hedef olmayan (dekoratif vb.) nesneler tıklanamaz */
2319
+ }
2320
+
2321
+ /* Kaynak nesnenin kendisi tıklanarak seçim iptal edilebilir */
2322
+ .mode-answer-key.ak-selecting-target .stage-object.ak-source-active {
2323
+ cursor: pointer !important;
2324
+ pointer-events: auto !important;
2325
+ }
2326
+
2327
+ /* Başka bir sürüklenebilir nesneye tıklanarak kaynak değiştirilebilir */
2328
+ .mode-answer-key.ak-selecting-target .stage-object[data-role="draggable"] {
2329
+ cursor: pointer !important;
2330
+ pointer-events: auto !important;
2331
+ }
2332
+
2333
+ /* Sahne rolü "Hedef" olan nesneler tıklanabilir */
2334
+ .mode-answer-key.ak-selecting-target .stage-object[data-role="target"],
2335
+ .mode-answer-key.ak-selecting-target .stage-object[data-role="category"],
2336
+ .mode-answer-key.ak-selecting-target .stage-object[data-role="sequence_slot"] {
2337
+ cursor: pointer !important;
2338
+ pointer-events: auto !important;
2339
+ }
2340
+
2341
+ /* SVG Bağlantı Çizgileri */
2342
+ .ak-connection-group {
2343
+ cursor: pointer;
2344
+ pointer-events: auto;
2345
+ }
2346
+
2347
+ .ak-connection-hitbox {
2348
+ fill: none;
2349
+ stroke: transparent;
2350
+ stroke-width: 24;
2351
+ pointer-events: stroke;
2352
+ }
2353
+
2354
+ .ak-connection-path {
2355
+ fill: none;
2356
+ stroke: #6366f1;
2357
+ stroke-width: 3.5;
2358
+ stroke-linecap: round;
2359
+ stroke-dasharray: 6 4;
2360
+ animation: dashAnimation 1s linear infinite;
2361
+ filter: drop-shadow(0 2px 4px rgba(99, 102, 241, 0.3));
2362
+ }
2363
+
2364
+ @keyframes dashAnimation {
2365
+ to {
2366
+ stroke-dashoffset: -20;
2367
+ }
2368
+ }
2369
+
2370
+ .ak-node-circle {
2371
+ fill: #4f46e5;
2372
+ stroke: #ffffff;
2373
+ stroke-width: 2;
2374
+ }
2375
+
2376
+ .ak-node-circle.start {
2377
+ fill: #ec4899;
2378
+ }
2379
+
2380
+ .ak-node-circle.end {
2381
+ fill: #10b981;
2382
+ }
2383
+
2384
+ /* Bağlantı Kaldırma (Unlink) Butonu */
2385
+ .ak-unlink-btn {
2386
+ width: 26px;
2387
+ height: 26px;
2388
+ border-radius: 50%;
2389
+ background: #ef4444;
2390
+ color: #ffffff;
2391
+ border: 2px solid #ffffff;
2392
+ font-size: 12px;
2393
+ font-weight: 800;
2394
+ display: flex;
2395
+ align-items: center;
2396
+ justify-content: center;
2397
+ cursor: pointer;
2398
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
2399
+ transition: transform 0.15s ease, background 0.15s ease;
2400
+ pointer-events: auto;
2401
+ padding: 0;
2402
+ margin: 0;
2403
+ }
2404
+
2405
+ .ak-unlink-btn:hover {
2406
+ background: #dc2626;
2407
+ transform: scale(1.2);
2408
+ }
2409
+
2410
+ /* ==========================================================================
2411
+ Cevap Anahtarı Toolbar İçi Rehber Bloğu (Answer Key Toolbar Guide)
2412
+ Toolbar yüksekliğini değiştirmeden sol mod kümesinden sonra dikey ayraçla yerleşir
2413
+ ========================================================================== */
2414
+ .answer-key-toolbar-guide {
2415
+ display: flex;
2416
+ align-items: center;
2417
+ height: 100%;
2418
+ user-select: none;
2419
+ animation: akFadeIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
2420
+ }
2421
+
2422
+ @keyframes akFadeIn {
2423
+ from {
2424
+ opacity: 0;
2425
+ transform: translateX(-4px);
2426
+ }
2427
+ to {
2428
+ opacity: 1;
2429
+ transform: translateX(0);
2430
+ }
2431
+ }
2432
+
2433
+ .ak-toolbar-divider {
2434
+ width: 1px;
2435
+ height: 24px;
2436
+ background-color: var(--border-color, #e2e8f0);
2437
+ margin: 0 14px 0 10px;
2438
+ flex-shrink: 0;
2439
+ }
2440
+
2441
+ .ak-toolbar-content {
2442
+ display: flex;
2443
+ flex-direction: column;
2444
+ justify-content: center;
2445
+ gap: 1px;
2446
+ }
2447
+
2448
+ .ak-toolbar-title-row {
2449
+ display: flex;
2450
+ align-items: center;
2451
+ gap: 6px;
2452
+ line-height: 1.15;
2453
+ }
2454
+
2455
+ .ak-toolbar-status-icon {
2456
+ display: inline-flex;
2457
+ align-items: center;
2458
+ justify-content: center;
2459
+ flex-shrink: 0;
2460
+ }
2461
+
2462
+ .ak-guide-title {
2463
+ font-size: 0.88rem;
2464
+ font-weight: 700;
2465
+ color: #0f172a;
2466
+ letter-spacing: -0.01em;
2467
+ white-space: nowrap;
2468
+ }
2469
+
2470
+ .ak-guide-instruction {
2471
+ font-size: 0.76rem;
2472
+ font-weight: 500;
2473
+ color: #64748b;
2474
+ line-height: 1.15;
2475
+ white-space: nowrap;
2476
+ }
2477
+
2478
+ /* Cevap Anahtarı Modunda Orta (Nesne Ekleme), Sağ (Geçmiş & Zoom) ve Şablon Kümelerini Gizle */
2479
+ .app-sub-toolbar.mode-answer-key .cluster-add-objects,
2480
+ .app-sub-toolbar.mode-answer-key .cluster-history-zoom,
2481
+ .app-sub-toolbar.mode-answer-key .template-dropdown-wrapper,
2482
+ body.mode-answer-key .app-sub-toolbar .cluster-add-objects,
2483
+ body.mode-answer-key .app-sub-toolbar .cluster-history-zoom,
2484
+ body.mode-answer-key .app-sub-toolbar .template-dropdown-wrapper,
2485
+ .dnd-editor-root.mode-answer-key .app-sub-toolbar .cluster-add-objects,
2486
+ .dnd-editor-root.mode-answer-key .app-sub-toolbar .cluster-history-zoom,
2487
+ .dnd-editor-root.mode-answer-key .app-sub-toolbar .template-dropdown-wrapper {
2488
+ display: none !important;
2489
+ }
2490
+
2491
+ /* ==========================================================================
2492
+ PLAYER CSS - Etkinlik Oynatıcı ve Önizleme Stilleri
2493
+ ========================================================================== */
2494
+
2495
+ #preview-container {
2496
+ display: none;
2497
+ width: 100%;
2498
+ height: 100%;
2499
+ position: fixed;
2500
+ top: 0;
2501
+ left: 0;
2502
+ right: 0;
2503
+ bottom: 0;
2504
+ z-index: 9999;
2505
+ background: #0f172a;
2506
+ overflow: hidden;
2507
+ }
2508
+
2509
+ .player-wrapper {
2510
+ width: 100%;
2511
+ height: 100%;
2512
+ max-width: 100%;
2513
+ max-height: 100%;
2514
+ display: flex;
2515
+ flex-direction: column;
2516
+ overflow: hidden;
2517
+ position: relative;
2518
+ background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
2519
+ user-select: none;
2520
+ -webkit-user-select: none;
2521
+ }
2522
+
2523
+ .player-header {
2524
+ height: 60px;
2525
+ min-height: 52px;
2526
+ flex-shrink: 0;
2527
+ padding: 0 24px;
2528
+ display: flex;
2529
+ align-items: center;
2530
+ justify-content: space-between;
2531
+ background: rgba(15, 23, 42, 0.88);
2532
+ backdrop-filter: blur(8px);
2533
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
2534
+ z-index: 100;
2535
+ }
2536
+
2537
+ /* Minimal Floating Header (Sadece Editör Önizlemesinde 'Editöre Dön' için) */
2538
+ .player-header.player-header-minimal {
2539
+ position: absolute;
2540
+ top: 14px;
2541
+ right: 18px;
2542
+ height: auto;
2543
+ min-height: unset;
2544
+ padding: 0;
2545
+ background: transparent;
2546
+ border-bottom: none;
2547
+ backdrop-filter: none;
2548
+ z-index: 500;
2549
+ pointer-events: auto;
2550
+ }
2551
+
2552
+ .player-header.player-header-minimal .exit-btn {
2553
+ background: rgba(239, 68, 68, 0.18);
2554
+ border: 1px solid rgba(239, 68, 68, 0.45);
2555
+ color: #fca5a5;
2556
+ backdrop-filter: blur(8px);
2557
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
2558
+ border-radius: 9999px;
2559
+ padding: 7px 16px;
2560
+ font-size: 0.85rem;
2561
+ font-weight: 600;
2562
+ cursor: pointer;
2563
+ transition: all 0.2s ease;
2564
+ }
2565
+
2566
+ .player-header.player-header-minimal .exit-btn:hover {
2567
+ background: rgba(239, 68, 68, 0.38);
2568
+ border-color: rgba(239, 68, 68, 0.7);
2569
+ color: #ffffff;
2570
+ transform: translateY(-1px);
2571
+ }
2572
+
2573
+ .player-title-box {
2574
+ display: flex;
2575
+ align-items: center;
2576
+ gap: 12px;
2577
+ }
2578
+
2579
+ .player-title {
2580
+ font-size: 1.15rem;
2581
+ font-weight: 700;
2582
+ color: #f8fafc;
2583
+ }
2584
+
2585
+ .player-badge {
2586
+ font-size: 0.75rem;
2587
+ font-weight: 600;
2588
+ background: rgba(99, 102, 241, 0.25);
2589
+ color: #a5b4fc;
2590
+ border: 1px solid rgba(99, 102, 241, 0.4);
2591
+ padding: 3px 10px;
2592
+ border-radius: 9999px;
2593
+ }
2594
+
2595
+ .player-stats {
2596
+ display: flex;
2597
+ align-items: center;
2598
+ gap: 12px;
2599
+ }
2600
+
2601
+ .stat-pill {
2602
+ display: flex;
2603
+ align-items: center;
2604
+ gap: 6px;
2605
+ background: rgba(30, 41, 59, 0.9);
2606
+ border: 1px solid rgba(255, 255, 255, 0.12);
2607
+ padding: 6px 14px;
2608
+ border-radius: 9999px;
2609
+ font-size: 0.85rem;
2610
+ font-weight: 600;
2611
+ color: #e2e8f0;
2612
+ }
2613
+
2614
+ .stat-pill .stat-value {
2615
+ color: #38bdf8;
2616
+ }
2617
+
2618
+ .player-actions {
2619
+ display: flex;
2620
+ align-items: center;
2621
+ gap: 10px;
2622
+ }
2623
+
2624
+ .player-btn {
2625
+ display: inline-flex;
2626
+ align-items: center;
2627
+ justify-content: center;
2628
+ gap: 6px;
2629
+ padding: 8px 16px;
2630
+ border-radius: 8px;
2631
+ font-size: 0.85rem;
2632
+ font-weight: 600;
2633
+ border: 1px solid rgba(255, 255, 255, 0.15);
2634
+ background: rgba(255, 255, 255, 0.08);
2635
+ color: #f8fafc;
2636
+ cursor: pointer;
2637
+ transition: all 0.2s ease;
2638
+ }
2639
+
2640
+ .player-btn:hover {
2641
+ background: rgba(255, 255, 255, 0.16);
2642
+ transform: translateY(-1px);
2643
+ }
2644
+
2645
+ .player-btn.primary-btn,
2646
+ .player-btn.check-answers-btn {
2647
+ background: #0f172a;
2648
+ border: 1px solid #0f172a;
2649
+ color: #ffffff;
2650
+ border-radius: 9999px;
2651
+ padding: 8px 20px;
2652
+ font-size: 0.875rem;
2653
+ font-weight: 600;
2654
+ display: inline-flex;
2655
+ align-items: center;
2656
+ gap: 6px;
2657
+ cursor: pointer;
2658
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
2659
+ transition: all 0.15s ease;
2660
+ }
2661
+
2662
+ .player-btn.primary-btn:hover,
2663
+ .player-btn.check-answers-btn:hover {
2664
+ background: #1e293b;
2665
+ border-color: #1e293b;
2666
+ transform: translateY(-1px);
2667
+ box-shadow: 0 4px 12px rgba(15, 23, 42, 0.15);
2668
+ }
2669
+
2670
+ .player-btn.secondary-btn,
2671
+ .player-btn.reset-btn {
2672
+ background: transparent;
2673
+ border: none;
2674
+ color: #475569;
2675
+ font-size: 0.875rem;
2676
+ font-weight: 500;
2677
+ padding: 7px 12px;
2678
+ border-radius: 8px;
2679
+ cursor: pointer;
2680
+ display: inline-flex;
2681
+ align-items: center;
2682
+ gap: 6px;
2683
+ transition: all 0.15s ease;
2684
+ box-shadow: none;
2685
+ }
2686
+
2687
+ .player-btn.secondary-btn:hover,
2688
+ .player-btn.reset-btn:hover {
2689
+ background: #f1f5f9;
2690
+ color: #0f172a;
2691
+ transform: none;
2692
+ }
2693
+
2694
+ .player-btn.reset-btn .btn-icon {
2695
+ font-size: 1.05rem;
2696
+ line-height: 1;
2697
+ }
2698
+
2699
+ .player-btn.retry-btn {
2700
+ background: #d97706;
2701
+ border: 1px solid #d97706;
2702
+ color: #ffffff;
2703
+ border-radius: 9999px;
2704
+ padding: 8px 20px;
2705
+ font-size: 0.875rem;
2706
+ font-weight: 600;
2707
+ display: inline-flex;
2708
+ align-items: center;
2709
+ gap: 6px;
2710
+ cursor: pointer;
2711
+ box-shadow: 0 2px 8px rgba(217, 119, 6, 0.25);
2712
+ transition: all 0.15s ease;
2713
+ }
2714
+
2715
+ .player-btn.retry-btn:hover {
2716
+ background: #b45309;
2717
+ border-color: #b45309;
2718
+ transform: translateY(-1px);
2719
+ }
2720
+
2721
+ .player-btn.pulse-highlight {
2722
+ animation: checkPulse 1.5s infinite;
2723
+ }
2724
+
2725
+ @keyframes checkPulse {
2726
+ 0% { box-shadow: 0 0 0 0 rgba(99, 102, 241, 0.6); }
2727
+ 70% { box-shadow: 0 0 0 8px rgba(99, 102, 241, 0); }
2728
+ 100% { box-shadow: 0 0 0 0 rgba(99, 102, 241, 0); }
2729
+ }
2730
+
2731
+ .player-btn.exit-btn {
2732
+ background: rgba(239, 68, 68, 0.2);
2733
+ border-color: rgba(239, 68, 68, 0.4);
2734
+ color: #fca5a5;
2735
+ }
2736
+
2737
+ .player-btn.exit-btn:hover {
2738
+ background: rgba(239, 68, 68, 0.35);
2739
+ }
2740
+
2741
+ /* OYUN ALANI (Stage + Kontroller + Footer tek bütün) */
2742
+ .player-viewport,
2743
+ .player-stage-viewport {
2744
+ width: 100%;
2745
+ height: 100%;
2746
+ flex: 1 1 0%;
2747
+ min-width: 0;
2748
+ min-height: 0;
2749
+ display: flex;
2750
+ flex-direction: column;
2751
+ overflow: hidden;
2752
+ position: relative;
2753
+ background: #f8fafc;
2754
+ touch-action: none;
2755
+ }
2756
+
2757
+ /* SAHNE ALANI KONTEYNERI (Stage'in en-boy orantılı sığacağı alan) */
2758
+ .player-stage-container {
2759
+ flex: 1 1 0%;
2760
+ min-width: 0;
2761
+ min-height: 0;
2762
+ width: 100%;
2763
+ position: relative;
2764
+ overflow: hidden;
2765
+ display: flex;
2766
+ flex-direction: column;
2767
+ align-items: center;
2768
+ justify-content: center;
2769
+ touch-action: none;
2770
+ }
2771
+
2772
+ /* BÜTÜNLEŞİK SAHNE VE KONTROL KARTI (player-stage-board) */
2773
+ .player-stage-board {
2774
+ display: flex;
2775
+ flex-direction: column;
2776
+ box-shadow: 0 10px 30px -5px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.05);
2777
+ border-radius: 16px;
2778
+ overflow: hidden;
2779
+ background: #ffffff;
2780
+ border: 1px solid #e2e8f0;
2781
+ box-sizing: border-box;
2782
+ flex-shrink: 0;
2783
+ }
2784
+
2785
+ /* ÖLÇEKLENMİŞ SAHNE TUTUCU */
2786
+ .player-stage-scaler {
2787
+ position: relative;
2788
+ overflow: hidden;
2789
+ flex-shrink: 0;
2790
+ border-radius: 16px 16px 0 0;
2791
+ }
2792
+
2793
+ .player-stage {
2794
+ position: absolute;
2795
+ top: 0;
2796
+ left: 0;
2797
+ overflow: hidden;
2798
+ touch-action: none;
2799
+ transform-origin: top left;
2800
+ user-select: none;
2801
+ -webkit-user-select: none;
2802
+ flex-shrink: 0;
2803
+ }
2804
+
2805
+ .player-targets-layer,
2806
+ .player-draggables-layer {
2807
+ position: absolute;
2808
+ top: 0;
2809
+ left: 0;
2810
+ width: 100%;
2811
+ height: 100%;
2812
+ pointer-events: none;
2813
+ }
2814
+
2815
+ .player-object {
2816
+ position: absolute;
2817
+ top: 0;
2818
+ left: 0;
2819
+ display: flex;
2820
+ align-items: center;
2821
+ justify-content: center;
2822
+ box-sizing: border-box;
2823
+ pointer-events: auto;
2824
+ user-select: none;
2825
+ }
2826
+
2827
+ .player-object.is-draggable {
2828
+ cursor: grab;
2829
+ touch-action: none;
2830
+ transition: box-shadow 0.2s ease, filter 0.2s ease;
2831
+ }
2832
+
2833
+ .player-object.is-draggable:hover {
2834
+ filter: brightness(1.05);
2835
+ box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2) !important;
2836
+ }
2837
+
2838
+ .player-object.is-dragging {
2839
+ cursor: grabbing !important;
2840
+ opacity: 0.92;
2841
+ filter: drop-shadow(0 15px 30px rgba(0, 0, 0, 0.35));
2842
+ }
2843
+
2844
+ .player-object.is-locked {
2845
+ cursor: default !important;
2846
+ opacity: 0.95;
2847
+ pointer-events: none;
2848
+ }
2849
+
2850
+ .player-object.is-correct {
2851
+ border-color: #10b981 !important;
2852
+ background-color: #ecfdf5 !important;
2853
+ color: #065f46 !important;
2854
+ }
2855
+
2856
+ .player-object.is-incorrect {
2857
+ border-color: #ef4444 !important;
2858
+ background-color: #fef2f2 !important;
2859
+ }
2860
+
2861
+ .player-object.is-incorrect .player-object-content {
2862
+ animation: shake 0.4s ease-in-out;
2863
+ }
2864
+
2865
+ .player-object.hover-active {
2866
+ border-color: #38bdf8 !important;
2867
+ box-shadow: 0 0 0 4px rgba(56, 189, 248, 0.35) !important;
2868
+ }
2869
+
2870
+ .player-object.keyboard-active {
2871
+ outline: 4px solid #f59e0b;
2872
+ outline-offset: 4px;
2873
+ animation: pulse 1s infinite alternate;
2874
+ }
2875
+
2876
+ @keyframes shake {
2877
+ 0%, 100% { transform: translateX(0); }
2878
+ 20%, 60% { transform: translateX(-8px); }
2879
+ 40%, 80% { transform: translateX(8px); }
2880
+ }
2881
+
2882
+ @keyframes pulse {
2883
+ from { box-shadow: 0 0 0 2px #f59e0b; }
2884
+ to { box-shadow: 0 0 0 8px rgba(245, 158, 11, 0.4); }
2885
+ }
2886
+
2887
+ /* DOĞRU / YANLIŞ İKON ROZETLERİ (✓ / ✕) */
2888
+ .player-status-badge {
2889
+ position: absolute;
2890
+ top: -10px;
2891
+ right: -10px;
2892
+ width: 24px;
2893
+ height: 24px;
2894
+ border-radius: 50%;
2895
+ display: flex;
2896
+ align-items: center;
2897
+ justify-content: center;
2898
+ font-size: 13px;
2899
+ font-weight: 900;
2900
+ box-shadow: 0 3px 8px rgba(0, 0, 0, 0.3);
2901
+ z-index: 100;
2902
+ animation: badgePop 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);
2903
+ pointer-events: none;
2904
+ }
2905
+
2906
+ .player-status-badge.badge-correct {
2907
+ background: #10b981;
2908
+ color: #ffffff;
2909
+ border: 2px solid #ffffff;
2910
+ }
2911
+
2912
+ .player-status-badge.badge-incorrect {
2913
+ background: #ef4444;
2914
+ color: #ffffff;
2915
+ border: 2px solid #ffffff;
2916
+ }
2917
+
2918
+ @keyframes badgePop {
2919
+ 0% { transform: scale(0); opacity: 0; }
2920
+ 100% { transform: scale(1); opacity: 1; }
2921
+ }
2922
+
2923
+ .player-object.is-target.is-target-locked {
2924
+ pointer-events: none !important;
2925
+ opacity: 0.9;
2926
+ border-color: #10b981 !important;
2927
+ }
2928
+
2929
+ .player-object-content {
2930
+ width: 100%;
2931
+ height: 100%;
2932
+ display: flex;
2933
+ flex-direction: column;
2934
+ align-items: center;
2935
+ justify-content: center;
2936
+ overflow: hidden;
2937
+ word-break: break-word;
2938
+ white-space: pre-wrap;
2939
+ }
2940
+
2941
+ /* Çizgi Nesnesi Oynatıcı Stilleri */
2942
+ .player-object[data-type="line"] {
2943
+ background-color: transparent !important;
2944
+ border: none !important;
2945
+ box-shadow: none !important;
2946
+ overflow: visible !important;
2947
+ }
2948
+
2949
+ .player-object[data-type="line"] .player-inner-content {
2950
+ overflow: visible !important;
2951
+ padding: 0 !important;
2952
+ }
2953
+
2954
+ .player-line-bar,
2955
+ .player-object svg.object-line-bar {
2956
+ width: 100%;
2957
+ height: 100%;
2958
+ display: block;
2959
+ pointer-events: none;
2960
+ overflow: visible;
2961
+ }
2962
+
2963
+ .player-object-content span,
2964
+ .player-object-content .player-text-span {
2965
+ width: 100%;
2966
+ display: block;
2967
+ text-align: inherit;
2968
+ box-sizing: border-box;
2969
+ }
2970
+
2971
+ .player-object-content img {
2972
+ max-width: 100%;
2973
+ max-height: 100%;
2974
+ object-fit: contain;
2975
+ pointer-events: none;
2976
+ }
2977
+
2978
+ .cat-title {
2979
+ font-size: 1.15rem;
2980
+ font-weight: 700;
2981
+ color: #065f46;
2982
+ margin-bottom: 8px;
2983
+ }
2984
+
2985
+ .slot-badge {
2986
+ font-size: 1.4rem;
2987
+ font-weight: 800;
2988
+ color: #6d28d9;
2989
+ }
2990
+
2991
+ .slot-text {
2992
+ font-size: 0.85rem;
2993
+ font-weight: 600;
2994
+ color: #64748b;
2995
+ }
2996
+
2997
+ /* KONTROL ALANI (Açık Zemin, Hiyerarşik Butonlar) */
2998
+ .player-controls {
2999
+ flex-shrink: 0;
3000
+ min-height: 54px;
3001
+ padding: 10px 18px;
3002
+ display: flex;
3003
+ align-items: center;
3004
+ justify-content: space-between;
3005
+ gap: 12px;
3006
+ background: #ffffff;
3007
+ border-top: 1px solid #f1f5f9;
3008
+ box-sizing: border-box;
3009
+ width: 100%;
3010
+ }
3011
+
3012
+ .player-actions {
3013
+ display: flex;
3014
+ align-items: center;
3015
+ gap: 10px;
3016
+ margin-left: auto;
3017
+ }
3018
+
3019
+ /* MOD DEĞİŞTİRİCİ (Segmented Switch) */
3020
+ .player-mode-switch {
3021
+ display: inline-flex;
3022
+ align-items: center;
3023
+ background: #f1f5f9;
3024
+ border: 1px solid #e2e8f0;
3025
+ border-radius: 10px;
3026
+ padding: 3px;
3027
+ gap: 2px;
3028
+ }
3029
+
3030
+ .player-mode-switch .mode-btn {
3031
+ border: none;
3032
+ background: transparent;
3033
+ color: #64748b;
3034
+ font-size: 0.85rem;
3035
+ font-weight: 500;
3036
+ padding: 6px 14px;
3037
+ border-radius: 7px;
3038
+ cursor: pointer;
3039
+ transition: all 0.15s ease;
3040
+ display: inline-flex;
3041
+ align-items: center;
3042
+ gap: 4px;
3043
+ white-space: nowrap;
3044
+ user-select: none;
3045
+ }
3046
+
3047
+ .player-mode-switch .mode-btn:hover {
3048
+ color: #0f172a;
3049
+ }
3050
+
3051
+ .player-mode-switch .mode-btn.active {
3052
+ background: #ffffff;
3053
+ color: #0f172a;
3054
+ font-weight: 600;
3055
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);
3056
+ }
3057
+
3058
+ /* YARDIMCI İPUCU METNİ (Koyu panel değil, sade yardımcı metin) */
3059
+ .player-footer {
3060
+ height: auto;
3061
+ min-height: 28px;
3062
+ flex-shrink: 0;
3063
+ padding: 8px 16px 2px 16px;
3064
+ display: flex;
3065
+ align-items: center;
3066
+ justify-content: center;
3067
+ background: transparent;
3068
+ border: none;
3069
+ color: #64748b;
3070
+ font-size: 0.82rem;
3071
+ box-sizing: border-box;
3072
+ width: 100%;
3073
+ }
3074
+
3075
+ .player-hint {
3076
+ text-align: center;
3077
+ display: inline-flex;
3078
+ align-items: center;
3079
+ justify-content: center;
3080
+ gap: 6px;
3081
+ color: #64748b;
3082
+ font-size: 0.82rem;
3083
+ line-height: 1.4;
3084
+ overflow: hidden;
3085
+ text-overflow: ellipsis;
3086
+ white-space: nowrap;
3087
+ }
3088
+
3089
+ /* TAMAMLANMA SONUÇ KARTI */
3090
+ .completion-result-card {
3091
+ min-height: 74px;
3092
+ margin-top: 16px;
3093
+ padding: 14px 16px;
3094
+ display: flex;
3095
+ align-items: center;
3096
+ justify-content: space-between;
3097
+ gap: 16px;
3098
+ flex-shrink: 0;
3099
+ box-sizing: border-box;
3100
+ border: 1px solid #dcece2;
3101
+ border-radius: 14px;
3102
+ background: #f3f9f5;
3103
+ animation: completionResultIn 0.3s ease-out;
3104
+ }
3105
+
3106
+ .completion-result-card[hidden],
3107
+ .player-controls[hidden],
3108
+ .player-footer[hidden] {
3109
+ display: none !important;
3110
+ }
3111
+
3112
+ .completion-result-message {
3113
+ min-width: 0;
3114
+ display: flex;
3115
+ align-items: center;
3116
+ gap: 12px;
3117
+ }
3118
+
3119
+ .completion-result-icon {
3120
+ width: 44px;
3121
+ height: 44px;
3122
+ display: inline-flex;
3123
+ align-items: center;
3124
+ justify-content: center;
3125
+ flex-shrink: 0;
3126
+ border-radius: 12px;
3127
+ background: #e0f2e6;
3128
+ color: #29885a;
3129
+ }
3130
+
3131
+ .completion-result-title {
3132
+ margin: 0;
3133
+ color: #253b30;
3134
+ font-size: 1.0625rem;
3135
+ font-weight: 600;
3136
+ line-height: 1.3;
3137
+ }
3138
+
3139
+ .completion-replay-btn {
3140
+ min-height: 40px;
3141
+ padding: 8px 14px;
3142
+ display: inline-flex;
3143
+ align-items: center;
3144
+ justify-content: center;
3145
+ gap: 7px;
3146
+ flex-shrink: 0;
3147
+ border: 1px solid #d3e2d8;
3148
+ border-radius: 9px;
3149
+ background: #ffffff;
3150
+ color: #365747;
3151
+ font: inherit;
3152
+ font-size: 0.875rem;
3153
+ font-weight: 600;
3154
+ cursor: pointer;
3155
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
3156
+ }
3157
+
3158
+ .completion-replay-btn:hover {
3159
+ background: #f8fbf9;
3160
+ border-color: #bcd5c5;
3161
+ color: #253b30;
3162
+ }
3163
+
3164
+ .completion-replay-btn:focus-visible {
3165
+ outline: 2px solid #29885a;
3166
+ outline-offset: 2px;
3167
+ }
3168
+
3169
+ @keyframes completionResultIn {
3170
+ from {
3171
+ opacity: 0;
3172
+ transform: translateY(8px);
3173
+ }
3174
+ to {
3175
+ opacity: 1;
3176
+ transform: translateY(0);
3177
+ }
3178
+ }
3179
+
3180
+ @media (prefers-reduced-motion: reduce) {
3181
+ .completion-result-card {
3182
+ animation: none;
3183
+ }
3184
+ }
3185
+
3186
+ /* ==========================================================================
3187
+ RESPONSIVE UYARLAMALAR (Küçük Ekran ve Pencereler)
3188
+ ========================================================================== */
3189
+ @media (max-width: 768px) {
3190
+ .player-header {
3191
+ height: auto;
3192
+ min-height: 48px;
3193
+ padding: 6px 12px;
3194
+ gap: 6px;
3195
+ }
3196
+
3197
+ .player-title {
3198
+ font-size: 0.95rem;
3199
+ }
3200
+
3201
+ .player-badge {
3202
+ display: none;
3203
+ }
3204
+
3205
+ .stat-pill {
3206
+ padding: 4px 8px;
3207
+ font-size: 0.75rem;
3208
+ }
3209
+
3210
+ .player-btn {
3211
+ padding: 6px 10px;
3212
+ font-size: 0.75rem;
3213
+ }
3214
+
3215
+ .player-mode-switch .mode-btn {
3216
+ padding: 4px 8px;
3217
+ font-size: 0.72rem;
3218
+ }
3219
+
3220
+ .player-controls {
3221
+ min-height: 44px;
3222
+ padding: 6px 12px;
3223
+ gap: 8px;
3224
+ }
3225
+
3226
+ .player-footer {
3227
+ height: auto;
3228
+ min-height: 30px;
3229
+ padding: 4px 12px;
3230
+ }
3231
+
3232
+ .completion-result-card {
3233
+ min-height: 68px;
3234
+ margin-top: 12px;
3235
+ padding: 12px;
3236
+ gap: 12px;
3237
+ flex-wrap: wrap;
3238
+ }
3239
+
3240
+ .completion-result-icon {
3241
+ width: 40px;
3242
+ height: 40px;
3243
+ border-radius: 10px;
3244
+ }
3245
+
3246
+ .completion-result-title {
3247
+ font-size: 1rem;
3248
+ }
3249
+
3250
+ .completion-replay-btn {
3251
+ margin-left: auto;
3252
+ }
3253
+
3254
+ .player-hint {
3255
+ font-size: 0.75rem;
3256
+ overflow: hidden;
3257
+ text-overflow: ellipsis;
3258
+ white-space: nowrap;
3259
+ }
3260
+ }
3261
+
3262
+ @media (max-width: 480px) {
3263
+ .completion-result-card {
3264
+ align-items: stretch;
3265
+ flex-direction: column;
3266
+ }
3267
+
3268
+ .completion-replay-btn {
3269
+ width: 100%;
3270
+ margin-left: 0;
3271
+ }
3272
+ }
3273
+
3274
+ :host { display: block; width: 100%; height: 100%; min-height: 0; }
3275
+ .dnd-editor-root { width: 100%; height: 100%; min-height: 620px; position: relative; }
3276
+ .dnd-editor-root.hide-file-actions .more-menu-wrapper { display: none; }
3277
+ .dnd-editor-root.hide-file-actions .top-header-right { display: none; }
3278
+ .dnd-editor-root #preview-container { position: absolute; inset: 0; }