app.css
⎇
Raw
1:root {
2 --bg: #f6f7f9;
3 --panel: #ffffff;
4 --text: #1a1d21;
5 --muted: #6b7280;
6 --accent: #3b82f6;
7 --accent-hover: #2563eb;
8 --danger: #ef4444;
9 --border: #e5e7eb;
10 --radius: 12px;
11}
12
13@media (prefers-color-scheme: dark) {
14 :root {
15 --bg: #0f1115;
16 --panel: #171a20;
17 --text: #e5e7eb;
18 --muted: #9ca3af;
19 --accent: #60a5fa;
20 --accent-hover: #3b82f6;
21 --danger: #f87171;
22 --border: #2a2f3a;
23 }
24}
25
26* {
27 box-sizing: border-box;
28}
29
30body {
31 margin: 0;
32 font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
33 background: var(--bg);
34 color: var(--text);
35 font-size: 15px;
36}
37
38.muted {
39 color: var(--muted);
40}
41
42.card {
43 background: var(--panel);
44 border: 1px solid var(--border);
45 border-radius: var(--radius);
46 padding: 24px;
47}
48
49.center-screen {
50 min-height: 100vh;
51 display: flex;
52 align-items: center;
53 justify-content: center;
54 padding: 16px;
55}
56
57.auth-card {
58 width: 100%;
59 max-width: 380px;
60}
61
62.auth-card h1 {
63 margin: 0 0 8px;
64 font-size: 22px;
65}
66
67.auth-card p {
68 margin: 0 0 20px;
69 font-size: 13px;
70}
71
72.field {
73 display: block;
74 margin-bottom: 14px;
75}
76
77.field span {
78 display: block;
79 font-size: 13px;
80 color: var(--muted);
81 margin-bottom: 4px;
82}
83
84input {
85 width: 100%;
86 padding: 10px 12px;
87 border-radius: 8px;
88 border: 1px solid var(--border);
89 background: var(--bg);
90 color: var(--text);
91 font-size: 14px;
92}
93
94input:focus {
95 outline: 2px solid var(--accent);
96 outline-offset: -1px;
97}
98
99button {
100 font: inherit;
101 cursor: pointer;
102 border-radius: 8px;
103 border: 1px solid var(--border);
104 background: var(--panel);
105 color: var(--text);
106 padding: 9px 14px;
107}
108
109button:hover {
110 border-color: var(--muted);
111}
112
113button:disabled {
114 opacity: 0.6;
115 cursor: default;
116}
117
118.btn-primary {
119 width: 100%;
120 background: var(--accent);
121 border-color: var(--accent);
122 color: #fff;
123 font-weight: 600;
124}
125
126.btn-primary:hover {
127 background: var(--accent-hover);
128 border-color: var(--accent-hover);
129}
130
131.error {
132 color: var(--danger);
133 font-size: 13px;
134 min-height: 18px;
135 margin: 0 0 10px;
136}
137
138/* layout (signed-in) */
139
140.layout {
141 min-height: 100vh;
142 display: flex;
143 flex-direction: column;
144}
145
146.topbar {
147 display: flex;
148 align-items: center;
149 justify-content: space-between;
150 padding: 10px 20px;
151 background: var(--panel);
152 border-bottom: 1px solid var(--border);
153}
154
155.brand {
156 font-weight: 700;
157}
158
159.topbar-right {
160 display: flex;
161 align-items: center;
162 gap: 12px;
163}
164
165.user-badge {
166 font-size: 14px;
167 display: flex;
168 align-items: center;
169 gap: 8px;
170}
171
172.badge {
173 font-size: 11px;
174 padding: 2px 8px;
175 border-radius: 999px;
176 background: var(--bg);
177 border: 1px solid var(--border);
178 color: var(--muted);
179}
180
181.content {
182 flex: 1;
183 display: flex;
184 flex-direction: column;
185 align-items: center;
186 padding: 40px 16px;
187}
188
189.welcome-card {
190 width: 100%;
191 max-width: 640px;
192}
193
194.welcome-card h1 {
195 margin: 0 0 8px;
196 font-size: 22px;
197}
198
199.welcome-card p {
200 margin: 0 0 16px;
201 font-size: 14px;
202}
203
204.section-title {
205 font-size: 15px;
206 margin: 0 0 4px;
207}
208
209.roots {
210 list-style: none;
211 margin: 0;
212 padding: 0;
213}
214
215.roots li {
216 display: flex;
217 align-items: center;
218 gap: 10px;
219 padding: 10px 0;
220 border-top: 1px solid var(--border);
221}
222
223.roots .root-name {
224 font-weight: 600;
225}
226
227.roots .muted {
228 font-size: 13px;
229 flex: 1;
230}
231