Repository navigation
Expand file tree
/
Copy pathstyles.css
More file actions
187 lines (178 loc) · 15.9 KB
/
Copy pathstyles.css
File metadata and controls
187 lines (178 loc) · 15.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
:root {
--paper: #f4f1e8;
--paper-2: #ebe7dc;
--ink: #172521;
--muted: #66716c;
--line: #d7d4ca;
--deep: #193b33;
--deep-2: #102d27;
--acid: #c7f36a;
--white: #fffefa;
--danger: #9a3f34;
--shadow: 0 24px 70px rgba(20, 42, 35, .18);
}
* { box-sizing: border-box; }
html, body { height: 100%; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 15px/1.5 Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; overflow: hidden; }
button, textarea, input { font: inherit; }
button { color: inherit; }
.app-shell { min-height: 100%; display: grid; grid-template-columns: 286px minmax(0, 1fr); }
.sidebar { height: 100vh; background: var(--deep); color: #edf5ee; padding: 25px 18px 18px; display: flex; flex-direction: column; border-right: 1px solid rgba(255,255,255,.06); }
.brand-row { display: flex; align-items: center; justify-content: space-between; padding: 0 8px 24px; }
.brand { color: inherit; text-decoration: none; display: flex; gap: 11px; align-items: center; font-family: Georgia, serif; font-weight: 700; font-size: 21px; letter-spacing: -.3px; }
.brand-mark { width: 25px; height: 25px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 3px; transform: rotate(3deg); }
.brand-mark i { display: block; background: var(--acid); border-radius: 1px; }
.brand-mark i:nth-child(2), .brand-mark i:nth-child(3) { opacity: .48; }
.new-chat-button { border: 1px solid rgba(255,255,255,.16); background: rgba(255,255,255,.06); color: #fff; border-radius: 10px; padding: 12px 14px; width: 100%; display: flex; gap: 10px; align-items: center; cursor: pointer; transition: .2s ease; }
.new-chat-button:hover { background: rgba(255,255,255,.11); border-color: rgba(255,255,255,.3); }
.new-chat-button span { color: var(--acid); font-size: 18px; }
.history-label { margin: 28px 7px 10px; display: flex; justify-content: space-between; color: #91a39d; font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.conversation-list { min-height: 0; overflow-y: auto; flex: 1; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.2) transparent; }
.conversation-item { position: relative; width: 100%; text-align: left; background: transparent; border: 0; border-radius: 9px; padding: 11px 34px 11px 11px; color: #becbc6; cursor: pointer; display: block; }
.conversation-item:hover, .conversation-item.active { color: white; background: rgba(255,255,255,.09); }
.conversation-item strong, .conversation-item small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.conversation-item strong { font-size: 13px; font-weight: 600; }
.conversation-item small { font-size: 11px; margin-top: 2px; color: #82978f; }
.conversation-delete { position: absolute; right: 8px; top: 12px; background: none; border: 0; color: #91a39d; opacity: 0; cursor: pointer; }
.conversation-item:hover .conversation-delete, .conversation-item:focus-within .conversation-delete { opacity: 1; }
.sidebar-footer { border-top: 1px solid rgba(255,255,255,.1); padding-top: 14px; }
.local-badge { display: flex; align-items: center; gap: 8px; padding: 8px 9px; color: #aac0b7; font-size: 12px; }
.status-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; background: #aab1ad; box-shadow: 0 0 0 3px rgba(170,177,173,.12); flex: none; }
.status-dot.ready { background: var(--acid); box-shadow: 0 0 0 3px rgba(199,243,106,.13); }
.status-dot.busy { background: #f2c45f; box-shadow: 0 0 0 3px rgba(242,196,95,.14); }
.status-dot.error { background: #e47868; box-shadow: 0 0 0 3px rgba(228,120,104,.14); }
.settings-button { display: flex; gap: 10px; align-items: center; width: 100%; border: 0; border-radius: 8px; background: transparent; color: #d2ddd8; padding: 10px 9px; cursor: pointer; }
.settings-button:hover { background: rgba(255,255,255,.07); }
.chat-panel { height: 100vh; min-width: 0; display: grid; grid-template-rows: auto 1fr auto; background: var(--paper); position: relative; }
.topbar { min-height: 78px; padding: 15px 34px; border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: 20px; background: rgba(244,241,232,.9); backdrop-filter: blur(16px); z-index: 5; }
.chat-heading { min-width: 0; }
.chat-heading h1 { margin: 0; font: 600 15px/1.3 ui-sans-serif, system-ui; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.privacy-line { color: var(--muted); font-size: 11px; margin-top: 3px; }
.privacy-line span { color: #557d70; font-size: 8px; margin-right: 3px; }
.model-pill { border: 1px solid var(--line); border-radius: 99px; background: rgba(255,255,255,.55); padding: 7px 12px; display: flex; align-items: center; gap: 8px; cursor: pointer; color: #4d5d57; font-size: 12px; white-space: nowrap; }
.messages { min-height: 0; overflow-y: auto; padding: 30px max(28px, calc((100% - 820px)/2)) 60px; scroll-behavior: smooth; }
.empty-state { min-height: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding-bottom: 2vh; }
.hero-mark { width: 52px; height: 52px; display: grid; grid-template-columns: 1fr 1fr; gap: 5px; margin-bottom: 24px; transform: rotate(2deg); }
.hero-mark span { background: var(--deep); border-radius: 2px; }
.hero-mark span:nth-child(2), .hero-mark span:nth-child(3) { background: #6f8d83; }
.eyebrow { margin: 0 0 12px; color: #688078; font-size: 10px; font-weight: 800; letter-spacing: .2em; }
.empty-state h2, .welcome-content h2 { font: 500 clamp(36px, 5vw, 58px)/1.02 Georgia, "Times New Roman", serif; letter-spacing: -.035em; margin: 0; }
.empty-copy { max-width: 550px; color: var(--muted); margin: 19px auto 28px; }
.suggestion-grid { width: min(100%, 750px); display: grid; grid-template-columns: repeat(3, 1fr); gap: 11px; }
.suggestion { position: relative; text-align: left; padding: 16px; background: rgba(255,255,255,.52); border: 1px solid var(--line); border-radius: 12px; cursor: pointer; min-height: 92px; transition: .2s; }
.suggestion:hover { background: var(--white); transform: translateY(-2px); box-shadow: 0 8px 24px rgba(30,54,46,.08); }
.suggestion span, .suggestion small { display: block; }
.suggestion span { font-family: Georgia, serif; font-size: 16px; }
.suggestion small { margin-top: 5px; color: var(--muted); line-height: 1.35; }
.suggestion b { position: absolute; top: 13px; right: 14px; font-weight: 400; color: #718078; }
.message { max-width: 760px; margin: 0 auto 30px; animation: rise .25s ease both; }
.message-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.message-author { font-size: 11px; font-weight: 800; letter-spacing: .13em; color: #63756e; }
.message-actions { display: flex; gap: 4px; opacity: 0; transition: .2s; }
.message:hover .message-actions, .message:focus-within .message-actions { opacity: 1; }
.message-actions button { background: transparent; border: 0; color: #6e7d78; cursor: pointer; padding: 3px 6px; font-size: 12px; }
.message.user .message-body { background: var(--deep); color: #f8fbf7; padding: 15px 18px; border-radius: 14px 14px 3px 14px; margin-left: min(14vw, 120px); }
.message.assistant .message-body { font: 17px/1.7 Georgia, serif; color: #273c35; padding-right: 8px; }
.message-body { white-space: pre-wrap; word-break: break-word; }
.message.streaming .message-body::after { content: ''; display: inline-block; width: 7px; height: 17px; background: #5a766d; margin-left: 4px; vertical-align: -2px; animation: blink .8s infinite; }
.message-error { color: var(--danger); border-left: 2px solid var(--danger); padding-left: 13px; }
.edit-box { width: 100%; min-height: 110px; border: 1px solid #8fa199; border-radius: 10px; padding: 13px; resize: vertical; background: var(--white); color: var(--ink); outline: none; }
.edit-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 8px; }
.composer-wrap { padding: 0 max(28px, calc((100% - 820px)/2)) 17px; background: linear-gradient(transparent, var(--paper) 18%); }
.composer { background: var(--white); border: 1px solid #cecfc6; border-radius: 15px; padding: 12px 12px 10px 17px; box-shadow: 0 12px 40px rgba(33,50,44,.08); }
.composer:focus-within { border-color: #83988f; box-shadow: 0 14px 44px rgba(33,50,44,.12); }
.composer textarea { display: block; width: 100%; border: 0; outline: none; resize: none; background: transparent; color: var(--ink); max-height: 180px; line-height: 1.5; }
.composer textarea::placeholder { color: #8e9792; }
.composer-actions { display: flex; justify-content: space-between; align-items: end; min-height: 32px; }
.composer-hint { color: #8a938f; font-size: 10px; }
.send-button { width: 34px; height: 34px; border: 0; border-radius: 9px; background: var(--deep); color: var(--acid); font-size: 20px; cursor: pointer; }
.send-button:disabled { background: #d1d3cd; color: #969d99; cursor: not-allowed; }
.disclaimer { margin: 7px 0 0; text-align: center; color: #858e89; font-size: 10px; }
dialog { color: var(--ink); border: 0; padding: 0; box-shadow: var(--shadow); }
dialog::backdrop { background: rgba(8,27,23,.65); backdrop-filter: blur(5px); }
.welcome-dialog { width: min(920px, calc(100% - 32px)); border-radius: 18px; overflow: hidden; background: var(--paper); grid-template-columns: 42% 58%; }
.welcome-dialog[open] { display: grid; animation: dialog-in .3s ease; }
.dialog-close { width: 34px; height: 34px; border: 0; background: transparent; border-radius: 50%; font-size: 24px; cursor: pointer; color: #6e7975; }
.welcome-dialog > .dialog-close { position: absolute; top: 13px; right: 13px; z-index: 2; }
.welcome-visual { position: relative; min-height: 580px; background: var(--deep); overflow: hidden; display: grid; place-items: center; }
.welcome-visual::before { content: ''; position: absolute; width: 250px; height: 250px; border-radius: 50%; background: var(--acid); filter: blur(90px); opacity: .18; }
.orbit { position: absolute; border: 1px solid rgba(199,243,106,.25); border-radius: 50%; }
.orbit-one { width: 310px; height: 310px; }
.orbit-two { width: 220px; height: 400px; transform: rotate(52deg); }
.model-cube { position: relative; z-index: 2; width: 104px; height: 104px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; transform: rotate(5deg); }
.model-cube span { background: var(--acid); border-radius: 4px; box-shadow: 0 0 35px rgba(199,243,106,.25); }
.model-cube span:nth-child(2), .model-cube span:nth-child(3) { opacity: .48; }
.welcome-content { padding: 58px 55px 35px; }
.welcome-content h2 { font-size: 45px; }
.welcome-content > p:not(.eyebrow):not(.requirements) { color: var(--muted); }
.privacy-card { display: flex; gap: 12px; align-items: start; background: #e5eadf; border-radius: 10px; padding: 13px 15px; margin: 22px 0 12px; }
.privacy-card > span { color: var(--deep); font-size: 22px; }
.privacy-card strong, .privacy-card small { display: block; }
.privacy-card small { color: var(--muted); margin-top: 2px; }
.model-state-card { border: 1px solid var(--line); background: rgba(255,255,255,.45); border-radius: 10px; padding: 15px; }
.state-card-row, .state-card-row > div { display: flex; align-items: center; gap: 9px; }
.state-card-row { justify-content: space-between; }
.state-card-row strong { font-size: 13px; }
.state-card-row > span { color: #687870; font-size: 12px; }
.model-state-card p { margin: 7px 0 0 16px; color: var(--muted); font-size: 12px; }
.progress-track { height: 5px; border-radius: 99px; background: #d9ddd3; overflow: hidden; margin: 13px 0 0 16px; }
.progress-track span { display: block; height: 100%; width: 0; background: var(--deep); transition: width .3s; }
.primary-button, .secondary-button, .danger-button, .text-button { border-radius: 9px; cursor: pointer; font-weight: 650; }
.primary-button { width: 100%; border: 0; background: var(--deep); color: white; padding: 13px 18px; margin-top: 13px; }
.primary-button:hover { background: var(--deep-2); }
.primary-button:disabled { background: #b8bcb6; cursor: not-allowed; }
.text-button { width: 100%; border: 0; background: transparent; padding: 11px; color: #65746e; }
.requirements { text-align: center; color: #8b938f; font-size: 10px; margin-top: 7px; }
.settings-dialog { width: min(650px, calc(100% - 30px)); max-height: min(720px, calc(100vh - 30px)); border-radius: 17px; background: var(--paper); }
.settings-dialog[open] { animation: dialog-in .25s ease; }
.settings-dialog header { padding: 25px 27px 20px; display: flex; justify-content: space-between; align-items: start; border-bottom: 1px solid var(--line); }
.settings-dialog h2 { margin: 0; font: 32px/1.1 Georgia, serif; }
.settings-body { padding: 24px 27px 28px; overflow-y: auto; }
.settings-section { padding: 0 0 24px; margin-bottom: 24px; border-bottom: 1px solid var(--line); }
.settings-section:last-child { border: 0; margin: 0; padding: 0; }
.settings-section h3 { margin: 0 0 6px; font-size: 13px; }
.settings-section > p, .danger-zone p { margin: 0 0 14px; color: var(--muted); font-size: 13px; }
.setting-card { border: 1px solid var(--line); border-radius: 11px; padding: 14px; background: rgba(255,255,255,.48); display: flex; align-items: center; gap: 13px; }
.model-icon { width: 40px; height: 40px; border-radius: 8px; background: var(--deep); color: var(--acid); display: grid; place-items: center; font-size: 11px; font-weight: 800; }
.model-setting > div:nth-child(2) { flex: 1; }
.model-setting strong { display: block; font-size: 13px; }
.model-setting p { margin: 2px 0 0; font-size: 12px; color: var(--muted); }
.state-tag { background: #dde5d6; color: #335047; border-radius: 99px; padding: 4px 8px; font-size: 9px; font-weight: 800; letter-spacing: .08em; }
.button-row { display: flex; gap: 9px; flex-wrap: wrap; }
.secondary-button, .danger-button { border: 1px solid #c5c9c2; background: var(--white); padding: 9px 13px; font-size: 12px; }
.secondary-button:hover { border-color: #819188; }
.danger-zone { display: flex; justify-content: space-between; align-items: center; gap: 20px; }
.danger-button { color: var(--danger); border-color: #ddb8b2; }
.toast { position: fixed; z-index: 20; left: 50%; bottom: 22px; transform: translate(-50%, 20px); background: var(--deep-2); color: white; border-radius: 9px; padding: 10px 15px; font-size: 12px; box-shadow: var(--shadow); opacity: 0; pointer-events: none; transition: .25s; }
.toast.show { opacity: 1; transform: translate(-50%, 0); }
.mobile-only { display: none; }
@keyframes rise { from { opacity: 0; transform: translateY(6px); } }
@keyframes blink { 50% { opacity: .1; } }
@keyframes dialog-in { from { opacity: 0; transform: translateY(10px) scale(.985); } }
@media (max-width: 760px) {
.app-shell { display: block; }
.sidebar { position: fixed; inset: 0 auto 0 0; z-index: 12; width: min(320px, 88vw); transform: translateX(-102%); transition: transform .25s ease; box-shadow: var(--shadow); }
.sidebar.open { transform: none; }
.mobile-only { display: grid; place-items: center; }
.icon-button { border: 0; background: transparent; font-size: 21px; width: 36px; height: 36px; cursor: pointer; }
.chat-panel { height: 100dvh; }
.topbar { min-height: 70px; padding: 12px 15px; }
.privacy-line { display: none; }
.messages { padding: 22px 16px 45px; }
.composer-wrap { padding: 0 12px 10px; }
.suggestion-grid { grid-template-columns: 1fr; }
.suggestion { min-height: 70px; }
.empty-state h2 { font-size: 38px; }
.empty-copy { font-size: 13px; }
.welcome-dialog[open] { display: block; overflow-y: auto; max-height: calc(100dvh - 24px); }
.welcome-visual { min-height: 150px; }
.orbit-one { width: 180px; height: 180px; }
.orbit-two { width: 120px; height: 220px; }
.model-cube { width: 64px; height: 64px; gap: 5px; }
.welcome-content { padding: 31px 24px 24px; }
.welcome-content h2 { font-size: 37px; }
.requirements { display: none; }
.model-pill { padding: 7px 9px; }
.message.user .message-body { margin-left: 34px; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; } }