Skip to main content

max / makenotwork

3.5 KB · 196 lines History Blame Raw
1 /* BUTTONS */
2
3 button {
4 color: var(--detail);
5 background: var(--light-background);
6 padding: 6px 12px;
7 border: 1px solid var(--detail);
8 font-family: inherit;
9 cursor: pointer;
10 transition: opacity 0.2s ease;
11 }
12
13 button:hover {
14 opacity: 0.8;
15 }
16
17 button.primary,
18 .btn-primary {
19 background: var(--primary-dark);
20 color: var(--primary-light);
21 border: none;
22 padding: 0.5rem 1rem;
23 font-family: inherit;
24 font-size: 0.85rem;
25 cursor: pointer;
26 transition: opacity 0.2s ease;
27 }
28
29 button.primary:hover,
30 .btn-primary:hover {
31 opacity: 0.8;
32 }
33
34 button.secondary,
35 .btn-secondary {
36 background: var(--surface-muted);
37 color: var(--detail);
38 border: none;
39 padding: 0.5rem 1rem;
40 font-family: "IBM Plex Mono", monospace;
41 font-size: 0.85rem;
42 cursor: pointer;
43 transition: opacity 0.2s ease;
44 }
45
46 button.secondary:hover,
47 .btn-secondary:hover {
48 opacity: 0.8;
49 }
50
51 /* Irreversible actions. The class was in the markup before it was in here (the
52 admin clean-slate button, the chat wipe), rendering as an ordinary button,
53 which is the one thing a destructive control must not look like. */
54 button.danger {
55 background: var(--danger);
56 color: var(--primary-light);
57 border: none;
58 padding: 0.5rem 1rem;
59 font-family: inherit;
60 font-size: 0.85rem;
61 cursor: pointer;
62 transition: opacity 0.2s ease;
63 }
64
65 button.danger:hover {
66 opacity: 0.8;
67 }
68
69 /* FORMS */
70
71 form {
72 display: flex;
73 flex-direction: column;
74 gap: 1rem;
75 width: 100%;
76 }
77
78 .form-container {
79 max-width: 600px;
80 background: var(--light-background);
81 padding: 1.5rem;
82 }
83
84 label {
85 font-family: "IBM Plex Mono", monospace;
86 color: var(--detail);
87 font-size: 14px;
88 }
89
90 input[type="text"],
91 input[type="email"],
92 input[type="password"],
93 input[type="number"],
94 textarea,
95 select {
96 width: 100%;
97 background: var(--input-background);
98 border: none;
99 padding: 0.6rem;
100 font-family: "IBM Plex Mono", monospace;
101 font-size: 0.85rem;
102 color: var(--detail);
103 }
104
105 input::placeholder,
106 textarea::placeholder {
107 opacity: 0.5;
108 }
109
110 input[type="text"]:focus,
111 input[type="email"]:focus,
112 input[type="password"]:focus,
113 input[type="number"]:focus,
114 textarea:focus,
115 select:focus {
116 outline: none;
117 border: 2px solid var(--highlight);
118 }
119
120 textarea {
121 min-height: 150px;
122 resize: vertical;
123 }
124
125 textarea.drag-over {
126 border: 2px dashed var(--highlight);
127 background: var(--surface-muted);
128 }
129
130 /* Inline form validation error, inserted by mt.js on a 422 submit, replacing
131 the old error toast. Persists next to the form with the input preserved. */
132 .form-error {
133 background: var(--surface-muted);
134 border-left: 3px solid var(--error);
135 color: var(--error);
136 padding: 0.6rem 0.75rem;
137 margin-bottom: 0.75rem;
138 font-size: 0.85rem;
139 }
140
141 input[aria-invalid="true"],
142 textarea[aria-invalid="true"],
143 select[aria-invalid="true"] {
144 border: 2px solid var(--error);
145 }
146
147 select {
148 cursor: pointer;
149 }
150
151 input[type="submit"],
152 form button {
153 font-family: "Young Serif", serif;
154 font-size: 16px;
155 color: var(--detail);
156 background: var(--light-background);
157 padding: 10px 20px;
158 border: 1px solid var(--detail);
159 cursor: pointer;
160 }
161
162 input[type="submit"]:hover,
163 form button:hover {
164 background: var(--background);
165 }
166
167 .form-row {
168 display: grid;
169 grid-template-columns: 1fr 1fr;
170 gap: 1rem;
171 }
172
173 .form-group {
174 display: flex;
175 flex-direction: column;
176 gap: 0.25rem;
177 }
178
179 .form-actions {
180 display: flex;
181 gap: 1rem;
182 margin-top: 0.5rem;
183 }
184
185 .form-help {
186 display: block;
187 font-size: 0.8rem;
188 color: var(--text-muted);
189 margin-top: 0.25rem;
190 }
191
192 .input-narrow {
193 width: 6rem;
194 }
195
196