@qnote/q-ai-note 1.0.13 → 1.0.14

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.
@@ -120,6 +120,46 @@ body {
120
120
  color: var(--primary);
121
121
  }
122
122
 
123
+ .nav-group {
124
+ display: block;
125
+ }
126
+
127
+ .nav-group-header {
128
+ display: flex;
129
+ align-items: center;
130
+ }
131
+
132
+ .nav-group-toggle {
133
+ margin-right: 10px;
134
+ border: none;
135
+ background: transparent;
136
+ color: var(--text-secondary);
137
+ cursor: pointer;
138
+ width: 22px;
139
+ height: 22px;
140
+ line-height: 1;
141
+ border-radius: 6px;
142
+ }
143
+
144
+ .nav-group-toggle:hover {
145
+ background: var(--hover);
146
+ }
147
+
148
+ .nav-group.nav-group-collapsed .nav-sub-list {
149
+ display: none;
150
+ }
151
+
152
+ .nav-sub-list {
153
+ list-style: none;
154
+ padding: 2px 0 6px;
155
+ margin: 0;
156
+ }
157
+
158
+ .nav-sub-list a {
159
+ padding-left: 34px;
160
+ font-size: 13px;
161
+ }
162
+
123
163
  /* Main Content */
124
164
  .content {
125
165
  flex: 1;
@@ -134,6 +174,11 @@ body {
134
174
  animation: fadeIn 0.2s ease;
135
175
  }
136
176
 
177
+ #page-aser-runtime {
178
+ max-width: none;
179
+ margin: 0;
180
+ }
181
+
137
182
  #page-sandbox-detail {
138
183
  max-width: none;
139
184
  margin: 0;
@@ -177,227 +222,1525 @@ h2 {
177
222
  margin-bottom: 16px;
178
223
  }
179
224
 
