ltcai 2.2.2 → 2.2.7

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.
@@ -1,5 +1,5 @@
1
1
  /* ============================================================================
2
- * Lattice AI — Responsive / Accessibility / Theme Foundation (v2.2.2)
2
+ * Lattice AI — Responsive / Accessibility / Theme Foundation (v2.2.5)
3
3
  *
4
4
  * 이 파일은 모든 페이지에서 가장 마지막에 로드된다 (lattice-reference.css /
5
5
  * workspace.css / platform.css 다음). 따라서 기존 규칙을 "덮어쓰는" 레이어로
@@ -217,6 +217,21 @@ select {
217
217
  overflow-y: auto;
218
218
  }
219
219
 
220
+ /* #onboarding-body 는 .onboarding-card(flex column · overflow:hidden) 안의
221
+ * 스크롤 영역이다. lattice-reference.css 의 `.onboarding-body.lattice-ref-chat`
222
+ * 는 *복합* 선택자(두 클래스가 같은 엘리먼트)인데 lattice-ref-chat 는 <body> 에만
223
+ * 있고 .onboarding-body 엘리먼트에는 없어 영영 매치되지 않았다 → onboarding-body
224
+ * 에 overflow/padding 이 적용되지 않아 추천 결과 같은 긴 콘텐츠가 카드에 잘리고
225
+ * 모델 아코디언(Gemma 4·Qwen3-VL·Llama 4)과 하단 액션 버튼에 접근 불가.
226
+ * 올바른 단일 클래스 선택자로 스크롤 영역과 패딩을 복원한다(명시도 트릭 아님). */
227
+ .onboarding-body {
228
+ flex: 1 1 auto;
229
+ min-height: 0;
230
+ overflow-y: auto;
231
+ -webkit-overflow-scrolling: touch;
232
+ padding: 28px 30px;
233
+ }
234
+
220
235
  /* 드롭다운/팝오버: 뷰포트 안에 가둠 */
221
236
  .lang-picker-menu,
222
237
  .mcp-dropdown,
@@ -584,6 +599,25 @@ body.graph-card-view .stage > canvas#graph { visibility: hidden; }
584
599
  }
585
600
  }
586
601
 
602
+ #ltcai-toast {
603
+ position: fixed;
604
+ bottom: 28px;
605
+ left: 50%;
606
+ transform: translateX(-50%);
607
+ background: var(--surface);
608
+ color: var(--text);
609
+ border: 1px solid var(--border);
610
+ border-radius: 10px;
611
+ padding: 10px 18px;
612
+ font-size: 13px;
613
+ font-weight: 600;
614
+ z-index: 9999;
615
+ box-shadow: var(--shadow-sm);
616
+ pointer-events: none;
617
+ opacity: 0;
618
+ transition: opacity 0.2s;
619
+ }
620
+
587
621
  /* 다크에서 테마 토글 아이콘 상태 */
588
622
  :root[data-lt-theme="dark"] .theme-toggle .ti-sun { display: inline-flex; }
589
623
  :root[data-lt-theme="dark"] .theme-toggle .ti-moon { display: none; }
@@ -612,3 +646,174 @@ body.graph-card-view .stage > canvas#graph { visibility: hidden; }
612
646
  cursor: pointer;
613
647
  }
614
648
  .theme-toggle:hover { background: var(--accent-soft, rgba(110,74,230,0.1)); }
