doc-survival-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/style.css ADDED
@@ -0,0 +1,1460 @@
1
+ *,
2
+ *::before,
3
+ *::after {
4
+ box-sizing: border-box;
5
+ margin: 0;
6
+ padding: 0;
7
+ }
8
+ body {
9
+ font-family:
10
+ "Segoe UI",
11
+ system-ui,
12
+ -apple-system,
13
+ sans-serif;
14
+ background: #fafaf9;
15
+ color: #292524;
16
+ min-height: 100vh;
17
+ -webkit-font-smoothing: antialiased;
18
+ }
19
+ a {
20
+ text-decoration: none;
21
+ color: inherit;
22
+ }
23
+ button {
24
+ font-family: inherit;
25
+ cursor: pointer;
26
+ border: none;
27
+ background: none;
28
+ }
29
+ input,
30
+ select {
31
+ font-family: inherit;
32
+ }
33
+
34
+ /* ── Bouton admin (roue crantée) ── */
35
+ .btn-admin {
36
+ position: fixed;
37
+ top: 16px;
38
+ right: 20px;
39
+ z-index: 50;
40
+ font-size: 1.4rem;
41
+ color: #78716c;
42
+ text-decoration: none;
43
+ background: #f5f5f4;
44
+ border: 1px solid #e7e5e4;
45
+ border-radius: 8px;
46
+ width: 40px;
47
+ height: 40px;
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ transition:
52
+ background 0.15s,
53
+ color 0.15s,
54
+ transform 0.3s;
55
+ line-height: 1;
56
+ }
57
+ .btn-admin:hover {
58
+ background: #292524;
59
+ color: #fff;
60
+ border-color: #292524;
61
+ transform: rotate(60deg);
62
+ }
63
+
64
+ /* ── Layout deux colonnes ── */
65
+ .shell {
66
+ display: flex;
67
+ min-height: 100vh;
68
+ }
69
+ .panel {
70
+ flex: 1;
71
+ padding: 60px 36px 80px;
72
+ overflow-y: auto;
73
+ }
74
+ .panel-left {
75
+ border-right: 1px solid #e7e5e4;
76
+ }
77
+ .inner {
78
+ max-width: 520px;
79
+ margin: 0 auto;
80
+ }
81
+
82
+ @media (max-width: 860px) {
83
+ .shell {
84
+ flex-direction: column;
85
+ }
86
+ .panel-left {
87
+ border-right: none;
88
+ border-bottom: 1px solid #e7e5e4;
89
+ }
90
+ }
91
+
92
+ /* ── Typo commune ── */
93
+ h1 {
94
+ font-size: 2.2rem;
95
+ font-weight: 700;
96
+ letter-spacing: -0.02em;
97
+ line-height: 1;
98
+ }
99
+ .accent {
100
+ color: #f97316;
101
+ }
102
+ .subtitle {
103
+ font-family: "Cascadia Code", "SF Mono", "Consolas", monospace;
104
+ font-size: 0.7rem;
105
+ letter-spacing: 0.12em;
106
+ text-transform: uppercase;
107
+ color: #a8a29e;
108
+ margin-top: 4px;
109
+ margin-bottom: 40px;
110
+ }
111
+ h2 {
112
+ font-family: "Cascadia Code", "SF Mono", "Consolas", monospace;
113
+ font-size: 0.7rem;
114
+ letter-spacing: 0.12em;
115
+ text-transform: uppercase;
116
+ margin-bottom: 10px;
117
+ }
118
+
119
+ /* ══════════════════════════════════
120
+ PANEL GAUCHE — Tâches
121
+ ══════════════════════════════════ */
122
+
123
+ /* Barre d'ajout */
124
+ .add-bar {
125
+ display: flex;
126
+ gap: 6px;
127
+ margin-bottom: 20px;
128
+ }
129
+ .add-bar input[type="text"] {
130
+ flex: 1;
131
+ min-width: 0;
132
+ padding: 10px 14px;
133
+ font-size: 0.875rem;
134
+ border: 1px solid #d6d3d1;
135
+ border-radius: 8px;
136
+ background: #fff;
137
+ outline: none;
138
+ transition: border-color 0.15s;
139
+ }
140
+ .add-bar input[type="text"]:focus {
141
+ border-color: #f97316;
142
+ }
143
+ .add-bar select {
144
+ padding: 10px 10px;
145
+ font-size: 0.75rem;
146
+ border: 1px solid #d6d3d1;
147
+ border-radius: 8px;
148
+ background: #fff;
149
+ color: #78716c;
150
+ outline: none;
151
+ }
152
+ .add-bar button {
153
+ padding: 10px 18px;
154
+ font-size: 0.8rem;
155
+ font-weight: 600;
156
+ background: #292524;
157
+ color: #fafaf9;
158
+ border-radius: 8px;
159
+ transition: background 0.15s;
160
+ }
161
+ .add-bar button:hover {
162
+ background: #f97316;
163
+ }
164
+
165
+ /* Filtres */
166
+ .filters {
167
+ display: flex;
168
+ gap: 6px;
169
+ margin-bottom: 16px;
170
+ flex-wrap: wrap;
171
+ }
172
+ .filters button {
173
+ font-family: "Cascadia Code", "SF Mono", "Consolas", monospace;
174
+ font-size: 0.65rem;
175
+ letter-spacing: 0.1em;
176
+ text-transform: uppercase;
177
+ padding: 5px 12px;
178
+ border-radius: 6px;
179
+ border: 1px solid #e7e5e4;
180
+ color: #a8a29e;
181
+ transition: all 0.15s;
182
+ }
183
+ .filters button:hover {
184
+ border-color: #292524;
185
+ color: #292524;
186
+ }
187
+ .filters button.active {
188
+ background: #292524;
189
+ color: #fafaf9;
190
+ border-color: #292524;
191
+ }
192
+
193
+ /* Liste de tâches */
194
+ .tasks {
195
+ display: flex;
196
+ flex-direction: column;
197
+ gap: 4px;
198
+ }
199
+
200
+ .task {
201
+ display: flex;
202
+ align-items: center;
203
+ gap: 10px;
204
+ padding: 10px 14px;
205
+ border-radius: 10px;
206
+ border: 1px solid;
207
+ transition:
208
+ background 0.15s,
209
+ border-color 0.15s,
210
+ opacity 0.15s;
211
+ }
212
+ .task.done {
213
+ opacity: 0.5;
214
+ }
215
+ .task.done .task-text {
216
+ text-decoration: line-through;
217
+ color: #a8a29e;
218
+ }
219
+
220
+ /* Checkbox custom */
221
+ .check {
222
+ width: 18px;
223
+ height: 18px;
224
+ border-radius: 50%;
225
+ border: 2px solid;
226
+ flex-shrink: 0;
227
+ display: flex;
228
+ align-items: center;
229
+ justify-content: center;
230
+ transition: all 0.15s;
231
+ cursor: pointer;
232
+ }
233
+ .check:hover {
234
+ transform: scale(1.1);
235
+ }
236
+ .task.done .check {
237
+ background: currentColor;
238
+ }
239
+ .task.done .check::after {
240
+ content: "✓";
241
+ color: #fff;
242
+ font-size: 0.65rem;
243
+ font-weight: 700;
244
+ }
245
+
246
+ .task-text {
247
+ flex: 1;
248
+ font-size: 0.875rem;
249
+ }
250
+ .task-tag {
251
+ font-family: "Cascadia Code", "SF Mono", "Consolas", monospace;
252
+ font-size: 0.6rem;
253
+ letter-spacing: 0.08em;
254
+ text-transform: uppercase;
255
+ padding: 3px 8px;
256
+ border-radius: 5px;
257
+ flex-shrink: 0;
258
+ }
259
+ .task-del {
260
+ font-size: 0.8rem;
261
+ color: #d6d3d1;
262
+ transition: color 0.15s;
263
+ padding: 2px 4px;
264
+ flex-shrink: 0;
265
+ }
266
+ .task-del:hover {
267
+ color: #ef4444;
268
+ }
269
+
270
+ /* Couleurs tâches par catégorie */
271
+ .task-urgent {
272
+ border-color: #fecdd3;
273
+ background: rgba(255, 228, 230, 0.3);
274
+ color: #e11d48;
275
+ }
276
+ .task-urgent .task-tag {
277
+ background: rgba(255, 228, 230, 0.6);
278
+ color: #be123c;
279
+ }
280
+ .task-normal {
281
+ border-color: #dbeafe;
282
+ background: rgba(219, 234, 254, 0.3);
283
+ color: #2563eb;
284
+ }
285
+ .task-normal .task-tag {
286
+ background: rgba(219, 234, 254, 0.6);
287
+ color: #1d4ed8;
288
+ }
289
+ .task-later {
290
+ border-color: #e7e5e4;
291
+ background: rgba(231, 229, 228, 0.3);
292
+ color: #78716c;
293
+ }
294
+ .task-later .task-tag {
295
+ background: rgba(231, 229, 228, 0.6);
296
+ color: #57534e;
297
+ }
298
+
299
+ .empty-msg {
300
+ text-align: center;
301
+ padding: 40px 0;
302
+ color: #a8a29e;
303
+ font-style: italic;
304
+ font-size: 0.9rem;
305
+ }
306
+
307
+ /* ══════════════════════════════════
308
+ PANEL DROIT — Liens
309
+ ══════════════════════════════════ */
310
+ section {
311
+ margin-bottom: 32px;
312
+ }
313
+ .links {
314
+ display: flex;
315
+ flex-direction: column;
316
+ gap: 6px;
317
+ }
318
+ .link {
319
+ display: flex;
320
+ align-items: center;
321
+ justify-content: space-between;
322
+ gap: 16px;
323
+ padding: 12px 16px;
324
+ border-radius: 10px;
325
+ border: 1px solid;
326
+ transition:
327
+ background 0.15s,
328
+ border-color 0.15s;
329
+ }
330
+ .link:hover .arrow {
331
+ opacity: 1;
332
+ }
333
+ .link-name {
334
+ font-size: 0.875rem;
335
+ font-weight: 600;
336
+ transition: color 0.15s;
337
+ white-space: pre-wrap;
338
+ word-break: break-all;
339
+ }
340
+ .link-desc {
341
+ font-size: 0.875rem;
342
+ color: #a8a29e;
343
+ margin-left: 8px;
344
+ white-space: pre-wrap;
345
+ word-break: break-all;
346
+ }
347
+ .arrow {
348
+ opacity: 0;
349
+ font-size: 0.85rem;
350
+ transition: opacity 0.15s;
351
+ flex-shrink: 0;
352
+ }
353
+
354
+ .t-green h2 {
355
+ color: #059669;
356
+ }
357
+ .t-green .link {
358
+ border-color: #d1fae5;
359
+ background: rgba(209, 250, 229, 0.3);
360
+ }
361
+ .t-green .link:hover {
362
+ background: rgba(167, 243, 208, 0.35);
363
+ }
364
+ .t-green .link:hover .link-name {
365
+ color: #047857;
366
+ }
367
+ .t-green .arrow {
368
+ color: #6ee7b7;
369
+ }
370
+
371
+ .t-violet h2 {
372
+ color: #7c3aed;
373
+ }
374
+ .t-violet .link {
375
+ border-color: #ede9fe;
376
+ background: rgba(237, 233, 254, 0.3);
377
+ }
378
+ .t-violet .link:hover {
379
+ background: rgba(221, 214, 254, 0.4);
380
+ }
381
+ .t-violet .link:hover .link-name {
382
+ color: #6d28d9;
383
+ }
384
+ .t-violet .arrow {
385
+ color: #c4b5fd;
386
+ }
387
+
388
+ .t-amber h2 {
389
+ color: #d97706;
390
+ }
391
+ .t-amber .link {
392
+ border-color: #fef3c7;
393
+ background: rgba(254, 243, 199, 0.3);
394
+ }
395
+ .t-amber .link:hover {
396
+ background: rgba(253, 230, 138, 0.35);
397
+ }
398
+ .t-amber .link:hover .link-name {
399
+ color: #b45309;
400
+ }
401
+ .t-amber .arrow {
402
+ color: #fcd34d;
403
+ }
404
+
405
+ .t-sky h2 {
406
+ color: #0284c7;
407
+ }
408
+ .t-sky .link {
409
+ border-color: #e0f2fe;
410
+ background: rgba(224, 242, 254, 0.3);
411
+ }
412
+ .t-sky .link:hover {
413
+ background: rgba(186, 230, 253, 0.35);
414
+ }
415
+ .t-sky .link:hover .link-name {
416
+ color: #0369a1;
417
+ }
418
+ .t-sky .arrow {
419
+ color: #7dd3fc;
420
+ }
421
+
422
+ .t-rose h2 {
423
+ color: #e11d48;
424
+ }
425
+ .t-rose .link {
426
+ border-color: #ffe4e6;
427
+ background: rgba(255, 228, 230, 0.3);
428
+ }
429
+ .t-rose .link:hover {
430
+ background: rgba(254, 205, 211, 0.35);
431
+ }
432
+ .t-rose .link:hover .link-name {
433
+ color: #be123c;
434
+ }
435
+ .t-rose .arrow {
436
+ color: #fda4af;
437
+ }
438
+
439
+ .t-teal h2 {
440
+ color: #0d9488;
441
+ }
442
+ .t-teal .link {
443
+ border-color: #ccfbf1;
444
+ background: rgba(204, 251, 241, 0.3);
445
+ }
446
+ .t-teal .link:hover {
447
+ background: rgba(153, 246, 228, 0.3);
448
+ }
449
+ .t-teal .link:hover .link-name {
450
+ color: #0f766e;
451
+ }
452
+ .t-teal .arrow {
453
+ color: #5eead4;
454
+ }
455
+
456
+ /* ── Toggle collapse section liens ── */
457
+ .btn-toggle-cat {
458
+ width: 24px;
459
+ height: 24px;
460
+ border-radius: 5px;
461
+ display: flex;
462
+ align-items: center;
463
+ justify-content: center;
464
+ color: #a8a29e;
465
+ flex-shrink: 0;
466
+ transition: background 0.15s, color 0.15s;
467
+ }
468
+ .btn-toggle-cat:hover {
469
+ color: #292524;
470
+ background: rgba(0, 0, 0, 0.05);
471
+ }
472
+ .btn-toggle-cat svg {
473
+ transition: transform 0.2s;
474
+ }
475
+ section.collapsed .btn-toggle-cat svg {
476
+ transform: rotate(-90deg);
477
+ }
478
+ section.collapsed .links {
479
+ display: none;
480
+ }
481
+
482
+ /* ── Header catégorie avec corbeille ── */
483
+ .cat-header {
484
+ display: flex;
485
+ align-items: center;
486
+ justify-content: space-between;
487
+ margin-bottom: 10px;
488
+ }
489
+ .cat-header h2 {
490
+ margin-bottom: 0;
491
+ }
492
+ .cat-actions {
493
+ display: flex;
494
+ align-items: center;
495
+ gap: 4px;
496
+ opacity: 0;
497
+ pointer-events: none;
498
+ transition: opacity 0.15s;
499
+ }
500
+ .btn-add-link {
501
+ font-size: 0.72rem;
502
+ font-weight: 700;
503
+ padding: 3px 8px;
504
+ border-radius: 5px;
505
+ background: #fff7ed;
506
+ color: #f97316;
507
+ flex-shrink: 0;
508
+ transition:
509
+ background 0.15s,
510
+ color 0.15s;
511
+ }
512
+ .btn-add-link:hover {
513
+ background: #f97316;
514
+ color: #fff;
515
+ }
516
+ .btn-del-cat {
517
+ font-size: 0.8rem;
518
+ padding: 3px 6px;
519
+ border-radius: 5px;
520
+ background: #fef2f2;
521
+ color: #ef4444;
522
+ flex-shrink: 0;
523
+ transition:
524
+ background 0.15s,
525
+ color 0.15s;
526
+ }
527
+ .btn-del-cat:hover {
528
+ background: #ef4444;
529
+ color: #fff;
530
+ }
531
+ .link-actions {
532
+ display: flex;
533
+ align-items: center;
534
+ gap: 4px;
535
+ opacity: 0;
536
+ pointer-events: none;
537
+ transition: opacity 0.15s;
538
+ flex-shrink: 0;
539
+ }
540
+ .link:hover .link-actions {
541
+ opacity: 1;
542
+ }
543
+ .btn-edit-link,
544
+ .btn-del-link {
545
+ font-size: 0.75rem;
546
+ padding: 3px 7px;
547
+ border-radius: 5px;
548
+ font-weight: 600;
549
+ transition:
550
+ background 0.15s,
551
+ color 0.15s;
552
+ }
553
+ .btn-edit-link {
554
+ background: #fff7ed;
555
+ color: #f97316;
556
+ }
557
+ .btn-edit-link:hover {
558
+ background: #f97316;
559
+ color: #fff;
560
+ }
561
+ .btn-del-link {
562
+ background: #fef2f2;
563
+ color: #ef4444;
564
+ }
565
+ .btn-del-link:hover {
566
+ background: #ef4444;
567
+ color: #fff;
568
+ }
569
+
570
+ /* ── Barre d'actions liens ── */
571
+ .liens-toolbar {
572
+ display: flex;
573
+ gap: 8px;
574
+ margin-bottom: 24px;
575
+ flex-wrap: wrap;
576
+ }
577
+
578
+ /* ── Bouton mode édition + bouton ajouter catégorie (styles communs) ── */
579
+ .btn-add-cat,
580
+ .btn-add-note,
581
+ .btn-edit-mode,
582
+ .btn-save {
583
+ font-family: "Cascadia Code", "SF Mono", "Consolas", monospace;
584
+ font-size: 0.65rem;
585
+ letter-spacing: 0.1em;
586
+ text-transform: uppercase;
587
+ padding: 7px 14px;
588
+ border-radius: 8px;
589
+ transition:
590
+ border-color 0.15s,
591
+ color 0.15s;
592
+ }
593
+ .btn-add-cat {
594
+ border: 1px dashed #d6d3d1;
595
+ color: #a8a29e;
596
+ display: none;
597
+ }
598
+ .inner:has(#linksContainer.edit-mode) .btn-add-cat {
599
+ display: flex;
600
+ }
601
+ .btn-add-cat:hover {
602
+ background: #f97316;
603
+ border-color: #f97316;
604
+ color: #fff;
605
+ }
606
+ .btn-edit-mode {
607
+ border: 1px solid #e7e5e4;
608
+ color: #78716c;
609
+ }
610
+ .btn-edit-mode:hover {
611
+ border-color: #292524;
612
+ color: #292524;
613
+ }
614
+ .btn-save {
615
+ display: none;
616
+ background: #047857;
617
+ border: 1px solid #047857;
618
+ color: #fff;
619
+ }
620
+ .btn-save:hover {
621
+ background: #059669;
622
+ border-color: #059669;
623
+ color: #fff;
624
+ }
625
+
626
+ /* ── Mode édition : rendre tous les boutons d'action visibles ── */
627
+ .edit-mode .link-actions,
628
+ .edit-mode .cat-actions {
629
+ opacity: 1;
630
+ pointer-events: auto;
631
+ }
632
+ .edit-mode .note-actions,
633
+ .edit-mode .bloc-actions {
634
+ pointer-events: auto;
635
+ }
636
+ /* Masquer le hover hors mode édition */
637
+ .link:hover .link-actions {
638
+ opacity: 0;
639
+ }
640
+ .edit-mode .link:hover .link-actions {
641
+ opacity: 1;
642
+ }
643
+
644
+ /* ── Modale ── */
645
+ .modal-backdrop {
646
+ display: none;
647
+ position: fixed;
648
+ inset: 0;
649
+ background: rgba(41, 37, 36, 0.4);
650
+ backdrop-filter: blur(2px);
651
+ z-index: 100;
652
+ align-items: center;
653
+ justify-content: center;
654
+ }
655
+ .modal-backdrop.open {
656
+ display: flex;
657
+ }
658
+ .modal {
659
+ background: #fff;
660
+ border-radius: 14px;
661
+ padding: 28px 32px;
662
+ width: 100%;
663
+ max-width: 380px;
664
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
665
+ }
666
+ .modal h3 {
667
+ font-size: 1rem;
668
+ font-weight: 700;
669
+ margin-bottom: 20px;
670
+ letter-spacing: -0.01em;
671
+ }
672
+ .modal label {
673
+ display: block;
674
+ font-family: "Cascadia Code", "SF Mono", "Consolas", monospace;
675
+ font-size: 0.6rem;
676
+ letter-spacing: 0.1em;
677
+ text-transform: uppercase;
678
+ color: #a8a29e;
679
+ margin-bottom: 5px;
680
+ }
681
+ .modal input[type="text"],
682
+ .modal select {
683
+ width: 100%;
684
+ padding: 9px 12px;
685
+ font-size: 0.875rem;
686
+ border: 1px solid #d6d3d1;
687
+ border-radius: 8px;
688
+ outline: none;
689
+ margin-bottom: 16px;
690
+ transition: border-color 0.15s;
691
+ }
692
+ .modal input[type="text"]:focus,
693
+ .modal select:focus {
694
+ border-color: #f97316;
695
+ }
696
+ .modal-actions {
697
+ display: flex;
698
+ justify-content: flex-end;
699
+ gap: 8px;
700
+ margin-top: 4px;
701
+ }
702
+ .modal-actions button {
703
+ font-size: 0.8rem;
704
+ font-weight: 600;
705
+ padding: 8px 18px;
706
+ border-radius: 8px;
707
+ transition: background 0.15s;
708
+ }
709
+ .btn-cancel {
710
+ border: 1px solid #e7e5e4;
711
+ color: #78716c;
712
+ }
713
+ .btn-cancel:hover {
714
+ background: #f5f5f4;
715
+ }
716
+ .btn-confirm {
717
+ background: #292524;
718
+ color: #fafaf9;
719
+ }
720
+ .btn-confirm:hover {
721
+ background: #f97316;
722
+ }
723
+
724
+ /* ══════════════════════════════════════
725
+ PANEL MILIEU — Notes
726
+ ══════════════════════════════════════ */
727
+
728
+ .btn-add-note {
729
+ border: 1px dashed #d6d3d1;
730
+ color: #a8a29e;
731
+ display: none;
732
+ }
733
+ .inner:has(#notesContainer.edit-mode) .btn-add-note {
734
+ display: flex;
735
+ }
736
+ .btn-add-note:hover {
737
+ background: #f97316;
738
+ border-color: #f97316;
739
+ color: #fff;
740
+ }
741
+
742
+ .note {
743
+ border-radius: 10px;
744
+ border: 1px solid #e7e5e4;
745
+ margin-bottom: 16px;
746
+ }
747
+ .note-header {
748
+ display: flex;
749
+ align-items: center;
750
+ justify-content: space-between;
751
+ padding: 12px 16px;
752
+ border-bottom: 1px solid #e7e5e4;
753
+ }
754
+ .note-header h2 {
755
+ margin-bottom: 0;
756
+ }
757
+ .note-actions {
758
+ display: flex;
759
+ align-items: center;
760
+ gap: 4px;
761
+ opacity: 0;
762
+ pointer-events: none;
763
+ transition: opacity 0.15s;
764
+ }
765
+ .edit-mode .note-actions {
766
+ opacity: 1;
767
+ }
768
+ .note-content {
769
+ padding: 12px 16px;
770
+ display: flex;
771
+ flex-direction: column;
772
+ gap: 10px;
773
+ }
774
+ .note-content b {
775
+ display: block;
776
+ font-size: 0.9rem;
777
+ font-weight: 700;
778
+ color: #292524;
779
+ white-space: pre-wrap;
780
+ word-break: break-all;
781
+ }
782
+ .note-content p {
783
+ font-size: 0.875rem;
784
+ line-height: 1.6;
785
+ color: #292524;
786
+ white-space: pre-wrap;
787
+ word-break: break-all;
788
+ }
789
+ .note-content pre {
790
+ font-family: "Cascadia Code", "SF Mono", "Consolas", monospace;
791
+ font-size: 0.78rem;
792
+ background: rgba(0, 0, 0, 0.04);
793
+ padding: 10px 12px;
794
+ border-radius: 6px;
795
+ white-space: pre-wrap;
796
+ word-break: break-all;
797
+ color: #292524;
798
+ }
799
+ .note-content ul {
800
+ padding-left: 18px;
801
+ font-size: 0.875rem;
802
+ line-height: 1.7;
803
+ white-space: pre-wrap;
804
+ word-break: break-all;
805
+ }
806
+ .bloc-wrapper {
807
+ position: relative;
808
+ }
809
+ .bloc-actions {
810
+ position: absolute;
811
+ top: 0;
812
+ right: 0;
813
+ display: flex;
814
+ align-items: center;
815
+ gap: 4px;
816
+ opacity: 0;
817
+ pointer-events: none;
818
+ transition: opacity 0.15s;
819
+ }
820
+ .edit-mode .bloc-actions {
821
+ opacity: 1;
822
+ }
823
+ .edit-mode .bloc-wrapper {
824
+ padding-right: 72px;
825
+ }
826
+ .note-footer {
827
+ padding: 8px 16px 12px;
828
+ display: none;
829
+ }
830
+ .edit-mode .note-footer {
831
+ display: block;
832
+ }
833
+ .btn-add-bloc {
834
+ font-family: "Cascadia Code", "SF Mono", "Consolas", monospace;
835
+ font-size: 0.6rem;
836
+ letter-spacing: 0.08em;
837
+ text-transform: uppercase;
838
+ padding: 5px 10px;
839
+ border-radius: 6px;
840
+ border: 1px dashed #d6d3d1;
841
+ color: #a8a29e;
842
+ transition: all 0.15s;
843
+ }
844
+ .btn-add-bloc:hover {
845
+ background: #f97316;
846
+ border-color: #f97316;
847
+ color: #fff;
848
+ }
849
+ .btn-edit-note,
850
+ .btn-edit-bloc {
851
+ font-size: 0.72rem;
852
+ font-weight: 700;
853
+ padding: 3px 8px;
854
+ border-radius: 5px;
855
+ background: #fff7ed;
856
+ color: #f97316;
857
+ transition:
858
+ background 0.15s,
859
+ color 0.15s;
860
+ }
861
+ .btn-edit-note:hover,
862
+ .btn-edit-bloc:hover {
863
+ background: #f97316;
864
+ color: #fff;
865
+ }
866
+ .btn-del-note,
867
+ .btn-del-bloc {
868
+ font-size: 0.8rem;
869
+ padding: 3px 6px;
870
+ border-radius: 5px;
871
+ background: #fef2f2;
872
+ color: #ef4444;
873
+ transition:
874
+ background 0.15s,
875
+ color 0.15s;
876
+ }
877
+ .btn-del-note:hover,
878
+ .btn-del-bloc:hover {
879
+ background: #ef4444;
880
+ color: #fff;
881
+ }
882
+
883
+ /* ── Toggle collapse note ── */
884
+ .btn-toggle-note {
885
+ width: 24px;
886
+ height: 24px;
887
+ border-radius: 5px;
888
+ display: flex;
889
+ align-items: center;
890
+ justify-content: center;
891
+ color: #a8a29e;
892
+ flex-shrink: 0;
893
+ transition: background 0.15s, color 0.15s;
894
+ }
895
+ .btn-toggle-note:hover {
896
+ color: #292524;
897
+ background: rgba(0, 0, 0, 0.05);
898
+ }
899
+ .btn-toggle-note svg {
900
+ transition: transform 0.2s;
901
+ }
902
+ .note.collapsed .btn-toggle-note svg {
903
+ transform: rotate(-90deg);
904
+ }
905
+ .note.collapsed .note-content,
906
+ .note.collapsed .note-footer {
907
+ display: none !important;
908
+ }
909
+
910
+ /* Couleurs des notes par thème */
911
+ .note.t-green {
912
+ border-color: #d1fae5;
913
+ background: rgba(209, 250, 229, 0.12);
914
+ }
915
+ .note.t-green .note-header {
916
+ border-bottom-color: #d1fae5;
917
+ }
918
+ .note.t-violet {
919
+ border-color: #ede9fe;
920
+ background: rgba(237, 233, 254, 0.12);
921
+ }
922
+ .note.t-violet .note-header {
923
+ border-bottom-color: #ede9fe;
924
+ }
925
+ .note.t-amber {
926
+ border-color: #fef3c7;
927
+ background: rgba(254, 243, 199, 0.12);
928
+ }
929
+ .note.t-amber .note-header {
930
+ border-bottom-color: #fef3c7;
931
+ }
932
+ .note.t-sky {
933
+ border-color: #e0f2fe;
934
+ background: rgba(224, 242, 254, 0.12);
935
+ }
936
+ .note.t-sky .note-header {
937
+ border-bottom-color: #e0f2fe;
938
+ }
939
+ .note.t-rose {
940
+ border-color: #ffe4e6;
941
+ background: rgba(255, 228, 230, 0.12);
942
+ }
943
+ .note.t-rose .note-header {
944
+ border-bottom-color: #ffe4e6;
945
+ }
946
+ .note.t-teal {
947
+ border-color: #ccfbf1;
948
+ background: rgba(204, 251, 241, 0.12);
949
+ }
950
+ .note.t-teal .note-header {
951
+ border-bottom-color: #ccfbf1;
952
+ }
953
+
954
+ /* ── Bouton copier dans les blocs pre ── */
955
+ .pre-wrapper {
956
+ position: relative;
957
+ }
958
+ .btn-copy-pre {
959
+ position: absolute;
960
+ top: 6px;
961
+ right: 8px;
962
+ font-family: "Cascadia Code", "SF Mono", "Consolas", monospace;
963
+ font-size: 0.6rem;
964
+ letter-spacing: 0.05em;
965
+ padding: 2px 7px;
966
+ border-radius: 4px;
967
+ background: rgba(0, 0, 0, 0.06);
968
+ color: #78716c;
969
+ opacity: 0;
970
+ transition:
971
+ opacity 0.15s,
972
+ background 0.15s,
973
+ color 0.15s;
974
+ }
975
+ .pre-wrapper:hover .btn-copy-pre {
976
+ opacity: 1;
977
+ }
978
+ .btn-copy-pre:hover {
979
+ background: rgba(0, 0, 0, 0.12);
980
+ color: #292524;
981
+ }
982
+ .btn-copy-pre.copied {
983
+ background: #d1fae5;
984
+ color: #047857;
985
+ }
986
+
987
+ /* ── Blocs tableau dans les notes ── */
988
+ .table-wrapper {
989
+ overflow-x: auto;
990
+ }
991
+ .note-content table {
992
+ width: 100%;
993
+ border-collapse: collapse;
994
+ font-size: 0.8rem;
995
+ }
996
+ .note-content table th,
997
+ .note-content table td {
998
+ padding: 6px 10px;
999
+ border: 1px solid #e7e5e4;
1000
+ text-align: left;
1001
+ vertical-align: top;
1002
+ }
1003
+ .note-content table th {
1004
+ font-family: "Cascadia Code", "SF Mono", "Consolas", monospace;
1005
+ font-size: 0.65rem;
1006
+ letter-spacing: 0.08em;
1007
+ text-transform: uppercase;
1008
+ background: rgba(0, 0, 0, 0.03);
1009
+ color: #78716c;
1010
+ font-weight: 600;
1011
+ }
1012
+ .note-content table tr:hover td {
1013
+ background: rgba(0, 0, 0, 0.02);
1014
+ }
1015
+
1016
+ /* Textarea dans les modales */
1017
+ .modal textarea {
1018
+ width: 100%;
1019
+ padding: 9px 12px;
1020
+ font-size: 0.875rem;
1021
+ font-family: inherit;
1022
+ border: 1px solid #d6d3d1;
1023
+ border-radius: 8px;
1024
+ outline: none;
1025
+ margin-bottom: 16px;
1026
+ transition: border-color 0.15s;
1027
+ resize: vertical;
1028
+ }
1029
+ .modal textarea:focus {
1030
+ border-color: #f97316;
1031
+ }
1032
+
1033
+ /* ══════════════════════════════════════
1034
+ PAGE DIAGRAMME
1035
+ ══════════════════════════════════════ */
1036
+
1037
+ .diagram-page {
1038
+ overflow: hidden;
1039
+ height: 100vh;
1040
+ }
1041
+
1042
+ /* ── Barre d'outils ── */
1043
+ .diagram-topbar {
1044
+ position: fixed;
1045
+ top: 0;
1046
+ left: 0;
1047
+ right: 0;
1048
+ height: 48px;
1049
+ background: #fff;
1050
+ border-bottom: 1px solid #e7e5e4;
1051
+ display: flex;
1052
+ align-items: center;
1053
+ padding: 0 10px;
1054
+ gap: 4px;
1055
+ z-index: 20;
1056
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
1057
+ }
1058
+ .diagram-topbar-back {
1059
+ position: fixed;
1060
+ top: 8px;
1061
+ right: 16px;
1062
+ z-index: 50;
1063
+ font-size: 1rem;
1064
+ color: #78716c;
1065
+ text-decoration: none;
1066
+ background: #f5f5f4;
1067
+ border: 1px solid #e7e5e4;
1068
+ border-radius: 7px;
1069
+ width: 32px;
1070
+ height: 32px;
1071
+ display: flex;
1072
+ align-items: center;
1073
+ justify-content: center;
1074
+ transition:
1075
+ background 0.15s,
1076
+ color 0.15s;
1077
+ line-height: 1;
1078
+ }
1079
+ .diagram-topbar-back:hover {
1080
+ background: #292524;
1081
+ color: #fff;
1082
+ border-color: #292524;
1083
+ }
1084
+ .diagram-tool {
1085
+ font-size: 0.95rem;
1086
+ padding: 5px 9px;
1087
+ border-radius: 6px;
1088
+ border: 1px solid transparent;
1089
+ color: #78716c;
1090
+ background: none;
1091
+ cursor: pointer;
1092
+ transition:
1093
+ background 0.1s,
1094
+ color 0.1s,
1095
+ border-color 0.1s;
1096
+ display: flex;
1097
+ align-items: center;
1098
+ justify-content: center;
1099
+ min-width: 32px;
1100
+ height: 32px;
1101
+ flex-shrink: 0;
1102
+ }
1103
+ .diagram-tool:hover {
1104
+ background: #f5f5f4;
1105
+ color: #292524;
1106
+ border-color: #e7e5e4;
1107
+ }
1108
+ .diagram-tool.active {
1109
+ background: #292524;
1110
+ color: #fff;
1111
+ border-color: #292524;
1112
+ }
1113
+ .diagram-sep {
1114
+ color: #d6d3d1;
1115
+ font-size: 1rem;
1116
+ padding: 0 1px;
1117
+ flex-shrink: 0;
1118
+ }
1119
+ .diagram-title-input {
1120
+ flex: 1;
1121
+ min-width: 60px;
1122
+ max-width: 260px;
1123
+ font-family: "Cascadia Code", "SF Mono", Consolas, monospace;
1124
+ font-size: 0.72rem;
1125
+ font-weight: 600;
1126
+ letter-spacing: 0.05em;
1127
+ border: 1px solid transparent;
1128
+ border-radius: 6px;
1129
+ padding: 4px 10px;
1130
+ background: transparent;
1131
+ outline: none;
1132
+ text-align: center;
1133
+ color: #292524;
1134
+ transition:
1135
+ border-color 0.15s,
1136
+ background 0.15s;
1137
+ }
1138
+ .diagram-title-input:hover {
1139
+ border-color: #e7e5e4;
1140
+ }
1141
+ .diagram-title-input:focus {
1142
+ border-color: #f97316;
1143
+ background: #fff;
1144
+ }
1145
+ .zoom-level {
1146
+ font-family: "Cascadia Code", "SF Mono", Consolas, monospace;
1147
+ font-size: 0.62rem;
1148
+ color: #a8a29e;
1149
+ min-width: 38px;
1150
+ text-align: center;
1151
+ }
1152
+ .diagram-btn-save {
1153
+ font-family: "Cascadia Code", "SF Mono", Consolas, monospace;
1154
+ font-size: 0.62rem;
1155
+ letter-spacing: 0.08em;
1156
+ text-transform: uppercase;
1157
+ padding: 5px 12px;
1158
+ border-radius: 6px;
1159
+ background: #047857;
1160
+ border: 1px solid #047857;
1161
+ color: #fff;
1162
+ cursor: pointer;
1163
+ flex-shrink: 0;
1164
+ transition: background 0.15s;
1165
+ display: inline-flex;
1166
+ align-items: center;
1167
+ }
1168
+ .diagram-btn-save:hover {
1169
+ background: #059669;
1170
+ }
1171
+
1172
+ /* ── Canvas SVG ── */
1173
+ .diagram-canvas {
1174
+ position: fixed;
1175
+ top: 48px;
1176
+ left: 0;
1177
+ width: 100vw;
1178
+ height: calc(100vh - 48px);
1179
+ background: #fafaf9;
1180
+ background-image: radial-gradient(circle, #d6d3d1 1px, transparent 1px);
1181
+ background-size: 24px 24px;
1182
+ background-position: 0 48px;
1183
+ cursor: default;
1184
+ }
1185
+ .diagram-canvas[data-tool="rect"],
1186
+ .diagram-canvas[data-tool="rounded"],
1187
+ .diagram-canvas[data-tool="db"],
1188
+ .diagram-canvas[data-tool="cloud"],
1189
+ .diagram-canvas[data-tool="text"] {
1190
+ cursor: cell;
1191
+ }
1192
+ .diagram-canvas[data-tool="arrow"] {
1193
+ cursor: crosshair;
1194
+ }
1195
+
1196
+ /* ── Formes ── */
1197
+ .shape-group {
1198
+ cursor: grab;
1199
+ }
1200
+ .shape-group:active {
1201
+ cursor: grabbing;
1202
+ }
1203
+ .conn-dot {
1204
+ opacity: 0;
1205
+ transition: opacity 0.12s;
1206
+ cursor: crosshair;
1207
+ }
1208
+ .shape-group:hover .conn-dot {
1209
+ opacity: 1;
1210
+ }
1211
+ .diagram-canvas[data-tool="arrow"] .conn-dot {
1212
+ opacity: 0.4;
1213
+ }
1214
+ .diagram-canvas[data-tool="arrow"] .shape-group:hover .conn-dot {
1215
+ opacity: 1;
1216
+ }
1217
+ .resize-grip {
1218
+ cursor: se-resize;
1219
+ }
1220
+ .arrow-group {
1221
+ cursor: pointer;
1222
+ }
1223
+
1224
+ /* ── Panneau liste des diagrammes ── */
1225
+ .diagram-list-panel {
1226
+ position: fixed;
1227
+ top: 48px;
1228
+ left: -240px;
1229
+ width: 220px;
1230
+ height: calc(100vh - 48px);
1231
+ background: #fff;
1232
+ border-right: 1px solid #e7e5e4;
1233
+ z-index: 15;
1234
+ display: flex;
1235
+ flex-direction: column;
1236
+ transition: left 0.2s ease;
1237
+ box-shadow: 3px 0 10px rgba(0, 0, 0, 0.06);
1238
+ }
1239
+ .diagram-list-panel.open {
1240
+ left: 0;
1241
+ }
1242
+ .diagram-list-header {
1243
+ display: flex;
1244
+ align-items: center;
1245
+ justify-content: space-between;
1246
+ padding: 12px 16px;
1247
+ border-bottom: 1px solid #e7e5e4;
1248
+ font-family: "Cascadia Code", "SF Mono", Consolas, monospace;
1249
+ font-size: 0.62rem;
1250
+ letter-spacing: 0.1em;
1251
+ text-transform: uppercase;
1252
+ color: #a8a29e;
1253
+ }
1254
+ .diagram-list-header button {
1255
+ font-size: 0.75rem;
1256
+ padding: 3px 8px;
1257
+ border-radius: 5px;
1258
+ background: #fff7ed;
1259
+ color: #f97316;
1260
+ font-weight: 600;
1261
+ cursor: pointer;
1262
+ border: none;
1263
+ transition:
1264
+ background 0.1s,
1265
+ color 0.1s;
1266
+ }
1267
+ .diagram-list-header button:hover {
1268
+ background: #f97316;
1269
+ color: #fff;
1270
+ }
1271
+ #diagramList {
1272
+ flex: 1;
1273
+ overflow-y: auto;
1274
+ padding: 8px;
1275
+ }
1276
+ .diagram-list-item {
1277
+ display: flex;
1278
+ align-items: center;
1279
+ justify-content: space-between;
1280
+ gap: 6px;
1281
+ padding: 8px 10px;
1282
+ border-radius: 7px;
1283
+ cursor: pointer;
1284
+ margin-bottom: 2px;
1285
+ transition: background 0.1s;
1286
+ border-bottom: 2px solid transparent;
1287
+ }
1288
+ .diagram-list-item:hover {
1289
+ background: #f5f5f4;
1290
+ }
1291
+ .diagram-list-item.active {
1292
+ background: #fff7ed;
1293
+ }
1294
+ .diagram-list-item.dragging {
1295
+ opacity: 0.4;
1296
+ }
1297
+ .diagram-list-item.drag-over-after {
1298
+ border-bottom: 2px dashed #f97316;
1299
+ background: #fff7ed;
1300
+ }
1301
+ .diagram-list-item.drag-over-before {
1302
+ border-top: 2px dashed #f97316;
1303
+ background: #fff7ed;
1304
+ }
1305
+ .diagram-list-grip {
1306
+ font-size: 0.85rem;
1307
+ color: #c7c3bf;
1308
+ cursor: grab;
1309
+ flex-shrink: 0;
1310
+ user-select: none;
1311
+ line-height: 1;
1312
+ }
1313
+ .diagram-list-grip:active {
1314
+ cursor: grabbing;
1315
+ }
1316
+ .diagram-list-name {
1317
+ font-size: 0.8rem;
1318
+ flex: 1;
1319
+ color: #292524;
1320
+ word-break: break-word;
1321
+ }
1322
+ .diagram-list-del {
1323
+ opacity: 0;
1324
+ font-size: 0.8rem;
1325
+ padding: 2px 5px;
1326
+ border-radius: 4px;
1327
+ color: #ef4444;
1328
+ background: #fef2f2;
1329
+ cursor: pointer;
1330
+ border: none;
1331
+ flex-shrink: 0;
1332
+ transition:
1333
+ opacity 0.1s,
1334
+ background 0.1s;
1335
+ }
1336
+ .diagram-list-item:hover .diagram-list-del {
1337
+ opacity: 1;
1338
+ }
1339
+ .diagram-list-del:hover {
1340
+ background: #ef4444;
1341
+ color: #fff;
1342
+ }
1343
+
1344
+ /* ── Palette de couleurs ── */
1345
+ .diagram-color-panel {
1346
+ position: fixed;
1347
+ top: 56px;
1348
+ left: 50%;
1349
+ transform: translateX(-50%);
1350
+ background: #fff;
1351
+ border: 1px solid #e7e5e4;
1352
+ border-radius: 10px;
1353
+ padding: 7px 12px;
1354
+ display: flex;
1355
+ gap: 7px;
1356
+ z-index: 30;
1357
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
1358
+ }
1359
+ .color-dot {
1360
+ width: 20px;
1361
+ height: 20px;
1362
+ border-radius: 50%;
1363
+ cursor: pointer;
1364
+ border: 2px solid rgba(255, 255, 255, 0.6);
1365
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);
1366
+ transition: transform 0.1s;
1367
+ }
1368
+ .color-dot:hover {
1369
+ transform: scale(1.25);
1370
+ }
1371
+ .color-dot.t-green {
1372
+ background: #059669;
1373
+ }
1374
+ .color-dot.t-violet {
1375
+ background: #7c3aed;
1376
+ }
1377
+ .color-dot.t-amber {
1378
+ background: #d97706;
1379
+ }
1380
+ .color-dot.t-sky {
1381
+ background: #0284c7;
1382
+ }
1383
+ .color-dot.t-rose {
1384
+ background: #e11d48;
1385
+ }
1386
+ .color-dot.t-teal {
1387
+ background: #0d9488;
1388
+ }
1389
+ .diagram-color-edit {
1390
+ font-size: 1rem;
1391
+ width: 24px;
1392
+ height: 24px;
1393
+ border-radius: 6px;
1394
+ border: 1px solid #e7e5e4;
1395
+ background: #f5f5f4;
1396
+ color: #78716c;
1397
+ cursor: pointer;
1398
+ display: flex;
1399
+ align-items: center;
1400
+ justify-content: center;
1401
+ transition:
1402
+ background 0.1s,
1403
+ color 0.1s;
1404
+ flex-shrink: 0;
1405
+ }
1406
+ .diagram-color-edit:hover {
1407
+ background: #292524;
1408
+ color: #fff;
1409
+ border-color: #292524;
1410
+ }
1411
+ .diagram-color-font {
1412
+ width: auto;
1413
+ padding: 0 5px;
1414
+ font-size: .65rem;
1415
+ font-weight: 700;
1416
+ letter-spacing: -.02em;
1417
+ }
1418
+ .diagram-pick-active {
1419
+ background: #f97316;
1420
+ color: #fff;
1421
+ border-color: #f97316;
1422
+ }
1423
+
1424
+ /* ── Bouton diagramme dans index.html ── */
1425
+ .btn-diagram {
1426
+ position: fixed;
1427
+ top: 16px;
1428
+ right: 68px;
1429
+ z-index: 50;
1430
+ font-size: 1.1rem;
1431
+ color: #78716c;
1432
+ text-decoration: none;
1433
+ background: #f5f5f4;
1434
+ border: 1px solid #e7e5e4;
1435
+ border-radius: 8px;
1436
+ width: 40px;
1437
+ height: 40px;
1438
+ display: flex;
1439
+ align-items: center;
1440
+ justify-content: center;
1441
+ transition:
1442
+ background 0.15s,
1443
+ color 0.15s;
1444
+ line-height: 1;
1445
+ }
1446
+ .btn-diagram:hover {
1447
+ background: #292524;
1448
+ color: #fff;
1449
+ border-color: #292524;
1450
+ }
1451
+
1452
+ /* ── Swatch couleur dans le select ── */
1453
+ .color-preview {
1454
+ display: inline-block;
1455
+ width: 10px;
1456
+ height: 10px;
1457
+ border-radius: 50%;
1458
+ margin-right: 6px;
1459
+ vertical-align: middle;
1460
+ }