180
- .summary-card {
181
- background: var(--bg);
182
- border: 1px solid var(--border);
183
- border-radius: 10px;
184
- padding: 10px 12px;
185
- min-width: 180px;
186
- flex: 1 1 220px;
225
+ .summary-card {
226
+ background: var(--bg);
227
+ border: 1px solid var(--border);
228
+ border-radius: 10px;
229
+ padding: 10px 12px;
230
+ min-width: 180px;
231
+ flex: 1 1 220px;
232
+ }
233
+
234
+ .summary-card .label {
235
+ font-size: 12px;
236
+ color: var(--text-secondary);
237
+ }
238
+
239
+ .summary-card .value {
240
+ margin-top: 4px;
241
+ font-size: 18px;
242
+ font-weight: 600;
243
+ }
244
+
245
+ .action-strip {
246
+ display: flex;
247
+ align-items: center;
248
+ gap: 10px;
249
+ margin-bottom: 14px;
250
+ }
251
+
252
+ .action-strip input,
253
+ .action-strip select,
254
+ .inline-actions input,
255
+ .inline-actions select {
256
+ border: 1px solid var(--border);
257
+ border-radius: 8px;
258
+ padding: 8px 10px;
259
+ font-size: 13px;
260
+ background: var(--bg);
261
+ }
262
+
263
+ .inline-actions {
264
+ display: flex;
265
+ align-items: center;
266
+ gap: 8px;
267
+ }
268
+
269
+ #work-tree-collapse-action {
270
+ min-width: 132px;
271
+ }
272
+
273
+ .inline-checkbox {
274
+ display: inline-flex;
275
+ align-items: center;
276
+ gap: 4px;
277
+ font-size: 12px;
278
+ color: var(--text-secondary);
279
+ user-select: none;
280
+ }
281
+
282
+ .inline-checkbox input[type="checkbox"] {
283
+ width: 14px;
284
+ height: 14px;
285
+ }
286
+
287
+ .insight-box {
288
+ background: #eef3fd;
289
+ border: 1px solid #c6d5f8;
290
+ color: #17366f;
291
+ border-radius: 10px;
292
+ padding: 10px 12px;
293
+ margin-bottom: 12px;
294
+ white-space: pre-wrap;
295
+ }
296
+
297
+ .insight-box-header {
298
+ display: flex;
299
+ align-items: center;
300
+ justify-content: space-between;
301
+ margin-bottom: 8px;
302
+ }
303
+
304
+ .changes-list {
305
+ display: flex;
306
+ flex-direction: column;
307
+ gap: 10px;
308
+ }
309
+
310
+ .change-date-group {
311
+ display: flex;
312
+ flex-direction: column;
313
+ gap: 8px;
314
+ }
315
+
316
+ .change-date-title {
317
+ margin: 4px 0;
318
+ font-size: 13px;
319
+ color: var(--text-secondary);
320
+ }
321
+
322
+ .change-item {
323
+ background: var(--bg);
324
+ border: 1px solid var(--border);
325
+ border-radius: 10px;
326
+ padding: 10px 12px;
327
+ }
328
+
329
+ .change-meta {
330
+ display: flex;
331
+ gap: 10px;
332
+ align-items: center;
333
+ margin-bottom: 6px;
334
+ font-size: 12px;
335
+ color: var(--text-secondary);
336
+ }
337
+
338
+ .change-target {
339
+ background: #f1f3f4;
340
+ border: 1px solid var(--border);
341
+ border-radius: 999px;
342
+ padding: 1px 8px;
343
+ }
344
+
345
+ .change-type {
346
+ font-size: 11px;
347
+ border-radius: 8px;
348
+ padding: 2px 8px;
349
+ color: #fff;
350
+ }
351
+
352
+ .change-type.create { background: var(--success); }
353
+ .change-type.update { background: var(--primary); }
354
+ .change-type.delete { background: var(--error); }
355
+
356
+ .change-detail {
357
+ font-size: 13px;
358
+ line-height: 1.5;
359
+ }
360
+
361
+ .change-diff-list {
362
+ margin-top: 6px;
363
+ display: flex;
364
+ flex-direction: column;
365
+ gap: 4px;
366
+ }
367
+
368
+ .change-diff-line {
369
+ font-size: 12px;
370
+ color: var(--text-secondary);
371
+ }
372
+
373
+ .btn-sm {
374
+ padding: 6px 14px;
375
+ font-size: 13px;
376
+ }
377
+
378
+ /* Cards */
379
+ .card {
380
+ background: var(--bg);
381
+ border-radius: 12px;
382
+ box-shadow: var(--shadow);
383
+ padding: 20px 24px;
384
+ margin-bottom: 16px;
385
+ transition: box-shadow 0.2s;
386
+ }
387
+
388
+ .card:hover {
389
+ box-shadow: 0 4px 8px rgba(0,0,0,0.16);
390
+ }
391
+
392
+ /* Sandbox List */
393
+ .sandbox-grid {
394
+ display: grid;
395
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
396
+ gap: 16px;
397
+ }
398
+
399
+ .sandbox-card {
400
+ cursor: pointer;
401
+ transition: transform 0.2s, box-shadow 0.2s;
402
+ }
403
+
404
+ .sandbox-card:hover {
405
+ transform: translateY(-2px);
406
+ }
407
+
408
+ .sandbox-card h3 {
409
+ font-size: 16px;
410
+ font-weight: 500;
411
+ margin-bottom: 8px;
412
+ }
413
+
414
+ .sandbox-card p {
415
+ color: var(--text-secondary);
416
+ font-size: 13px;
417
+ }
418
+
419
+ .sandbox-meta {
420
+ display: flex;
421
+ gap: 12px;
422
+ margin-top: 12px;
423
+ font-size: 12px;
424
+ color: var(--text-secondary);
425
+ }
426
+
427
+ .sandbox-page-actions {
428
+ display: flex;
429
+ align-items: center;
430
+ flex-wrap: wrap;
431
+ gap: 10px;
432
+ margin-top: 12px;
433
+ }
434
+
435
+ .sandbox-sort-label {
436
+ display: inline-flex;
437
+ align-items: center;
438
+ gap: 8px;
439
+ font-size: 12px;
440
+ color: var(--text-secondary);
441
+ }
442
+
443
+ .sandbox-sort-label select {
444
+ min-width: 180px;
445
+ height: 34px;
446
+ }
447
+
448
+ .aser-intro {
449
+ margin: -8px 0 14px;
450
+ color: var(--text-secondary);
451
+ }
452
+
453
+ .aser-demo-panel {
454
+ border: 1px solid var(--border);
455
+ border-radius: 10px;
456
+ background: #fbfdff;
457
+ padding: 10px;
458
+ display: grid;
459
+ gap: 8px;
460
+ margin-bottom: 10px;
461
+ }
462
+
463
+ .aser-demo-top {
464
+ display: flex;
465
+ align-items: center;
466
+ justify-content: space-between;
467
+ gap: 8px;
468
+ }
469
+
470
+ .aser-demo-progress {
471
+ font-size: 12px;
472
+ color: var(--text-secondary);
473
+ }
474
+
475
+ .aser-demo-progress-bar {
476
+ height: 6px;
477
+ border-radius: 6px;
478
+ background: #eaf0fb;
479
+ overflow: hidden;
480
+ }
481
+
482
+ .aser-demo-progress-inner {
483
+ height: 100%;
484
+ width: 0%;
485
+ background: linear-gradient(90deg, #7ea8f2 0%, #5c8de3 100%);
486
+ transition: width 0.2s ease;
487
+ }
488
+
489
+ .aser-demo-steps {
490
+ display: grid;
491
+ gap: 4px;
492
+ }
493
+
494
+ .aser-demo-step {
495
+ font-size: 12px;
496
+ border: 1px solid var(--border);
497
+ border-radius: 6px;
498
+ background: #fff;
499
+ padding: 6px 8px;
500
+ color: var(--text-secondary);
501
+ }
502
+
503
+ .aser-demo-step.done {
504
+ border-color: #7ea8f2;
505
+ color: #184a97;
506
+ background: #eef5ff;
507
+ }
508
+
509
+ .aser-demo-step.active {
510
+ border-style: dashed;
511
+ }
512
+
513
+ .aser-demo-step.can-jump {
514
+ cursor: pointer;
515
+ }
516
+
517
+ .aser-demo-step.can-jump:hover {
518
+ background: #f3f7ff;
519
+ }
520
+
521
+ .aser-demo-empty {
522
+ font-size: 12px;
523
+ color: var(--text-secondary);
524
+ }
525
+
526
+ .aser-demo-logs {
527
+ border-top: 1px dashed var(--border);
528
+ padding-top: 8px;
529
+ display: grid;
530
+ gap: 4px;
531
+ max-height: 120px;
532
+ overflow: auto;
533
+ }
534
+
535
+ .aser-demo-log {
536
+ font-size: 12px;
537
+ color: var(--text-secondary);
538
+ }
539
+
540
+ .aser-layout {
541
+ display: grid;
542
+ grid-template-columns: minmax(260px, 1fr) minmax(540px, 2fr) minmax(260px, 1fr);
543
+ gap: 12px;
544
+ }
545
+
546
+ .aser-left-panel,
547
+ .aser-center-panel,
548
+ .aser-right-panel {
549
+ background: var(--bg);
550
+ border: 1px solid var(--border);
551
+ border-radius: 10px;
552
+ padding: 12px;
553
+ min-height: 320px;
554
+ }
555
+
556
+ .aser-left-panel {
557
+ display: grid;
558
+ grid-template-rows: auto auto auto;
559
+ align-content: start;
560
+ gap: 10px;
561
+ }
562
+
563
+ .aser-left-bottom {
564
+ border: 1px solid var(--border);
565
+ border-radius: 10px;
566
+ background: #fcfcff;
567
+ padding: 10px;
568
+ display: grid;
569
+ gap: 8px;
570
+ }
571
+
572
+ .aser-left-panel .aser-left-bottom + .aser-left-bottom {
573
+ margin-top: 2px;
574
+ }
575
+
576
+ .aser-left-bottom h3 {
577
+ margin: 0;
578
+ font-size: 13px;
579
+ color: var(--text-secondary);
580
+ }
581
+
582
+ .aser-protocol-visual {
583
+ border: 1px solid var(--border);
584
+ border-radius: 8px;
585
+ background: #fff;
586
+ padding: 10px;
587
+ max-height: 280px;
588
+ overflow: auto;
589
+ display: grid;
590
+ gap: 8px;
591
+ }
592
+
593
+ .aser-protocol-flow {
594
+ border: 1px dashed var(--border);
595
+ border-radius: 8px;
596
+ background: #fbfdff;
597
+ padding: 8px;
598
+ display: flex;
599
+ flex-wrap: wrap;
600
+ align-items: flex-start;
601
+ align-content: flex-start;
602
+ gap: 6px;
603
+ min-height: 72px;
604
+ max-height: 168px;
605
+ overflow: auto;
606
+ }
607
+
608
+ .aser-flow-node {
609
+ border: 1px solid var(--border);
610
+ border-radius: 999px;
611
+ background: #fff;
612
+ padding: 4px 10px;
613
+ display: inline-flex;
614
+ flex-direction: column;
615
+ gap: 2px;
616
+ font-size: 11px;
617
+ }
618
+
619
+ .aser-flow-node small {
620
+ font-size: 10px;
621
+ color: var(--text-secondary);
622
+ }
623
+
624
+ .aser-protocol-flow .aser-flow-require {
625
+ display: none;
626
+ }
627
+
628
+ .aser-flow-node-status {
629
+ width: 10px;
630
+ height: 10px;
631
+ border-radius: 999px;
632
+ border: 1px solid #dce2ef;
633
+ background: #f7f9fd;
634
+ display: inline-block;
635
+ }
636
+
637
+ .aser-flow-node-status.aser-status-done {
638
+ border-color: #8fd3a3;
639
+ background: #5fbf7a;
640
+ }
641
+
642
+ .aser-flow-node-status.aser-status-active {
643
+ border-color: #8dc2ff;
644
+ background: #5b9ef4;
645
+ }
646
+
647
+ .aser-flow-node-status.aser-status-risk {
648
+ border-color: #f0b176;
649
+ background: #e58e3f;
650
+ }
651
+
652
+ .aser-flow-node-status.aser-status-idle {
653
+ border-color: #dce2ef;
654
+ background: #e7ebf4;
655
+ }
656
+
657
+ .aser-flow-node.is-clarify {
658
+ border-color: #86b2f4;
659
+ background: #eef6ff;
660
+ }
661
+
662
+ .aser-flow-node.is-escalate {
663
+ border-color: #f1b26f;
664
+ background: #fff7ed;
665
+ }
666
+
667
+ .aser-flow-node.is-coverage-done {
668
+ border-color: #8fd3a3;
669
+ background: #eefbf2;
670
+ }
671
+
672
+ .aser-flow-node.is-coverage-active {
673
+ border-color: #8dc2ff;
674
+ background: #eef7ff;
675
+ }
676
+
677
+ .aser-flow-node.is-coverage-risk {
678
+ border-color: #f0b176;
679
+ background: #fff5eb;
680
+ }
681
+
682
+ .aser-flow-arrow {
683
+ color: var(--text-secondary);
684
+ font-size: 12px;
685
+ align-self: center;
686
+ margin: 0 2px;
687
+ }
688
+
689
+ .aser-protocol-meta {
690
+ font-size: 12px;
691
+ color: var(--text-secondary);
692
+ }
693
+
694
+ .aser-protocol-block {
695
+ display: grid;
696
+ gap: 4px;
697
+ }
698
+
699
+ .aser-protocol-block-title {
700
+ font-size: 12px;
701
+ font-weight: 600;
702
+ }
703
+
704
+ .aser-protocol-line {
705
+ font-size: 12px;
706
+ color: var(--text-secondary);
707
+ }
708
+
709
+ .aser-protocol-coverage-meta {
710
+ display: inline-block;
711
+ margin-left: 6px;
712
+ padding: 1px 6px;
713
+ border-radius: 999px;
714
+ border: 1px solid #dbe6ff;
715
+ background: #f3f7ff;
716
+ color: #315d9e;
717
+ font-size: 11px;
718
+ }
719
+
720
+ .aser-protocol-coverage-meta.is-done {
721
+ border-color: #8fd3a3;
722
+ background: #eefbf2;
723
+ color: #2f6b3d;
724
+ }
725
+
726
+ .aser-protocol-coverage-meta.is-active {
727
+ border-color: #8dc2ff;
728
+ background: #eef7ff;
729
+ color: #245b9b;
730
+ }
731
+
732
+ .aser-protocol-coverage-meta.is-risk {
733
+ border-color: #f0b176;
734
+ background: #fff5eb;
735
+ color: #8a4e12;
736
+ }
737
+
738
+ .aser-protocol-coverage-meta.is-idle {
739
+ border-color: #dce2ef;
740
+ background: #f7f9fd;
741
+ color: #6d7585;
742
+ }
743
+
744
+ .aser-toggle-inline {
745
+ display: inline-flex;
746
+ align-items: center;
747
+ gap: 6px;
748
+ font-size: 12px;
749
+ color: var(--text-secondary);
750
+ border: 1px solid var(--border);
751
+ border-radius: 999px;
752
+ padding: 2px 8px;
753
+ background: #fff;
754
+ }
755
+
756
+ .aser-toggle-inline input {
757
+ margin: 0;
758
+ }
759
+
760
+ .aser-project-list {
761
+ display: grid;
762
+ gap: 8px;
763
+ max-height: 420px;
764
+ overflow: auto;
765
+ padding-right: 2px;
766
+ }
767
+
768
+ .aser-project-item {
769
+ border: 1px solid var(--border);
770
+ border-radius: 8px;
771
+ background: #fff;
772
+ text-align: left;
773
+ padding: 8px;
774
+ display: flex;
775
+ align-items: flex-start;
776
+ justify-content: space-between;
777
+ gap: 8px;
778
+ }
779
+
780
+ .aser-project-item:hover {
781
+ border-color: #a3c2ff;
782
+ background: #f7faff;
783
+ }
784
+
785
+ .aser-project-item.active {
786
+ border-color: #7ea8f2;
787
+ background: #eef5ff;
788
+ }
789
+
790
+ .aser-project-main-btn {
791
+ border: none;
792
+ background: transparent;
793
+ cursor: pointer;
794
+ text-align: left;
795
+ display: flex;
796
+ flex-direction: column;
797
+ gap: 4px;
798
+ width: 100%;
799
+ }
800
+
801
+ .aser-project-delete-btn {
802
+ align-self: center;
803
+ color: #9b2c2c;
804
+ width: 30px;
805
+ min-width: 30px;
806
+ padding: 4px;
807
+ justify-content: center;
808
+ font-size: 15px;
809
+ line-height: 1;
810
+ }
811
+
812
+ .aser-project-list-pager {
813
+ margin-top: 6px;
814
+ display: flex;
815
+ align-items: center;
816
+ justify-content: flex-end;
817
+ gap: 8px;
818
+ }
819
+
820
+ .aser-project-pager-text {
821
+ font-size: 12px;
822
+ color: var(--text-secondary);
823
+ }
824
+
825
+ .aser-project-overview .aser-project-detail-row {
826
+ background: #fff;
827
+ }
828
+
829
+ .aser-project-name {
830
+ font-weight: 600;
831
+ }
832
+
833
+ .aser-project-meta {
834
+ font-size: 12px;
835
+ color: var(--text-secondary);
836
+ }
837
+
838
+ .aser-create-form {
839
+ display: grid;
840
+ gap: 10px;
841
+ }
842
+
843
+ .aser-create-form h3,
844
+ .aser-form-grid h3,
845
+ .aser-runtime-board h3 {
846
+ font-size: 13px;
847
+ margin: 0;
848
+ color: var(--text-secondary);
849
+ }
850
+
851
+ .aser-create-form input,
852
+ .aser-create-form textarea,
853
+ .aser-form-grid input,
854
+ .aser-form-grid textarea,
855
+ .aser-form-grid select {
856
+ border: 1px solid var(--border);
857
+ border-radius: 8px;
858
+ padding: 10px;
859
+ font-size: 13px;
860
+ font-family: inherit;
861
+ }
862
+
863
+ .aser-divider {
864
+ height: 1px;
865
+ background: var(--border);
866
+ margin: 12px 0;
867
+ }
868
+
869
+ .aser-form-grid {
870
+ display: grid;
871
+ gap: 8px;
872
+ }
873
+
874
+ .aser-inline-actions {
875
+ display: flex;
876
+ flex-wrap: wrap;
877
+ gap: 8px;
878
+ }
879
+
880
+ .aser-inline-actions select {
881
+ min-width: 180px;
882
+ }
883
+
884
+ #teams-agent-select {
885
+ min-height: 140px;
886
+ }
887
+
888
+ #opencode-runner-task-list {
889
+ max-height: 320px;
890
+ overflow: auto;
891
+ padding-right: 6px;
892
+ }
893
+
894
+ #opencode-runner-timeline {
895
+ max-height: 360px;
896
+ overflow: auto;
897
+ padding-right: 6px;
898
+ }
899
+
900
+ .aser-inline-actions .btn.active {
901
+ background: #d9e8ff;
902
+ color: #184a97;
903
+ }
904
+
905
+ .aser-pulled-task {
906
+ border: 1px dashed var(--border);
907
+ border-radius: 8px;
908
+ background: #fcfcff;
909
+ padding: 8px;
910
+ font-size: 12px;
911
+ color: var(--text-secondary);
912
+ min-height: 40px;
913
+ white-space: pre-wrap;
914
+ word-break: break-word;
915
+ }
916
+
917
+ .aser-chat-process-list {
918
+ display: grid;
919
+ gap: 8px;
920
+ }
921
+
922
+ .aser-chat-task {
923
+ border: 1px solid var(--border);
924
+ border-radius: 8px;
925
+ background: #fafcff;
926
+ padding: 8px;
927
+ display: grid;
928
+ gap: 5px;
929
+ cursor: pointer;
930
+ text-align: left;
931
+ }
932
+
933
+ .aser-chat-task.active {
934
+ border-color: #7ea8f2;
935
+ background: #eef5ff;
936
+ }
937
+
938
+ .aser-chat-task-head {
939
+ display: flex;
940
+ justify-content: space-between;
941
+ align-items: center;
942
+ gap: 8px;
943
+ }
944
+
945
+ .aser-chat-task-title {
946
+ font-size: 13px;
947
+ font-weight: 600;
948
+ flex: 1;
949
+ }
950
+
951
+ .aser-role-badge {
952
+ border-radius: 999px;
953
+ padding: 2px 8px;
954
+ font-size: 10px;
955
+ font-weight: 700;
956
+ letter-spacing: 0.3px;
957
+ border: 1px solid var(--border);
958
+ }
959
+
960
+ .aser-role-badge.pm {
961
+ background: #eaf3ff;
962
+ border-color: #9ec0ef;
963
+ }
964
+
965
+ .aser-role-badge.arch {
966
+ background: #f1efff;
967
+ border-color: #b7abef;
968
+ }
969
+
970
+ .aser-role-badge.dev {
971
+ background: #ecf8f0;
972
+ border-color: #9ad3b0;
973
+ }
974
+
975
+ .aser-role-badge.rev {
976
+ background: #fff3e8;
977
+ border-color: #efc08a;
978
+ }
979
+
980
+ .aser-chat-task-status,
981
+ .aser-chat-task-meta {
982
+ font-size: 12px;
983
+ color: var(--text-secondary);
984
+ }
985
+
986
+ .aser-chat-task-status {
987
+ border-radius: 999px;
988
+ padding: 2px 8px;
989
+ border: 1px solid var(--border);
990
+ background: #fff;
991
+ }
992
+
993
+ .aser-chat-task-timeline {
994
+ margin-top: 2px;
995
+ border-top: 1px dashed var(--border);
996
+ padding-top: 6px;
997
+ display: grid;
998
+ gap: 4px;
999
+ }
1000
+
1001
+ .aser-chat-task-interaction {
1002
+ font-size: 11px;
1003
+ display: grid;
1004
+ gap: 2px;
1005
+ color: var(--text-secondary);
1006
+ }
1007
+
1008
+ .aser-chat-task-interaction strong {
1009
+ color: var(--text);
1010
+ }
1011
+
1012
+ .aser-task-graph {
1013
+ border: 1px solid var(--border);
1014
+ border-radius: 8px;
1015
+ background: #fff;
1016
+ padding: 10px;
1017
+ display: grid;
1018
+ gap: 6px;
1019
+ }
1020
+
1021
+ .aser-sequence-header {
1022
+ display: flex;
1023
+ align-items: center;
1024
+ border: 1px solid var(--border);
1025
+ border-radius: 8px;
1026
+ background: #f8fbff;
1027
+ overflow: hidden;
1028
+ }
1029
+
1030
+ .aser-sequence-lane {
1031
+ border-right: 1px dashed #dbe5f5;
1032
+ min-height: 48px;
1033
+ display: grid;
1034
+ justify-items: center;
1035
+ align-content: center;
1036
+ gap: 2px;
1037
+ font-size: 11px;
1038
+ color: var(--text-secondary);
1039
+ }
1040
+
1041
+ .aser-sequence-lane:last-child {
1042
+ border-right: none;
1043
+ }
1044
+
1045
+ .aser-sequence-body {
1046
+ border: 1px solid var(--border);
1047
+ border-radius: 8px;
1048
+ background: #fff;
1049
+ padding: 10px;
1050
+ display: grid;
1051
+ gap: 10px;
1052
+ position: relative;
1053
+ }
1054
+
1055
+ .aser-sequence-row {
1056
+ position: relative;
1057
+ min-height: 72px;
1058
+ padding-top: 4px;
1059
+ }
1060
+
1061
+ .aser-sequence-arrow {
1062
+ position: absolute;
1063
+ top: 36px;
1064
+ height: 2px;
1065
+ background: #89a8df;
1066
+ }
1067
+
1068
+ .aser-sequence-arrow::after {
1069
+ content: '';
1070
+ position: absolute;
1071
+ right: -1px;
1072
+ top: -3px;
1073
+ border-left: 6px solid #89a8df;
1074
+ border-top: 4px solid transparent;
1075
+ border-bottom: 4px solid transparent;
1076
+ }
1077
+
1078
+ .aser-sequence-arrow.reverse::after {
1079
+ right: auto;
1080
+ left: -1px;
1081
+ border-left: none;
1082
+ border-right: 6px solid #89a8df;
1083
+ }
1084
+
1085
+ .aser-sequence-message {
1086
+ position: relative;
1087
+ z-index: 1;
1088
+ border: 1px solid var(--border);
1089
+ border-radius: 8px;
1090
+ background: #fafcff;
1091
+ width: min(94%, 860px);
1092
+ margin: 0 auto;
1093
+ padding: 6px 8px;
1094
+ display: grid;
1095
+ gap: 2px;
1096
+ text-align: left;
1097
+ cursor: pointer;
1098
+ font-size: 11px;
1099
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06);
1100
+ }
1101
+
1102
+ .aser-sequence-time {
1103
+ color: var(--text-secondary);
1104
+ }
1105
+
1106
+ .aser-sequence-transition {
1107
+ color: #1f4f9d;
1108
+ font-weight: 600;
1109
+ }
1110
+
1111
+ .aser-graph-overview {
1112
+ font-size: 12px;
1113
+ color: var(--text-secondary);
1114
+ border-bottom: 1px dashed var(--border);
1115
+ padding-bottom: 4px;
1116
+ margin-bottom: 2px;
1117
+ }
1118
+
1119
+ .aser-graph-row {
1120
+ display: grid;
1121
+ justify-items: center;
1122
+ gap: 4px;
1123
+ }
1124
+
1125
+ .aser-graph-node {
1126
+ border: 1px solid var(--border);
1127
+ border-radius: 8px;
1128
+ background: #fafcff;
1129
+ width: min(100%, 360px);
1130
+ padding: 8px;
1131
+ display: flex;
1132
+ justify-content: space-between;
1133
+ gap: 8px;
1134
+ cursor: pointer;
1135
+ text-align: left;
1136
+ }
1137
+
1138
+ .aser-graph-node.active {
1139
+ border-color: #7ea8f2;
1140
+ background: #eef5ff;
1141
+ }
1142
+
1143
+ .aser-graph-node .name {
1144
+ font-size: 13px;
1145
+ font-weight: 600;
1146
+ }
1147
+
1148
+ .aser-graph-node .status,
1149
+ .aser-graph-arrow {
1150
+ font-size: 12px;
1151
+ color: var(--text-secondary);
1152
+ }
1153
+
1154
+ .aser-graph-link {
1155
+ font-size: 11px;
1156
+ color: var(--text-secondary);
1157
+ }
1158
+
1159
+ .aser-task-flow {
1160
+ border: 1px solid var(--border);
1161
+ border-radius: 8px;
1162
+ background: #fff;
1163
+ padding: 8px;
1164
+ max-height: 220px;
1165
+ overflow: auto;
1166
+ display: grid;
1167
+ gap: 8px;
1168
+ }
1169
+
1170
+ .aser-task-thread {
1171
+ border: 1px solid var(--border);
1172
+ border-radius: 8px;
1173
+ background: #fff;
1174
+ padding: 8px;
1175
+ display: grid;
1176
+ gap: 6px;
1177
+ }
1178
+
1179
+ .aser-thread-group {
1180
+ border: 1px solid var(--border);
1181
+ border-radius: 8px;
1182
+ background: #fcfdff;
1183
+ overflow: hidden;
1184
+ }
1185
+
1186
+ .aser-thread-group-head {
1187
+ padding: 8px;
1188
+ display: grid;
1189
+ gap: 2px;
1190
+ border-bottom: 1px dashed var(--border);
1191
+ cursor: pointer;
1192
+ }
1193
+
1194
+ .aser-thread-group-body {
1195
+ padding: 6px;
1196
+ display: grid;
1197
+ gap: 4px;
1198
+ }
1199
+
1200
+ .aser-thread-root,
1201
+ .aser-thread-child {
1202
+ border: 1px solid var(--border);
1203
+ border-radius: 8px;
1204
+ background: #fafcff;
1205
+ padding: 6px 8px;
1206
+ font-size: 12px;
1207
+ cursor: pointer;
1208
+ }
1209
+
1210
+ .aser-thread-root.mainline,
1211
+ .aser-thread-child.mainline {
1212
+ border-left: 3px solid #7ea8f2;
1213
+ }
1214
+
1215
+ .aser-thread-root.loop,
1216
+ .aser-thread-child.loop {
1217
+ border-left: 3px solid #f0b176;
1218
+ background: #fffaf3;
1219
+ }
1220
+
1221
+ .aser-thread-child {
1222
+ margin-left: 0;
1223
+ }
1224
+
1225
+ .aser-thread-related {
1226
+ font-size: 11px;
1227
+ color: var(--text-secondary);
1228
+ }
1229
+
1230
+ .aser-thread-flow-tag {
1231
+ justify-self: start;
1232
+ border: 1px solid var(--border);
1233
+ border-radius: 999px;
1234
+ padding: 1px 8px;
1235
+ font-size: 10px;
1236
+ font-weight: 600;
1237
+ }
1238
+
1239
+ .aser-thread-flow-tag.mainline {
1240
+ border-color: #8dc2ff;
1241
+ background: #eef7ff;
1242
+ color: #245b9b;
1243
+ }
1244
+
1245
+ .aser-thread-flow-tag.loop {
1246
+ border-color: #f0b176;
1247
+ background: #fff5eb;
1248
+ color: #8a4e12;
1249
+ }
1250
+
1251
+ .aser-thread-badge {
1252
+ justify-self: start;
1253
+ border: 1px solid var(--border);
1254
+ border-radius: 999px;
1255
+ padding: 1px 8px;
1256
+ font-size: 10px;
1257
+ font-weight: 600;
1258
+ }
1259
+
1260
+ .aser-thread-badge.risk {
1261
+ border-color: #f0b176;
1262
+ background: #fff5eb;
1263
+ color: #8a4e12;
1264
+ }
1265
+
1266
+ .aser-thread-badge.normal {
1267
+ border-color: #8fd3a3;
1268
+ background: #eefbf2;
1269
+ color: #2f6b3d;
1270
+ }
1271
+
1272
+ .aser-task-flow-row {
1273
+ border: 1px solid var(--border);
1274
+ border-radius: 8px;
1275
+ background: #fafcff;
1276
+ padding: 8px;
1277
+ display: grid;
1278
+ gap: 6px;
1279
+ cursor: pointer;
1280
+ }
1281
+
1282
+ .aser-task-flow-row.active {
1283
+ border-color: #7ea8f2;
1284
+ background: #eef5ff;
1285
+ }
1286
+
1287
+ .aser-task-flow-head {
1288
+ display: flex;
1289
+ justify-content: space-between;
1290
+ align-items: center;
1291
+ gap: 8px;
1292
+ }
1293
+
1294
+ .aser-task-flow-meta,
1295
+ .aser-task-flow-time {
1296
+ font-size: 11px;
1297
+ color: var(--text-secondary);
1298
+ }
1299
+
1300
+ .aser-task-flow-track {
1301
+ display: flex;
1302
+ flex-wrap: wrap;
1303
+ align-items: center;
1304
+ gap: 6px;
1305
+ }
1306
+
1307
+ .aser-task-flow-chip {
1308
+ border-radius: 999px;
1309
+ border: 1px solid var(--border);
1310
+ background: #fff;
1311
+ font-size: 11px;
1312
+ padding: 2px 8px;
1313
+ }
1314
+
1315
+ .aser-pm-board {
1316
+ display: grid;
1317
+ gap: 8px;
1318
+ }
1319
+
1320
+ .aser-pm-kpi-row {
1321
+ display: grid;
1322
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1323
+ gap: 6px;
1324
+ }
1325
+
1326
+ .aser-pm-kpi {
1327
+ border: 1px solid var(--border);
1328
+ border-radius: 8px;
1329
+ padding: 6px 8px;
1330
+ font-size: 12px;
1331
+ background: #fcfcfc;
1332
+ }
1333
+
1334
+ .aser-pm-card-grid {
1335
+ display: grid;
1336
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1337
+ gap: 6px;
1338
+ }
1339
+
1340
+ .aser-pm-card {
1341
+ border: 1px solid var(--border);
1342
+ border-radius: 8px;
1343
+ background: #fff;
1344
+ padding: 6px 8px;
1345
+ display: grid;
1346
+ gap: 3px;
1347
+ }
1348
+
1349
+ .aser-pm-card.risk {
1350
+ border-color: #f1b26f;
1351
+ background: #fff8ef;
1352
+ }
1353
+
1354
+ .aser-pm-card-title {
1355
+ font-size: 12px;
1356
+ font-weight: 600;
1357
+ }
1358
+
1359
+ .aser-pm-card-meta {
1360
+ font-size: 11px;
1361
+ color: var(--text-secondary);
1362
+ }
1363
+
1364
+ .is-created {
1365
+ border-color: #d6dbe5 !important;
1366
+ background: #fff !important;
1367
+ }
1368
+
1369
+ .is-progress {
1370
+ border-color: #8dc2ff !important;
1371
+ background: #eef7ff !important;
1372
+ }
1373
+
1374
+ .is-review {
1375
+ border-color: #b9a0ff !important;
1376
+ background: #f5f0ff !important;
1377
+ }
1378
+
1379
+ .is-done {
1380
+ border-color: #8fd3a3 !important;
1381
+ background: #eefbf2 !important;
1382
+ }
1383
+
1384
+ .is-risk {
1385
+ border-color: #f0b176 !important;
1386
+ background: #fff5eb !important;
1387
+ }
1388
+
1389
+ .aser-focus-detail {
1390
+ min-height: 120px;
1391
+ white-space: pre-wrap;
1392
+ color: var(--text-secondary);
1393
+ font-size: 13px;
1394
+ display: grid;
1395
+ gap: 6px;
1396
+ }
1397
+
1398
+ .aser-focus-title {
1399
+ color: var(--text);
1400
+ font-size: 14px;
1401
+ font-weight: 600;
1402
+ }
1403
+
1404
+ .aser-focus-line {
1405
+ font-size: 12px;
1406
+ color: var(--text-secondary);
1407
+ }
1408
+
1409
+ .aser-focus-section {
1410
+ border: 1px solid var(--border);
1411
+ border-radius: 8px;
1412
+ padding: 8px;
1413
+ background: #fbfcff;
1414
+ display: grid;
1415
+ gap: 5px;
1416
+ }
1417
+
1418
+ .aser-focus-section-title {
1419
+ font-size: 12px;
1420
+ font-weight: 600;
1421
+ color: var(--text);
1422
+ }
1423
+
1424
+ .aser-evidence-gap-row {
1425
+ display: flex;
1426
+ flex-wrap: wrap;
1427
+ gap: 6px;
1428
+ }
1429
+
1430
+ .aser-evidence-chip {
1431
+ border: 1px solid var(--border);
1432
+ border-radius: 999px;
1433
+ padding: 2px 8px;
1434
+ font-size: 11px;
1435
+ font-weight: 600;
1436
+ }
1437
+
1438
+ .aser-evidence-chip.missing {
1439
+ border-color: #f0b176;
1440
+ background: #fff5eb;
1441
+ color: #8a4e12;
1442
+ }
1443
+
1444
+ .aser-evidence-chip.done {
1445
+ border-color: #8fd3a3;
1446
+ background: #eefbf2;
1447
+ color: #2f6b3d;
1448
+ }
1449
+
1450
+ .aser-dialog-shell {
1451
+ min-width: min(90vw, 760px);
1452
+ padding: 20px;
1453
+ border-radius: 14px;
1454
+ background: #fff;
1455
+ display: grid;
1456
+ gap: 12px;
1457
+ }
1458
+
1459
+ .aser-dialog-shell h3 {
1460
+ margin: 0;
1461
+ font-size: 18px;
1462
+ font-weight: 600;
1463
+ color: var(--text);
1464
+ padding-bottom: 8px;
1465
+ border-bottom: 1px solid var(--border);
1466
+ }
1467
+
1468
+ .aser-dialog-shell input,
1469
+ .aser-dialog-shell textarea,
1470
+ .aser-dialog-shell select {
1471
+ border: 1px solid var(--border);
1472
+ border-radius: 8px;
1473
+ padding: 10px;
1474
+ font-size: 13px;
1475
+ font-family: inherit;
1476
+ background: #fff;
1477
+ }
1478
+
1479
+ .aser-dialog-shell textarea {
1480
+ min-height: 180px;
1481
+ line-height: 1.45;
1482
+ }
1483
+
1484
+ .aser-dialog-shell textarea#aser-protocol-json-input {
1485
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
1486
+ font-size: 12px;
1487
+ min-height: min(60vh, 520px);
1488
+ background: #f8fafc;
1489
+ }
1490
+
1491
+ .aser-dialog-shell input:focus,
1492
+ .aser-dialog-shell textarea:focus,
1493
+ .aser-dialog-shell select:focus {
1494
+ outline: none;
1495
+ border-color: #7ea8f2;
1496
+ box-shadow: 0 0 0 3px rgba(126, 168, 242, 0.18);
1497
+ }
1498
+
1499
+ .aser-dialog-shell .aser-inline-actions {
1500
+ justify-content: flex-end;
1501
+ border-top: 1px solid var(--border);
1502
+ padding-top: 10px;
1503
+ }
1504
+
1505
+ #aser-create-project-dialog,
1506
+ #aser-protocol-dialog {
1507
+ width: min(92vw, 860px);
1508
+ max-width: min(92vw, 860px);
1509
+ border: 1px solid var(--border);
1510
+ border-radius: 14px;
1511
+ background: #fff;
1512
+ box-shadow: 0 24px 64px rgba(15, 23, 42, 0.24);
1513
+ }
1514
+
1515
+ #aser-create-project-dialog::backdrop,
1516
+ #aser-protocol-dialog::backdrop {
1517
+ background: rgba(15, 23, 42, 0.34);
1518
+ backdrop-filter: blur(1.5px);
1519
+ }
1520
+
1521
+ #aser-protocol-flow-dialog {
1522
+ width: min(94vw, 1080px);
1523
+ max-width: min(94vw, 1080px);
1524
+ max-height: min(90vh, 860px);
187
1525
  }