649
+
650
+ /* ============================================================================
651
+ * 14. v2.2.5 modal stack, scrim, and hardcoded-light surface cleanup
652
+ * ========================================================================== */
653
+ :root {
654
+ --z-app-layout: 0;
655
+ --z-sidebar: 100;
656
+ --z-drawer: 800;
657
+ --z-modal-backdrop: 1400;
658
+ --z-modal-content: 1410;
659
+ --z-tooltip: 9600;
660
+ --z-toast: 9700;
661
+ }
662
+
663
+ body.modal-open {
664
+ overflow: hidden;
665
+ overscroll-behavior: contain;
666
+ }
667
+
668
+ .acct-modal-overlay,
669
+ .mcp-modal-overlay,
670
+ .workspace-modal-overlay,
671
+ .mode-modal-overlay,
672
+ .model-overlay,
673
+ .admin-overlay,
674
+ .advanced-settings-overlay,
675
+ .perm-overlay,
676
+ .onboarding-overlay,
677
+ #setup-overlay {
678
+ background: var(--overlay-scrim, var(--overlay, rgba(0, 0, 0, 0.52)));
679
+ -webkit-backdrop-filter: none;
680
+ backdrop-filter: none;
681
+ }
682
+
683
+ .acct-modal-overlay,
684
+ .mcp-modal-overlay,
685
+ .workspace-modal-overlay,
686
+ .mode-modal-overlay,
687
+ .model-overlay,
688
+ .admin-overlay,
689
+ .advanced-settings-overlay {
690
+ z-index: var(--z-modal-backdrop);
691
+ }
692
+
693
+ #setup-overlay { z-index: 1500; }
694
+ .onboarding-overlay { z-index: 1600; }
695
+ .perm-overlay { z-index: 1700; }
696
+ #tooltip { z-index: var(--z-tooltip); }
697
+ #ltcai-toast { z-index: var(--z-toast); }
698
+
699
+ .acct-modal-overlay[aria-hidden="true"],
700
+ .mcp-modal-overlay[aria-hidden="true"],
701
+ .workspace-modal-overlay[aria-hidden="true"],
702
+ .mode-modal-overlay[aria-hidden="true"],
703
+ .model-overlay[aria-hidden="true"],
704
+ .admin-overlay[aria-hidden="true"],
705
+ .advanced-settings-overlay[aria-hidden="true"],
706
+ .perm-overlay[aria-hidden="true"],
707
+ .onboarding-overlay[aria-hidden="true"],
708
+ #setup-overlay[aria-hidden="true"] {
709
+ pointer-events: none;
710
+ }
711
+
712
+ .acct-modal,
713
+ .mcp-modal,
714
+ .workspace-modal,
715
+ .mode-modal,
716
+ .model-panel,
717
+ .admin-panel,
718
+ .advanced-settings-panel,
719
+ .perm-dialog,
720
+ .onboarding-card,
721
+ .wizard-card {
722
+ background: var(--modal, var(--surface));
723
+ border-color: var(--border);
724
+ color: var(--text);
725
+ }
726
+
727
+ .workspace-card,
728
+ .mode-card,
729
+ .onboarding-choice,
730
+ .onboarding-mode,
731
+ .recommendation-card,
732
+ .analysis-row,
733
+ .onboarding-model-card,
734
+ .onboarding-model-option,
735
+ .setup-log-row,
736
+ .mcp-item,
737
+ .model-card,
738
+ .engine-card,
739
+ .sensitivity-panel,
740
+ .status-section,
741
+ .file-download-card {
742
+ background: var(--surface-elevated, var(--surface));
743
+ border-color: var(--border);
744
+ color: var(--text);
745
+ }
746
+
747
+ .admin-input,
748
+ .admin-textarea,
749
+ .pipeline-select,
750
+ .acct-modal input,
751
+ .mcp-modal input,
752
+ .mcp-modal textarea,
753
+ .auth-input,
754
+ .input,
755
+ textarea,
756
+ select {
757
+ background-color: var(--input, var(--surface-2));
758
+ border-color: var(--border);
759
+ color: var(--text);
760
+ }
761
+
762
+ .admin-input::placeholder,
763
+ .admin-textarea::placeholder,
764
+ .acct-modal input::placeholder,
765
+ .mcp-modal input::placeholder,
766
+ .mcp-modal textarea::placeholder,
767
+ textarea::placeholder {
768
+ color: var(--faint);
769
+ }
770
+
771
+ body.lattice-ref-chat .app-layout #user-input {
772
+ background: transparent;
773
+ border: 0;
774
+ box-shadow: none;
775
+ outline: none;
776
+ color: var(--text);
777
+ }
778
+
779
+ body.lattice-ref-chat .app-layout #user-input:focus {
780
+ background: transparent;
781
+ border: 0;
782
+ box-shadow: none;
783
+ outline: none;
784
+ }
785
+
786
+ #cu-panel .cu-controls-panel {
787
+ width: 280px;
788
+ max-width: 100%;
789
+ }
790
+
791
+ @media (max-width: 760px) {
792
+ .admin-overlay,
793
+ .model-overlay,
794
+ .perm-overlay,
795
+ .onboarding-overlay,
796
+ #setup-overlay {
797
+ align-items: flex-end;
798
+ justify-content: center;
799
+ padding: max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom));
800
+ }
801
+
802
+ .admin-panel,
803
+ .model-panel,
804
+ .perm-dialog,
805
+ .wizard-card,
806
+ .onboarding-card {
807
+ width: 100%;
808
+ max-width: none;
809
+ max-height: 92dvh;
810
+ }
811
+
812
+ #cu-panel .admin-body > div[style*="display:flex"] {
813
+ flex-direction: column;
814
+ }
815
+
816
+ #cu-panel .cu-controls-panel {
817
+ width: 100%;
818
+ }
819
+ }
@@ -1,5 +1,5 @@
1
1
  /* ============================================================================
2
- * Lattice AI — Design Tokens (Single Source of Truth) v2.2.2
2
+ * Lattice AI — Design Tokens (Single Source of Truth) v2.2.7
3
3
  *
4
4
  * 이 파일이 색·면·테두리·그림자·포커스의 단일 출처다.
5
5
  * :root → 라이트 테마 값
@@ -39,12 +39,15 @@
39
39
  --surface: #f6f0ff;
40
40
  --surface-2: #efe8ff;
41
41
  --surface-3: #e8dfff;
42
+ --surface-muted: #efe8ff;
43
+ --surface-elevated: rgba(255, 255, 255, 0.92);
42
44
  --card: rgba(255, 255, 255, 0.90);
43
45
  --sidebar: rgba(244, 237, 255, 0.96);
44
46
  --modal: rgba(247, 242, 255, 0.98);
45
47
  --table: rgba(255, 255, 255, 0.72);
46
48
  --input: rgba(255, 255, 255, 0.80);
47
49
  --overlay: rgba(20, 16, 40, 0.42);
50
+ --overlay-scrim: var(--overlay);
48
51
  /* decorative page background (그라데이션 한 토큰) */
