Skip to content

Commit 28d6624

Browse files
authored
Create app.css
1 parent 2f5dba1 commit 28d6624

1 file changed

Lines changed: 196 additions & 0 deletions

File tree

‎app/views/css/app.css‎

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
:root {
2+
--bg: #f7f6f3;
3+
--panel: #ffffff;
4+
--fg: #1f2328;
5+
--muted: #8a8f98;
6+
--line: #e8e6e1;
7+
--accent: #f97316;
8+
--accent-soft: #fff1e7;
9+
--accent-fg: #ffffff;
10+
--err: #e5484d;
11+
--shadow: 0 2px 12px rgba(31, 35, 40, .06);
12+
}
13+
html[data-theme="dark"] {
14+
--bg: #14161a;
15+
--panel: #1d2025;
16+
--fg: #e6e8eb;
17+
--muted: #8b93a1;
18+
--line: #2a2e37;
19+
--accent-soft: #33261b;
20+
--shadow: 0 2px 12px rgba(0, 0, 0, .35);
21+
}
22+
* { box-sizing: border-box; }
23+
body { margin:0; font:14px/1.6 system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; background:var(--bg); color:var(--fg); }
24+
button { font:inherit; cursor:pointer; }
25+
26+
/* ---------- top nav ---------- */
27+
#topnav { height:56px; display:flex; align-items:center; gap:28px; padding:0 24px; background:var(--panel); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:10; }
28+
#topnav .logo { display:flex; align-items:center; gap:8px; font-weight:700; font-size:16px; color:var(--accent); }
29+
#topnav .logo .mark { width:26px; height:26px; border-radius:7px; background:var(--accent); color:#fff; display:grid; place-items:center; font-size:13px; font-weight:800; }
30+
#topnav nav { display:flex; gap:22px; margin:0 auto; }
31+
#topnav nav a { color:var(--muted); text-decoration:none; font-size:14px; }
32+
#topnav nav a.active { color:var(--accent); font-weight:600; }
33+
#topnav .right { display:flex; align-items:center; gap:12px; }
34+
#topnav .icon-btn { border:1px solid var(--line); background:var(--panel); color:var(--fg); border-radius:999px; padding:4px 12px; font-size:13px; }
35+
#topnav .user { display:flex; align-items:center; gap:8px; font-size:13px; }
36+
#topnav .avatar { width:28px; height:28px; border-radius:50%; background:var(--accent-soft); color:var(--accent); display:grid; place-items:center; font-weight:700; }
37+
38+
/* ---------- account menu ---------- */
39+
#account { position:relative; }
40+
#accountBtn { display:flex; align-items:center; gap:8px; cursor:pointer; border:0; background:none; color:var(--fg); padding:2px 4px; border-radius:10px; }
41+
#accountBtn:hover { background:var(--accent-soft); }
42+
#accountBtn .who { display:flex; flex-direction:column; align-items:flex-start; line-height:1.2; }
43+
#accountBtn .who .name { font-size:13px; font-weight:600; }
44+
#accountBtn .who .pts { font-size:11px; color:var(--muted); }
45+
#accountMenu { position:absolute; top:calc(100% + 8px); right:0; width:288px; background:var(--panel); border:1px solid var(--line); border-radius:14px; box-shadow:0 12px 32px rgba(0,0,0,.16); padding:6px; z-index:50; display:none; }
46+
#accountMenu.open { display:block; }
47+
#accountMenu .head { padding:12px 12px 10px; }
48+
#accountMenu .head .row1 { display:flex; align-items:center; gap:8px; }
49+
#accountMenu .head .row1 .name { font-weight:700; font-size:15px; }
50+
#accountMenu .badge { font-size:11px; font-weight:700; color:var(--accent); background:var(--accent-soft); border-radius:6px; padding:1px 6px; letter-spacing:.5px; }
51+
#accountMenu .head .email { color:var(--muted); font-size:12px; margin-top:4px; }
52+
#accountMenu .stats { border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:8px 12px; }
53+
#accountMenu .stats .stat { display:flex; justify-content:space-between; align-items:center; font-size:13px; padding:4px 0; }
54+
#accountMenu .stats .stat .k { color:var(--muted); }
55+
#accountMenu .stats .stat .v { font-weight:600; }
56+
#accountMenu .stats .stat.hi .v { color:var(--accent); font-weight:700; }
57+
#accountMenu .items { padding:6px 0 2px; }
58+
#accountMenu .item { display:flex; align-items:center; gap:12px; width:100%; border:0; background:none; color:var(--fg); font-size:14px; text-align:left; padding:10px 12px; border-radius:8px; cursor:pointer; }
59+
#accountMenu .item:hover { background:var(--accent-soft); }
60+
#accountMenu .item .ic { width:18px; text-align:center; opacity:.75; }
61+
62+
/* ---------- profile page ---------- */
63+
#profile { display:none; }
64+
#profile .wrap { max-width:1120px; margin:0 auto; padding:28px 24px 60px; }
65+
#profile .card { background:var(--panel); border:1px solid var(--line); border-radius:18px; padding:28px; }
66+
#profile .phead { display:flex; align-items:flex-start; gap:22px; }
67+
#profile .pavatar { width:96px; height:96px; border-radius:50%; background:var(--accent-soft); color:var(--accent); display:grid; place-items:center; font-size:36px; font-weight:700; flex:none; overflow:hidden; }
68+
#profile .pavatar img { width:100%; height:100%; object-fit:cover; }
69+
#profile .pname { display:flex; align-items:center; gap:10px; }
70+
#profile .pname h1 { font-size:26px; margin:0; }
71+
#profile .edit { color:var(--muted); font-size:13px; cursor:pointer; display:inline-flex; align-items:center; gap:4px; }
72+
#profile .edit:hover { color:var(--accent); }
73+
#profile .phone { color:var(--muted); font-size:13px; margin-top:8px; display:flex; align-items:center; gap:10px; }
74+
#profile .phone .bind { color:var(--accent); font-weight:600; cursor:pointer; }
75+
#profile .pills { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }
76+
#profile .pill { border:1px solid var(--line); border-radius:999px; padding:5px 12px; font-size:13px; color:var(--muted); display:inline-flex; align-items:center; gap:6px; }
77+
#profile .pill.on { background:var(--accent-soft); border-color:transparent; color:var(--accent); font-weight:600; }
78+
#profile .pill .lnk { color:var(--accent); font-weight:600; cursor:pointer; }
79+
#profile .pill b { color:var(--fg); font-weight:700; }
80+
#profile .sub { display:flex; align-items:center; gap:16px; margin-top:20px; border:1px solid var(--line); border-radius:14px; padding:18px 20px; background:var(--bg); }
81+
#profile .sub .sic { width:52px; height:52px; border-radius:12px; background:var(--accent-soft); color:var(--accent); display:grid; place-items:center; font-size:24px; flex:none; }
82+
#profile .sub .row1 { display:flex; align-items:center; gap:8px; font-weight:600; }
83+
#profile .sub .exp { color:var(--muted); font-size:13px; margin-top:4px; }
84+
85+
#profile .tabs { display:flex; align-items:center; gap:8px; background:var(--panel); border:1px solid var(--line); border-radius:999px; padding:6px; width:fit-content; }
86+
#profile .tab { border:0; background:none; color:var(--muted); font-size:14px; padding:8px 18px; border-radius:999px; cursor:pointer; display:inline-flex; align-items:center; gap:6px; }
87+
#profile .tab.active { background:var(--accent); color:#fff; font-weight:600; }
88+
#profile .worksHead { display:flex; align-items:center; justify-content:space-between; margin:22px 0 12px; }
89+
#profile .worksHead .cnt { color:var(--muted); font-size:13px; display:inline-flex; align-items:center; gap:6px; }
90+
#profile .works { min-height:220px; }
91+
#profile .worksGrid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px; }
92+
#profile .work { border:1px solid var(--line); border-radius:12px; padding:14px; cursor:pointer; background:var(--panel); }
93+
#profile .work:hover { border-color:var(--accent); }
94+
#profile .work .t { font-weight:600; font-size:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
95+
#profile .work .m { color:var(--muted); font-size:12px; margin-top:6px; }
96+
#profile .empty { text-align:center; color:var(--muted); padding:56px 0; }
97+
#profile .empty .eic { width:72px; height:72px; border-radius:50%; background:var(--accent-soft); color:var(--accent); display:grid; place-items:center; font-size:30px; margin:0 auto 14px; }
98+
#profile .empty .big { color:var(--fg); font-size:15px; font-weight:600; }
99+
100+
/* ---------- layout ---------- */
101+
#app { display:none; }
102+
#shell { display:flex; height:calc(100vh - 56px); }
103+
#sidebar { width:230px; flex:none; border-right:1px solid var(--line); background:var(--bg); display:flex; flex-direction:column; }
104+
#sidebar .head { display:flex; align-items:center; justify-content:space-between; padding:14px 14px 8px; color:var(--accent); font-size:13px; font-weight:600; }
105+
#sidebar .head button { border:0; background:none; color:var(--accent); font-size:18px; line-height:1; }
106+
#convList { flex:1; overflow:auto; padding:4px 8px; }
107+
#convList .empty { color:var(--muted); font-size:13px; padding:12px; }
108+
#convList .cnv { padding:9px 12px; border-radius:8px; cursor:pointer; color:var(--muted); font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:flex; align-items:center; gap:8px; }
109+
#convList .cnv:hover { background:var(--accent-soft); }
110+
#convList .cnv.active { background:var(--accent-soft); color:var(--accent); font-weight:600; }
111+
#convList .cnv .del { margin-left:auto; visibility:hidden; color:var(--muted); font-size:12px; }
112+
#convList .cnv:hover .del { visibility:visible; }
113+
114+
#main { flex:1; overflow:auto; }
115+
.wrap { max-width:980px; margin:0 auto; padding:28px 24px 60px; }
116+
117+
/* ---------- hero ---------- */
118+
#hero { text-align:center; padding:26px 0 8px; }
119+
#hero h1 { margin:0 0 10px; font-size:30px; font-weight:800; color:var(--accent); letter-spacing:1px; }
120+
#hero p { margin:0 auto; max-width:640px; color:var(--muted); font-size:14px; }
121+
122+
/* ---------- composer card ---------- */
123+
.composer { background:var(--panel); border:1px solid var(--line); border-radius:16px; box-shadow:var(--shadow); margin-top:22px; overflow:hidden; }
124+
.composer .label { display:flex; align-items:center; gap:6px; padding:12px 18px 0; font-size:13px; color:var(--muted); }
125+
.composer textarea { width:100%; min-height:150px; max-height:320px; resize:vertical; border:0; outline:0; background:transparent; color:var(--fg); font:inherit; padding:10px 18px; }
126+
.composer .bar { display:flex; align-items:center; gap:10px; padding:10px 14px; border-top:1px solid var(--line); }
127+
.composer .bar .spacer { flex:1; }
128+
.chip { display:inline-flex; align-items:center; gap:6px; background:var(--accent-soft); color:var(--accent); border-radius:999px; padding:3px 10px; font-size:12px; }
129+
.chip .x { cursor:pointer; font-weight:700; }
130+
.attach-btn { border:1px solid var(--line); background:var(--panel); color:var(--fg); border-radius:10px; padding:6px 12px; font-size:13px; display:inline-flex; align-items:center; gap:6px; }
131+
.attach-btn:hover { border-color:var(--accent); color:var(--accent); }
132+
#sendBtn { background:var(--accent); color:var(--accent-fg); border:0; border-radius:10px; padding:8px 20px; font-size:14px; font-weight:600; display:inline-flex; align-items:center; gap:8px; }
133+
#sendBtn:disabled { opacity:.5; cursor:default; }
134+
.stop-btn { background:transparent; color:var(--muted); border:1px solid var(--line); border-radius:10px; padding:8px 16px; display:none; }
135+
.count { color:var(--muted); font-size:12px; padding:0 18px 8px; text-align:right; }
136+
137+
/* ---------- task type cards ---------- */
138+
#tasks { margin-top:34px; }
139+
#tasks .head { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
140+
#tasks .head h2 { margin:0; font-size:17px; font-weight:700; }
141+
#tasks .grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:14px; }
142+
.task { background:var(--panel); border:2px solid var(--line); border-radius:14px; overflow:hidden; cursor:pointer; box-shadow:var(--shadow); text-align:left; padding:0; }
143+
.task:hover { border-color:var(--accent); }
144+
.task .thumb { height:84px; display:grid; place-items:center; font-size:34px; background:linear-gradient(135deg, var(--accent-soft), var(--panel)); }
145+
.task .name { padding:8px 12px; font-size:13px; font-weight:600; display:flex; align-items:center; gap:6px; }
146+
.task .name::before { content:""; width:7px; height:7px; border-radius:50%; background:var(--accent); }
147+
148+
/* ---------- chat ---------- */
149+
#chat { display:none; }
150+
#messages { padding:6px 0 20px; }
151+
.msg { margin:14px 0; padding:12px 16px; border-radius:12px; white-space:pre-wrap; word-break:break-word; max-width:85%; }
152+
.msg.user { background:var(--accent-soft); color:var(--fg); margin-left:auto; border:1px solid var(--line); }
153+
.msg.agent { background:transparent; border:0; box-shadow:none; max-width:100%; padding:2px 0; }
154+
.msg.tool { background:transparent; border:1px dashed var(--line); color:var(--muted); font-family:ui-monospace, monospace; font-size:12px; max-width:100%; }
155+
.msg.err { background:transparent; border:1px solid var(--err); color:var(--err); max-width:100%; }
156+
.msg .who { font-size:12px; color:var(--muted); margin-bottom:4px; }
157+
.msg pre { background:rgba(0,0,0,.05); border-radius:8px; padding:10px; overflow:auto; font-size:12px; }
158+
.progress { display:flex; align-items:center; gap:8px; margin:10px 0; font-size:13px; color:var(--muted); }
159+
.progress .spin { display:inline-block; animation:spin 1s linear infinite; }
160+
161+
/* ---------- assistant turn: collapsible process + prominent answer ---------- */
162+
.turn { margin:14px 0; max-width:100%; }
163+
.proc { border:1px solid var(--line); border-radius:12px; overflow:hidden; margin-bottom:6px; }
164+
.proc-head { display:flex; align-items:center; gap:8px; width:100%; border:0; background:var(--bg); color:var(--muted); font-size:13px; padding:8px 12px; cursor:pointer; text-align:left; }
165+
.proc-head:hover { background:var(--accent-soft); }
166+
.proc-head .chev { display:inline-block; transition:transform .15s; }
167+
.proc:not(.collapsed) .proc-head .chev { transform:rotate(90deg); }
168+
.proc-head .proc-label { flex:1; }
169+
.proc-head .proc-meta { font-size:12px; opacity:.8; }
170+
.proc-body { padding:2px 12px 8px; border-top:1px solid var(--line); }
171+
.proc.collapsed .proc-body { display:none; }
172+
.proc-body .progress { margin:8px 0; }
173+
.proc-text { color:var(--muted); font-size:13px; margin:8px 0; white-space:pre-wrap; word-break:break-word; }
174+
.turn .answer { white-space:pre-wrap; word-break:break-word; }
175+
.turn .answer:empty { display:none; }
176+
.turn .answer-seg + .answer-seg { margin-top:12px; }
177+
.artifact { display:inline-flex; align-items:center; gap:6px; background:var(--panel); border:1px solid var(--line); border-radius:999px; padding:5px 14px; font-size:13px; text-decoration:none; color:var(--fg); box-shadow:var(--shadow); }
178+
.artifact:hover { border-color:var(--accent); color:var(--accent); }
179+
.artifact .size { color:var(--muted); font-size:11px; }
180+
#runStatus { margin:10px 0 0; font-size:13px; color:var(--muted); display:flex; align-items:center; gap:8px; }
181+
#runStatus .spin { display:inline-block; animation:spin 1s linear infinite; }
182+
@keyframes spin { to { transform: rotate(360deg); } }
183+
#todoPanel { margin:10px 0 0; background:var(--panel); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow); padding:10px 14px; }
184+
#todoPanel .t-title { font-size:12px; color:var(--muted); margin-bottom:6px; font-weight:600; }
185+
#todoPanel .t-item { font-size:13px; padding:2px 0; display:flex; gap:8px; align-items:baseline; }
186+
#todoPanel .t-item.done { color:var(--muted); text-decoration:line-through; }
187+
#todoPanel .t-item.doing { color:var(--accent); font-weight:600; }
188+
html[data-theme="dark"] .msg pre { background:rgba(255,255,255,.06); }
189+
190+
/* ---------- auth ---------- */
191+
#auth { display:none; min-height:calc(100vh - 56px); align-items:center; justify-content:center; }
192+
#auth .card { background:var(--panel); border:1px solid var(--line); border-radius:16px; box-shadow:var(--shadow); width:380px; padding:30px; display:flex; flex-direction:column; gap:12px; }
193+
#auth h2 { margin:0 0 6px; text-align:center; color:var(--accent); }
194+
#auth input { background:var(--bg); color:var(--fg); border:1px solid var(--line); padding:11px 12px; border-radius:10px; font:inherit; }
195+
#auth .btn { background:var(--accent); color:#fff; border:0; border-radius:10px; padding:11px; font-weight:600; }
196+
#authMsg { color:var(--muted); font-size:13px; text-align:center; }

0 commit comments

Comments
 (0)