188
1526
 
189
- .summary-card .label {
190
- font-size: 12px;
191
- color: var(--text-secondary);
1527
+ .aser-protocol-detail-shell {
1528
+ gap: 14px;
192
1529
  }
193
1530
 
194
- .summary-card .value {
195
- margin-top: 4px;
196
- font-size: 18px;
197
- font-weight: 600;
1531
+ #aser-protocol-flow-fullscreen {
1532
+ border: 1px solid var(--border);
1533
+ border-radius: 10px;
1534
+ background: #fbfcff;
1535
+ padding: 12px;
1536
+ max-height: min(68vh, 620px);
1537
+ overflow: auto;
198
1538
  }
199
1539
 
200
- .action-strip {
1540
+ .aser-protocol-flow-detailed {
201
1541
  display: flex;
202
- align-items: center;
203
- gap: 10px;
204
- margin-bottom: 14px;
1542
+ flex-wrap: wrap;
1543
+ align-items: flex-start;
1544
+ align-content: flex-start;
1545
+ gap: 8px;
205
1546
  }
206
1547
 
207
- .action-strip input,
208
- .action-strip select,
209
- .inline-actions input,
210
- .inline-actions select {
211
- border: 1px solid var(--border);
212
- border-radius: 8px;
1548
+ .aser-flow-node.detail {
1549
+ border-radius: 12px;
213
1550
  padding: 8px 10px;
214
- font-size: 13px;
215
- background: var(--bg);
1551
+ min-width: 240px;
1552
+ max-width: 280px;
1553
+ gap: 4px;
216
1554
  }
217
1555
 
218
- .inline-actions {
1556
+ .aser-flow-node-head {
219
1557
  display: flex;
220
1558
  align-items: center;
1559
+ justify-content: space-between;
221
1560
  gap: 8px;
222
1561
  }
223
1562
 
224
- #work-tree-collapse-action {
225
- min-width: 132px;
1563
+ .aser-flow-arrow.detail {
1564
+ align-self: center;
1565
+ font-size: 16px;
1566
+ margin: 0 4px;
226
1567
  }
227
1568
 
228
- .inline-checkbox {
229
- display: inline-flex;
230
- align-items: center;
231
- gap: 4px;
232
- font-size: 12px;
233
- color: var(--text-secondary);
234
- user-select: none;
1569
+ .aser-project-detail {
1570
+ display: grid;
1571
+ align-content: start;
1572
+ gap: 8px;
235
1573
  }
236
1574
 
237
- .inline-checkbox input[type="checkbox"] {
238
- width: 14px;
239
- height: 14px;
1575
+ .aser-project-detail.is-empty {
1576
+ opacity: 0.85;
240
1577
  }
241
1578
 
242
- .insight-box {
243
- background: #eef3fd;
244
- border: 1px solid #c6d5f8;
245
- color: #17366f;
246
- border-radius: 10px;
247
- padding: 10px 12px;
248
- margin-bottom: 12px;
249
- white-space: pre-wrap;
1579
+ .aser-project-detail-row {
1580
+ display: flex;
1581
+ flex-direction: column;
1582
+ gap: 2px;
1583
+ border: 1px solid var(--border);
1584
+ border-radius: 8px;
1585
+ padding: 8px;
1586
+ background: #fcfcfc;
250
1587
  }
251
1588
 
252
- .insight-box-header {
253
- display: flex;
254
- align-items: center;
255
- justify-content: space-between;
256
- margin-bottom: 8px;
1589
+ .aser-project-detail-row .label {
1590
+ font-size: 12px;
1591
+ color: var(--text-secondary);
257
1592
  }
258
1593
 
259
- .changes-list {
260
- display: flex;
261
- flex-direction: column;
262
- gap: 10px;
1594
+ .aser-project-detail-row .value {
1595
+ font-size: 13px;
1596
+ word-break: break-word;
263
1597
  }
264
1598
 
265
- .change-date-group {
266
- display: flex;
267
- flex-direction: column;
1599
+ .aser-runtime-board {
1600
+ border: 1px solid var(--border);
1601
+ border-radius: 8px;
1602
+ background: #fff;
1603
+ padding: 8px;
1604
+ display: grid;
268
1605
  gap: 8px;
269
1606
  }
270
1607
 
271
- .change-date-title {
272
- margin: 4px 0;
273
- font-size: 13px;
274
- color: var(--text-secondary);
1608
+ .aser-thread-summary {
1609
+ display: grid;
1610
+ gap: 6px;
275
1611
  }
276
1612
 
277
- .change-item {
278
- background: var(--bg);
1613
+ .aser-thread-summary-row {
279
1614
  border: 1px solid var(--border);
280
- border-radius: 10px;
281
- padding: 10px 12px;
1615
+ border-radius: 8px;
1616
+ background: #fafcff;
1617
+ padding: 8px;
1618
+ display: grid;
1619
+ gap: 2px;
1620
+ cursor: pointer;
282
1621
  }
283
1622
 
284
- .change-meta {
1623
+ .aser-thread-summary-row:hover {
1624
+ border-color: #a3c2ff;
1625
+ background: #f3f8ff;
1626
+ }
1627
+
1628
+ .aser-thread-summary-main {
1629
+ font-size: 12px;
1630
+ font-weight: 600;
285
1631
  display: flex;
286
- gap: 10px;
287
1632
  align-items: center;
288
- margin-bottom: 6px;
289
- font-size: 12px;
1633
+ justify-content: space-between;
1634
+ gap: 8px;
1635
+ }
1636
+
1637
+ .aser-thread-summary-meta {
1638
+ font-size: 11px;
290
1639
  color: var(--text-secondary);
291
1640
  }
292
1641
 
293
- .change-target {
294
- background: #f1f3f4;
1642
+ .aser-health-badge {
295
1643
  border: 1px solid var(--border);
296
1644
  border-radius: 999px;
297
1645
  padding: 1px 8px;
1646
+ font-size: 10px;
1647
+ font-weight: 600;
298
1648
  }
299
1649
 
300
- .change-type {
301
- font-size: 11px;
302
- border-radius: 8px;
303
- padding: 2px 8px;
304
- color: #fff;
1650
+ .aser-health-badge.healthy {
1651
+ border-color: #8fd3a3;
1652
+ background: #eefbf2;
1653
+ color: #2f6b3d;
305
1654
  }
306
1655
 
307
- .change-type.create { background: var(--success); }
308
- .change-type.update { background: var(--primary); }
309
- .change-type.delete { background: var(--error); }
1656
+ .aser-health-badge.watch {
1657
+ border-color: #8dc2ff;
1658
+ background: #eef7ff;
1659
+ color: #245b9b;
1660
+ }
310
1661
 
311
- .change-detail {
312
- font-size: 13px;
313
- line-height: 1.5;
1662
+ .aser-health-badge.risky {
1663
+ border-color: #f0b176;
1664
+ background: #fff5eb;
1665
+ color: #8a4e12;
314
1666
  }
315
1667
 
316
- .change-diff-list {
317
- margin-top: 6px;
318
- display: flex;
319
- flex-direction: column;
1668
+ .aser-governance-advice {
1669
+ display: grid;
1670
+ gap: 8px;
1671
+ }
1672
+
1673
+ .aser-governance-card {
1674
+ border: 1px solid var(--border);
1675
+ border-radius: 8px;
1676
+ background: #fff;
1677
+ padding: 8px;
1678
+ display: grid;
320
1679
  gap: 4px;
321
1680
  }
322
1681
 
323
- .change-diff-line {
1682
+ .aser-governance-title {
324
1683
  font-size: 12px;
325
- color: var(--text-secondary);
1684
+ font-weight: 600;
326
1685
  }
327
1686
 
328
- .btn-sm {
329
- padding: 6px 14px;
1687
+ .aser-governance-main {
330
1688
  font-size: 13px;
1689
+ font-weight: 700;
331
1690
  }
332
1691
 
333
- /* Cards */
334
- .card {
335
- background: var(--bg);
336
- border-radius: 12px;
337
- box-shadow: var(--shadow);
338
- padding: 20px 24px;
339
- margin-bottom: 16px;
340
- transition: box-shadow 0.2s;
341
- }
342
-
343
- .card:hover {
344
- box-shadow: 0 4px 8px rgba(0,0,0,0.16);
1692
+ .aser-governance-meta {
1693
+ font-size: 12px;
1694
+ color: var(--text-secondary);
345
1695
  }
346
1696
 
347
- /* Sandbox List */
348
- .sandbox-grid {
1697
+ .aser-task-list {
349
1698
  display: grid;
350
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
351
- gap: 16px;
1699
+ gap: 8px;
352
1700
  }
353
1701
 
354
- .sandbox-card {
355
- cursor: pointer;
356
- transition: transform 0.2s, box-shadow 0.2s;
1702
+ .aser-task-item {
1703
+ border: 1px solid var(--border);
1704
+ border-radius: 8px;
1705
+ padding: 8px;
1706
+ display: grid;
1707
+ gap: 6px;
1708
+ background: #fafcff;
357
1709
  }
358
1710
 
359
- .sandbox-card:hover {
360
- transform: translateY(-2px);
1711
+ .aser-task-head {
1712
+ display: flex;
1713
+ align-items: center;
1714
+ justify-content: space-between;
1715
+ gap: 8px;
361
1716
  }
362
1717
 
363
- .sandbox-card h3 {
364
- font-size: 16px;
365
- font-weight: 500;
366
- margin-bottom: 8px;
1718
+ .aser-task-title {
1719
+ font-weight: 600;
1720
+ font-size: 13px;
367
1721
  }
368
1722
 
369
- .sandbox-card p {
1723
+ .aser-task-status {
1724
+ font-size: 12px;
370
1725
  color: var(--text-secondary);
371
- font-size: 13px;
372
1726
  }
373
1727
 
374
- .sandbox-meta {
375
- display: flex;
376
- gap: 12px;
377
- margin-top: 12px;
1728
+ .aser-task-meta {
378
1729
  font-size: 12px;
379
1730
  color: var(--text-secondary);
380
1731
  }
381
1732
 
382
- .sandbox-page-actions {
1733
+ .aser-task-actions {
383
1734
  display: flex;
384
- align-items: center;
1735
+ gap: 6px;
385
1736
  flex-wrap: wrap;
386
- gap: 10px;
387
- margin-top: 12px;
388
1737
  }
389
1738
 
390
- .sandbox-sort-label {
391
- display: inline-flex;
392
- align-items: center;
393
- gap: 8px;
1739
+ .aser-task-actions select {
1740
+ border: 1px solid var(--border);
1741
+ border-radius: 8px;
1742
+ padding: 6px 8px;
394
1743
  font-size: 12px;
395
- color: var(--text-secondary);
396
- }
397
-
398
- .sandbox-sort-label select {
399
- min-width: 180px;
400
- height: 34px;
401
1744
  }
402
1745
 
403
1746
  .sandbox-actions {
@@ -2014,6 +3357,60 @@ dialog::backdrop {
2014
3357
  font-size: 14px;
2015
3358
  }
2016
3359
 
3360
+ .todo-form-dates {
3361
+ display: grid;
3362
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3363
+ gap: 8px;
3364
+ }
3365
+
3366
+ .todo-form-dates label {
3367
+ display: block;
3368
+ font-size: 12px;
3369
+ color: var(--text-secondary);
3370
+ margin-bottom: 4px;
3371
+ }
3372
+
3373
+ .todo-card-actions {
3374
+ display: inline-flex;
3375
+ gap: 6px;
3376
+ }
3377
+
3378
+ .task-board-grid {
3379
+ display: grid;
3380
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3381
+ gap: 12px;
3382
+ }
3383
+
3384
+ .task-board-column {
3385
+ background: #fff;
3386
+ border: 1px solid var(--border);
3387
+ border-radius: 10px;
3388
+ padding: 10px;
3389
+ }
3390
+
3391
+ .task-board-column-title {
3392
+ font-size: 13px;
3393
+ font-weight: 600;
3394
+ margin-bottom: 8px;
3395
+ }
3396
+
3397
+ .task-board-list {
3398
+ display: grid;
3399
+ gap: 8px;
3400
+ }
3401
+
3402
+ .task-board-item {
3403
+ border: 1px solid var(--border);
3404
+ border-radius: 8px;
3405
+ padding: 8px;
3406
+ background: #fafcff;
3407
+ }
3408
+
3409
+ .task-board-item-meta {
3410
+ font-size: 12px;
3411
+ color: var(--text-secondary);
3412
+ }
3413
+
2017
3414
  .dialog-content input:focus,
2018
3415
  .dialog-content textarea:focus,
2019
3416
  .dialog-content select:focus {