49
52
  --app-bg:
50
53
  radial-gradient(circle at 82% 12%, rgba(111, 66, 232, 0.14), transparent 30%),
@@ -55,6 +58,7 @@
55
58
  --text: #14162c;
56
59
  --muted: #4a4668; /* muted-text */
57
60
  --faint: #7a74a0;
61
+ --text-muted: var(--muted);
58
62
 
59
63
  /* border / line */
60
64
  --border: rgba(111, 66, 232, 0.14);
@@ -125,6 +129,7 @@
125
129
  --lt-bg: #f3ecff;
126
130
  --lt-surface: #f6f0ff;
127
131
  --lt-surface-2: #efe8ff;
132
+ --lt-input: rgba(255, 255, 255, 0.80);
128
133
  --lt-ink: #14162c;
129
134
  --lt-ink-soft: #4a4668;
130
135
  --lt-muted: #7a74a0;
@@ -147,12 +152,15 @@
147
152
  --surface: #16163a;
148
153
  --surface-2: #1b1d42;
149
154
  --surface-3: #23264f;
155
+ --surface-muted: #11132f;
156
+ --surface-elevated: #20234d;
150
157
  --card: rgba(255, 255, 255, 0.05);
151
158
  --sidebar: rgba(18, 18, 46, 0.96);
