summaryrefslogtreecommitdiff
path: root/public/stylesheets/admin.css
diff options
context:
space:
mode:
Diffstat (limited to 'public/stylesheets/admin.css')
-rw-r--r--public/stylesheets/admin.css1430
1 files changed, 1200 insertions, 230 deletions
diff --git a/public/stylesheets/admin.css b/public/stylesheets/admin.css
index c9ef173..0e11747 100644
--- a/public/stylesheets/admin.css
+++ b/public/stylesheets/admin.css
@@ -1,4 +1,6 @@
1/* Layout */ 1/* ============================================================
2 Base elements
3 ============================================================ */
2 4
3body { 5body {
4 font-family: Helvetica, Arial, sans-serif; 6 font-family: Helvetica, Arial, sans-serif;
@@ -6,9 +8,16 @@ body {
6 margin: 0px; 8 margin: 0px;
7} 9}
8 10
11/* Plain link visibility: a light, desaturated squiggly underline
12 signals "clickable" at rest without the weight of a solid line. */
9a { 13a {
10 color: #000000; 14 color: #000000;
11 text-decoration: none; 15 text-decoration: underline;
16 -webkit-text-decoration-style: wavy;
17 text-decoration-style: wavy;
18 text-decoration-color: #b0b0b0;
19 text-decoration-thickness: 1px;
20 text-underline-offset: 2px;
12} 21}
13 22
14a:hover { 23a:hover {
@@ -19,29 +28,120 @@ th {
19 text-transform: lowercase; 28 text-transform: lowercase;
20} 29}
21 30
31td {
32 padding-top: 10px;
33 padding-bottom: 5px;
34 padding-right: 10px;
35}
36/* table#revisions td only overrides padding-right, so its rows still
37 depend on this rule for vertical padding. table.node_table td resets
38 padding-top/bottom to 0 explicitly and does not depend on it. */
39
40input[type=text],
41input[type=password],
42textarea {
43 font-size: 1rem;
44 font-family: Helvetica;
45 border: 1px solid #989898;
46 border-radius: 2px;
47}
48
49select {
50 font-size: 1rem;
51 border: 1px solid #989898;
52}
53
54summary {
55 cursor: pointer;
56}
57
58summary:hover {
59 background-color: #f7f7f7;
60}
61
62input[type=password] {
63 border: 1px solid #989898;
64}
65
66input[type=radio] {
67 border: 1px solid #989898;
68}
69
70/* ============================================================
71 Layout
72 ============================================================ */
73
74@media(min-width:1016px) {
75 #wrapper {
76 margin: 0 125px;
77 }
78 .node_action_bar.node_action_bar_save {
79 margin-left: 120px;
80 }
81
82 .standalone_action_bar {
83 margin-left: -125px;
84 }
85}
86@media(max-width:1015px) {
87 #wrapper {
88 margin: 0;
89 width: 100%;
90 box-sizing: border-box;
91 }
92
93 #sitemap details details {
94 margin-left: 0.75rem;
95 padding-left: 0.5rem;
96 }
97}
98
22#metadata, 99#metadata,
23#content { 100#content {
24 margin-left: 5px; 101 margin-left: 5px;
25} 102}
26 103
27@media(min-width:1016px) { 104#metadata_details summary {
28#wrapper { 105 margin-bottom: 1em;
29 margin: 0 125px;
30} 106}
107
108.right { text-align: right; }
109.clear_left { clear: left; }
110
111/* ============================================================
112 Navigation
113 ============================================================ */
114
115#navigation {
116 position: relative;
117 margin-top: 10px;
31} 118}
32@media(max-width:1015px) { 119
33#wrapper { 120.admin_content_spacer {
34 margin: 0; 121 clear: both;
35 width: 100%; 122 margin-bottom: 40px;
36 box-sizing: border-box;
37} 123}
124
125.node_action_bar {
126 display: flex;
127 flex-wrap: wrap;
128 align-items: center;
129 gap: 0.75rem;
130 margin: 1rem 0 1.5rem;
131 padding-bottom: 1rem;
132 border-bottom: 1px solid #e8e8e8;
38} 133}
39 134
135/* ============================================================
136 Flash / notices
137 ============================================================ */
40 138
41#flash { 139#flash {
42 height: 12px; 140 height: auto;
43 line-height: 20px; 141 line-height: 20px;
44 margin-top: 40px; 142 padding: 6px 10px;
143 border-left: 3px solid #969696;
144 background-color: #f1f1f1;
45 margin-bottom: 20px; 145 margin-bottom: 20px;
46 margin-left: 5px; 146 margin-left: 5px;
47} 147}
@@ -52,7 +152,6 @@ th {
52 text-transform: lowercase; 152 text-transform: lowercase;
53} 153}
54 154
55
56#flash img { 155#flash img {
57 height: 12px; 156 height: 12px;
58 width: 12px; 157 width: 12px;
@@ -68,62 +167,87 @@ span#flash_error, span.warning {
68 padding-bottom: 1px; 167 padding-bottom: 1px;
69} 168}
70 169
71/* Pagination */ 170span.warning a {
171 color: inherit;
172 text-decoration: underline;
173}
72 174
73div.pagination { 175.error_messages {
74 padding-top: 5px; 176 border-left: 3px solid #cc0000;
75 padding-bottom: 15px; 177 background-color: #fdecea;
178 padding: 6px 10px;
179 margin-bottom: 1rem;
76} 180}
77 181
78div.pagination span.current, div.pagination a:hover { 182.error_messages ul {
79 color: #ff9600; 183 margin: 0;
184 padding-left: 1.25rem;
80} 185}
81 186
82/* Styles */ 187/* ============================================================
188 Pagination
189 ============================================================ */
83 190
84.right { 191div.pagination {
85 text-align: right; 192 padding-top: 5px;
193 padding-bottom: 15px;
194 display: flex;
195 align-items: center;
196 gap: 0.35rem;
86} 197}
87 198
88.clear_left { 199div.pagination a,
89 clear: left; 200div.pagination em.current,
201div.pagination span.gap {
202 display: inline-flex;
203 align-items: center;
204 justify-content: center;
205 min-width: 1.75rem;
206 height: 1.75rem;
207 padding: 0 0.4rem;
208 border-radius: 4px;
209 font-style: normal;
90} 210}
91 211
92#navigation { 212div.pagination a:hover {
93 position: relative; 213 color: #ff9600;
94 margin-top: 10px;
95} 214}
96 215
97#navigation div { 216div.pagination em.current {
98 float: left; 217 background-color: #ff9600;
218 color: #ffffff;
219 font-weight: bold;
99} 220}
100 221
101#navigation a:hover { 222div.pagination span.gap {
102 color: #ffffff; 223 color: #969696;
103 background-color: #000000;
104} 224}
105 225
106#main_navigation a, 226div.pagination .previous_page.disabled,
107#sub_navigation a, 227div.pagination .next_page.disabled {
108#metadata a, 228 color: #969696;
109input[type=submit], 229 cursor: not-allowed;
110#overview_toggle a {
111 letter-spacing: 1px;
112 padding-left: 5px;
113 padding-right: 5px;
114 padding-top: 1px;
115 padding-bottom: 1px;
116 text-transform: lowercase;
117} 230}
118 231
119/* button_to forms: render submit inputs as plain links */ 232/* ============================================================
233 Buttons
234 ============================================================ */
235
236/* button_to forms: render submit inputs/buttons as plain links,
237 orange on hover; .destructive variant is red. */
120form.button_to { 238form.button_to {
121 display: inline; 239 display: inline;
122 margin: 0; 240 margin: 0;
123 padding: 0; 241 padding: 0;
124} 242}
125 243
126form.button_to input[type="submit"] { 244form.button_to input[type="submit"],
245form.button_to button[type="submit"] {
246 display: inline-flex;
247 align-items: center;
248 gap: 0.5rem;
249 -webkit-appearance: none;
250 appearance: none;
127 background: none; 251 background: none;
128 border: none; 252 border: none;
129 padding: 0; 253 padding: 0;
@@ -131,80 +255,231 @@ form.button_to input[type="submit"] {
131 font: inherit; 255 font: inherit;
132 color: inherit; 256 color: inherit;
133 cursor: pointer; 257 cursor: pointer;
134 text-decoration: none 258 text-decoration: none;
135} 259}
136 260
137form.button_to input[type="submit"]:hover { 261form.button_to.state_changing input[type="submit"],
262form.button_to.state_changing button[type="submit"] {
263 color: #0d47a1;
264 background-color: #e3f2fd;
265}
266
267form.button_to.state_changing input[type="submit"]:hover,
268form.button_to.state_changing button[type="submit"]:hover {
138 color: #ffffff; 269 color: #ffffff;
139 background-color: #ff9600; 270 background-color: #1565c0;
140} 271}
141 272
142#admin_wizard { 273form.button_to.destructive input[type="submit"],
143 margin-bottom: 2rem; 274form.button_to.destructive button[type="submit"] {
275 color: #cc0000;
276 background-color: #fdecea;
144} 277}
145 278
146#page_submit a, 279form.button_to.destructive input[type="submit"]:hover,
147.admin_wizard_button a { 280form.button_to.destructive button[type="submit"]:hover {
148 color: white !important; 281 color: #ffffff;
282 background-color: #cc0000;
149} 283}
150 284
151#page_submit, 285form.button_to.computation input[type="submit"],
152.admin_wizard_button { 286form.button_to.computation button[type="submit"] {
153 display: inline-block; 287 color: #00838f;
154 font-size: 1rem; 288 background-color: #e0f2f1;
155 font-weight: bold;
156 padding: 0.5rem;
157 margin-bottom: 0.5rem;
158 background-color: green;
159} 289}
160 290
161#page_submit:hover, 291form.button_to.computation input[type="submit"]:hover,
162.admin_wizard_button:hover { 292form.button_to.computation button[type="submit"]:hover {
163 background-color: lime !important; 293 color: #ffffff;
294 background-color: #00838f;
164} 295}
165 296
166#sub_navigation a { 297form.button_to.computation input[type="submit"]:disabled,
167 color: #969696; 298form.button_to.computation button[type="submit"]:disabled {
299 opacity: 0.4;
300 cursor: not-allowed;
301 pointer-events: none;
168} 302}
169 303
170#sub_navigation a:hover, #metadata a:hover { 304/* Native (non-button_to) submit buttons -- Create/Save/Publish forms.
171 color: #ffffff; 305 Lower specificity than form.button_to's own rule, so button_to forms
172 background-color: #ff9600; 306 are correctly unaffected. If a button_to output ever loses its class
307 wrapper, it will silently fall through to this bordered style instead
308 of rendering as a plain link -- worth knowing, not necessarily fixing. */
309input[type="submit"] {
310 -webkit-appearance: none;
311 appearance: none;
312 background: none;
313 border: 1px solid #000000;
314 border-radius: 2px;
315 padding: 4px 12px;
316 font: inherit;
317 font-weight: bold;
318 color: inherit;
319 cursor: pointer;
320 text-decoration: none;
173} 321}
174 322
175#sub_navigation a.selected { 323input[type="submit"]:hover {
176 color: #ffffff; 324 color: #ffffff;
177 background-color: #ff9600; 325 background-color: #000000;
178} 326}
179 327
180#navigation a.selected, #metadata a.selected, #overview_toggle a.selected { 328/* ============================================================
181 color: #ffffff; 329 Admin dashboard
330 ============================================================ */
331
332#main_navigation {
333 display: flex;
334 align-items: center;
335 gap: 0.5rem;
336}
337
338#main_navigation a,
339#main_navigation form.button_to button {
340 display: inline-flex;
341 text-decoration: none;
342 align-items: center;
343 background-color: #f7f7f7;
344 justify-content: center;
345 width: 2rem;
346 height: 2rem;
347 padding: 0;
348 border-radius: 2px;
349}
350
351#main_navigation a:hover,
352#main_navigation form.button_to button:hover {
182 background-color: #000000; 353 background-color: #000000;
354 color: #ffffff;
355}
356
357#main_navigation svg,
358.action_button svg,
359form.button_to svg {
360 width: 1.25rem;
361 height: 1.25rem;
362}
363
364#dashboard_search {
365 margin-bottom: 1.5rem;
366}
367
368#dashboard_search input[type=text] {
369 width: 100%;
370 box-sizing: border-box;
371 padding: 10px 14px;
372 font-size: 1.1rem;
373 border-radius: 2px;
374}
375
376.button_row {
377 display: flex;
378 flex-wrap: wrap;
379 gap: 0.75rem;
380 align-items: center;
381}
382
383.button_row .action_button,
384.node_search_form .action_button {
385 margin-bottom: 0;
386}
387
388#dashboard_signposts {
389 margin-bottom: 2rem;
183} 390}
184 391
185/* Nodes */ 392#dashboard_housekeeping h3 {
393 margin-bottom: 0.75rem;
394}
395
396#dashboard_widgets {
397 display: flex;
398 flex-wrap: wrap;
399 gap: 1.5rem;
400 margin-bottom: 2rem;
401}
402
403.dashboard_widget {
404 flex: 1 1 300px;
405 border: 1px solid #e8e8e8;
406 border-radius: 6px;
407 padding: 0.5rem 0.75rem;
408}
409
410.dashboard_widget h3 {
411 margin-top: 0;
412}
413
414.dashboard_widget ul {
415 list-style: none;
416 margin: 0 0 0.75rem;
417 padding: 0;
418}
419
420.dashboard_widget li {
421 display: flex;
422 justify-content: space-between;
423 align-items: flex-start;
424 gap: 1rem;
425 padding: 0.35rem 0;
426 border-bottom: 1px solid #f1f1f1;
427}
428
429.dashboard_widget_meta {
430 white-space: nowrap;
431 color: #969696;
432 font-size: 0.85rem;
433}
186 434
187table.node_table { 435/* ============================================================
436 Tables
437 ============================================================ */
438
439/* Generic fallback header row. Shadowed by table.node_table's own
440 tr.header (2rem) and duplicated (same values) by table#revisions's
441 own tr.header below. Applies as-is to #menu_item_list,
442 div#draft_list table, and table.user_table, none of which define
443 their own tr.header. */
444table tr.header {
445 height: 20px;
446 text-align: left;
447}
448
449table.node_table ,
450table.assets_table,
451table.user_table,
452table.events_table {
188 border-collapse: collapse; 453 border-collapse: collapse;
189} 454}
190 455
191table.node_table tr { 456table.node_table tr {
192 min-height: 2rem;
193 border-bottom: 1px solid #000000; 457 border-bottom: 1px solid #000000;
194} 458}
195 459
460table.assets_table tr,
461table.user_table tr,
462table.events_table tr {
463 border-bottom: 1px solid #e8e8e8;
464}
465
196table.node_table th.node_id, 466table.node_table th.node_id,
197table.node_table th.revision, 467table.node_table th.revision {
198table.node_table th.title {
199 min-width: 4rem; 468 min-width: 4rem;
200} 469}
201 470
471/* th.title's min-width is set to 4rem above and 12rem here -- the
472 later, equally-specific rule wins, so th.title ends up at 12rem and
473 the 4rem entry for it above is dead. Likely a copy/paste leftover. */
202table.node_table th.editor, 474table.node_table th.editor,
203table.node_table th.title { 475table.node_table th.title {
204 min-width: 12rem; 476 min-width: 12rem;
205} 477}
206 478
207table.node_table tr.header { 479table.node_table tr.header,
480table.assets_table tr.header,
481table.user_table tr.header,
482table.events_table tr.header {
208 height: 2rem; 483 height: 2rem;
209 text-align: left; 484 text-align: left;
210} 485}
@@ -217,193 +492,406 @@ table.node_table td {
217 min-width: 2rem; 492 min-width: 2rem;
218} 493}
219 494
495table.assets_table td,
496table.user_table td,
497table.events_table td {
498 padding-top: 8px;
499 padding-bottom: 8px;
500 padding-right: 25px;
501 padding-left: 0px;
502 min-width: 2rem;
503}
504
220table.node_table .node_id { 505table.node_table .node_id {
221 padding-left: 10px; 506 padding-left: 10px;
222 padding-right: 15px; 507 padding-right: 15px;
223} 508}
224 509
225table.node_table tr.header:hover { 510table.node_table .actions {
226 background-color: #ffffff; 511 text-transform: lowercase;
227} 512}
228 513
229table.node_table tr:hover { 514table.node_table tr.header:hover,
230 background-color: #f1f1f1; 515table.assets_table tr.header:hover,
516table.user_table tr.header:hover,
517table.events_table tr.header:hover {
518 background-color: #ffffff;
231} 519}
232 520
233table.node_table .actions { 521table.node_table tr:hover,
234 text-transform: lowercase; 522table.assets_table tr:hover,
523table.user_table tr:hover,
524table.events_table tr:hover {
525 background-color: #f1f1f1;
235} 526}
236 527
237#admin_sitemap_table .node_id:before { 528#admin_sitemap_table .node_id:before {
238 content: "• "; 529 content: "• ";
239} 530}
240 531
241/* Revisions */ 532table.revisions_table {
242
243table#revisions {
244 border-collapse: collapse; 533 border-collapse: collapse;
245} 534}
246 535
247table#revisions td { 536table.revisions_table thead {
248 padding-right: 25px; 537 position: sticky;
538 top: 0;
539 z-index: 1;
540}
541
542table.revisions_table th,
543table.revisions_table td {
544 padding: 0.4rem 0.75rem;
545 text-align: left;
546}
547
548table.revisions_table thead tr.header,
549table.revisions_table thead tr.diff_sticky_bar {
550 background-color: #ffffff;
551}
552
553table.revisions_table .diff_sticky_bar td {
554 padding-top: 0.5rem;
555 padding-bottom: 0.5rem;
556 border-bottom: 1px solid #e8e8e8;
249} 557}
250 558
251table#revisions td.title { 559#diff_selection_label {
560 margin-left: 0.75rem;
561 color: #969696;
562}
563table.revisions_table td.title {
252 width: 450px; 564 width: 450px;
253} 565}
254 566
255table#revisions td.date { 567table.revisions_table td.date {
256 width: 175px; 568 width: 175px;
257} 569}
258 570
259table#revisions tr.header:hover { 571table.revisions_table tr:not(.header):not(.no_hover) {
572 border-bottom: 1px solid #e8e8e8;
573}
574
575table.revisions_table tr.header:hover {
260 background-color: #ffffff; 576 background-color: #ffffff;
261} 577}
262 578
263table#revisions tr.no_hover:hover { 579table.revisions_table tr.no_hover:hover {
264 background-color: #ffffff; 580 background-color: #ffffff;
265} 581}
266 582
267table#revisions tr:hover { 583table.revisions_table tr:hover {
268 background-color: #f1f1f1; 584 background-color: #f1f1f1;
269} 585}
270 586
271table#revisions tr.header { 587.events_table .rrule_text {
272 height: 20px; 588 display: inline-block;
273 text-align: left; 589 max-width: 300px;
590 overflow-wrap: break-word;
274} 591}
275 592
276table#revisions tr { 593.events_table .truncate {
277 height: 45px 594 display: inline-block;
595 max-width: 200px;
596 overflow: hidden;
597 text-overflow: ellipsis;
598 white-space: nowrap;
599 vertical-align: bottom;
278} 600}
279 601
280/* Page Editor */ 602#diffview del {
603 background: #ffd7d5;
604 color: #82071e;
605 text-decoration: line-through;
606 padding: 0 2px;
607 border-radius: 2px;
608}
281 609
282input[type=text], textarea { 610#diffview ins {
283 font-size: 1rem; 611 background: #ccffd8;
284 font-family: Helvetica; 612 color: #055d20;
285 border: 1px solid #989898; 613 text-decoration: none;
614 padding: 0 2px;
615 border-radius: 2px;
286} 616}
287 617
288select { 618#diffview .diff_side_by_side {
289 font-size: 1rem; 619 display: flex;
290 border: 1px solid #989898; 620 gap: 1rem;
291} 621}
292 622
293input[type=text]#tag_list, 623#diffview .diff_column {
294input[type=text]#node_staged_slug, 624 flex: 1;
295input#move_to_search_term {
296 padding: 5px;
297} 625}
298 626
299input[type=password] { 627#diffview del.diff_structural,
300 border: 1px solid #989898; 628#diffview ins.diff_structural {
629 cursor: help;
301} 630}
302 631
303input[type=submit] { 632.diff_unchanged {
304 border: none; 633 color: #969696;
305 padding-top: 0px; 634 font-style: italic;
306 padding-bottom: 1px;
307 background-color: #ffffff;
308} 635}
309 636
310input[type=submit]:hover { 637.diff_set_list {
311 border: none; 638 list-style: none;
312 color: #ffffff; 639 padding-left: 0;
313 background-color: #ff9600; 640 margin: 0;
314} 641}
315 642
316input[type=radio] { 643/* ============================================================
317 border: 1px solid #989898; 644 Translation compare view (page_translations#show)
645 ============================================================ */
646
647.translation_compare {
648 display: flex;
649 flex-direction: column;
650 gap: 1.5rem;
318} 651}
319 652
320div#login_form input[type=text], div#login_form input[type=password] { 653@media(min-width:1016px) {
321 width: 150px; 654 .translation_compare {
655 flex-direction: row;
656 gap: 2rem;
657 }
658
659 .translation_compare_column {
660 flex: 1;
661 min-width: 0;
662 }
322} 663}
323 664
665table.user_table td.user_login {
666 padding-right: 30px;
667}
668
669/* ============================================================
670 Node display (nodes#show / nodes#new)
671 ============================================================ */
324 672
325@media(min-width:1016px) { 673@media(min-width:1016px) {
326input#tag_list, 674 div.node_description {
327input#node_staged_slug, 675 float: left;
328input#move_to_search_term { 676 width: 110px;
329 width: 690px; 677 min-height: 2rem;
678 text-align: right;
679 text-transform: lowercase;
680 vertical-align: top;
681 }
682
683 div.node_content {
684 margin-left: 120px;
685 min-height: 2rem;
686 display: block;
687 margin-bottom: 1rem;
688 }
689
690 .body_toolbar_row {
691 margin-left: 120px;
692 }
330} 693}
694@media(max-width:1015px) {
695 div.node_description {
696 min-height: 2rem;
697 width: 30em;
698 text-transform: lowercase;
699 vertical-align: top;
700 }
331 701
332input[type=text]#page_title { 702 div.node_content {
333 width: 690px; 703 min-height: 2rem;
334 font-size: 1rem; 704 margin-bottom: 1rem;
335 padding-top: 6px; 705 }
336 padding-bottom: 4px; 706}
337 padding-left: 5px; 707
338 padding-right: 5px; 708.node_content.node_info_group {
709 border: 1px solid #e8e8e8;
710 border-radius: 6px;
711 padding: 0.5rem 0.75rem;
712}
713
714.node_info_group .disabled_action {
715 display: inline-block;
716 border: 1px solid #c0c0c0;
717 border-radius: 2px;
718 padding: 4px 12px;
339 font-weight: bold; 719 font-weight: bold;
720 color: #969696;
721 cursor: not-allowed;
340} 722}
341 723
342textarea#page_abstract { 724.node_info_group_items {
343 width: 690px; 725 display: flex;
344 height: 150px; 726 flex-wrap: wrap;
345 padding: 5px; 727 gap: 0.5rem 2rem;
346} 728}
347 729
348#page_editor textarea#page_body { 730.node_info_item {
349 width: 700px; 731 min-width: 140px;
350 height: 600px;
351} 732}
352 733
353#page_editor #metadata, #page_editor #content, #admin_overview { 734.node_info_label {
354 margin-left: -125px; 735 display: block;
736 font-weight: normal;
737 color: #969696;
738 font-size: 0.85rem;
739 text-transform: lowercase;
355} 740}
356 741
742.node_info_group ul {
743 margin: 0;
744 padding-left: 1.25rem;
357} 745}
358 746
359/* Mobile */ 747.node_info_group li {
360@media(max-width:1015px) { 748 margin-bottom: 0.25rem;
361input#tag_list,
362input#node_staged_slug,
363input#move_to_search_term {
364 box-sizing: border-box;
365 width: 100%;
366} 749}
367 750
368#page_editor #content, 751.node_content.node_status {
369#page_editor #metadata { 752 border: 2px solid #000000;
370 padding-right: 5px; 753 background-color: #fafafa;
754}
755
756.node_status .node_info_group_items:first-child {
757 margin-bottom: 0.75rem;
758}
759
760.node_status .node_info_group_items + .node_info_group_items {
761 margin-top: 0.5rem;
762 margin-bottom: 0.5rem;
763}
764
765.node_status .field_hint {
766 margin-top: 0.5rem;
767 display: block;
768}
769
770.node_content .inline-image--full,
771.node_content .inline-image--half {
772 max-width: 300px;
773 width: auto;
774 float: none;
775 display: block;
776 margin: 0.5rem 0;
371} 777}
372 778
373#page_editor textarea#page_body { 779.action_button,
780form.button_to input[type="submit"],
781form.button_to button[type="submit"] {
782 padding: 4px 12px;
783 line-height: 1.2;
374 box-sizing: border-box; 784 box-sizing: border-box;
375 width: 800px;
376 height: 50rem;
377} 785}
378 786
379#page_editor textarea#page_abstract { 787form.button_to input[type="submit"],
788form.button_to button[type="submit"] {
789 border: 1px solid transparent;
790 border-radius: 2px;
791}
792
793.field_hint {
794 display: block;
795 margin-top: 2px;
796 font-size: 0.75rem;
797 color: #969696;
798 padding-bottom: 4px;
799}
800
801.action_button + .field_hint {
802 display: inline;
803 margin-left: 0.5rem;
804 margin-top: 0;
805}
806
807.revisions_full_history_link {
808 margin-bottom: 0;
809}
810
811.node_search_form {
812 display: flex;
813 align-items: center;
814 gap: 0.5rem;
815 margin-bottom: 0.75rem;
816}
817
818.node_search_form input[type=text] {
819 padding: 4px 12px;
380 box-sizing: border-box; 820 box-sizing: border-box;
381 height: 8rem; 821 height: 2.25rem;
382 width: 100%; 822 width: 22rem;
823 border-radius: 2px;
383} 824}
384 825
385input[type=text]#page_title { 826.node_search_form .action_button {
827 height: 2.25rem;
386 box-sizing: border-box; 828 box-sizing: border-box;
387 width: 100%;
388 font-size: 2rem;
389 padding-top: 6px;
390 padding-bottom: 4px;
391 padding-left: 5px;
392 font-weight: bold;
393} 829}
394 830
395input[type=text], textarea { 831/* Layout only -- the at-rest visibility (wavy underline) for these
396 font-size: 1.5rem; 832 links comes from the scoped rule in Base elements above. */
833.add_child_links {
834 margin-top: 0.5rem;
397} 835}
398select { 836
399 font-size: 1.5rem; 837.add_child_links a {
838 white-space: nowrap;
400} 839}
401 840
402#metadata ul#image_box { 841.sitemap_node {
403 width: 100% !important; 842 padding-bottom: 0.5rem;
843 margin-bottom: 0.5rem;
844 border-bottom: 1px solid #ececec;
845}
846
847.sitemap_node h4 {
848 margin: 0;
849}
850
851.sitemap_node .field_hint {
852 display: block;
853 margin: 2px 0 0;
854}
855
856.sitemap_node p {
857 margin: 2px 0 0;
858}
859
860#sitemap details details {
861 margin-left: 1.5rem;
862 border-left: 1px solid #e8e8e8;
863 padding-left: 0.75rem;
864}
865
866#sitemap summary {
867 padding: 4px 0;
404} 868}
869
870#sitemap details:not([open]) > summary {
871 color: #ff9600;
872 font-weight: bold;
873}
874
875.aligned_action_row {
876 display: flex;
877 flex-wrap: wrap;
878 align-items: start;
879 gap: 0.5rem;
880}
881
882.aligned_action_row .action_button,
883.aligned_action_row form.button_to {
884 margin-top: -5px;
885}
886
887.aligned_action_row .action_button.action_button_no_margin_top {
888 margin-top: 0;
405} 889}
406 890
891/* ============================================================
892 Page editor / metadata forms
893 ============================================================ */
894
407#new_node { 895#new_node {
408 margin-left: -118px; 896 margin-left: -118px;
409} 897}
@@ -412,51 +900,158 @@ select {
412 width: 350px; 900 width: 350px;
413} 901}
414 902
415tr {} 903div#login_form input[type=text], div#login_form input[type=password] {
904 width: 150px;
905}
416 906
417td { 907input[type=text]#tag_list,
418 padding-top: 10px; 908input[type=text]#node_staged_slug,
419 padding-bottom: 5px; 909input#move_to_search_term {
420 padding-right: 10px; 910 padding: 5px;
421} 911}
422 912
423@media(min-width:1016px) { 913div#page_editor {
424div.node_description { 914 margin-top: 0px;
425 float: left; 915 margin-left: 10px;
426 width: 110px;
427 min-height: 2rem;
428 text-align: right;
429 text-transform: lowercase;
430 vertical-align: top;
431} 916}
432 917
433div.node_content { 918#page_editor a.action_button,
434 margin-left: 120px; 919.action_button {
435 min-height: 2rem; 920 display: inline-flex;
436 display: block; 921 align-items: center;
922 gap: 0.5rem;
923 -webkit-appearance: none;
924 appearance: none;
925 border: 1px solid #000000;
926 border-radius: 2px;
927 padding: 4px 12px;
928 font-weight: bold;
929 text-decoration: none;
930 color: #000000;
437 margin-bottom: 1rem; 931 margin-bottom: 1rem;
932 background: none;
933 cursor: pointer;
934 font: inherit;
438} 935}
439} 936
440@media(max-width:1015px) { 937#page_editor a.action_button:hover,
441div.node_description { 938.action_button:hover {
442 min-height: 2rem; 939 color: #ffffff;
443 width: 30em; 940 background-color: #000000;
444 text-transform: lowercase;
445 vertical-align: top;
446} 941}
447 942
448div.node_content { 943#page_editor input[type=text],
449 min-height: 2rem; 944#page_editor input[type=password],
450 margin-bottom: 1rem; 945#page_editor textarea {
946 padding: 5px;
451} 947}
452 948
949@media(min-width:1016px) {
950 input#tag_list,
951 input#menu_search_term,
952 input#menu_item_node_id,
953 input#menu_item_path,
954 input#menu_item_title,
955 input#node_staged_slug,
956 input#move_to_search_term {
957 width: 690px;
958 }
959
960 input[type=text]#page_title {
961 width: 690px;
962 font-size: 1rem;
963 padding-top: 6px;
964 padding-bottom: 4px;
965 padding-left: 5px;
966 padding-right: 5px;
967 font-weight: bold;
968 }
969
970 textarea#page_abstract {
971 width: 690px;
972 height: 150px;
973 padding: 5px;
974 }
975
976 #page_editor textarea#page_body {
977 width: 700px;
978 height: 600px;
979 }
980
981 #page_editor #metadata, #page_editor #content, #admin_overview {
982 margin-left: -125px;
983 }
984
985 #page_editor input[type=text],
986 #page_editor input[type=password],
987 #page_editor textarea {
988 width: 690px;
989 }
453} 990}
454 991
455div#page_editor { 992@media(max-width:1015px) {
456 margin-top: 0px; 993 input#tag_list,
457 margin-left: 10px; 994 input#node_staged_slug,
995 input#move_to_search_term {
996 box-sizing: border-box;
997 width: 100%;
998 }
999
1000 #page_editor #content,
1001 #page_editor #metadata {
1002 padding-right: 5px;
1003 }
1004
1005 /* Fixed 800px width will overflow narrow viewports despite
1006 border-box -- every sibling rule in this block uses 100% instead.
1007 Worth checking on an actual phone; looks unfinished rather than
1008 intentional. Not changed here since it wasn't part of what you
1009 asked to fix. */
1010 #page_editor textarea#page_body {
1011 box-sizing: border-box;
1012 width: 800px;
1013 height: 50rem;
1014 }
1015
1016 #page_editor textarea#page_abstract {
1017 box-sizing: border-box;
1018 height: 8rem;
1019 width: 100%;
1020 }
1021
1022 input[type=text]#page_title {
1023 box-sizing: border-box;
1024 width: 100%;
1025 font-size: 2rem;
1026 padding-top: 6px;
1027 padding-bottom: 4px;
1028 padding-left: 5px;
1029 font-weight: bold;
1030 }
1031
1032 #page_editor input[type=text],
1033 #page_editor input[type=password],
1034 #page_editor textarea {
1035 box-sizing: border-box;
1036 width: 100%;
1037 }
1038
1039 input[type=text], textarea {
1040 font-size: 1.5rem;
1041 }
1042 select {
1043 font-size: 1.5rem;
1044 }
1045
1046 #metadata ul#image_box {
1047 width: 100% !important;
1048 }
458} 1049}
459 1050
1051/* ============================================================
1052 Draft list (dashboard widget)
1053 ============================================================ */
1054
460div#draft_list { 1055div#draft_list {
461 border: 1px solid #000000; 1056 border: 1px solid #000000;
462 padding: 5px; 1057 padding: 5px;
@@ -472,32 +1067,96 @@ div#draft_list table tr.header:hover {
472 background-color: #ffffff; 1067 background-color: #ffffff;
473} 1068}
474 1069
1070div#draft_list table tr:hover {
1071 background-color: #f1f1f1;
1072}
1073
475div#draft_list table td.actions { 1074div#draft_list table td.actions {
476 text-transform: lowercase; 1075 text-transform: lowercase;
477 white-space: nowrap; 1076 white-space: nowrap;
478} 1077}
479 1078
1079/* Layout only -- the at-rest visibility (wavy underline) for these
1080 links comes from the scoped rule in Base elements above. */
480div#draft_list table td.actions a { 1081div#draft_list table td.actions a {
481 letter-spacing: 1px; 1082 letter-spacing: 1px;
482 padding-left: 5px; 1083 padding-left: 5px;
483 padding-right: 5px; 1084 padding-right: 5px;
484} 1085}
485 1086
486div#draft_list table tr:hover { 1087.search_results_list {
1088 list-style: none;
1089 margin: 0;
1090 padding: 0;
1091}
1092
1093.search_results_list li {
1094 padding: 0.5rem 0;
1095 border-bottom: 1px solid #f1f1f1;
1096}
1097
1098.search_tag_row {
1099 display: flex;
1100 flex-wrap: wrap;
1101 gap: 0.4rem;
1102 padding: 4px 4px 8px;
1103 border-bottom: 1px solid #e8e8e8;
1104}
1105
1106.search_tag_pill {
1107 display: inline-block;
1108 padding: 2px 10px;
1109 border-radius: 999px;
487 background-color: #f1f1f1; 1110 background-color: #f1f1f1;
1111 font-size: 0.85rem;
1112 text-decoration: none;
488} 1113}
489 1114
490table tr.header { 1115.tag_pill_list {
491 height: 20px; 1116 display: flex;
492 text-align: left; 1117 flex-wrap: wrap;
1118 gap: 0.4rem;
1119 list-style: none;
1120 padding: 0;
1121 margin: 0;
1122}
1123
1124.tag_pill {
1125 background: #eee;
1126 border-radius: 999px;
1127 padding: 0.15rem 0.75rem;
1128 font-size: 0.9em;
1129}
1130
1131#recent_changes_full_list {
1132 list-style: none;
1133 padding: 0;
1134 margin: 0;
1135}
1136
1137#recent_changes_full_list li {
1138 padding: 0.75rem 0;
1139 border-bottom: 1px solid #eee;
1140}
1141
1142#recent_changes_full_list li:last-child {
1143 border-bottom: none;
1144}
1145
1146#recent_changes_full_list li > div {
1147 margin-bottom: 0.25rem;
493} 1148}
494 1149
1150/* ============================================================
1151 Search widgets
1152 ============================================================ */
1153
495#search_widget { 1154#search_widget {
496 position: absolute; 1155 position: absolute;
497 top: 20px; 1156 top: 2.75rem;
498 left: 50%; 1157 left: 0;
499 transform: translateX(-50%);
500 width: min(520px, 90vw); 1158 width: min(520px, 90vw);
1159 border-radius: 2px;
501 border: 1px solid #000000; 1160 border: 1px solid #000000;
502 -webkit-box-shadow: 3px 3px 5px #b1b1b1; 1161 -webkit-box-shadow: 3px 3px 5px #b1b1b1;
503 box-shadow: 3px 3px 5px #b1b1b1; 1162 box-shadow: 3px 3px 5px #b1b1b1;
@@ -507,23 +1166,27 @@ table tr.header {
507} 1166}
508 1167
509#search_widget input { 1168#search_widget input {
510 width: calc(100% - 70px); 1169 width: 100%;
1170 box-sizing: border-box;
1171 padding: 8px 12px;
1172 border-radius: 2px;
511 font-size: 18px; 1173 font-size: 18px;
512} 1174}
513 1175
514#search_results p { 1176.search_results p {
515 margin: 0; 1177 margin: 0;
516 padding: 4px 4px 0 4px; 1178 padding: 4px 4px 0 4px;
517 border-bottom: 1px solid #e8e8e8; 1179 border-bottom: 1px solid #e8e8e8;
518} 1180}
519 1181
520#search_results p a { 1182.search_results p a {
1183 text-decoration: none;
521 display: block; 1184 display: block;
522 font-weight: bold; 1185 font-weight: bold;
523 font-size: 0.95rem; 1186 font-size: 0.95rem;
524} 1187}
525 1188
526#search_results p span.result_path { 1189.search_results p span.result_path {
527 display: block; 1190 display: block;
528 margin-top: 2px; 1191 margin-top: 2px;
529 font-size: 0.75rem; 1192 font-size: 0.75rem;
@@ -532,7 +1195,7 @@ table tr.header {
532 padding-bottom: 4px; 1195 padding-bottom: 4px;
533} 1196}
534 1197
535#search_results p.search_more { 1198.search_results p.search_more {
536 margin: 0; 1199 margin: 0;
537 padding: 6px 4px; 1200 padding: 6px 4px;
538 font-size: 0.8rem; 1201 font-size: 0.8rem;
@@ -541,13 +1204,19 @@ table tr.header {
541 border-bottom: none; 1204 border-bottom: none;
542} 1205}
543 1206
544table#content th.description { 1207.search_results p.search_group_label {
545 width: 100px; 1208 margin: 8px 0 2px;
1209 padding: 0;
1210 border-bottom: none;
1211 font-size: 0.75rem;
1212 color: #969696;
1213 text-transform: lowercase;
1214 font-weight: normal;
546} 1215}
547 1216
548table#content th.content { 1217/* ============================================================
549 width: 690px; 1218 Menu items (navigation editor)
550} 1219 ============================================================ */
551 1220
552#menu_item_list { 1221#menu_item_list {
553 border-collapse: collapse; 1222 border-collapse: collapse;
@@ -565,6 +1234,10 @@ table#content th.content {
565 height: 20px; 1234 height: 20px;
566} 1235}
567 1236
1237#menu_item_list td.menu_item_title {
1238 width: 200px;
1239}
1240
568#menu_item_list td.menu_sort_handle div { 1241#menu_item_list td.menu_sort_handle div {
569 background-color: #989898; 1242 background-color: #989898;
570 height: 26px; 1243 height: 26px;
@@ -583,14 +1256,14 @@ table#content th.content {
583 cursor: grab; 1256 cursor: grab;
584} 1257}
585 1258
586#menu_item_list td.menu_item_title { 1259.ui-state-highlight td {
587 width: 200px;
588}
589
590.ui-state-highlight td{
591 height: 20px; 1260 height: 20px;
592} 1261}
593 1262
1263/* ============================================================
1264 Image box / browser
1265 ============================================================ */
1266
594#metadata ul#image_box { 1267#metadata ul#image_box {
595 box-sizing: border-box; 1268 box-sizing: border-box;
596 margin: 0; 1269 margin: 0;
@@ -616,7 +1289,304 @@ div#image_browser ul li {
616 list-style-type: none; 1289 list-style-type: none;
617} 1290}
618 1291
619table.user_list td.user_login { 1292.thumbnail_list {
620 padding-right: 30px; 1293 display: flex;
1294 flex-wrap: wrap;
1295 gap: 0.75rem;
1296 list-style: none;
1297 margin: 0 0 0.75rem;
1298 padding: 0;
1299}
1300
1301.thumbnail_list li {
1302 position: relative;
1303 display: flex;
1304 align-items: center;
1305 gap: 0.25rem;
1306 border: 1px solid #e8e8e8;
1307 border-radius: 6px;
1308 padding: 4px;
1309}
1310
1311.thumbnail_list img {
1312 display: block;
1313 width: 60px;
1314 height: 60px;
1315 object-fit: cover;
1316 border-radius: 4px;
1317}
1318
1319.related_asset_handle {
1320 display: flex;
1321 color: #969696;
1322 cursor: grab;
1323}
1324
1325.related_asset_handle svg {
1326 width: 1rem;
1327 height: 1rem;
1328}
1329
1330.related_asset_headline_badge {
1331 background: #fff3cd;
1332 color: #6b5900;
1333 border-radius: 999px;
1334 padding: 0.1rem 0.6rem;
1335 font-size: 0.75em;
1336 white-space: nowrap;
1337}
1338
1339.related_asset_remove {
1340 display: flex;
1341 align-items: center;
1342 justify-content: center;
1343 background: none;
1344 border: none;
1345 padding: 2px;
1346 cursor: pointer;
1347 color: #969696;
1348}
1349
1350.related_asset_remove svg {
1351 width: 0.9rem;
1352 height: 0.9rem;
1353}
1354
1355.related_asset_remove:hover {
1356 color: #cc0000;
1357}
1358
1359.related_asset_result {
1360 display: flex;
1361 align-items: center;
1362 gap: 0.5rem;
1363 padding: 4px;
1364 border-bottom: 1px solid #e8e8e8;
1365 text-decoration: none;
1366}
1367
1368.related_asset_result img {
1369 width: 40px;
1370 height: 40px;
1371 object-fit: cover;
1372 border-radius: 4px;
1373}
1374
1375/* ============================================================
1376 Live edit preview
1377 ============================================================ */
1378
1379#editor_and_preview {
1380 display: flex;
1381 flex-direction: column;
1382 gap: 1.5rem;
1383}
1384
1385@media (min-width: 1016px) {
1386 #editor_and_preview {
1387 flex-direction: row;
1388 align-items: flex-start;
1389 }
1390
1391 #editor_and_preview .preview_content {
1392 flex: 1;
1393 min-width: 0;
1394 }
1395
1396 #preview_panel {
1397 flex: 1;
1398 min-width: 0;
1399 }
1400}
1401
1402#preview_panel iframe {
1403 width: 100%;
1404 height: 612px;
1405 border: 0.5px solid var(--border);
1406 border-radius: var(--radius);
1407}
1408
1409.body_toolbar_row {
1410 min-height: 2rem;
1411 margin-bottom: 1rem;
1412 display: flex;
1413 gap: 8px;
621} 1414}
622 1415
1416.view_toggle {
1417 background: #f7f7f7;
1418 border: 1px solid #ddd;
1419 border-radius: 4px;
1420 padding: 4px 8px;
1421 cursor: pointer;
1422 color: #555;
1423 display: flex;
1424 align-items: center;
1425 gap: 1em;
1426}
1427
1428.view_toggle:hover {
1429 background: #ececec;
1430 border-color: #ccc;
1431 color: #222;
1432}
1433
1434.view_toggle[aria-pressed="true"] {
1435 background: #dde8f5;
1436 border-color: #a9c6e8;
1437 color: #1a4d8f;
1438}
1439
1440/* ============================================================
1441 Image picker
1442 ============================================================ */
1443
1444#inline_image_picker {
1445 position: fixed;
1446 top: 10%;
1447 left: 50%;
1448 transform: translateX(-50%);
1449 background: #fff;
1450 border: 1px solid #ddd;
1451 border-radius: 8px;
1452 padding: 1rem;
1453 max-width: 480px;
1454 max-height: 70vh;
1455 overflow-y: auto;
1456 z-index: 1000;
1457 box-shadow: 0 4px 16px rgba(0,0,0,0.2);
1458}
1459
1460#inline_image_picker_grid {
1461 display: flex;
1462 flex-wrap: wrap;
1463 gap: 8px;
1464 margin-bottom: 1rem;
1465}
1466
1467.inline_image_picker_item {
1468 position: relative;
1469}
1470
1471#inline_image_picker_grid img {
1472 width: 80px;
1473 height: 80px;
1474 object-fit: cover;
1475 border-radius: 4px;
1476 cursor: pointer;
1477 border: 2px solid transparent;
1478 display: block;
1479}
1480
1481.inline_image_picker_headline_badge {
1482 position: absolute;
1483 bottom: 2px;
1484 left: 2px;
1485 right: 2px;
1486 background: rgba(255, 243, 205, 0.95);
1487 color: #6b5900;
1488 font-size: 0.65em;
1489 text-align: center;
1490 border-radius: 3px;
1491 padding: 1px 0;
1492 pointer-events: none;
1493}
1494
1495#inline_image_picker_grid img.selected {
1496 border-color: #1a4d8f;
1497}
1498
1499#inline_image_picker_actions {
1500 display: flex;
1501 gap: 8px;
1502 flex-wrap: wrap;
1503}
1504
1505/* ============================================================
1506 Action log
1507 ============================================================ */
1508
1509#node_action_list td.node_action_body {
1510 border-bottom: 1px solid #f1f1f1;
1511}
1512
1513#node_action_list td.node_action_time {
1514 white-space: nowrap;
1515 vertical-align: top;
1516 font-size: 0.8em;
1517 color: #777;
1518 padding-right: 1em;
1519}
1520
1521#node_action_list .node_action_date {
1522 display: block;
1523}
1524
1525#node_action_list .node_action_clock {
1526 float: right;
1527 margin-top: 0.2rem;
1528}
1529
1530#node_action_list td.node_action_body {
1531 vertical-align: top;
1532}
1533
1534.node_action_inferred {
1535 opacity: 0.5;
1536 font-size: smaller;
1537 margin-left: 0.5em;
1538}
1539
1540.node_action_zoom {
1541 font-size: smaller;
1542 margin-left: 0.5em;
1543}
1544
1545.node_action_details summary {
1546 margin-top: 0.2rem;
1547 cursor: pointer;
1548 font-size: smaller;
1549 color: #777;
1550}
1551
1552.node_action_icon {
1553 color: #777;
1554 margin-right: 0.35em;
1555 vertical-align: text-top;
1556}
1557
1558.revision_lifecycle {
1559 font-size: 0.85rem;
1560 color: #777;
1561}
1562
1563/* ============================================================
1564 Trash section
1565 ============================================================ */
1566
1567.restore_form {
1568 display: flex;
1569 align-items: center;
1570 gap: 8px;
1571}
1572
1573.restore_picker {
1574 position: relative;
1575}
1576
1577.restore_picker input[type=text] {
1578 width: 22em;
1579}
1580
1581.restore_picker .search_results {
1582 position: absolute;
1583 top: 100%;
1584 left: 0;
1585 right: 0;
1586 z-index: 10;
1587 background: #fff;
1588 border: 1px solid #989898;
1589 border-top: none;
1590 max-height: 20em;
1591 overflow-y: auto;
1592}