PluginProbe
Hash Form – Drag & Drop Form Builder / trunk
Hash Form – Drag & Drop Form Builder vtrunk
1.4.4 1.4.3 1.4.2 1.4.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.6.1 1.2.7 1.2.8 1.2.9 1.3.0 All 47 releases
hash-form / css / style.css

style.css in Hash Form – Drag & Drop Form Builder trunk, at css/style.css

2,751 lines 109.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 .hf-form-preview .hf-form-error {
2 padding: 100px 0;
3 text-align: center;
4 }
5
6 .hf-form-custom-style .hf-form-preview {
7 background: var(--hf-form-bg-color, transparent);
8 box-shadow: var(--hf-form-shadow-x, 0) var(--hf-form-shadow-y, 0) var(--hf-form-shadow-blur, 0) var(--hf-form-shadow-spread, 0) var(--hf-form-shadow-color, transparent);
9 padding: var(--hf-form-padding-top, 0) var(--hf-form-padding-right, 0) var(--hf-form-padding-bottom, 0) var(--hf-form-padding-left, 0);
10 border-top: var(--hf-form-border-top, 0) solid var(--hf-form-border-color, transparent);
11 border-right: var(--hf-form-border-right, 0) solid var(--hf-form-border-color, transparent);
12 border-bottom: var(--hf-form-border-bottom, 0) solid var(--hf-form-border-color, transparent);
13 border-left: var(--hf-form-border-left, 0) solid var(--hf-form-border-color, transparent);
14 border-radius: var(--hf-form-border-radius-top, 0) var(--hf-form-border-radius-right, 0) var(--hf-form-border-radius-bottom, 0) var(--hf-form-border-radius-left, 0);
15 }
16
17 .hf-container * {
18 box-sizing: border-box;
19 }
20
21 .hf-container img {
22 max-width: 100%;
23 vertical-align: middle;
24 }
25
26 .hf-hidden {
27 display: none;
28 }
29
30 /* Form Container and Fields */
31 .hf-container,
32 .hf-grouped-field {
33 display: grid;
34 grid-template-columns: repeat(12, 1fr);
35 grid-gap: 20px;
36 }
37
38 .hf-form-custom-style .hf-container,
39 .hf-form-custom-style .hf-grouped-field {
40 grid-gap: var(--hf-form-row-gap, 20px) var(--hf-form-column-gap, 20px);
41 }
42
43
44 .hf-container > * {
45 grid-column: span 12 / span 12;
46 }
47
48 /* One grid cell holding fields stacked under each other. Flex, not grid, so
49 the span classes the fields still carry have no effect inside it. */
50 .hf-column-group {
51 display: flex;
52 flex-direction: column;
53 gap: 20px;
54 min-width: 0;
55 }
56
57 .hf-form-custom-style .hf-column-group {
58 gap: var(--hf-form-row-gap, 20px);
59 }
60
61 .hf-grid-11 {
62 grid-column: span 11 / span 11;
63 }
64
65 .hf-grid-10 {
66 grid-column: span 10 / span 10;
67 }
68
69 .hf-grid-9 {
70 grid-column: span 9 / span 9;
71 }
72
73 .hf-grid-8 {
74 grid-column: span 8 / span 8;
75 }
76
77 .hf-grid-7 {
78 grid-column: span 7 / span 7;
79 }
80
81 .hf-grid-6 {
82 grid-column: span 6 / span 6;
83 }
84
85 .hf-grid-5 {
86 grid-column: span 5 / span 5;
87 }
88
89 .hf-grid-4 {
90 grid-column: span 4 / span 4;
91 }
92
93 .hf-grid-3 {
94 grid-column: span 3/span 3;
95 }
96
97 .hf-grid-2 {
98 grid-column: span 2/span 2;
99 }
100
101 .hf-grid-1 {
102 grid-column: span 1/span 1;
103 }
104
105 /* Forms Title and Description */
106 .hf-form-tempate .hf-form-title {
107 margin: 0 0 20px;
108 }
109
110 .hf-form-custom-style .hf-form-title {
111 font-family: var(--hf-form-title-typo-font-family);
112 font-size: var(--hf-form-title-typo-font-size, 30px);
113 font-weight: var(--hf-form-title-typo-font-weight, 700);
114 font-style: var(--hf-form-title-typo-font-style, normal);
115 letter-spacing: var(--hf-form-title-typo-letter-spacing, normal);
116 text-transform: var(--hf-form-title-typo-text-transform, inherit);
117 text-decoration: var(--hf-form-title-typo-text-decoration, inherit);
118 line-height: var(--hf-form-title-typo-line-height, 1.2);
119 color: var(--hf-form-title-typo-font-color, #666);
120 margin-bottom: var(--hf-form-title-spacing, 20px);
121 margin-top: var(--hf-form-title-spacing-top, 0);
122 margin-left: var(--hf-form-title-spacing-left, 0);
123 margin-right: var(--hf-form-title-spacing-right, 0);
124 }
125
126 .hf-form-defaut-style .hf-form-title {
127 font-size: 30px;
128 font-weight: 700;
129 font-style: normal;
130 letter-spacing: normal;
131 text-transform: inherit;
132 text-decoration: inherit;
133 line-height: 1.2;
134 color: #666;
135 }
136
137 .hf-form-description p {
138 margin: 0 0 0.7em
139 }
140
141 .hf-form-custom-style .hf-form-description p {
142 font-family: var(--hf-form-desc-typo-font-family);
143 font-size: var(--hf-form-desc-typo-font-size, 16px);
144 font-weight: var(--hf-form-desc-typo-font-weight, 400);
145 font-style: var(--hf-form-desc-typo-font-style, normal);
146 letter-spacing: var(--hf-form-desc-typo-letter-spacing, normal);
147 text-transform: var(--hf-form-desc-typo-text-transform, inherit);
148 text-decoration: var(--hf-form-desc-typo-text-decoration, inherit);
149 line-height: var(--hf-form-desc-typo-line-height, 1.2);
150 color: var(--hf-form-desc-typo-font-color, #666);
151 }
152
153 .hf-form-default-style .hf-form-description p {
154 font-size: 16px;
155 font-weight: 400;
156 font-style: normal;
157 letter-spacing: normal;
158 text-transform: inherit;
159 text-decoration: inherit;
160 line-height: 1.2;
161 color: #666;
162 }
163
164 .hf-form-tempate .hf-form-description {
165 margin: 0 0 20px;
166 }
167
168 .hf-form-custom-style .hf-form-description {
169 margin-bottom: var(--hf-form-desc-spacing, 20px);
170 margin-top: var(--hf-form-desc-spacing-top, 0);
171 margin-left: var(--hf-form-desc-spacing-left, 0);
172 margin-right: var(--hf-form-desc-spacing-right, 0);
173 }
174
175 /* Forms */
176 .hf-container button,
177 .hf-container input[type="button"],
178 .hf-container input[type="reset"],
179 .hf-container input[type="submit"] {
180 cursor: pointer;
181 }
182
183 .hf-form-custom-style .hf-container button,
184 .hf-form-custom-style .hf-container input[type="button"],
185 .hf-form-custom-style .hf-container input[type="reset"],
186 .hf-form-custom-style .hf-container input[type="submit"] {
187 border-top: var(--hf-button-border-top, 0) var(--hf-button-border, solid) var(--hf-button-border-color-normal, #CCC);
188 border-right: var(--hf-button-border-right, 0) var(--hf-button-border, solid) var(--hf-button-border-color-normal, #CCC);
189 border-bottom: var(--hf-button-border-bottom, 0) var(--hf-button-border, solid) var(--hf-button-border-color-normal, #CCC);
190 border-left: var(--hf-button-border-left, 0) var(--hf-button-border, solid) var(--hf-button-border-color-normal, #CCC);
191 border-radius: var(--hf-button-border-radius-top, 3px) var(--hf-button-border-radius-right, 3px) var(--hf-button-border-radius-bottom, 3px) var(--hf-button-border-radius-left, 3px);
192 padding: var(--hf-button-padding-top, 15px) var(--hf-button-padding-right, 30px) var(--hf-button-padding-bottom, 15px) var(--hf-button-padding-left, 30px);
193 font-family: var(--hf-button-typo-font-family);
194 font-size: var(--hf-button-typo-font-size, 14px);
195 font-weight: var(--hf-button-typo-font-weight, 400);
196 font-style: var(--hf-button-typo-font-style, normal);
197 letter-spacing: var(--hf-button-typo-letter-spacing, normal);
198 text-transform: var(--hf-button-typo-text-transform, inherit);
199 text-decoration: var(--hf-button-typo-text-decoration, inherit);
200 line-height: var(--hf-button-typo-line-height, 1.2);
201 color: var(--hf-button-color-normal, #FFF);
202 background-color: var(--hf-button-bg-color-normal, #000);
203 box-shadow: var(--hf-button-shadow-normal-x, 0) var(--hf-button-shadow-normal-y, 0) var(--hf-button-shadow-normal-blur, 0) var(--hf-button-shadow-normal-spread, 0) var(--hf-button-shadow-normal-color, transparent);
204 outline: 0;
205 min-height: 0;
206 height: auto;
207 }
208
209 .hf-form-default-style .hf-container button,
210 .hf-form-default-style .hf-container input[type="button"],
211 .hf-form-default-style .hf-container input[type="reset"],
212 .hf-form-default-style .hf-container input[type="submit"] {
213 border: 0;
214 border-radius: 3px;
215 padding: 15px 30px;
216 font-size: 14px;
217 font-weight: 400;
218 font-style: normal;
219 letter-spacing: normal;
220 text-transform: inherit;
221 text-decoration: inherit;
222 line-height: 1.2;
223 outline: 0;
224 min-height: 0;
225 height: auto;
226 color: #FFF;
227 background: #333;
228 }
229
230 .hf-form-custom-style .hf-container button:hover,
231 .hf-form-custom-style .hf-container input[type="button"]:hover,
232 .hf-form-custom-style .hf-container input[type="reset"]:hover,
233 .hf-form-custom-style .hf-container input[type="submit"]:hover {
234 border-top: var(--hf-button-border-top, 0) var(--hf-button-border, solid) var(--hf-button-border-color-hover, var(--hf-button-border-color-normal, #CCC));
235 border-right: var(--hf-button-border-right, 0) var(--hf-button-border, solid) var(--hf-button-border-color-hover, var(--hf-button-border-color-normal, #CCC));
236 border-bottom: var(--hf-button-border-bottom, 0) var(--hf-button-border, solid) var(--hf-button-border-color-hover, var(--hf-button-border-color-normal, #CCC));
237 border-left: var(--hf-button-border-left, 0) var(--hf-button-border, solid) var(--hf-button-border-color-hover, var(--hf-button-border-color-normal, #CCC));
238 color: var(--hf-button-color-hover, var(--hf-button-color-normal, #FFF));
239 background-color: var(--hf-button-bg-color-hover, var(--hf-button-bg-color-normal, #000));
240 box-shadow: var(--hf-button-shadow-hover-x, var(--hf-button-shadow-normal-x, 0)) var(--hf-button-shadow-hover-y, var(--hf-button-shadow-normal-y, 0)) var(--hf-button-shadow-hover-blur, var(--hf-button-shadow-normal-blur, 0)) var(--hf-button-shadow-hover-spread, var(--hf-button-shadow-normal-spread, 0)) var(--hf-button-shadow-hover-color, var(--hf-button-shadow-normal-color, transparent));
241 }
242
243 .hf-container input[type="text"],
244 .hf-container input[type="email"],
245 .hf-container input[type="url"],
246 .hf-container input[type="password"],
247 .hf-container input[type="search"],
248 .hf-container input[type="number"],
249 .hf-container input[type="tel"],
250 .hf-container input[type="range"],
251 .hf-container input[type="date"],
252 .hf-container input[type="month"],
253 .hf-container input[type="week"],
254 .hf-container input[type="time"],
255 .hf-container input[type="datetime"],
256 .hf-container input[type="datetime-local"],
257 .hf-container input[type="color"],
258 .hf-container textarea,
259 .hf-container select {
260 width: 100%;
261 max-width: 100%;
262 outline: 0;
263 }
264
265 .hf-container select{
266 padding-right: 40px !important;
267 }
268
269 .hf-form-custom-style .hf-container input[type="text"],
270 .hf-form-custom-style .hf-container input[type="email"],
271 .hf-form-custom-style .hf-container input[type="url"],
272 .hf-form-custom-style .hf-container input[type="password"],
273 .hf-form-custom-style .hf-container input[type="search"],
274 .hf-form-custom-style .hf-container input[type="number"],
275 .hf-form-custom-style .hf-container input[type="tel"],
276 .hf-form-custom-style .hf-container input[type="range"],
277 .hf-form-custom-style .hf-container input[type="date"],
278 .hf-form-custom-style .hf-container input[type="month"],
279 .hf-form-custom-style .hf-container input[type="week"],
280 .hf-form-custom-style .hf-container input[type="time"],
281 .hf-form-custom-style .hf-container input[type="datetime"],
282 .hf-form-custom-style .hf-container input[type="datetime-local"],
283 .hf-form-custom-style .hf-container input[type="color"],
284 .hf-form-custom-style .hf-container textarea,
285 .hf-form-custom-style .hf-container select {
286 border-top: var(--hf-field-border-top, 1px) var(--hf-field-border, solid) var(--hf-field-border-color-normal, #CCC);
287 border-right: var(--hf-field-border-right, 1px) var(--hf-field-border, solid) var(--hf-field-border-color-normal, #CCC);
288 border-bottom: var(--hf-field-border-bottom, 1px) var(--hf-field-border, solid) var(--hf-field-border-color-normal, #CCC);
289 border-left: var(--hf-field-border-left, 1px) var(--hf-field-border, solid) var(--hf-field-border-color-normal, #CCC);
290 border-radius: var(--hf-field-border-radius-top, 3px) var(--hf-field-border-radius-right, 3px) var(--hf-field-border-radius-bottom, 3px) var(--hf-field-border-radius-left, 3px);
291 padding: var(--hf-field-padding-top, 10px) var(--hf-field-padding-right, 10px) var(--hf-field-padding-bottom, 10px) var(--hf-field-padding-left, 10px);
292 font-family: var(--hf-field-typo-font-family);
293 font-size: var(--hf-field-typo-font-size, 14px);
294 font-weight: var(--hf-field-typo-font-weight, 400);
295 font-style: var(--hf-field-typo-font-style, bold);
296 letter-spacing: var(--hf-field-typo-letter-spacing, normal);
297 text-transform: var(--hf-field-typo-text-transform, inherit);
298 text-decoration: var(--hf-field-typo-text-decoration, inherit);
299 line-height: var(--hf-field-typo-line-height, 1.2);
300 color: var(--hf-field-color-normal, #666);
301 background-color: var(--hf-field-bg-color-normal, transparent);
302 box-shadow: var(--hf-field-shadow-normal-x, 0) var(--hf-field-shadow-normal-y, 0) var(--hf-field-shadow-normal-blur, 0) var(--hf-field-shadow-normal-spread, 0) var(--hf-field-shadow-normal-color, transparent);
303 outline: 0;
304 min-height: 0;
305 height: auto;
306 }
307
308 .hf-form-custom-style .hf-container input[type="text"]::placeholder,
309 .hf-form-custom-style .hf-container input[type="email"]::placeholder,
310 .hf-form-custom-style .hf-container input[type="url"]::placeholder,
311 .hf-form-custom-style .hf-container input[type="password"]::placeholder,
312 .hf-form-custom-style .hf-container input[type="search"]::placeholder,
313 .hf-form-custom-style .hf-container input[type="number"]::placeholder,
314 .hf-form-custom-style .hf-container input[type="tel"]::placeholder,
315 .hf-form-custom-style .hf-container input[type="range"]::placeholder,
316 .hf-form-custom-style .hf-container input[type="date"]::placeholder,
317 .hf-form-custom-style .hf-container input[type="month"]::placeholder,
318 .hf-form-custom-style .hf-container input[type="week"]::placeholder,
319 .hf-form-custom-style .hf-container input[type="time"]::placeholder,
320 .hf-form-custom-style .hf-container input[type="datetime"]::placeholder,
321 .hf-form-custom-style .hf-container input[type="datetime-local"]::placeholder,
322 .hf-form-custom-style .hf-container input[type="color"]::placeholder,
323 .hf-form-custom-style .hf-container textarea::placeholder,
324 .hf-form-custom-style .hf-container select::placeholder {
325 color: var(--hf-field-color-normal, #666);
326 opacity: 0.7;
327 }
328
329 .hf-form-default-style .hf-container input[type="text"],
330 .hf-form-default-style .hf-container input[type="email"],
331 .hf-form-default-style .hf-container input[type="url"],
332 .hf-form-default-style .hf-container input[type="password"],
333 .hf-form-default-style .hf-container input[type="search"],
334 .hf-form-default-style .hf-container input[type="number"],
335 .hf-form-default-style .hf-container input[type="tel"],
336 .hf-form-default-style .hf-container input[type="range"],
337 .hf-form-default-style .hf-container input[type="date"],
338 .hf-form-default-style .hf-container input[type="month"],
339 .hf-form-default-style .hf-container input[type="week"],
340 .hf-form-default-style .hf-container input[type="time"],
341 .hf-form-default-style .hf-container input[type="datetime"],
342 .hf-form-default-style .hf-container input[type="datetime-local"],
343 .hf-form-default-style .hf-container input[type="color"],
344 .hf-form-default-style .hf-container textarea,
345 .hf-form-default-style .hf-container select {
346 border: 1px solid #CCC;
347 border-radius: 3px;
348 padding: 10px;
349 font-family: inherit;
350 font-size: 14px;
351 font-weight: 400;
352 font-style: normal;
353 letter-spacing: normal;
354 text-transform: inherit;
355 text-decoration: inherit;
356 line-height: 1.2;
357 color: #666;
358 background-color: transparent;
359 outline: 0;
360 min-height: 0;
361 height: auto;
362 }
363
364 .hf-form-custom-style .hf-container input[type="text"]:focus,
365 .hf-form-custom-style .hf-container input[type="email"]:focus,
366 .hf-form-custom-style .hf-container input[type="url"]:focus,
367 .hf-form-custom-style .hf-container input[type="password"]:focus,
368 .hf-form-custom-style .hf-container input[type="search"]:focus,
369 .hf-form-custom-style .hf-container input[type="number"]:focus,
370 .hf-form-custom-style .hf-container input[type="tel"]:focus,
371 .hf-form-custom-style .hf-container input[type="range"]:focus,
372 .hf-form-custom-style .hf-container input[type="date"]:focus,
373 .hf-form-custom-style .hf-container input[type="month"]:focus,
374 .hf-form-custom-style .hf-container input[type="week"]:focus,
375 .hf-form-custom-style .hf-container input[type="time"]:focus,
376 .hf-form-custom-style .hf-container input[type="datetime"]:focus,
377 .hf-form-custom-style .hf-container input[type="datetime-local"]:focus,
378 .hf-form-custom-style .hf-container input[type="color"]:focus,
379 .hf-form-custom-style .hf-container textarea:focus,
380 .hf-form-custom-style .hf-container select:focus {
381 border-top: var(--hf-field-border-top, 1px) var(--hf-field-border, solid) var(--hf-field-border-color-focus, var(--hf-field-border-color-normal, #CCC));
382 border-right: var(--hf-field-border-right, 1px) var(--hf-field-border, solid) var(--hf-field-border-color-focus, var(--hf-field-border-color-normal, #CCC));
383 border-bottom: var(--hf-field-border-bottom, 1px) var(--hf-field-border, solid) var(--hf-field-border-color-focus, var(--hf-field-border-color-normal, #CCC));
384 border-left: var(--hf-field-border-left, 1px) var(--hf-field-border, solid) var(--hf-field-border-color-focus, var(--hf-field-border-color-normal, #CCC));
385 color: var(--hf-field-color-focus, var(--hf-field-color-normal, inherit));
386 background-color: var(--hf-field-bg-color-focus, var(--hf-field-bg-color-normal, transparent));
387 box-shadow: var(--hf-field-shadow-focus-x, var(--hf-field-shadow-normal-x, 0)) var(--hf-field-shadow-focus-y, var(--hf-field-shadow-normal-y, 0)) var(--hf-field-shadow-focus-blur, var(--hf-field-shadow-normal-blur, 0)) var(--hf-field-shadow-focus-spread, var(--hf-field-shadow-normal-spread, 0)) var(--hf-field-shadow-focus-color, var(--hf-field-shadow-normal-color, transparent));
388 }
389
390 .hf-form-custom-style .hf-container input[type="text"]::placeholder:focus,
391 .hf-form-custom-style .hf-container input[type="email"]::placeholder:focus,
392 .hf-form-custom-style .hf-container input[type="url"]::placeholder:focus,
393 .hf-form-custom-style .hf-container input[type="password"]::placeholder:focus,
394 .hf-form-custom-style .hf-container input[type="search"]::placeholder:focus,
395 .hf-form-custom-style .hf-container input[type="number"]::placeholder:focus,
396 .hf-form-custom-style .hf-container input[type="tel"]::placeholder:focus,
397 .hf-form-custom-style .hf-container input[type="range"]::placeholder:focus,
398 .hf-form-custom-style .hf-container input[type="date"]::placeholder:focus,
399 .hf-form-custom-style .hf-container input[type="month"]::placeholder:focus,
400 .hf-form-custom-style .hf-container input[type="week"]::placeholder:focus,
401 .hf-form-custom-style .hf-container input[type="time"]::placeholder:focus,
402 .hf-form-custom-style .hf-container input[type="datetime"]::placeholder:focus,
403 .hf-form-custom-style .hf-container input[type="datetime-local"]::placeholder:focus,
404 .hf-form-custom-style .hf-container input[type="color"]::placeholder:focus,
405 .hf-form-custom-style .hf-container textarea::placeholder:focus,
406 .hf-form-custom-style .hf-container select::placeholder:focus {
407 color: var(--hf-field-color-focus, var(--hf-field-color-normal, inherit));
408 }
409
410 .hf-form-custom-style .hf-form-field.hashform-field-type-spinner .hf-quantity-input.hf-field-focussed .mdi-minus,
411 .hf-form-custom-style .hf-form-field.hashform-field-type-spinner .hf-quantity-input.hf-field-focussed .mdi-plus {
412 border-color: var(--hf-field-border-color-focus, var(--hf-field-border-color-normal, #CCC));
413 }
414
415 .hf-form-default-style .hf-container input[type="text"]:focus,
416 .hf-form-default-style .hf-container input[type="email"]:focus,
417 .hf-form-default-style .hf-container input[type="url"]:focus,
418 .hf-form-default-style .hf-container input[type="password"]:focus,
419 .hf-form-default-style .hf-container input[type="search"]:focus,
420 .hf-form-default-style .hf-container input[type="number"]:focus,
421 .hf-form-default-style .hf-container input[type="tel"]:focus,
422 .hf-form-default-style .hf-container input[type="range"]:focus,
423 .hf-form-default-style .hf-container input[type="date"]:focus,
424 .hf-form-default-style .hf-container input[type="month"]:focus,
425 .hf-form-default-style .hf-container input[type="week"]:focus,
426 .hf-form-default-style .hf-container input[type="time"]:focus,
427 .hf-form-default-style .hf-container input[type="datetime"]:focus,
428 .hf-form-default-style .hf-container input[type="datetime-local"]:focus,
429 .hf-form-default-style .hf-container input[type="color"]:focus,
430 .hf-form-default-style .hf-container textarea:focus,
431 .hf-form-default-style .hf-container select:focus {
432 border: 1px solid #BBB;
433 }
434
435 .hf-container .hf-field-label {
436 margin-bottom: 8px;
437 }
438
439 .hf-container .hf-field-content {
440 flex-grow: 1;
441 }
442
443 .hf-form-custom-style .hf-container .hf-field-label {
444 display: block;
445 font-family: var(--hf-label-typo-font-family);
446 font-size: var(--hf-label-typo-font-size, 1em);
447 font-weight: var(--hf-label-typo-font-weight, 400);
448 font-style: var(--hf-label-typo-font-style, normal);
449 letter-spacing: var(--hf-label-typo-letter-spacing, normal);
450 text-transform: var(--hf-label-typo-text-transform, inherit);
451 text-decoration: var(--hf-label-typo-text-decoration, inherit);
452 line-height: var(--hf-label-typo-line-height, 1.2);
453 color: var(--hf-label-typo-font-color, inherit);
454 margin-bottom: var(--hf-label-spacing, 8px);
455 margin-top: var(--hf-label-spacing-top, 0);
456 margin-left: var(--hf-label-spacing-left, 0);
457 margin-right: var(--hf-label-spacing-right, 0);
458 }
459
460 .hf-container .hf-field-label .hf-field-required {
461 color: #FF0000;
462 }
463
464 .hf-form-custom-style .hf-container .hf-field-label .hf-field-required {
465 color: var(--hf-label-required-color, #FF0000);
466 }
467
468 .hf-form-default-style .hf-container .hf-field-label {
469 display: block;
470 font-size: 14px;
471 font-weight: 400;
472 font-style: normal;
473 letter-spacing: normal;
474 text-transform: inherit;
475 text-decoration: inherit;
476 line-height: 1.2;
477 color: #666;
478 color: inherit;
479 }
480
481 .hf-container .hf-field-desc {
482 font-size: 0.82em;
483 margin-top: 5px;
484 }
485
486 .hf-form-custom-style .hf-container .hf-field-desc {
487 font-family: var(--hf-desc-typo-font-family);
488 font-size: var(--hf-desc-typo-font-size, 0.82em);
489 font-weight: var(--hf-desc-typo-font-weight, 400);
490 font-style: var(--hf-desc-typo-font-style, italic);
491 letter-spacing: var(--hf-desc-typo-letter-spacing, normal);
492 text-transform: var(--hf-desc-typo-text-transform, inherit);
493 text-decoration: var(--hf-desc-typo-text-decoration, inherit);
494 line-height: var(--hf-desc-typo-line-height, 1.2);
495 color: var(--hf-desc-typo-font-color, inherit);
496 margin-top: var(--hf-desc-spacing, 5px);
497 margin-bottom: var(--hf-desc-spacing-bottom, 0);
498 margin-left: var(--hf-desc-spacing-left, 0);
499 margin-right: var(--hf-desc-spacing-right, 0);
500 }
501
502 .hf-form-default-style .hf-container .hf-field-desc {
503 display: block;
504 font-size: 12px;
505 font-weight: 400;
506 font-style: normal;
507 letter-spacing: normal;
508 text-transform: inherit;
509 text-decoration: inherit;
510 line-height: 1.2;
511 color: #666;
512 }
513
514 .hf-form-default-style .hashform-error-container .hf-field-label {
515 color: #FF0000;
516 }
517
518 .hf-form-custom-style .hashform-error-container .hf-field-label {
519 color: var(--hf-validation-typo-font-color, #FF0000);
520 }
521
522 .hf-form-custom-style .hashform-error-container input[type="text"],
523 .hf-form-custom-style .hashform-error-container input[type="email"],
524 .hf-form-custom-style .hashform-error-container input[type="url"],
525 .hf-form-custom-style .hashform-error-container input[type="password"],
526 .hf-form-custom-style .hashform-error-container input[type="search"],
527 .hf-form-custom-style .hashform-error-container input[type="number"],
528 .hf-form-custom-style .hashform-error-container input[type="tel"],
529 .hf-form-custom-style .hashform-error-container input[type="range"],
530 .hf-form-custom-style .hashform-error-container input[type="date"],
531 .hf-form-custom-style .hashform-error-container input[type="month"],
532 .hf-form-custom-style .hashform-error-container input[type="week"],
533 .hf-form-custom-style .hashform-error-container input[type="time"],
534 .hf-form-custom-style .hashform-error-container input[type="datetime"],
535 .hf-form-custom-style .hashform-error-container input[type="datetime-local"],
536 .hf-form-custom-style .hashform-error-container input[type="color"],
537 .hf-form-custom-style .hashform-error-container textarea,
538 .hf-form-custom-style .hashform-error-container select {
539 border-color: var(--hf-validation-typo-font-color, #FF0000);
540 }
541
542 .hf-container .hf-error-msg {
543 margin: 5px 0 0;
544 color: #FF0000;
545 display: block;
546 background: none;
547 font-size: 0.82em;
548 }
549
550 .hf-form-custom-style .hf-container .hf-error-msg {
551 font-family: var(--hf-validation-typo-font-family);
552 font-size: var(--hf-validation-typo-font-size, 0.82em);
553 font-weight: var(--hf-validation-typo-font-weight, 400);
554 font-style: var(--hf-validation-typo-font-style, normal);
555 letter-spacing: var(--hf-validation-typo-letter-spacing, normal);
556 text-transform: var(--hf-validation-typo-text-transform, inherit);
557 text-decoration: var(--hf-validation-typo-text-decoration, inherit);
558 line-height: var(--hf-validation-typo-line-height, 1.2);
559 color: var(--hf-validation-typo-font-color, #FF0000);
560 margin: var(--hf-validation-spacing, 5px) 0 0;
561 text-align: var(--hf-validation-textalign, left);
562 }
563
564 .hf-form-default-style .hf-container .hf-error-msg {
565 display: block;
566 font-size: 13px;
567 font-weight: 400;
568 font-style: normal;
569 letter-spacing: normal;
570 text-transform: inherit;
571 text-decoration: inherit;
572 line-height: 1.2;
573 }
574
575 /* Label Position */
576 .hf-form-field .hf-field-container {
577 display: flex;
578 max-width: 100%;
579 width: var(--hf-width, 100%);
580 }
581
582 .hf-form-field .hashform-field-type {
583 flex-grow: 1;
584 }
585
586 .hf-form-field.hf-label-position-top .hf-field-container {
587 flex-direction: column;
588 }
589
590 .hf-form-field.hf-label-position-left .hf-field-container,
591 .hf-form-field.hf-label-position-right .hf-field-container {
592 gap: 20px;
593 }
594
595 .hf-form-field.hf-label-position-left .hf-field-label {
596 width: 200px;
597 flex: 0 0 200px;
598 margin: 0;
599 }
600
601 .hf-form-field.hf-label-position-right .hf-field-label {
602 width: 200px;
603 flex: 0 0 200px;
604 order: 2;
605 }
606
607 .hf-form-field.hf-label-position-hide .hf-field-label {
608 display: none;
609 }
610
611 /* Label Alignment */
612 .hf-form-field.hf-label-alignment-right .hf-field-label {
613 text-align: right;
614 }
615
616 .hf-form-field.hf-label-alignment-center .hf-field-label {
617 text-align: center;
618 }
619
620 /* Text Alignment */
621 .hf-form-field.hf-text-alignment-center .hf-field-container {
622 text-align: center;
623 }
624
625 .hf-form-field.hf-text-alignment-right .hf-field-container {
626 text-align: right;
627 }
628
629 /* Field Alignment */
630 .hf-form-field.hf-field-alignment-center .hf-field-container {
631 justify-content: center;
632 }
633
634 .hf-form-field.hf-field-alignment-right .hf-field-container {
635 justify-content: flex-end;
636 }
637
638 /* Name Field */
639 .hf-form-field.hashform-field-type-name .hf-grouped-field .hf-subfield-element {
640 grid-column: span 4 / span 4;
641 }
642
643 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="first_last"] .hf-subfield-element,
644 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="last_first"] .hf-subfield-element {
645 grid-column: span 6 / span 6;
646 }
647
648 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="full"] .hf-subfield-element {
649 grid-column: span 12;
650 }
651
652 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="full"] .hf-subfield-element-first,
653 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="full"] .hf-subfield-element-middle,
654 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="full"] .hf-subfield-element-last,
655 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="first_last"] .hf-subfield-element-full,
656 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="last_first"] .hf-subfield-element-full,
657 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="first_middle_last"] .hf-subfield-element-full,
658 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="first_last"] .hf-subfield-element-middle,
659 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="last_first"] .hf-subfield-element-middle {
660 display: none;
661 }
662
663 .hf-form-field.hashform-field-type-name .hf-grouped-field[data-name-layout="last_first"] .hf-subfield-element-last {
664 order: -1;
665 }
666
667 /* Heading */
668 .hf-form-field.hashform-field-type-heading h1 {
669 margin: 0;
670 }
671
672 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h1,
673 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h2,
674 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h3,
675 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h4,
676 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h5,
677 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h6 {
678 font-family: var(--hf-heading-typo-font-family);
679 font-weight: var(--hf-heading-typo-font-weight, 400);
680 font-style: var(--hf-heading-typo-font-style, normal);
681 letter-spacing: var(--hf-heading-typo-letter-spacing, normal);
682 text-transform: var(--hf-heading-typo-text-transform, inherit);
683 text-decoration: var(--hf-heading-typo-text-decoration, inherit);
684 line-height: var(--hf-heading-typo-line-height, 1.2);
685 color: var(--hf-heading-typo-font-color, inherit);
686 }
687
688 .hf-form-default-style .hf-form-field.hashform-field-type-heading h1,
689 .hf-form-default-style .hf-form-field.hashform-field-type-heading h2,
690 .hf-form-default-style .hf-form-field.hashform-field-type-heading h3,
691 .hf-form-default-style .hf-form-field.hashform-field-type-heading h4,
692 .hf-form-default-style .hf-form-field.hashform-field-type-heading h5,
693 .hf-form-default-style .hf-form-field.hashform-field-type-heading h6 {
694 font-weight: 700;
695 font-style: normal;
696 letter-spacing: normal;
697 text-transform: inherit;
698 text-decoration: inherit;
699 line-height: 1.2;
700 color: #333;
701 }
702
703 .hf-form-custom-style .hf-form-field.hashform-field-type-heading {
704 font-size: var(--hf-heading-typo-font-size, 34px);
705 }
706
707 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h1 {
708 font-size: 1em;
709 }
710
711 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h2 {
712 font-size: 0.9em;
713 }
714
715 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h3 {
716 font-size: 0.8em;
717 }
718
719 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h4 {
720 font-size: 0.7em;
721 }
722
723 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h5 {
724 font-size: 0.6em;
725 }
726
727 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h6 {
728 font-size: 0.5em;
729 }
730
731 /* paragraph */
732
733 /* One field can hold several paragraphs now, so they need space between them
734 without adding space above the first or below the last. */
735 .hf-form-field.hashform-field-type-paragraph p {
736 margin: 0 0 1em;
737 }
738
739 .hf-form-field.hashform-field-type-paragraph p:last-child {
740 margin-bottom: 0;
741 }
742
743 .hf-form-custom-style .hf-form-field.hashform-field-type-paragraph p {
744 font-family: var(--hf-paragraph-typo-font-family);
745 font-size: var(--hf-paragraph-typo-font-size, 13px);
746 font-weight: var(--hf-paragraph-typo-font-weight, 400);
747 font-style: var(--hf-paragraph-typo-font-style, normal);
748 letter-spacing: var(--hf-paragraph-typo-letter-spacing, normal);
749 text-transform: var(--hf-paragraph-typo-text-transform, inherit);
750 text-decoration: var(--hf-paragraph-typo-text-decoration, inherit);
751 line-height: var(--hf-paragraph-typo-line-height, 1.2);
752 color: var(--hf-paragraph-typo-font-color, inherit);
753 }
754
755 .hf-form-default-style .hf-form-field.hashform-field-type-paragraph p {
756 font-size: 13px;
757 font-weight: 400;
758 font-style: normal;
759 letter-spacing: normal;
760 text-transform: inherit;
761 text-decoration: inherit;
762 line-height: 1.2;
763 color: #333;
764 }
765
766 /* Select */
767 .hf-form-field.hf-auto-width select {
768 width: auto;
769 }
770
771 /* Checkbox/Radio */
772 .hf-form-field.hashform-field-type-radio .hf-choice label,
773 .hf-form-field.hashform-field-type-checkbox .hf-choice label {
774 cursor: pointer;
775 display: flex;
776 gap: 0.5em;
777 align-items: center;
778 }
779
780 .hf-form-field input[type="checkbox"],
781 .hf-form-field input[type="radio"] {
782 margin: 0;
783 }
784
785 /* Checkbox/Radio/Image Select Grid */
786 .hf-form-field .hf-choice-container {
787 display: grid;
788 gap: 10px 30px;
789 }
790
791 .hf-form-custom-style .hf-form-field .hf-choice-container {
792 font-family: var(--hf-field-typo-font-family);
793 font-size: var(--hf-field-typo-font-size, 14px);
794 font-weight: var(--hf-field-typo-font-weight, 400);
795 font-style: var(--hf-field-typo-font-style, normal);
796 letter-spacing: var(--hf-field-typo-letter-spacing, normal);
797 text-transform: var(--hf-field-typo-text-transform, inherit);
798 text-decoration: var(--hf-field-typo-text-decoration, inherit);
799 line-height: var(--hf-field-typo-line-height, 1.2);
800 color: var(--hf-field-color-normal, #666);
801 }
802
803 .hf-form-default-style .hf-form-field .hf-choice-container {
804 font-size: 14px;
805 font-weight: 400;
806 font-style: normal;
807 letter-spacing: normal;
808 text-transform: inherit;
809 text-decoration: inherit;
810 line-height: 1.2;
811 color: #666;
812 }
813
814 .hf-form-field .hf-choice-container .hf-choice > label {
815 font-size: inherit;
816 font-weight: inherit;
817 font-style: inherit;
818 letter-spacing: inherit;
819 text-transform: inherit;
820 text-decoration: inherit;
821 line-height: inherit;
822 color: inherit;
823 margin: 0;
824 padding: 0;
825 }
826
827 .hf-form-field.hf-options-layout-inline .hf-choice-container {
828 display: flex;
829 gap: 15px;
830 flex-wrap: wrap;
831 }
832
833 .hf-form-field.hf-options-layout-1.hf-choice-container {
834 grid-template-columns: repeat(1, 1fr);
835 }
836
837 .hf-form-field.hf-options-layout-2 .hf-choice-container {
838 grid-template-columns: repeat(2, 1fr);
839 }
840
841 .hf-form-field.hf-options-layout-3 .hf-choice-container {
842 grid-template-columns: repeat(3, 1fr);
843 }
844
845 .hf-form-field.hf-options-layout-4 .hf-choice-container {
846 grid-template-columns: repeat(4, 1fr);
847 }
848
849 .hf-form-field.hf-options-layout-5 .hf-choice-container {
850 grid-template-columns: repeat(5, 1fr);
851 }
852
853 .hf-form-field.hf-options-layout-6 .hf-choice-container {
854 grid-template-columns: repeat(6, 1fr);
855 }
856
857
858 /* Image Selector */
859 .hf-form-field.hashform-field-type-image_select .hf-choice-container {
860 gap: 30px;
861 }
862
863 .hf-form-field.hashform-field-type-image_select .hf-field-is-checked {
864 display: none;
865 }
866
867 .hf-form-field.hashform-field-type-image_select .hf-choice input:checked + .hf-field-is-container .hf-field-is-checked {
868 display: flex;
869 }
870
871 .hf-form-field.hashform-field-type-image_select .hf-choice input {
872 display: none;
873 }
874
875 .hf-form-field.hashform-field-type-image_select .hf-choice > label {
876 cursor: pointer;
877 }
878
879 .hf-form-field .hf-field-is-container {
880 position: relative;
881 }
882
883 .hf-form-field.hashform-field-type-image_select .hf-field-is-image .hf-field-is-checked {
884 position: absolute;
885 right: 10px;
886 top: -10px;
887 font-size: 25px;
888 background: #FFF;
889 border-radius: 50%;
890 padding: 2px;
891 color: green;
892 height: 30px;
893 width: 30px;
894 box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
895 z-index: 9;
896 align-items: center;
897 justify-content: center;
898 }
899
900 .hf-form-field.hashform-field-type-image_select .hf-field-is-image {
901 min-height: 40px;
902 position: relative;
903 text-align: center;
904 }
905
906 .hf-form-field.hashform-field-type-image_select .hf-field-is-image:before {
907 content: "NO IMAGE";
908 position: absolute;
909 left: 0;
910 top: 0;
911 bottom: 0;
912 right: 0;
913 display: flex;
914 align-items: center;
915 justify-content: center;
916 font-size: 16px;
917 opacity: 0.4;
918 }
919
920 .hf-form-field.hashform-field-type-image_select .hf-field-is-image img {
921 display: block;
922 position: relative;
923 margin: 0 auto;
924 }
925
926 .hf-form-field.hashform-field-type-image_select .hf-field-is-label {
927 text-align: center;
928 margin-top: 10px;
929 }
930
931 .hf-form-field.hf-options-layout-inline.hashform-field-type-image_select .hf-choice-container .hf-choice {
932 width: var(--hf-image-width, 250px);
933 }
934
935 .hf-form-field.hf-options-layout-1.hashform-field-type-image_select .hf-choice-container {
936 grid-template-columns: repeat(1, minmax(auto, var(--hf-image-width, 250px)));
937 }
938
939 .hf-form-field.hf-options-layout-2.hashform-field-type-image_select .hf-choice-container {
940 grid-template-columns: repeat(2, minmax(auto, var(--hf-image-width, 250px)));
941 }
942
943 .hf-form-field.hf-options-layout-3.hashform-field-type-image_select .hf-choice-container {
944 grid-template-columns: repeat(3, minmax(auto, var(--hf-image-width, 250px)));
945 }
946
947 .hf-form-field.hf-options-layout-4.hashform-field-type-image_select .hf-choice-container {
948 grid-template-columns: repeat(4, minmax(auto, var(--hf-image-width, 250px)));
949 }
950
951 .hf-form-field.hf-options-layout-5.hashform-field-type-image_select .hf-choice-container {
952 grid-template-columns: repeat(5, minmax(auto, var(--hf-image-width, 250px)));
953 }
954
955 .hf-form-field.hf-options-layout-6.hashform-field-type-image_select .hf-choice-container {
956 grid-template-columns: repeat(6, minmax(auto, var(--hf-image-width, 250px)));
957 }
958
959 /* Image */
960 .hf-form-field.hashform-field-type-image .hf-field-container {
961 width: 100%;
962 }
963
964 .hf-form-field.hashform-field-type-image .hf-field-content {
965 flex-grow: 1;
966 max-width: var(--hf-width);
967 }
968
969 .hf-form-field.hashform-field-type-image .hf-no-image-field {
970 text-align: center;
971 text-transform: uppercase;
972 opacity: 0.4;
973 }
974
975 /* Time */
976 .hf-form-field.hashform-field-type-time .hf-flex-container {
977 display: flex;
978 gap: 10px;
979 }
980
981 .hf-form-field.hashform-field-type-time .hf-flex-container select {
982 flex: 0 0 80px;
983 width: 80px;
984 }
985
986 /* Star */
987 .hf-form-field.hashform-field-type-star .hf-choice-container {
988 display: block !important;
989 font-size: 25px;
990 }
991
992 .hf-form-custom-style .hf-form-field.hashform-field-type-star .hf-choice-container {
993 font-size: var(--hf-star-size, 25px);
994 }
995
996 .hf-form-field.hashform-field-type-star .hashform-star-group {
997 display: flex;
998 flex-wrap: wrap;
999 gap: 5px;
1000 }
1001
1002 .hf-form-custom-style .hf-form-field.hashform-field-type-star .hashform-star-group {
1003 gap: 0.4em;
1004 }
1005
1006 .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating {
1007 cursor: pointer;
1008 }
1009
1010 .hf-form-custom-style .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating {
1011 font-size: var(--hf-star-size, 25px);
1012 }
1013
1014 .hf-form-default-style .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating {
1015 font-size: 25px;
1016 }
1017
1018 .hf-form-field.hashform-field-type-star .hashform-star-group input {
1019 display: none;
1020 }
1021
1022 .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating.hf-star-checked .mdi-star-outline {
1023 color: #ffaa4a;
1024 }
1025
1026 .hf-form-custom-style .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating.hf-star-checked .mdi-star-outline {
1027 color: var(--hf-star-color-active, #ffaa4a);
1028 }
1029
1030 .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating.hf-star-hovered .mdi-star-outline:before,
1031 .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating.hf-star-checked .mdi-star-outline:before {
1032 content: "\F04CE";
1033 }
1034
1035 .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating.hf-star-non-hovered .mdi-star-outline:before {
1036 content: "\F04D2";
1037 }
1038
1039 .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating .mdi-star-outline,
1040 .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating.hf-star-non-hovered .mdi-star-outline {
1041 color: #333;
1042 }
1043
1044 .hf-form-custom-style .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating .mdi-star-outline,
1045 .hf-form-custom-style .hf-form-field.hashform-field-type-star .hashform-star-group .hf-star-rating.hf-star-non-hovered .mdi-star-outline {
1046 color: var(--hf-star-color, #333);
1047 }
1048
1049 /* Quantity */
1050 .hf-form-field.hashform-field-type-spinner .hf-quantity-input {
1051 display: flex;
1052 font-size: 14px;
1053 }
1054
1055 .hf-form-custom-style .hf-form-field.hashform-field-type-spinner .hf-quantity-input {
1056 font-size: var(--hf-field-typo-font-size, 14px);
1057 }
1058
1059 .hf-form-field.hashform-field-type-spinner .hf-quantity-input input {
1060 -moz-appearance: textfield;
1061 padding-left: 70px !important;
1062 padding-right: 70px !important;
1063 display: flex;
1064 text-align: center;
1065 }
1066
1067 .hf-form-custom-style .hf-form-field.hashform-field-type-spinner .hf-quantity-input input {
1068 padding-left: 3em !important;
1069 padding-right: 3em !important;
1070 }
1071
1072 .hf-form-field.hashform-field-type-spinner .hf-quantity-input input::-webkit-outer-spin-button,
1073 .hf-form-field.hashform-field-type-spinner .hf-quantity-input input::-webkit-inner-spin-button {
1074 -webkit-appearance: none;
1075 margin: 0;
1076 }
1077
1078 .hf-form-field.hashform-field-type-spinner .hf-quantity-input span {
1079 width: 60px;
1080 display: flex;
1081 align-items: center;
1082 justify-content: center;
1083 cursor: pointer;
1084 position: relative;
1085 color: #CCC;
1086 }
1087
1088 .hf-form-custom-style .hf-form-field.hashform-field-type-spinner .hf-quantity-input span {
1089 width: 3.5em;
1090 color: var(--hf-field-border-color-normal, #CCC);
1091 }
1092
1093 .hf-form-field.hashform-field-type-spinner .hf-quantity-input span:before {
1094 font-size: 0.9em;
1095 }
1096
1097 .hf-form-field.hashform-field-type-spinner .hf-quantity-input .mdi-minus {
1098 margin-right: -60px;
1099 border-right: 1px solid #EEE;
1100 }
1101
1102 .hf-form-custom-style .hf-form-field.hashform-field-type-spinner .hf-quantity-input .mdi-minus {
1103 margin-right: -3.5em;
1104 border-right: var(--hf-field-border-right, 1px) solid var(--hf-field-border-color-normal, #CCC);
1105 }
1106
1107 .hf-form-field.hashform-field-type-spinner .hf-quantity-input .mdi-plus {
1108 margin-left: -60px;
1109 border-left: 1px solid #EEE;
1110 }
1111
1112 .hf-form-custom-style .hf-form-field.hashform-field-type-spinner .hf-quantity-input .mdi-plus {
1113 margin-left: -3.5em;
1114 border-left: var(--hf-field-border-right, 1px) solid var(--hf-field-border-color-normal, #CCC);
1115 }
1116
1117 /* Divider */
1118 .hf-form-field.hashform-field-type-separator .hf-field-container {
1119 width: 100%;
1120 }
1121
1122 .hf-form-field.hashform-field-type-separator .hf-field-content {
1123 max-width: var(--hf-width);
1124 }
1125
1126 /* An <hr>, so the break is announced rather than only drawn. Its own borders
1127 and margins are cleared, since the field writes the ones it wants inline. */
1128 .hf-form-field.hashform-field-type-separator .hf-separator-border {
1129 border-color: #333;
1130 border-left: 0;
1131 border-right: 0;
1132 border-top: 0;
1133 height: 0;
1134 margin: 0;
1135 padding: 0;
1136 width: 100%;
1137 }
1138
1139 .hf-form-custom-style .hf-form-field.hashform-field-type-separator .hf-separator-border {
1140 border-color: var(--hf-divider-color, #333);
1141 }
1142
1143 /* HTML */
1144 .hf-form-field.hashform-field-type-html .hf-field-container {
1145 width: 100%;
1146 }
1147
1148 .hf-form-field.hashform-field-type-html .hf-field-content {
1149 max-width: var(--hf-width);
1150 }
1151
1152 /* Paragrah */
1153 .hf-form-field.hashform-field-type-paragraph .hf-field-container {
1154 width: 100%;
1155 }
1156
1157 .hf-form-field.hashform-field-type-paragraph .hf-field-content {
1158 max-width: var(--hf-width);
1159 }
1160
1161 /* Custom HTML */
1162 .hf-form-field.hashform-field-type-html .hf-field-content a {
1163 text-decoration: underline;
1164 }
1165
1166 /* Heading */
1167 .hf-form-field.hashform-field-type-heading .hf-field-container {
1168 width: 100%;
1169 }
1170
1171 .hf-form-field.hashform-field-type-heading .hf-field-content {
1172 max-width: var(--hf-width);
1173 }
1174
1175 /* Range Slider */
1176 .hf-form-field.hashform-field-type-range_slider .hf-range-slider-wrap {
1177 width: 100%;
1178 display: flex;
1179 align-items: center;
1180 }
1181
1182 .hf-form-field.hashform-field-type-range_slider .hf-range-slider-wrap .hf-range-slider {
1183 position: relative;
1184 flex-grow: 1;
1185 height: 4px;
1186 margin: 12px 0;
1187 background: rgba(0, 0, 0, 0.15);
1188 border: none;
1189 border-radius: 5px;
1190 cursor: pointer;
1191 transition: background 0.5s;
1192 }
1193
1194 .hf-form-custom-style .hf-form-field.hashform-field-type-range_slider .hf-range-slider-wrap .hf-range-slider {
1195 height: var(--hf-range-height, 4px);
1196 background: var(--hf-range-color, rgba(0, 0, 0, 0.15));
1197 }
1198
1199 .hf-form-field.hashform-field-type-range_slider .hf-range-slider-wrap .hf-range-slider .ui-slider-range {
1200 display: inline-block;
1201 position: absolute;
1202 top: 0;
1203 height: 100%;
1204 background: #13a1dc;
1205 border-radius: 5px;
1206 }
1207
1208 .hf-form-custom-style .hf-form-field.hashform-field-type-range_slider .hf-range-slider-wrap .hf-range-slider .ui-slider-range {
1209 background: var(--hf-range-color-active, #13a1dc);
1210 }
1211
1212 .hf-form-field.hashform-field-type-range_slider .hf-range-slider-wrap .hf-range-slider .ui-slider-handle {
1213 height: 16px;
1214 width: 16px;
1215 background: #fff;
1216 border: none;
1217 display: inline-block;
1218 position: absolute;
1219 top: 50%;
1220 margin: 0 0 0 -8px;
1221 transform: translateY(-50%);
1222 box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
1223 border-radius: 50%;
1224 cursor: pointer;
1225 z-index: 9;
1226 }
1227
1228 .hf-form-custom-style .hf-form-field.hashform-field-type-range_slider .hf-range-slider-wrap .hf-range-slider .ui-slider-handle {
1229 height: var(--hf-range-handle-size, 16px);
1230 width: var(--hf-range-handle-size, 16px);
1231 background: var(--hf-range-handle-color, #fff);
1232 margin: 0 0 0 calc(var(--hf-range-handle-size, 8px)/2 * -1);
1233 }
1234
1235 .hf-form-field.hashform-field-type-range_slider .hf-range-slider-wrap .hf-range-slider + .hf-range-input-selector {
1236 margin-left: 10px;
1237 width: 80px;
1238 text-align: center;
1239 }
1240
1241 .hf-form-field.hashform-field-type-range_slider .hf-typography-line-height-field .hf-range-slider + .hf-range-input-selector {
1242 margin-right: 20px
1243 }
1244
1245 /* Submit Button */
1246 .hf-submit-wrap {
1247 display: flex;
1248 }
1249
1250 .hf-submit-btn-align-center.hf-submit-wrap {
1251 justify-content: center;
1252 }
1253
1254 .hf-submit-btn-align-right.hf-submit-wrap {
1255 justify-content: flex-end;
1256 }
1257
1258 .hf-submit-btn-align-stretch.hf-submit-wrap .hf-submit-button {
1259 width: 100%;
1260 justify-content: center;
1261 }
1262
1263 .hf-submit-wrap .hf-submit-button {
1264 display: flex;
1265 align-items: center;
1266 gap: 6px;
1267 }
1268
1269 .hf-submit-wrap .hf-submit-button.hf-button-loading:after {
1270 content: "";
1271 width: 1em;
1272 height: 1em;
1273 border-radius: 50%;
1274 border: 2px solid;
1275 border-right-color: transparent;
1276 animation: hf-spin 0.4s infinite linear;
1277 }
1278
1279 @keyframes hf-spin {
1280 to {
1281 transform: rotate(1turn)
1282 }
1283 }
1284
1285 /* Form Success Message */
1286 .hf-success-msg {
1287 display: block;
1288 background: #4BB543;
1289 color: #FFF;
1290 padding: 10px 15px;
1291 margin-top: 20px;
1292 font-size: 1em;
1293 border-radius: 3px;
1294 text-align: center;
1295 }
1296
1297 .hf-failed-msg {
1298 display: block;
1299 background: #ff3333;
1300 color: #FFF;
1301 padding: 10px 15px;
1302 margin-top: 20px;
1303 font-size: 1em;
1304 border-radius: 3px;
1305 text-align: center;
1306 }
1307
1308 /***********/
1309 body.hashform_preview_page .hf-form-preview {
1310 max-width: 1100px;
1311 margin: 50px auto;
1312 }
1313
1314
1315
1316 /* -----------------------------------------------------------------------------
1317 * Preview
1318 *
1319 * The submit button is rendered disabled on the preview page so a look at the
1320 * form cannot post an entry. It kept the full button styling though, so it
1321 * invited a click and then did nothing at all.
1322 *
1323 * This rule has nothing to do with the pickers. It was sitting inside the
1324 * picker block, between the section heading and the first datepicker rule, and
1325 * is lifted out to here so the block below is contiguous.
1326 * -------------------------------------------------------------------------- */
1327 .hashform_preview_page .hashform-form button[disabled] {
1328 cursor: not-allowed;
1329 filter: grayscale(1);
1330 opacity: .55;
1331 }
1332
1333 /* =============================================================================
1334 * Pickers
1335 *
1336 * Both panels are moved to <body> as they open, so neither sits inside
1337 * #hf-container-{id} and neither can inherit the per form --hf-field-* tokens
1338 * through the cascade. frontend.js copies the three that matter onto whichever
1339 * panel is opening, which is what makes a picker follow the palette of the form
1340 * that was clicked even with several differently styled forms on one page. The
1341 * values below are the fallbacks for when that has not run - in the builder it
1342 * never runs - and they are declared once for all three panel shapes so the
1343 * pickers cannot drift apart.
1344 *
1345 * The bridge writes those custom properties as inline style properties, and an
1346 * inline declaration beats any selector, so the selectors here may be raised as
1347 * far as they need to go. What must never happen is an !important on a
1348 * --hf-pick-* declaration: an important stylesheet declaration outranks a
1349 * normal inline one, and every form on the site would collapse back to this
1350 * fallback palette.
1351 *
1352 *
1353 * Why the selectors look like this
1354 *
1355 * These class names are not ours. They belong to jQuery UI and to the bundled
1356 * timepicker, and any theme or plugin that ships a jQuery UI stylesheet writes
1357 * the same ones. A plain .ui-datepicker rule is specificity (0,1,0) and so is
1358 * theirs, which hands the panel to whichever stylesheet the page loads last.
1359 * Reordering the enqueue does not settle it either: the .admin-color-* variants
1360 * those sheets carry reach (0,3,1) and beat a plain rule outright.
1361 *
1362 * So the date panel is matched through #ui-datepicker-div, the single div
1363 * jQuery UI appends to <body> and reuses for every date input on the page. One
1364 * id outranks any number of classes, so every rule here lands at (1,x,y) and
1365 * wins on merit rather than on load order, without a single !important.
1366 *
1367 * The prefix is applied to every rule in the block without exception, including
1368 * all four media blocks. That is load bearing rather than tidiness: the block
1369 * relies on its own internal cascade, and raising some rules but not others
1370 * inverts it. The universal reset is the floor at (1,0,0) and every other rule
1371 * in the block carries at least one element or class on top of the id, so the
1372 * lightest thing that can override it is (1,0,1) - the table, thead, th and td
1373 * rules. Media queries contribute no specificity of their own, so an unraised
1374 * override inside one would silently lose to a raised base rule.
1375 * ========================================================================== */
1376
1377 #ui-datepicker-div.ui-datepicker,
1378 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper,
1379 select.ui-timepicker-select.ui-timepicker-select {
1380
1381 /*
1382 * The accent is #a3591b rather than the brand #dd823b because the panel
1383 * uses it as a fill behind a numeral and as the hue the state ink is drawn
1384 * from: #dd823b on white is 2.9:1 and fails both jobs, while #a3591b is
1385 * 5.2:1 and passes. Same hue, taken down far enough to be legible, exactly
1386 * as --hf-accent-text does for the rest of the admin. On the front end this
1387 * is replaced by whatever colour the form owner chose, which is why nothing
1388 * below trusts it to be readable on its own.
1389 */
1390 --hf-pick-accent: #a3591b;
1391
1392 /*
1393 * Everything that has to be READ rather than merely seen is drawn in this,
1394 * never in the raw accent. It is the accent mixed 45% into black, which is
1395 * not an arbitrary ratio: mixing any sRGB colour 45% with black caps every
1396 * channel at 115, so the lightest result that can ever come out is #737373,
1397 * which is 4.74:1 against the panel. That is a floor for every possible
1398 * input colour including pure white, so the keyboard cursor, the focus
1399 * rings, today's ring, the arrow hover glyph and the selected chip's
1400 * keyline stay legible no matter what a site owner bridges in. The literal
1401 * is the resolved value for the default accent, for engines without
1402 * color-mix.
1403 */
1404 --hf-pick-accent-ink: #49280c;
1405 --hf-pick-accent-ink: color-mix(in srgb, var(--hf-pick-accent) 45%, #000);
1406
1407 /*
1408 * The numeral on a filled chip. The fallback is white, which is correct for
1409 * the #a3591b default at 5.2:1; the second declaration replaces it wherever
1410 * relative colour syntax is understood and flips to black once the accent
1411 * is light. The switch is on OKLCh lightness rather than HSL lightness on
1412 * purpose - HSL lightness is not perceptual, and a saturated light hue like
1413 * #ffcc00 reports l=50% there and would wrongly keep white text. Multiplying
1414 * by infinity inside the lightness slot clamps to 0 or 1, and dropping the
1415 * chroma to 0 makes the result a true black or white rather than a tint.
1416 */
1417 --hf-pick-on-accent: #fff;
1418 --hf-pick-on-accent: oklch(from var(--hf-pick-accent) calc((.62 - l) * infinity) 0 h);
1419
1420 --hf-pick-surface: #fff;
1421 --hf-pick-text: #1e2327;
1422
1423 /*
1424 * Muted is 5.5:1 and carries the weekday row, the durations and the days
1425 * from the neighbouring month, which stay selectable when selectOtherMonths
1426 * is on and are therefore live content, not decoration. Faint is 3.2:1 and
1427 * is reserved for genuinely unavailable slots, which also carry a line
1428 * through them so the state never rests on telling two greys apart. Neither
1429 * is ever dimmed with opacity - the old .45 took other-month days to about
1430 * 1.9:1, which is not a shade, it is unreadable.
1431 */
1432 --hf-pick-muted: #646970;
1433 --hf-pick-faint: #8c9196;
1434 --hf-pick-border: #e2e5ea;
1435
1436 --hf-pick-font: inherit;
1437 --hf-pick-font-size: 13px;
1438
1439 /*
1440 * One padding value drives the panel gutter and one cell value drives both
1441 * the day chip and the panel's minimum width, so the grid, the header and
1442 * the panel edge stay on the same vertical lines when either changes. The
1443 * cell gap is 3px rather than 2px so the keyboard cursor ring, which sits
1444 * 2px outside a 36px chip, still clears its neighbour by 2px.
1445 */
1446 --hf-pick-pad: 12px;
1447 --hf-pick-cell-gap: 3px;
1448 --hf-pick-cell: 36px;
1449 --hf-pick-tap: 34px;
1450
1451 --hf-pick-radius: 12px;
1452 --hf-pick-radius-control: 8px;
1453
1454 /*
1455 * The 1px border is only 1.3:1 against a white page, so the shadow is what
1456 * actually separates the panel from what is behind it. It is load bearing
1457 * rather than decoration and must not be traded for a heavier border.
1458 */
1459 --hf-pick-shadow: 0 12px 28px -8px rgba(16, 24, 40, .18), 0 4px 10px -4px rgba(16, 24, 40, .1);
1460
1461 /*
1462 * Every transition in the block reads this one token, which is what lets
1463 * the reduced motion block at the end redefine it once instead of listing
1464 * selectors it could silently fall behind.
1465 */
1466 --hf-pick-transition: .15s ease;
1467
1468 /*
1469 * Hover only, where the tint is a supplementary cue on top of a pointer
1470 * that is already there, so its contrast is not carrying a state on its
1471 * own. 16% is as far as it can go before the tint stops being a whisper.
1472 */
1473 --hf-pick-soft: rgba(163, 89, 27, .16);
1474 --hf-pick-soft: color-mix(in srgb, var(--hf-pick-accent) 16%, transparent);
1475 }
1476
1477 /* -----------------------------------------------------------------------------
1478 * Date picker
1479 *
1480 * An inline datepicker renders as .ui-datepicker.ui-datepicker-inline in the
1481 * page and never inside #ui-datepicker-div, so nothing here matches it and it
1482 * is deliberately left alone. It is meant to sit in the page rather than float
1483 * over it, it may well belong to another plugin, and it could not have been
1484 * hardened by an id anyway - .ui-datepicker.ui-datepicker-inline is only
1485 * (0,2,0) and still loses to a theme's (0,3,1). Nothing in hash-form or
1486 * hash-form-pro creates one; all three .datepicker() calls are popups.
1487 * -------------------------------------------------------------------------- */
1488
1489 /* jQuery UI leaves it to a jQuery UI theme stylesheet to keep this div hidden
1490 until it is opened. WordPress does not enqueue one, so without this it
1491 rendered as an empty bordered box at the foot of every page carrying a date
1492 field. The script writes display inline when opening and closing, so this
1493 only supplies the state before it has ever been opened. */
1494 #ui-datepicker-div {
1495 display: none;
1496 position: absolute;
1497 }
1498
1499 #ui-datepicker-div.ui-datepicker {
1500 background-color: var(--hf-pick-surface);
1501 /* jQuery UI's own theme puts a sprite here through .ui-widget-content. */
1502 background-image: none;
1503 border: 1px solid var(--hf-pick-border);
1504 border-radius: var(--hf-pick-radius);
1505 box-shadow: var(--hf-pick-shadow);
1506 box-sizing: border-box;
1507 color: var(--hf-pick-text);
1508 font-family: var(--hf-pick-font);
1509 font-size: var(--hf-pick-font-size);
1510 line-height: 1.4;
1511 /* Clears the input rather than touching it. jQuery UI gives no class for
1512 the flipped-above state, so when the panel is pushed above a field near
1513 the foot of the viewport this margin lands on the wrong side. That one
1514 cannot be closed from CSS and is listed with the JS recommendations. */
1515 margin: 6px 0 0;
1516 /* Seven chips, each in a cell of its own gap, less the one gap the table is
1517 pulled out by at each end, plus the two gutters. Written from the tokens
1518 so the panel can never end up narrower than the grid it holds. */
1519 min-width: calc((var(--hf-pick-cell) + var(--hf-pick-cell-gap) * 2) * 7 - var(--hf-pick-cell-gap) * 2 + var(--hf-pick-pad) * 2);
1520 max-width: calc(100vw - 16px);
1521 padding: var(--hf-pick-pad);
1522 /* jQuery UI writes an inline em width whenever numberOfMonths is above one,
1523 sized for its own 17em-per-month layout rather than this one. An inline
1524 declaration can only be beaten by !important, and the flex rule further
1525 down lays the months out correctly without it. */
1526 width: auto !important;
1527 /* Also inline, recomputed on every open from the input's own stacking
1528 context, which in wp-admin is usually 0 or 1 and would put the panel
1529 behind #adminmenuwrap at 9990 and #wpadminbar at 99999. The value clears
1530 the plugin's own bulk edit dialog at 999999 as well, because a date field
1531 opened inside that dialog has to render above it and an exact tie there
1532 is decided by whichever element was appended to <body> last. */
1533 z-index: 1000001 !important;
1534 }
1535
1536 /* The panel arrives carrying ui-widget, ui-widget-content, ui-corner-all and
1537 ui-helper-clearfix, and its children carry ui-corner-all and ui-icon, so a
1538 site with a full jQuery UI theme loaded brings sprite backgrounds, corner
1539 radii and cell colours with it. This flattens all of that in one pass at
1540 (1,0,0), the floor of the block, so every rule below still overrides it. The
1541 transparent background is what finally stops a theme colouring the weekend,
1542 today and current-day table cells behind the chips - nothing here declared a
1543 background on the cell before, so any sheet that painted it won by default
1544 rather than by weight. */
1545 #ui-datepicker-div * {
1546 background-color: transparent;
1547 background-image: none;
1548 border: 0;
1549 border-radius: 0;
1550 box-shadow: none;
1551 box-sizing: border-box;
1552 float: none;
1553 font-family: inherit;
1554 padding: 0;
1555 }
1556
1557 /* Dragging a selection across the calendar while clicking through months looks
1558 broken, so selection is switched off on the controls and the grid. It is
1559 deliberately not put on the panel as a whole: the month and year in the
1560 header are the one thing in the picker somebody may reasonably want to
1561 select and copy. */
1562 #ui-datepicker-div .ui-datepicker-prev,
1563 #ui-datepicker-div .ui-datepicker-next,
1564 #ui-datepicker-div table {
1565 -webkit-user-select: none;
1566 user-select: none;
1567 }
1568
1569 /* ---------- Header ---------- */
1570
1571 /* jQuery UI prints prev, then next, then the title. Flex order puts them back
1572 into reading order without touching the markup, and pairs the two arrows on
1573 the trailing edge so the month reads as a heading sitting on its grid rather
1574 than as a label squeezed between two buttons. .ui-widget-header is named
1575 alongside .ui-datepicker-header because a jQuery UI theme sheet paints the
1576 framework class, not the widget one. */
1577 #ui-datepicker-div .ui-widget-header,
1578 #ui-datepicker-div .ui-datepicker-header {
1579 align-items: center;
1580 background: none;
1581 border: none;
1582 color: var(--hf-pick-text);
1583 display: flex;
1584 font-weight: normal;
1585 /* Enough that the paired arrows cannot be mis-clicked for one another. */
1586 gap: 6px;
1587 padding: 0 0 var(--hf-pick-pad);
1588 position: relative;
1589 }
1590
1591 /* jQuery UI adds ui-state-hover to the arrows through a delegated handler on
1592 the panel, which in a full jQuery UI theme repaints them. The arrows carry
1593 their own hover further down; this only stops the framework class doing
1594 anything on its own. */
1595 #ui-datepicker-div .ui-datepicker-header .ui-state-hover {
1596 background: transparent;
1597 border-color: transparent;
1598 cursor: pointer;
1599 }
1600
1601 #ui-datepicker-div .ui-datepicker-title {
1602 align-items: center;
1603 color: var(--hf-pick-text);
1604 display: flex;
1605 /* Takes the slack so the arrows are pushed to the trailing edge. On a short
1606 month name that leaves an obvious gap between the two, which is the
1607 intent: the month starts on the same vertical line as the weekday row
1608 and the first chip, and the navigation stays where the hand expects it
1609 rather than moving with the length of the word. */
1610 flex: 1;
1611 font-size: 14px;
1612 font-weight: 600;
1613 gap: 4px;
1614 line-height: 1.4;
1615 margin: 0;
1616 /* Without this the title refuses to shrink below the width of a long
1617 localised month name and pushes the arrows off the panel. */
1618 min-width: 0;
1619 order: 1;
1620 text-align: left;
1621 }
1622
1623 /* The title is a select only for whichever of month and year was made
1624 changeable - the plugin turns the month on and leaves the year off - and
1625 both halves of every secondary month in a multi-month panel arrive as plain
1626 spans. They have to read identically. */
1627 #ui-datepicker-div .ui-datepicker-title span.ui-datepicker-month,
1628 #ui-datepicker-div .ui-datepicker-title span.ui-datepicker-year {
1629 color: inherit;
1630 font-size: inherit;
1631 font-weight: inherit;
1632 white-space: nowrap;
1633 }
1634
1635 /* Given the plugin's own border, radius and chevron rather than left bare. A
1636 borderless select is either invisible as a control or shows an OS-drawn
1637 arrow floating in a transparent box, and it changes shape per platform,
1638 which made it the least legible thing in an otherwise precise panel. The
1639 chevron is drawn against --hf-pick-surface, which is never bridged, so a
1640 fixed muted grey is always the right colour for it. */
1641 #ui-datepicker-div select.ui-datepicker-month,
1642 #ui-datepicker-div select.ui-datepicker-year {
1643 -webkit-appearance: none;
1644 appearance: none;
1645 background-color: var(--hf-pick-surface);
1646 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23646970' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
1647 background-position: right 8px center;
1648 background-repeat: no-repeat;
1649 background-size: 10px 6px;
1650 border: 1px solid var(--hf-pick-border);
1651 border-radius: var(--hf-pick-radius-control);
1652 box-shadow: none;
1653 color: inherit;
1654 cursor: pointer;
1655 font-size: inherit;
1656 font-weight: inherit;
1657 height: auto;
1658 line-height: 1.4;
1659 margin: 0;
1660 max-width: 46%;
1661 min-height: 0;
1662 min-width: 0;
1663 padding: 3px 26px 3px 8px;
1664 text-overflow: ellipsis;
1665 transition: border-color var(--hf-pick-transition);
1666 width: auto;
1667 }
1668
1669 #ui-datepicker-div select.ui-datepicker-month:hover,
1670 #ui-datepicker-div select.ui-datepicker-year:hover {
1671 border-color: var(--hf-pick-accent-ink);
1672 }
1673
1674 /* A real ring rather than a 1px border colour change, which is not something a
1675 user can be expected to find, and keyed to :focus-visible so it stays off a
1676 mouse click. */
1677 #ui-datepicker-div select.ui-datepicker-month:focus-visible,
1678 #ui-datepicker-div select.ui-datepicker-year:focus-visible {
1679 border-color: var(--hf-pick-accent-ink);
1680 outline: 2px solid var(--hf-pick-accent-ink);
1681 outline-offset: 1px;
1682 }
1683
1684 /* 34px rather than 28px so the header does not sit optically lighter and
1685 smaller than the 36px grid it heads. */
1686 #ui-datepicker-div .ui-datepicker-prev,
1687 #ui-datepicker-div .ui-datepicker-next {
1688 align-items: center;
1689 border-radius: var(--hf-pick-radius-control);
1690 cursor: pointer;
1691 display: flex;
1692 flex: none;
1693 height: var(--hf-pick-tap);
1694 justify-content: center;
1695 /* jQuery UI's theme positions these absolutely inside the header. They are
1696 flex items here, so the offsets have to go. */
1697 left: auto;
1698 position: relative;
1699 right: auto;
1700 top: 0;
1701 transition: background-color var(--hf-pick-transition);
1702 width: var(--hf-pick-tap);
1703 text-decoration: none;
1704 }
1705
1706 #ui-datepicker-div .ui-datepicker-prev {
1707 order: 2;
1708 }
1709
1710 #ui-datepicker-div .ui-datepicker-next {
1711 order: 3;
1712 }
1713
1714 /* jQuery UI adds both ui-state-hover and ui-datepicker-prev-hover on hover. The
1715 compound half is the one that carries the weight: the plain -prev-hover
1716 selector on its own would lose to the header rule above, which also matches
1717 the arrow. */
1718 #ui-datepicker-div .ui-state-hover.ui-datepicker-prev,
1719 #ui-datepicker-div .ui-state-hover.ui-datepicker-next,
1720 #ui-datepicker-div .ui-datepicker-prev-hover,
1721 #ui-datepicker-div .ui-datepicker-next-hover {
1722 background: var(--hf-pick-soft);
1723 border: none;
1724 left: auto;
1725 right: auto;
1726 top: 0;
1727 }
1728
1729 /* Kept as insurance rather than as a live path: jQuery UI builds these anchors
1730 without an href, so they never take focus as things stand. If a host ever
1731 gives them one, the panel already behaves. */
1732 #ui-datepicker-div .ui-datepicker-prev:focus-visible,
1733 #ui-datepicker-div .ui-datepicker-next:focus-visible {
1734 outline: 2px solid var(--hf-pick-accent-ink);
1735 outline-offset: 1px;
1736 }
1737
1738 #ui-datepicker-div .ui-datepicker-prev:before {
1739 content: "\f341";
1740 }
1741
1742 #ui-datepicker-div .ui-datepicker-next:before {
1743 content: "\f345";
1744 }
1745
1746 /* These anchors carry no href, so they are exposed as neither link nor button
1747 and their whole accessible name is the title attribute and the word inside
1748 this span. Hiding it with display:none took it out of the accessibility tree
1749 along with the picture and left month navigation announcing nothing at all,
1750 so it is clipped instead: gone from the page, still read out. The class on it
1751 is ui-icon, which in a jQuery UI theme means a sprite, so that is cleared. */
1752 #ui-datepicker-div .ui-datepicker-prev span,
1753 #ui-datepicker-div .ui-datepicker-next span {
1754 background: none;
1755 border: 0;
1756 clip-path: inset(50%);
1757 display: block;
1758 height: 1px;
1759 overflow: hidden;
1760 position: absolute;
1761 white-space: nowrap;
1762 width: 1px;
1763 }
1764
1765 /* Hidden rather than removed so the header keeps its shape when a minDate or
1766 maxDate takes one arrow out of play. */
1767 #ui-datepicker-div .ui-datepicker-next.ui-state-disabled,
1768 #ui-datepicker-div .ui-datepicker-prev.ui-state-disabled {
1769 cursor: default;
1770 visibility: hidden;
1771 }
1772
1773 #ui-datepicker-div .ui-datepicker-next:not(.ui-state-disabled):before,
1774 #ui-datepicker-div .ui-datepicker-prev:not(.ui-state-disabled):before {
1775 color: var(--hf-pick-muted);
1776 font: normal 20px/1 "dashicons";
1777 height: 20px;
1778 width: 20px;
1779 -webkit-font-smoothing: antialiased;
1780 -moz-osx-font-smoothing: grayscale;
1781 }
1782
1783 /* The ink rather than the raw accent, because on the front end the accent is
1784 the customer's colour and a hover state that comes out paler than its own
1785 rest state is worse than no hover state at all. */
1786 #ui-datepicker-div .ui-datepicker-prev-hover:before,
1787 #ui-datepicker-div .ui-datepicker-next-hover:before {
1788 color: var(--hf-pick-accent-ink);
1789 opacity: 1;
1790 }
1791
1792 /* ---------- Grid ---------- */
1793
1794 /* Pulled out by one cell gap on each side so the chips, which sit inside a cell
1795 of their own padding, line up with the header and the panel edge instead of
1796 floating three pixels inside them.
1797
1798 The width is written out from the same tokens as the panel's min-width rather
1799 than as a percentage of it. A table-layout:fixed table takes no width from
1800 its contents, so a percentage here left the panel — which jQuery UI positions
1801 absolutely and which is therefore sized to fit its contents — with nothing to
1802 size itself from: it fell through to max-width and opened the full width of
1803 the window. Seven cells, each in a gap of its own, comes to the same number
1804 the percentage was reaching for whenever the panel is at its minimum. */
1805 #ui-datepicker-div table {
1806 border-collapse: collapse;
1807 font-size: var(--hf-pick-font-size);
1808 margin: 0 calc(var(--hf-pick-cell-gap) * -1);
1809 table-layout: fixed;
1810 width: calc((var(--hf-pick-cell) + var(--hf-pick-cell-gap) * 2) * 7);
1811 }
1812
1813 #ui-datepicker-div thead {
1814 background: none;
1815 color: var(--hf-pick-muted);
1816 }
1817
1818 #ui-datepicker-div th {
1819 color: var(--hf-pick-muted);
1820 font-size: 11px;
1821 font-weight: 600;
1822 letter-spacing: .04em;
1823 padding: 0 0 6px;
1824 text-align: center;
1825 text-transform: uppercase;
1826 }
1827
1828 /* Weekends are not tinted. The grid carries no rules and no alternating fills;
1829 the only colour in it belongs to today and to the selected day, which is what
1830 makes those two readable at a glance. Stated rather than left unsaid, because
1831 tinting the weekend column is exactly the sort of thing a jQuery UI theme
1832 does uninvited. */
1833 #ui-datepicker-div th.ui-datepicker-week-end {
1834 background: none;
1835 color: var(--hf-pick-muted);
1836 }
1837
1838 #ui-datepicker-div td {
1839 background: none;
1840 border: none;
1841 padding: var(--hf-pick-cell-gap);
1842 text-align: center;
1843 }
1844
1845 /* Covers both branches: a selectable day is an anchor, an unselectable one is a
1846 span, and a rule written against td a would silently miss every disabled cell
1847 and hand it back to whatever jQuery UI stylesheet the site has - which is
1848 precisely the failure that showed up in the builder. Tabular figures stop the
1849 columns shimmering as the month changes. */
1850 #ui-datepicker-div td .ui-state-default {
1851 align-items: center;
1852 background: transparent;
1853 border: none;
1854 border-radius: var(--hf-pick-radius-control);
1855 color: var(--hf-pick-text);
1856 display: flex;
1857 font-variant-numeric: tabular-nums;
1858 font-weight: normal;
1859 height: var(--hf-pick-cell);
1860 justify-content: center;
1861 margin: 0 auto;
1862 /* Anchors nothing today, but keeps the chip a containing block so a future
1863 marker does not have to reflow the cell to get one. */
1864 position: relative;
1865 text-align: center;
1866 text-decoration: none;
1867 transition: background-color var(--hf-pick-transition), color var(--hf-pick-transition);
1868 width: var(--hf-pick-cell);
1869 }
1870
1871 /* jQuery UI also hangs ui-state-highlight on today's link, which in its own
1872 theme is a yellow notice background. Cleared at the same weight as hover so
1873 hovering today still paints. */
1874 #ui-datepicker-div td .ui-state-highlight {
1875 background: transparent;
1876 border: none;
1877 }
1878
1879 #ui-datepicker-div td .ui-state-hover {
1880 background: var(--hf-pick-soft);
1881 color: var(--hf-pick-text);
1882 }
1883
1884 /* Today is a ring and a weight change rather than a fill, so it never competes
1885 with the selected day. The ring is 2px because at 1px it was much the fainter
1886 of the two next to a solid chip in the same hue, and it is drawn in the ink
1887 so it clears the 3:1 a non-text state indicator has to reach whatever accent
1888 a form owner bridged in. */
1889 #ui-datepicker-div td.ui-datepicker-today .ui-state-default {
1890 box-shadow: inset 0 0 0 2px var(--hf-pick-accent-ink);
1891 color: var(--hf-pick-accent-ink);
1892 font-weight: 600;
1893 }
1894
1895 /* One filled chip in the grid, and only one. The 1px keyline is not decoration:
1896 the fill is the form owner's colour on the front end and could be very pale,
1897 and the keyline is derived to be at least 4.7:1 against the panel, so the
1898 boundary of the chip is visible even when the fill is not. */
1899 #ui-datepicker-div td.ui-datepicker-current-day .ui-state-default,
1900 #ui-datepicker-div td .ui-state-active {
1901 background: var(--hf-pick-accent);
1902 box-shadow: inset 0 0 0 1px var(--hf-pick-accent-ink);
1903 color: var(--hf-pick-on-accent);
1904 font-weight: 600;
1905 }
1906
1907 /* Today AND selected. Both classes co-occur, and without this the fill simply
1908 replaced the ring and today became unrecoverable on the one cell users most
1909 often look for it. A second ring drawn in the chip's own text colour reads as
1910 a deliberate concentric marker rather than as a seam, and it is guaranteed to
1911 contrast with the fill because that is what --hf-pick-on-accent is chosen for.
1912 Written as a compound so it wins on weight and not on its position in the
1913 block, which the two rules above no longer depend on either. */
1914 #ui-datepicker-div td.ui-datepicker-today.ui-datepicker-current-day .ui-state-default,
1915 #ui-datepicker-div td.ui-datepicker-today .ui-state-active {
1916 box-shadow: inset 0 0 0 1px var(--hf-pick-accent-ink), inset 0 0 0 3px var(--hf-pick-on-accent);
1917 color: var(--hf-pick-on-accent);
1918 }
1919
1920 /* The selected day still has to answer the pointer, and the plain hover rule
1921 cannot reach it. Compound, so this does not rest on source order either. */
1922 #ui-datepicker-div td.ui-datepicker-current-day .ui-state-hover,
1923 #ui-datepicker-div td .ui-state-active.ui-state-hover {
1924 background: color-mix(in srgb, var(--hf-pick-accent) 85%, #000);
1925 color: var(--hf-pick-on-accent);
1926 }
1927
1928 /* The keyboard cursor, and the most important rule in the block. jQuery UI
1929 never moves focus into the panel - tab closes it and every open and redraw
1930 pushes focus back onto the input - so the cell a keyboard user is standing on
1931 is marked with this class alone, and the library paints it by firing its own
1932 mouseover handler at it. Left alone that made the cursor identical to a mouse
1933 hover, a tint at about 1.1:1, which is not somewhere anyone can see they are.
1934 The ring sits outside the chip so it can never be mistaken for today's, which
1935 sits inside, and it is an outline rather than a box-shadow so it survives
1936 forced-colors mode. The :focus-visible half is insurance for the same reason
1937 as the arrows: it is not a live path today. */
1938 #ui-datepicker-div td.ui-datepicker-days-cell-over .ui-state-default,
1939 #ui-datepicker-div td .ui-state-default:focus-visible {
1940 outline: 2px solid var(--hf-pick-accent-ink);
1941 outline-offset: 2px;
1942 }
1943
1944 /* Days from the neighbouring month are muted with a designed colour at 5.5:1
1945 rather than dimmed with opacity. They stay selectable whenever
1946 selectOtherMonths is on, so they are ordinary live content and the faint grey
1947 reserved for unavailable slots would be too dark a reading of them. */
1948 #ui-datepicker-div td.ui-datepicker-other-month .ui-state-default,
1949 #ui-datepicker-div td .ui-state-default.ui-priority-secondary {
1950 color: var(--hf-pick-muted);
1951 font-weight: normal;
1952 opacity: 1;
1953 }
1954
1955 #ui-datepicker-div td.ui-datepicker-other-month .ui-state-hover,
1956 #ui-datepicker-div td .ui-state-default.ui-priority-secondary.ui-state-hover {
1957 color: var(--hf-pick-text);
1958 }
1959
1960 #ui-datepicker-div td.ui-state-disabled,
1961 #ui-datepicker-div td.ui-datepicker-unselectable {
1962 cursor: default;
1963 opacity: 1;
1964 }
1965
1966 /* Unavailable days. Disabled text is exempt from the contrast minimum, but
1967 exempt is not the same as usable, so this is a designed 3.2:1 rather than a
1968 by-product of stacking opacity. The line through the number is the part that
1969 matters: without it a day blocked by minDate or maxDate is separated from an
1970 ordinary neighbouring-month day only by one grey being darker than another,
1971 which is a comparison nobody should have to make against a neighbour. */
1972 #ui-datepicker-div td.ui-state-disabled .ui-state-default,
1973 #ui-datepicker-div td.ui-datepicker-unselectable .ui-state-default {
1974 background: transparent;
1975 box-shadow: none;
1976 color: var(--hf-pick-faint);
1977 cursor: default;
1978 font-weight: normal;
1979 text-decoration: line-through;
1980 text-decoration-thickness: 1px;
1981 }
1982
1983 /* Only rendered when showWeek is on. Nothing in Hash Form turns it on, but the
1984 panel is shared with every other datepicker on the page and the option is
1985 global, so a third party can turn it on through $.datepicker.setDefaults. */
1986 #ui-datepicker-div th.ui-datepicker-week-col,
1987 #ui-datepicker-div td.ui-datepicker-week-col {
1988 color: var(--hf-pick-faint);
1989 font-size: 11px;
1990 font-weight: normal;
1991 padding-right: 6px;
1992 text-align: center;
1993 }
1994
1995 /* ---------- Button pane ---------- */
1996
1997 /* Same reasoning: showButtonPanel is off in all three of the plugin's inits,
1998 but the div is shared and the defaults are global, so another plugin can put
1999 Today and Done buttons inside our panel. A few rules are cheaper than the
2000 bug report. */
2001 #ui-datepicker-div .ui-datepicker-buttonpane {
2002 background: none;
2003 border-top: 1px solid var(--hf-pick-border);
2004 display: flex;
2005 gap: 6px;
2006 justify-content: space-between;
2007 margin: var(--hf-pick-pad) 0 0;
2008 padding: var(--hf-pick-pad) 0 0;
2009 }
2010
2011 #ui-datepicker-div .ui-datepicker-buttonpane button {
2012 background: transparent;
2013 border: 1px solid transparent;
2014 border-radius: var(--hf-pick-radius-control);
2015 color: var(--hf-pick-text);
2016 cursor: pointer;
2017 float: none;
2018 font-family: inherit;
2019 font-size: var(--hf-pick-font-size);
2020 font-weight: 500;
2021 line-height: 1.4;
2022 min-height: 32px;
2023 padding: 6px 12px;
2024 transition: background-color var(--hf-pick-transition), color var(--hf-pick-transition);
2025 width: auto;
2026 }
2027
2028 /* jQuery UI dims a secondary button with opacity, which is the same unreadable
2029 result the other-month days used to have. */
2030 #ui-datepicker-div .ui-datepicker-buttonpane button.ui-priority-secondary {
2031 color: var(--hf-pick-muted);
2032 opacity: 1;
2033 }
2034
2035 #ui-datepicker-div .ui-datepicker-buttonpane button.ui-priority-primary {
2036 background: var(--hf-pick-accent);
2037 border-color: var(--hf-pick-accent-ink);
2038 color: var(--hf-pick-on-accent);
2039 font-weight: 600;
2040 }
2041
2042 #ui-datepicker-div .ui-datepicker-buttonpane button:hover {
2043 background: var(--hf-pick-soft);
2044 color: var(--hf-pick-text);
2045 }
2046
2047 #ui-datepicker-div .ui-datepicker-buttonpane button.ui-priority-primary:hover {
2048 background: color-mix(in srgb, var(--hf-pick-accent) 85%, #000);
2049 color: var(--hf-pick-on-accent);
2050 }
2051
2052 #ui-datepicker-div .ui-datepicker-buttonpane button:focus-visible {
2053 outline: 2px solid var(--hf-pick-accent-ink);
2054 outline-offset: 1px;
2055 }
2056
2057 /* ---------- Multiple months ---------- */
2058
2059 /* jQuery UI floats the month groups and clears them with ui-helper-clearfix.
2060 Flex does the same thing without the float that the reset above removes, and
2061 without depending on the inline em width that is forced to auto. */
2062 #ui-datepicker-div.ui-datepicker-multi {
2063 display: flex;
2064 flex-wrap: wrap;
2065 gap: var(--hf-pick-pad);
2066 }
2067
2068 #ui-datepicker-div.ui-datepicker-multi .ui-datepicker-group {
2069 flex: 1;
2070 float: none;
2071 width: auto;
2072 }
2073
2074 #ui-datepicker-div .ui-datepicker-row-break {
2075 flex-basis: 100%;
2076 height: 0;
2077 width: 100%;
2078 }
2079
2080 /* ---------- Right to left ---------- */
2081
2082 /* The flex order and the dashicons glyphs both assume a left to right header,
2083 so both are mirrored rather than left to the browser. The old pair of rules
2084 here were scoped to body.wp-admin, so the front end got nothing at all. */
2085 #ui-datepicker-div.ui-datepicker-rtl .ui-datepicker-title {
2086 text-align: right;
2087 }
2088
2089 #ui-datepicker-div.ui-datepicker-rtl .ui-datepicker-prev {
2090 order: 3;
2091 }
2092
2093 #ui-datepicker-div.ui-datepicker-rtl .ui-datepicker-next {
2094 order: 2;
2095 }
2096
2097 #ui-datepicker-div.ui-datepicker-rtl .ui-datepicker-prev:before {
2098 content: "\f345";
2099 }
2100
2101 #ui-datepicker-div.ui-datepicker-rtl .ui-datepicker-next:before {
2102 content: "\f341";
2103 }
2104
2105 #ui-datepicker-div.ui-datepicker-rtl select.ui-datepicker-month,
2106 #ui-datepicker-div.ui-datepicker-rtl select.ui-datepicker-year {
2107 background-position: left 8px center;
2108 padding: 3px 8px 3px 26px;
2109 }
2110
2111 #ui-datepicker-div.ui-datepicker-rtl th.ui-datepicker-week-col,
2112 #ui-datepicker-div.ui-datepicker-rtl td.ui-datepicker-week-col {
2113 padding-left: 6px;
2114 padding-right: 0;
2115 }
2116
2117 /* Parent input alignment. The panel is placed against the input's border box,
2118 which is one pixel wider than its text on each side. Raised with everything
2119 else because a theme shipping jQuery UI CSS ships this pair too, byte for
2120 byte, and used to win it on load order. */
2121 body.wp-admin:not(.rtl) #ui-datepicker-div.ui-datepicker {
2122 margin-left: -1px;
2123 }
2124
2125 body.wp-admin.rtl #ui-datepicker-div.ui-datepicker {
2126 margin-right: -1px;
2127 }
2128
2129 /* -----------------------------------------------------------------------------
2130 * Time picker
2131 *
2132 * Replaces the stock jquery.timepicker stylesheet, which is deliberately not
2133 * enqueued. That sheet carried its own blue, its own grey and its own shadow,
2134 * so a date and a time field sitting next to each other looked like they came
2135 * from different plugins.
2136 *
2137 * The wrapper is appended to <body> as a sibling of #ui-datepicker-div, not
2138 * inside it, so the id above is no help here - #ui-datepicker-div
2139 * .ui-timepicker-wrapper matches nothing - and the class is repeated instead.
2140 * Three repetitions put every rule at (0,3,0) or higher, which clears the stock
2141 * sheet's heaviest selector at (0,3,1) and any admin-colour prefixed derivative
2142 * of it with two class weights to spare, so a copy of that sheet loading after
2143 * this one changes nothing.
2144 *
2145 * The repetition has to be kept on every rule: drop one on one rule and it
2146 * falls a whole class weight with no visible symptom until a competing sheet
2147 * turns up on a customer site. Nothing in CSS can enforce that, which is why
2148 * passing the library's own className option is the recommended way out and is
2149 * listed with the JS changes. It is deliberately not relied on here, because
2150 * the stylesheet has to keep working when the script does not.
2151 * -------------------------------------------------------------------------- */
2152
2153 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper {
2154 background: var(--hf-pick-surface);
2155 border: 1px solid var(--hf-pick-border);
2156 border-radius: var(--hf-pick-radius);
2157 box-shadow: var(--hf-pick-shadow);
2158 box-sizing: border-box;
2159 color: var(--hf-pick-text);
2160 font-family: var(--hf-pick-font);
2161 font-size: var(--hf-pick-font-size);
2162 line-height: 1.4;
2163 margin: 6px 0 0;
2164 /* The stock sheet capped this at 150px, about five slots. Roughly seven
2165 here, and the vh half keeps it inside a short viewport - a laptop in
2166 landscape, or a phone with the keyboard up - without a media query. */
2167 max-height: min(288px, 45vh);
2168 max-width: calc(100vw - 16px);
2169 outline: none;
2170 /* A dropdown that hands its momentum to the page underneath once it reaches
2171 the last slot feels broken. */
2172 overscroll-behavior: contain;
2173 overflow-x: hidden;
2174 overflow-y: auto;
2175 padding: 6px;
2176 /* Left as auto so the library's listWidth option, which writes an inline
2177 width, still decides when it is used. */
2178 width: auto;
2179 /* No !important needed, unlike the date panel: this library writes display,
2180 position, top and left inline but never a z-index. Matched to the date
2181 panel so a form carrying both fields cannot have one picker land above a
2182 dialog and the other below it. */
2183 z-index: 1000001;
2184
2185 scrollbar-width: thin;
2186 scrollbar-color: color-mix(in srgb, var(--hf-pick-muted) 45%, transparent) transparent;
2187 }
2188
2189 /* The library adds this class when it opens the list above the input, and it
2190 works out where to put the panel by ADDING the wrapper's own margin-top into
2191 the offset - in both directions. Opening downward that margin is the gap.
2192 Opening upward the same positive margin pushed the list down over the field
2193 by exactly the six pixels that were meant to clear it, and zeroing the margin
2194 only makes the panel sit flush; a margin-bottom is inert, because jQuery's
2195 offset setter compensates for rendered margins and only margin-top reaches
2196 the formula. A negative margin-top is the one value that puts the gap back on
2197 the side it can be seen. Placed after the base rule, which it ties with. */
2198 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-positioned-top {
2199 margin: -6px 0 0;
2200 }
2201
2202 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper::-webkit-scrollbar {
2203 width: 8px;
2204 }
2205
2206 /* The thumb used to be drawn in the border grey, which is 1.26:1 on the white
2207 surface - present in the DOM, absent to the eye. The muted ink at low opacity
2208 reads as a scrollbar without becoming a second piece of colour in the panel. */
2209 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper::-webkit-scrollbar-thumb {
2210 background: color-mix(in srgb, var(--hf-pick-muted) 45%, transparent);
2211 border-radius: 999px;
2212 }
2213
2214 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper::-webkit-scrollbar-track {
2215 background: transparent;
2216 }
2217
2218 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list {
2219 list-style: none;
2220 margin: 0;
2221 padding: 0;
2222 }
2223
2224 /* A 36px row matches the day chip and clears the touch target minimum with room
2225 rather than by a pixel. Tabular figures for the same reason as the calendar:
2226 a column of proportional times sets ragged down a forty-eight row menu. */
2227 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li {
2228 background: none;
2229 border: none;
2230 border-radius: var(--hf-pick-radius-control);
2231 box-shadow: none;
2232 color: var(--hf-pick-text);
2233 cursor: pointer;
2234 font-size: var(--hf-pick-font-size);
2235 font-variant-numeric: tabular-nums;
2236 line-height: 1.4;
2237 list-style: none;
2238 margin: 0;
2239 padding: 9px 12px;
2240 position: relative;
2241 transition: background-color var(--hf-pick-transition), color var(--hf-pick-transition);
2242 white-space: nowrap;
2243 }
2244
2245 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li + li {
2246 margin-top: 1px;
2247 }
2248
2249 /* The one piece of structure in a list that is otherwise forty-eight
2250 near-identical rows: a hairline where the morning ends. It is the only
2251 landmark the markup offers, since the library classes every row am or pm, and
2252 it costs nothing when the configured range sits entirely on one side of noon,
2253 because then no am row is ever followed by a pm row. Drawn as a positioned
2254 line rather than a border, because a border on an 8px rounded row curves up
2255 at both ends instead of sitting flat. */
2256 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li.ui-timepicker-am + li.ui-timepicker-pm {
2257 margin-top: 9px;
2258 }
2259
2260 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li.ui-timepicker-am + li.ui-timepicker-pm:before {
2261 background: var(--hf-pick-border);
2262 content: "";
2263 height: 1px;
2264 left: 12px;
2265 position: absolute;
2266 right: 12px;
2267 top: -5px;
2268 }
2269
2270 /* The library keeps ui-timepicker-selected on the chosen row while the pointer
2271 is elsewhere in the list, so hover has to win over it to read correctly. */
2272 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li:hover {
2273 background: var(--hf-pick-soft);
2274 color: var(--hf-pick-text);
2275 }
2276
2277 /* This class is doing two jobs at once: it marks the committed value and it is
2278 also the arrow-key cursor, because focus never leaves the input. It is filled
2279 so it can be found again after scrolling a long list, and it carries the same
2280 guaranteed keyline as the selected day for the same reason - on the front end
2281 the fill is the form owner's colour and the keyline is the part whose
2282 contrast is derived rather than hoped for. */
2283 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper li.ui-timepicker-selected,
2284 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list .ui-timepicker-selected,
2285 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list:hover .ui-timepicker-selected {
2286 background: var(--hf-pick-accent);
2287 box-shadow: inset 0 0 0 1px var(--hf-pick-accent-ink);
2288 color: var(--hf-pick-on-accent);
2289 font-weight: 600;
2290 }
2291
2292 /* Hovering the committed row itself. Compound so it wins on weight rather than
2293 on its position in the block. */
2294 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li.ui-timepicker-selected:hover {
2295 background: color-mix(in srgb, var(--hf-pick-accent) 85%, #000);
2296 color: var(--hf-pick-on-accent);
2297 }
2298
2299 /* With showDuration on the library appends a span to the row. Laying the row
2300 out as a flex line puts the duration on the trailing edge, which the stock
2301 sheet faked with a fixed padding-right that went with it. */
2302 .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-wrapper .ui-timepicker-list li {
2303 display: flex;
2304 gap: var(--hf-pick-pad);
2305 justify-content: space-between;
2306 }
2307
2308 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-duration {
2309 color: var(--hf-pick-muted);
2310 margin-left: 6px;
2311 }
2312
2313 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li:hover .ui-timepicker-duration {
2314 color: var(--hf-pick-muted);
2315 }
2316
2317 /* Full strength rather than dimmed. The duration is the second half of the
2318 row's meaning, and fading it against a filled chip pushed it under the
2319 threshold on exactly the row a user was most likely to be reading. */
2320 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper li.ui-timepicker-selected .ui-timepicker-duration,
2321 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list .ui-timepicker-selected .ui-timepicker-duration {
2322 color: var(--hf-pick-on-accent);
2323 opacity: 1;
2324 }
2325
2326 /* The empty row the noneOption setting prepends carries no am or pm class and
2327 no time, so it is marked as the absence of a choice rather than as one. */
2328 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li[data-time=""] {
2329 color: var(--hf-pick-muted);
2330 }
2331
2332 /* Same reasoning as the disabled day: a designed grey plus a line through the
2333 time, rather than an opacity that has to be compared against its neighbours
2334 to be understood. */
2335 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li.ui-timepicker-disabled,
2336 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li.ui-timepicker-disabled:hover,
2337 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled {
2338 background: transparent;
2339 box-shadow: none;
2340 color: var(--hf-pick-faint);
2341 cursor: default;
2342 font-weight: normal;
2343 opacity: 1;
2344 text-decoration: line-through;
2345 text-decoration-thickness: 1px;
2346 }
2347
2348 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li.ui-timepicker-disabled .ui-timepicker-duration {
2349 color: var(--hf-pick-faint);
2350 }
2351
2352 /* The useSelect rendering mode replaces the whole panel with a native select
2353 placed next to the input, inside the form rather than on <body>. It carries
2354 the tokens itself through the shared block at the top. Nothing in Hash Form
2355 turns useSelect on; this only stops it arriving unstyled, and it is kept at
2356 two class weights rather than given id weight, because that control lives
2357 inside the form and a form owner's own styling has to keep reaching it. */
2358 select.ui-timepicker-select.ui-timepicker-select {
2359 -webkit-appearance: none;
2360 appearance: none;
2361 background-color: var(--hf-pick-surface);
2362 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23646970' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
2363 background-position: right 10px center;
2364 background-repeat: no-repeat;
2365 background-size: 10px 6px;
2366 border: 1px solid var(--hf-pick-border);
2367 border-radius: var(--hf-pick-radius-control);
2368 color: var(--hf-pick-text);
2369 font-family: var(--hf-pick-font);
2370 font-size: var(--hf-pick-font-size);
2371 min-height: 36px;
2372 padding: 6px 30px 6px 12px;
2373 }
2374
2375 select.ui-timepicker-select.ui-timepicker-select:focus-visible {
2376 border-color: var(--hf-pick-accent-ink);
2377 outline: 2px solid var(--hf-pick-accent-ink);
2378 outline-offset: 1px;
2379 }
2380
2381 /* -----------------------------------------------------------------------------
2382 * Pickers: small screens, motion, forced colours, print
2383 * -------------------------------------------------------------------------- */
2384
2385 /* Seven 36px chips plus their gutters and the panel padding comes to about
2386 312px, which is wider than a small phone in portrait once the panel is nudged
2387 away from the viewport edge. The chip shrinks to 32px, still well above the
2388 24px minimum target, and the header lets go of the month select so a long
2389 localised month name has somewhere to go. */
2390 @media screen and (max-width:480px) {
2391
2392 #ui-datepicker-div.ui-datepicker,
2393 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper,
2394 select.ui-timepicker-select.ui-timepicker-select {
2395 --hf-pick-cell: 32px;
2396 --hf-pick-tap: 32px;
2397 --hf-pick-pad: 8px;
2398 }
2399
2400 #ui-datepicker-div select.ui-datepicker-month,
2401 #ui-datepicker-div select.ui-datepicker-year {
2402 max-width: none;
2403 }
2404
2405 #ui-datepicker-div.ui-datepicker-multi {
2406 display: block;
2407 }
2408
2409 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper {
2410 max-height: min(240px, 40vh);
2411 }
2412 }
2413
2414 /* Every transition in the block reads --hf-pick-transition, so redefining that
2415 one token is enough and there is no list of selectors here to fall out of
2416 step with the rules above. The selector list is the token block's, repeated
2417 exactly, so it ties on specificity and wins on position. Not 0s: a zero
2418 duration never fires transitionend, and both jQuery and the timepicker listen
2419 for it in places. */
2420 @media (prefers-reduced-motion: reduce) {
2421
2422 #ui-datepicker-div.ui-datepicker,
2423 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper,
2424 select.ui-timepicker-select.ui-timepicker-select {
2425 --hf-pick-transition: .001ms linear;
2426 }
2427 }
2428
2429 /* In forced colours mode the browser throws away background and colour, and
2430 drops box-shadow outright - so the selected chip loses its fill and today
2431 loses its ring entirely, which takes the state away from exactly the users
2432 most dependent on it. Both are restated in system colours, and today moves
2433 from a shadow to an outline so it survives. Disabled is restated too, because
2434 the strikethrough alone would be carrying it otherwise. */
2435 @media (forced-colors: active) {
2436
2437 #ui-datepicker-div.ui-datepicker,
2438 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper {
2439 border-color: ButtonBorder;
2440 }
2441
2442 #ui-datepicker-div td.ui-datepicker-today .ui-state-default {
2443 box-shadow: none;
2444 outline: 2px solid CanvasText;
2445 outline-offset: -2px;
2446 }
2447
2448 #ui-datepicker-div td.ui-datepicker-current-day .ui-state-default,
2449 #ui-datepicker-div td .ui-state-active,
2450 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper li.ui-timepicker-selected,
2451 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list .ui-timepicker-selected {
2452 background: Highlight;
2453 box-shadow: none;
2454 color: HighlightText;
2455 forced-color-adjust: none;
2456 }
2457
2458 /* Today and selected at once: the concentric ring is redrawn in the
2459 highlight's own text colour so the two states stay separable. */
2460 #ui-datepicker-div td.ui-datepicker-today.ui-datepicker-current-day .ui-state-default,
2461 #ui-datepicker-div td.ui-datepicker-today .ui-state-active {
2462 outline: 2px solid HighlightText;
2463 outline-offset: -4px;
2464 }
2465
2466 #ui-datepicker-div td.ui-datepicker-days-cell-over .ui-state-default,
2467 #ui-datepicker-div td .ui-state-default:focus-visible {
2468 outline-color: CanvasText;
2469 }
2470
2471 #ui-datepicker-div td.ui-state-disabled .ui-state-default,
2472 #ui-datepicker-div td.ui-datepicker-unselectable .ui-state-default,
2473 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper .ui-timepicker-list li.ui-timepicker-disabled {
2474 color: GrayText;
2475 }
2476 }
2477
2478 /* A panel that happens to be open when the page is printed would otherwise land
2479 in the middle of the printed form. Both libraries write display inline as
2480 they open, so this is the one place !important is unavoidable. */
2481 @media print {
2482
2483 #ui-datepicker-div,
2484 .ui-timepicker-wrapper.ui-timepicker-wrapper.ui-timepicker-wrapper {
2485 display: none !important;
2486 }
2487 }
2488
2489 .hf-hashform-block {
2490 --hf-form-title-spacing: var(--hf-form-title-spacing-bottom);
2491 --hf-form-desc-spacing: var(--hf-form-desc-spacing-bottom);
2492 --hf-label-spacing: var(--hf-label-spacing-bottom);
2493 --hf-desc-spacing: var(--hf-desc-spacing-top);
2494 }
2495
2496 .hf-hashform-block.hf-form-custom-style .hf-form-description {
2497 font-family: var(--hf-form-desc-typo-font-family);
2498 font-size: var(--hf-form-desc-typo-font-size, 16px);
2499 font-weight: var(--hf-form-desc-typo-font-weight, 400);
2500 font-style: var(--hf-form-desc-typo-font-style, normal);
2501 letter-spacing: var(--hf-form-desc-typo-letter-spacing, normal);
2502 text-transform: var(--hf-form-desc-typo-text-transform, inherit);
2503 text-decoration: var(--hf-form-desc-typo-text-decoration, inherit);
2504 line-height: var(--hf-form-desc-typo-line-height, 1.2);
2505 color: var(--hf-form-desc-typo-font-color, #666);
2506 }
2507
2508 .hf-hashform-block.hf-form-custom-style .hf-form-field.hashform-field-type-paragraph {
2509 font-family: var(--hf-paragraph-typo-font-family);
2510 font-size: var(--hf-paragraph-typo-font-size, 13px);
2511 font-weight: var(--hf-paragraph-typo-font-weight, 400);
2512 font-style: var(--hf-paragraph-typo-font-style, normal);
2513 letter-spacing: var(--hf-paragraph-typo-letter-spacing, normal);
2514 text-transform: var(--hf-paragraph-typo-text-transform, inherit);
2515 text-decoration: var(--hf-paragraph-typo-text-decoration, inherit);
2516 line-height: var(--hf-paragraph-typo-line-height, 1.2);
2517 color: var(--hf-paragraph-typo-font-color, inherit);
2518 }
2519
2520 @media screen and (max-width:1024px) {
2521 .hf-form-custom-style .hf-container .hf-field-label {
2522 font-size: var(--hf-label-typo-font-size-md, var(--hf-label-typo-font-size, 1em));
2523 letter-spacing: var(--hf-label-typo-letter-spacing-md, var(--hf-label-typo-letter-spacing, inherit));
2524 line-height: var(--hf-label-typo-line-height-md, var(--hf-label-typo-line-height, inherit));
2525 }
2526
2527 .hf-form-custom-style .hf-container .hf-field-desc {
2528 font-size: var(--hf-desc-typo-font-size-md, var(--hf-desc-typo-font-size, 1em));
2529 letter-spacing: var(--hf-desc-typo-letter-spacing-md, var(--hf-desc-typo-letter-spacing, inherit));
2530 line-height: var(--hf-desc-typo-line-height-md, var(--hf-desc-typo-line-height, inherit));
2531 }
2532
2533 .hf-form-custom-style .hf-container input[type="text"],
2534 .hf-form-custom-style .hf-container input[type="email"],
2535 .hf-form-custom-style .hf-container input[type="url"],
2536 .hf-form-custom-style .hf-container input[type="password"],
2537 .hf-form-custom-style .hf-container input[type="search"],
2538 .hf-form-custom-style .hf-container input[type="number"],
2539 .hf-form-custom-style .hf-container input[type="tel"],
2540 .hf-form-custom-style .hf-container input[type="range"],
2541 .hf-form-custom-style .hf-container input[type="date"],
2542 .hf-form-custom-style .hf-container input[type="month"],
2543 .hf-form-custom-style .hf-container input[type="week"],
2544 .hf-form-custom-style .hf-container input[type="time"],
2545 .hf-form-custom-style .hf-container input[type="datetime"],
2546 .hf-form-custom-style .hf-container input[type="datetime-local"],
2547 .hf-form-custom-style .hf-container input[type="color"],
2548 .hf-form-custom-style .hf-container textarea,
2549 .hf-form-custom-style .hf-container select {
2550 font-size: var(--hf-field-typo-font-size-md, var(--hf-field-typo-font-size, 1em));
2551 letter-spacing: var(--hf-field-typo-letter-spacing-md, var(--hf-field-typo-letter-spacing, inherit));
2552 line-height: var(--hf-field-typo-line-height-md, var(--hf-field-typo-line-height, inherit));
2553 }
2554
2555 .hf-form-custom-style .hf-file-uploader .qq-upload-button {
2556 font-size: var(--hf-upload-typo-font-size-md, var(--hf-upload-typo-font-size, 1em));
2557 letter-spacing: var(--hf-upload-typo-letter-spacing-md, var(--hf-upload-typo-letter-spacing, inherit));
2558 line-height: var(--hf-upload-typo-line-height-md, var(--hf-upload-typo-line-height, inherit));
2559 }
2560
2561 .hf-form-custom-style .hf-container button,
2562 .hf-form-custom-style .hf-container input[type="button"],
2563 .hf-form-custom-style .hf-container input[type="reset"],
2564 .hf-form-custom-style .hf-container input[type="submit"] {
2565 font-size: var(--hf-button-typo-font-size-md, var(--hf-button-typo-font-size, 1em));
2566 letter-spacing: var(--hf-button-typo-letter-spacing-md, var(--hf-button-typo-letter-spacing, inherit));
2567 line-height: var(--hf-button-typo-line-height-md, var(--hf-button-typo-line-height, inherit));
2568 }
2569
2570 .hf-form-custom-style .hf-container .hf-error-msg {
2571 font-size: var(--hf-validation-typo-font-size-md, var(--hf-validation-typo-font-size, 1em));
2572 letter-spacing: var(--hf-validation-typo-letter-spacing-md, var(--hf-validation-typo-letter-spacing, inherit));
2573 line-height: var(--hf-validation-typo-line-height-md, var(--hf-validation-typo-line-height, inherit));
2574 }
2575
2576 .hf-form-custom-style .hf-form-title {
2577 font-size: var(--hf-form-title-typo-font-size-md, var(--hf-form-title-typo-font-size, 1em));
2578 letter-spacing: var(--hf-form-title-typo-letter-spacing-md, var(--hf-form-title-typo-letter-spacing, inherit));
2579 line-height: var(--hf-form-title-typo-line-height-md, var(--hf-form-title-typo-line-height, inherit));
2580 }
2581
2582 .hf-hashform-block.hf-form-custom-style .hf-form-description {
2583 font-size: var(--hf-form-desc-typo-font-size-md, var(--hf-form-desc-typo-font-size, 1em));
2584 letter-spacing: var(--hf-form-desc-typo-letter-spacing-md, var(--hf-form-desc-typo-letter-spacing, inherit));
2585 line-height: var(--hf-form-desc-typo-line-height-md, var(--hf-form-desc-typo-line-height, inherit));
2586 }
2587
2588 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h1,
2589 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h2,
2590 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h3,
2591 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h4,
2592 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h5,
2593 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h6 {
2594 font-size: var(--hf-heading-typo-font-size-md, var(--hf-heading-typo-font-size, 1em));
2595 letter-spacing: var(--hf-heading-typo-letter-spacing-md, var(--hf-heading-typo-letter-spacing, inherit));
2596 line-height: var(--hf-heading-typo-line-height-md, var(--hf-heading-typo-line-height, inherit));
2597 }
2598
2599 .hf-hashform-block.hf-form-custom-style .hf-form-field.hashform-field-type-paragraph {
2600 font-size: var(--hf-paragraph-typo-font-size-md, var(--hf-paragraph-typo-font-size, 1em));
2601 letter-spacing: var(--hf-paragraph-typo-letter-spacing-md, var(--hf-paragraph-typo-letter-spacing, inherit));
2602 line-height: var(--hf-paragraph-typo-line-height-md, var(--hf-paragraph-typo-line-height, inherit));
2603 }
2604 }
2605
2606 @media screen and (max-width:767px) {
2607
2608 /* Fields sit on a twelve column grid, and until now nothing collapsed it:
2609 two fields sharing a row stayed side by side on a phone, about 145px
2610 each on a 390px screen. .hf-grouped-field is the same grid one level
2611 down, holding the parts of an address or a name. The attribute
2612 selector out-weighs .hf-grid-N whatever order the rules end up in. */
2613 .hf-container > [class*="hf-grid-"],
2614 .hf-container .hf-grouped-field > [class*="hf-grid-"] {
2615 grid-column: span 12 / span 12;
2616 }
2617
2618 .hf-form-custom-style .hf-container .hf-field-label {
2619 font-size: var(--hf-label-typo-font-size-sm, var(--hf-label-typo-font-size-md, var(--hf-label-typo-font-size, 1em)));
2620 letter-spacing: var(--hf-label-typo-letter-spacing-sm, var(--hf-label-typo-letter-spacing-md, var(--hf-label-typo-letter-spacing, inherit)));
2621 line-height: var(--hf-label-typo-line-height-sm, var(--hf-label-typo-line-height-md, var(--hf-label-typo-line-height, inherit)));
2622 }
2623
2624 .hf-form-custom-style .hf-container .hf-field-desc {
2625 font-size: var(--hf-desc-typo-font-size-sm, var(--hf-desc-typo-font-size-md, var(--hf-desc-typo-font-size, 1em)));
2626 letter-spacing: var(--hf-desc-typo-letter-spacing-sm, var(--hf-desc-typo-letter-spacing-md, var(--hf-desc-typo-letter-spacing, inherit)));
2627 line-height: var(--hf-desc-typo-line-height-sm, var(--hf-desc-typo-line-height-md, var(--hf-desc-typo-line-height, inherit)));
2628 }
2629
2630 .hf-form-custom-style .hf-container input[type="text"],
2631 .hf-form-custom-style .hf-container input[type="email"],
2632 .hf-form-custom-style .hf-container input[type="url"],
2633 .hf-form-custom-style .hf-container input[type="password"],
2634 .hf-form-custom-style .hf-container input[type="search"],
2635 .hf-form-custom-style .hf-container input[type="number"],
2636 .hf-form-custom-style .hf-container input[type="tel"],
2637 .hf-form-custom-style .hf-container input[type="range"],
2638 .hf-form-custom-style .hf-container input[type="date"],
2639 .hf-form-custom-style .hf-container input[type="month"],
2640 .hf-form-custom-style .hf-container input[type="week"],
2641 .hf-form-custom-style .hf-container input[type="time"],
2642 .hf-form-custom-style .hf-container input[type="datetime"],
2643 .hf-form-custom-style .hf-container input[type="datetime-local"],
2644 .hf-form-custom-style .hf-container input[type="color"],
2645 .hf-form-custom-style .hf-container textarea,
2646 .hf-form-custom-style .hf-container select {
2647 font-size: var(--hf-field-typo-font-size-sm, var(--hf-field-typo-font-size-md, var(--hf-field-typo-font-size, 1em)));
2648 letter-spacing: var(--hf-field-typo-letter-spacing-sm, var(--hf-field-typo-letter-spacing-md, var(--hf-field-typo-letter-spacing, inherit)));
2649 line-height: var(--hf-field-typo-line-height-sm, var(--hf-field-typo-line-height-md, var(--hf-field-typo-line-height, inherit)));
2650 }
2651
2652 .hf-form-custom-style .hf-file-uploader .qq-upload-button {
2653 font-size: var(--hf-upload-typo-font-size-sm, var(--hf-upload-typo-font-size-md, var(--hf-upload-typo-font-size, 1em)));
2654 letter-spacing: var(--hf-upload-typo-letter-spacing-sm, var(--hf-upload-typo-letter-spacing-md, var(--hf-upload-typo-letter-spacing, inherit)));
2655 line-height: var(--hf-upload-typo-line-height-sm, var(--hf-upload-typo-line-height-md, var(--hf-upload-typo-line-height, inherit)));
2656 }
2657
2658 .hf-form-custom-style .hf-container button,
2659 .hf-form-custom-style .hf-container input[type="button"],
2660 .hf-form-custom-style .hf-container input[type="reset"],
2661 .hf-form-custom-style .hf-container input[type="submit"] {
2662 font-size: var(--hf-button-typo-font-size-sm, var(--hf-button-typo-font-size-md, var(--hf-button-typo-font-size, 1em)));
2663 letter-spacing: var(--hf-button-typo-letter-spacing-sm, var(--hf-button-typo-letter-spacing-md, var(--hf-button-typo-letter-spacing, inherit)));
2664 line-height: var(--hf-button-typo-line-height-sm, var(--hf-button-typo-line-height-md, var(--hf-button-typo-line-height, inherit)))
2665 }
2666
2667 .hf-form-custom-style .hf-container .hf-error-msg {
2668 font-size: var(--hf-validation-typo-font-size-sm, var(--hf-validation-typo-font-size-md, var(--hf-validation-typo-font-size, 1em)));
2669 letter-spacing: var(--hf-validation-typo-letter-spacing-sm, var(--hf-validation-typo-letter-spacing-md, var(--hf-validation-typo-letter-spacing, inherit)));
2670 line-height: var(--hf-validation-typo-line-height-sm, var(--hf-validation-typo-line-height-md, var(--hf-validation-typo-line-height, inherit)));
2671 }
2672
2673 .hf-form-custom-style .hf-form-title {
2674 font-size: var(--hf-form-title-typo-font-size-sm, var(--hf-form-title-typo-font-size-md, var(--hf-form-title-typo-font-size, 1em)));
2675 letter-spacing: var(--hf-form-title-typo-letter-spacing-sm, var(--hf-form-title-typo-letter-spacing-md, var(--hf-form-title-typo-letter-spacing, inherit)));
2676 line-height: var(--hf-form-title-typo-line-height-sm, var(--hf-form-title-typo-line-height-md, var(--hf-form-title-typo-line-height, inherit)));
2677 }
2678
2679 .hf-hashform-block.hf-form-custom-style .hf-form-description {
2680 font-size: var(--hf-form-desc-typo-font-size-sm, var(--hf-form-desc-typo-font-size-md, var(--hf-form-desc-typo-font-size, 1em)));
2681 letter-spacing: var(--hf-form-desc-typo-letter-spacing-sm, var(--hf-form-desc-typo-letter-spacing-md, var(--hf-form-desc-typo-letter-spacing, inherit)));
2682 line-height: var(--hf-form-desc-typo-line-height-sm, var(--hf-form-desc-typo-line-height-md, var(--hf-form-desc-typo-line-height, inherit)))
2683 }
2684
2685 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h1,
2686 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h2,
2687 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h3,
2688 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h4,
2689 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h5,
2690 .hf-form-custom-style .hf-form-field.hashform-field-type-heading h6 {
2691 font-size: var(--hf-heading-typo-font-size-sm, var(--hf-heading-typo-font-size-md, var(--hf-heading-typo-font-size, 1em)));
2692 letter-spacing: var(--hf-heading-typo-letter-spacing-sm, var(--hf-heading-typo-letter-spacing-md, var(--hf-heading-typo-letter-spacing, inherit)));
2693 line-height: var(--hf-heading-typo-line-height-sm, var(--hf-heading-typo-line-height-md, var(--hf-heading-typo-line-height, inherit)));
2694 }
2695
2696 .hf-hashform-block.hf-form-custom-style .hf-form-field.hashform-field-type-paragraph {
2697 font-size: var(--hf-paragraph-typo-font-size-sm, var(--hf-paragraph-typo-font-size-md, var(--hf-paragraph-typo-font-size, 1em)));
2698 letter-spacing: var(--hf-paragraph-typo-letter-spacing-sm, var(--hf-paragraph-typo-letter-spacing-md, var(--hf-paragraph-typo-letter-spacing, inherit)));
2699 line-height: var(--hf-paragraph-typo-line-height-sm, var(--hf-paragraph-typo-line-height-md, var(--hf-paragraph-typo-line-height, inherit)));
2700 }
2701 }
2702
2703 body > .hf-form-tempate {
2704 max-width: 1200px;
2705 margin: 0 auto;
2706 padding: 40px;
2707 }
2708 /* Shown in place of a form that is closed, full or login-only. */
2709 .hf-form-closed-msg {
2710 background: #f6f7f7;
2711 border: 1px solid #dcdcde;
2712 border-radius: 4px;
2713 color: #50575e;
2714 padding: 16px 20px;
2715 }
2716
2717 /* ---------------------------------------------------------------------------
2718 * Accessibility helpers
2719 * ------------------------------------------------------------------------ */
2720
2721 /*
2722 * Visible to assistive technology, not on screen. Used for the "(required)"
2723 * that sits beside the asterisk, which is aria-hidden because a lone "*"
2724 * reads as nothing useful.
2725 *
2726 * Deliberately not display:none or visibility:hidden - both remove the text
2727 * from the accessibility tree, which is the opposite of what is wanted.
2728 */
2729 .hf-container .hf-screen-reader-text {
2730 border: 0;
2731 clip-path: inset(50%);
2732 height: 1px;
2733 margin: -1px;
2734 overflow: hidden;
2735 padding: 0;
2736 position: absolute;
2737 white-space: nowrap;
2738 width: 1px;
2739 }
2740
2741 /* Keyboard focus must never be invisible. */
2742 .hf-container .hf-screen-reader-text:focus {
2743 clip-path: none;
2744 height: auto;
2745 margin: 0;
2746 overflow: visible;
2747 position: static;
2748 white-space: normal;
2749 width: auto;
2750 }
2751