152
159
  --modal: rgba(22, 22, 58, 0.98);
153
160
  --table: rgba(255, 255, 255, 0.04);
154
161
  --input: rgba(255, 255, 255, 0.06);
155
- --overlay: rgba(0, 0, 0, 0.58);
162
+ --overlay: rgba(0, 0, 0, 0.62);
163
+ --overlay-scrim: var(--overlay);
156
164
  --app-bg:
157
165
  radial-gradient(circle at 82% 12%, rgba(110, 74, 230, 0.22), transparent 32%),
158
166
  radial-gradient(circle at 10% 80%, rgba(24, 198, 217, 0.10), transparent 38%),
@@ -161,6 +169,7 @@
161
169
  --text: #F4F5FB;
162
170
  --muted: #C2C7DC;
163
171
  --faint: #8B92AC;
172
+ --text-muted: var(--muted);
164
173
 
165
174
  --border: rgba(160, 170, 230, 0.20);
166
175
  --border-strong: rgba(160, 170, 230, 0.32);
@@ -190,6 +199,7 @@
190
199
  --lt-bg: #0B0B1E;
191
200
  --lt-surface: #16163a;
192
201
  --lt-surface-2: #1b1d42;
202
+ --lt-input: rgba(255, 255, 255, 0.06);
193
203
  --lt-ink: #F4F5FB;
194
204
  --lt-ink-soft: #C2C7DC;
195
205
  --lt-muted: #8B92AC;
@@ -208,14 +218,15 @@
208
218
  color-scheme: dark;
209
219
  --bg: #0B0B1E; --bg-soft: #0e0e26;
210
220
  --surface: #16163a; --surface-2: #1b1d42; --surface-3: #23264f;
221
+ --surface-muted: #11132f; --surface-elevated: #20234d;
211
222
  --card: rgba(255,255,255,0.05); --sidebar: rgba(18,18,46,0.96);
212
223
  --modal: rgba(22,22,58,0.98); --table: rgba(255,255,255,0.04);
213
- --input: rgba(255,255,255,0.06); --overlay: rgba(0,0,0,0.58);
224
+ --input: rgba(255,255,255,0.06); --overlay: rgba(0,0,0,0.62); --overlay-scrim: var(--overlay);
214
225
  --app-bg:
215
226
  radial-gradient(circle at 82% 12%, rgba(110,74,230,0.22), transparent 32%),
216
227
  radial-gradient(circle at 10% 80%, rgba(24,198,217,0.10), transparent 38%),
