my harness for niri
1:root {
2 color-scheme: dark;
3 font-family: "JetBrains Mono", "Iosevka", "SFMono-Regular", ui-monospace, monospace;
4 background: #0d1017;
5 color: #eef2ff;
6}
7
8* {
9 box-sizing: border-box;
10}
11
12body {
13 margin: 0;
14 min-height: 100vh;
15 background: #0d1017;
16}
17
18.app {
19 max-width: 900px;
20 margin: 0 auto;
21 min-height: 100vh;
22 padding: 1.25rem;
23 display: grid;
24 grid-template-rows: auto 1fr auto;
25 gap: 1rem;
26}
27
28.header h1 {
29 margin: 0;
30 font-size: 1.3rem;
31}
32
33.status {
34 margin: 0.25rem 0 0;
35 color: #c5d0ff;
36}
37
38.toggles {
39 margin-top: 0.75rem;
40 display: flex;
41 gap: 0.75rem;
42 flex-wrap: wrap;
43 align-items: center;
44 color: #c5d0ff;
45 font-size: 0.9rem;
46}
47
48.toggles button {
49 border-radius: 8px;
50 border: 1px solid #2d344a;
51 background: #141a2b;
52 color: inherit;
53 padding: 0.35rem 0.65rem;
54 font: inherit;
55 cursor: pointer;
56}
57
58.toggles button:hover {
59 border-color: #4d4fb2;
60}
61
62.feed {
63 border: 1px solid #252a3a;
64 border-radius: 12px;
65 padding: 0.9rem;
66 overflow: auto;
67 background: #111522;
68}
69
70.entry {
71 padding: 0.7rem;
72 border-radius: 8px;
73 margin-bottom: 0.7rem;
74 border: 1px solid transparent;
75}
76
77.entry strong {
78 display: block;
79 margin-bottom: 0.35rem;
80}
81
82.entry pre {
83 margin: 0;
84 white-space: pre-wrap;
85 word-break: break-word;
86 font: inherit;
87}
88
89.entry-header {
90 display: flex;
91 justify-content: space-between;
92 align-items: center;
93 gap: 0.6rem;
94 margin-bottom: 0.4rem;
95}
96
97.entry-header button {
98 border-radius: 8px;
99 border: 1px solid #6a561f;
100 background: #2f2613;
101 color: #fce8a6;
102 padding: 0.25rem 0.5rem;
103 font: inherit;
104 cursor: pointer;
105}
106
107.entry-header button:hover {
108 border-color: #a88935;
109}
110
111.markdown {
112 line-height: 1.45;
113}
114
115.markdown > :first-child {
116 margin-top: 0;
117}
118
119.markdown > :last-child {
120 margin-bottom: 0;
121}
122
123.markdown p,
124.markdown ul,
125.markdown ol,
126.markdown blockquote {
127 margin: 0.45rem 0;
128}
129
130.markdown a {
131 color: #9bc8ff;
132}
133
134.markdown :not(pre) > code {
135 background: #1a2133;
136 border: 1px solid #2f3c5c;
137 border-radius: 6px;
138 padding: 0.1rem 0.3rem;
139}
140
141.markdown pre {
142 padding: 0.65rem;
143 border-radius: 8px;
144 border: 1px solid #2a3145;
145 background: #0d1321;
146 overflow: auto;
147}
148
149.entry-user {
150 background: #12223a;
151 border-color: #1f385f;
152}
153
154.entry-incoming {
155 background: #123334;
156 border-color: #25605f;
157}
158
159.entry-niri {
160 background: #281436;
161 border-color: #4f2b67;
162}
163
164.entry-tool {
165 background: #2b230f;
166 border-color: #58471a;
167}
168
169.entry-thinking,
170.entry-info {
171 background: #1a1f2e;
172 border-color: #2b3249;
173 color: #c5d0ff;
174}
175
176.entry-error {
177 background: #38151a;
178 border-color: #68222b;
179 color: #ffd5da;
180}
181
182.composer {
183 display: grid;
184 grid-template-columns: 1fr auto;
185 gap: 0.6rem;
186}
187
188.composer input,
189.composer button {
190 border-radius: 8px;
191 border: 1px solid #2d344a;
192 background: #141a2b;
193 color: inherit;
194 padding: 0.65rem 0.8rem;
195 font: inherit;
196}
197
198.composer button {
199 cursor: pointer;
200 background: #2d2f6a;
201 border-color: #4d4fb2;
202}
203
204.composer button:disabled {
205 opacity: 0.65;
206 cursor: default;
207}
208
209.markdown pre code.hljs {
210 background: transparent;
211 padding: 0;
212}