217
228
  linear-gradient(180deg, #0B0B1E 0%, #0e0e24 52%, #0B0B1E 100%);
218
- --text: #F4F5FB; --muted: #C2C7DC; --faint: #8B92AC;
229
+ --text: #F4F5FB; --muted: #C2C7DC; --faint: #8B92AC; --text-muted: var(--muted);
219
230
  --border: rgba(160,170,230,0.20); --border-strong: rgba(160,170,230,0.32);
220
231
  --line: rgba(160,170,230,0.16); --line-strong: rgba(160,170,230,0.28);
221
232
  --accent: #A78BFA; --accent-2: #c4b5fd; --accent-3: #ddd6fe;
@@ -224,7 +235,7 @@
224
235
  --graph-bg: #0B0B1E; --graph-grid: rgba(160,170,230,0.08); --graph-pill: rgba(24,26,53,0.92);
225
236
  --shadow: 0 18px 54px rgba(0,0,0,0.50); --shadow-sm: 0 8px 24px rgba(0,0,0,0.42);
226
237
  --focus-ring: rgba(167,139,250,0.70);
227
- --lt-bg: #0B0B1E; --lt-surface: #16163a; --lt-surface-2: #1b1d42;
238
+ --lt-bg: #0B0B1E; --lt-surface: #16163a; --lt-surface-2: #1b1d42; --lt-input: rgba(255,255,255,0.06);
228
239
  --lt-ink: #F4F5FB; --lt-ink-soft: #C2C7DC; --lt-muted: #8B92AC;
229
240
  --lt-line: rgba(160,170,230,0.20); --lt-accent: #A78BFA;
230
241
  --lt-shadow-md: 0 18px 54px rgba(0,0,0,0.50);
Binary file
package/static/graph.html CHANGED
@@ -4,13 +4,18 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content">
6
6
  <title>Lattice AI - 지식 그래프</title>
7
- <script src="/static/scripts/ux.js?v=2.2.2"></script>
7
+ <script src="/static/scripts/ux.js?v=2.2.7"></script>
8
8
  <link rel="preconnect" href="https://fonts.googleapis.com">
9
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
10
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap">
11
11
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/tabler-icons.min.css">
12
- <link rel="stylesheet" href="/static/lattice-reference.css?v=0.3.3">
13
- <link rel="stylesheet" href="/static/css/responsive.css?v=2.2.2">
12
+ <link rel="stylesheet" href="/static/css/tokens.css?v=2.2.7">
13
+ <link rel="stylesheet" href="/static/css/reference/base.css?v=2.2.7">
14
+ <link rel="stylesheet" href="/static/css/reference/account.css?v=2.2.7">
15
+ <link rel="stylesheet" href="/static/css/reference/admin.css?v=2.2.7">
16
+ <link rel="stylesheet" href="/static/css/reference/graph.css?v=2.2.7">
17
+ <link rel="stylesheet" href="/static/css/reference/chat.css?v=2.2.7">
18
+ <link rel="stylesheet" href="/static/css/responsive.css?v=2.2.7">
14
19
  </head>
15
20
  <body class="lattice-ref-graph">
16
21
  <div class="sidebar-overlay" onclick="closeGraphNav&&closeGraphNav()"></div>
@@ -114,6 +119,6 @@
114
119
 
115
120
  <div id="tooltip"></div>
116
121
 
117
- <script src="/static/scripts/graph.js?v=0.3.3"></script>
122
+ <script src="/static/scripts/graph.js?v=2.2.7"></script>
118
123
  </body>
119
124
  </html>
@@ -29,7 +29,7 @@ a { color: var(--accent-2); text-decoration: none; }
29
29
  header.app {
30
30
  display: flex; align-items: center; gap: 18px;
31
31
  padding: 14px 24px; border-bottom: 1px solid var(--border);
32
- background: rgba(22, 25, 31, 0.8); position: sticky; top: 0; backdrop-filter: blur(8px); z-index: 5;
32
+ background: var(--panel); position: sticky; top: 0; z-index: 5;
33
33
  }
34
34
  header.app .brand { font-weight: 700; font-size: 16px; color: var(--text); letter-spacing: .3px; }
35
35
  header.app .brand small { color: var(--accent); font-weight: 600; margin-left: 6px; }
@@ -4,10 +4,10 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content" />
6
6
  <title>Plugin SDK — Lattice AI</title>
7
- <script src="/static/scripts/ux.js?v=2.2.2"></script>
8
- <link rel="stylesheet" href="/static/css/tokens.css?v=2.2.2" />
9
- <link rel="stylesheet" href="/static/platform.css?v=2.2.2" />
10
- <link rel="stylesheet" href="/static/css/responsive.css?v=2.2.2" />
7
+ <script src="/static/scripts/ux.js?v=2.2.7"></script>
8
+ <link rel="stylesheet" href="/static/css/tokens.css?v=2.2.7" />
9
+ <link rel="stylesheet" href="/static/platform.css?v=2.2.7" />
10
+ <link rel="stylesheet" href="/static/css/responsive.css?v=2.2.7" />
11
11
  </head>
12
12
  <body>
13
13
  <main>