FossilRepo

Bind mount repos dir, add deploy.sh utility, fix docker-compose volume drift

ragelink 2026-04-07 19:19 UTC trunk
Commit afe42d07c9479b7cea1c376e22fd18e42c0e0e0321503f1f0449e8390759a5f1
723 files changed +279 +279 +1180 +1180 +343 +343 +34 +34 +130 +130 +627 +769 +769 +29 +29 +498 +498 +61 +61 +150 +150 +904 +904 +89 +89 +293 +293 +19 +19 +21 +21 +481 +481 +1 +1 +613 +613 +20 +20 +7 +7 +63 +63 +1 +1 +1 +1 +3 +3 +3 +3 +9 +9 +3 +3 +9 +9 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +110 +110 +3 +3 +34 +34 +19 +19 +3 +3 +3 +3 +116 +116 +311 +311 +204 +204 +408 +408 +252 +252 +33 +33 +239 +239 +29 +29 +16 +16 +38 +38 +184 +184 +30 +30 +359 +359 +8 +8 +79 +79 +15 +15 +43 +43 +15 +15 +51 +51 +29 +29 +169 +169 +20 +20 +10716 +10716 +2 +2 +21 +21 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +6820 +6820 +2 +2 +21 +21 +6126 +6126 +17 +17 +4 +4 +110 +13 +13 +7 +7 +63 +63 +21 +21 +159 +159 +1 +58 +1 -2 +28 +47 +10 -4 +3 -1 +2 -2 +24 -4 +26
+ __pycache__/conftest.cpython-314-pytest-9.0.2.pyc + accounts/__pycache__/__init__.cpython-314.pyc + accounts/__pycache__/admin.cpython-314.pyc + accounts/__pycache__/apps.cpython-314.pyc + accounts/__pycache__/forms.cpython-314.pyc + accounts/__pycache__/models.cpython-314.pyc + accounts/__pycache__/tests.cpython-314-pytest-9.0.2.pyc + accounts/__pycache__/urls.cpython-314.pyc + accounts/__pycache__/views.cpython-314.pyc + accounts/migrations/__pycache__/0001_initial.cpython-314.pyc + accounts/migrations/__pycache__/__init__.cpython-314.pyc + assets/admin/css/autocomplete.css + assets/admin/css/autocomplete.css.gz + assets/admin/css/autocomplete.d24f10bdee41.css + assets/admin/css/autocomplete.d24f10bdee41.css.gz + assets/admin/css/base.96c479cedf7a.css + assets/admin/css/base.96c479cedf7a.css.gz + assets/admin/css/base.css + assets/admin/css/base.css.gz + assets/admin/css/changelists.59465e72d1ef.css + assets/admin/css/changelists.59465e72d1ef.css.gz + assets/admin/css/changelists.css + assets/admin/css/changelists.css.gz + assets/admin/css/constance.9180b990baa4.css + assets/admin/css/constance.9180b990baa4.css.gz + assets/admin/css/constance.css + assets/admin/css/constance.css.gz + assets/admin/css/dark_mode.1215cee25eaa.css + assets/admin/css/dark_mode.1215cee25eaa.css.gz + assets/admin/css/dark_mode.css + assets/admin/css/dark_mode.css.gz + assets/admin/css/dark_theme.23ccf3764a60.css + assets/admin/css/dark_theme.23ccf3764a60.css.gz + assets/admin/css/dark_theme.8634a9d53bdf.css + assets/admin/css/dark_theme.8634a9d53bdf.css.gz + assets/admin/css/dark_theme.css + assets/admin/css/dark_theme.css.gz + assets/admin/css/dashboard.css + assets/admin/css/dashboard.css.gz + assets/admin/css/dashboard.e90f2068217b.css + assets/admin/css/dashboard.e90f2068217b.css.gz + assets/admin/css/forms.85f39c0927fa.css + assets/admin/css/forms.85f39c0927fa.css.gz + assets/admin/css/forms.css + assets/admin/css/forms.css.gz + assets/admin/css/login.a3b47c458e5d.css + assets/admin/css/login.a3b47c458e5d.css.gz + assets/admin/css/login.css + assets/admin/css/login.css.gz + assets/admin/css/nav_sidebar.css + assets/admin/css/nav_sidebar.css.gz + assets/admin/css/nav_sidebar.dd925738f4cc.css + assets/admin/css/nav_sidebar.dd925738f4cc.css.gz + assets/admin/css/responsive.80b7f3c4f68f.css + assets/admin/css/responsive.80b7f3c4f68f.css.gz + assets/admin/css/responsive.css + assets/admin/css/responsive.css.gz + assets/admin/css/responsive_rtl.011e68bec437.css + assets/admin/css/responsive_rtl.011e68bec437.css.gz + assets/admin/css/responsive_rtl.css + assets/admin/css/responsive_rtl.css.gz + assets/admin/css/rtl.66af67f66f09.css + assets/admin/css/rtl.66af67f66f09.css.gz + assets/admin/css/rtl.css + assets/admin/css/rtl.css.gz + assets/admin/css/unusable_password_field.b433f2a95fba.css + assets/admin/css/unusable_password_field.b433f2a95fba.css.gz + assets/admin/css/unusable_password_field.css + assets/admin/css/unusable_password_field.css.gz + assets/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md + assets/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md.gz + assets/admin/css/vendor/select2/LICENSE-SELECT2.md + assets/admin/css/vendor/select2/LICENSE-SELECT2.md.gz + assets/admin/css/vendor/select2/select2.a2194c262648.css + assets/admin/css/vendor/select2/select2.a2194c262648.css.gz + assets/admin/css/vendor/select2/select2.css + assets/admin/css/vendor/select2/select2.css.gz + assets/admin/css/vendor/select2/select2.min.9f54e6414f87.css + assets/admin/css/vendor/select2/select2.min.9f54e6414f87.css.gz + assets/admin/css/vendor/select2/select2.min.css + assets/admin/css/vendor/select2/select2.min.css.gz + assets/admin/css/widgets.22dbdba6917a.css + assets/admin/css/widgets.22dbdba6917a.css.gz + assets/admin/css/widgets.css + assets/admin/css/widgets.css.gz + assets/admin/img/LICENSE + assets/admin/img/LICENSE.2c54f4e1ca1c + assets/admin/img/LICENSE.2c54f4e1ca1c.gz + assets/admin/img/LICENSE.gz + assets/admin/img/README.9849248c9207.txt + assets/admin/img/README.9849248c9207.txt.gz + assets/admin/img/README.txt + assets/admin/img/README.txt.gz + assets/admin/img/calendar-icons.93ab098d1ac1.svg + assets/admin/img/calendar-icons.93ab098d1ac1.svg.gz + assets/admin/img/calendar-icons.svg + assets/admin/img/calendar-icons.svg.gz + assets/admin/img/gis/move_vertex_off.7a23bf31ef8a.svg + assets/admin/img/gis/move_vertex_off.7a23bf31ef8a.svg.gz + assets/admin/img/gis/move_vertex_off.svg + assets/admin/img/gis/move_vertex_off.svg.gz + assets/admin/img/gis/move_vertex_on.0047eba25b67.svg + assets/admin/img/gis/move_vertex_on.0047eba25b67.svg.gz + assets/admin/img/gis/move_vertex_on.svg + assets/admin/img/gis/move_vertex_on.svg.gz + assets/admin/img/icon-addlink.073aeb1feda7.svg + assets/admin/img/icon-addlink.073aeb1feda7.svg.gz + assets/admin/img/icon-addlink.svg + assets/admin/img/icon-addlink.svg.gz + assets/admin/img/icon-alert.034cc7d8a67f.svg + assets/admin/img/icon-alert.034cc7d8a67f.svg.gz + assets/admin/img/icon-alert.svg + assets/admin/img/icon-alert.svg.gz + assets/admin/img/icon-calendar.ac7aea671bea.svg + assets/admin/img/icon-calendar.ac7aea671bea.svg.gz + assets/admin/img/icon-calendar.svg + assets/admin/img/icon-calendar.svg.gz + assets/admin/img/icon-changelink.7eddb320e61f.svg + assets/admin/img/icon-changelink.7eddb320e61f.svg.gz + assets/admin/img/icon-changelink.svg + assets/admin/img/icon-changelink.svg.gz + assets/admin/img/icon-clock.e1d4dfac3f2b.svg + assets/admin/img/icon-clock.e1d4dfac3f2b.svg.gz + assets/admin/img/icon-clock.svg + assets/admin/img/icon-clock.svg.gz + assets/admin/img/icon-deletelink.564ef9dc3854.svg + assets/admin/img/icon-deletelink.564ef9dc3854.svg.gz + assets/admin/img/icon-deletelink.svg + assets/admin/img/icon-deletelink.svg.gz + assets/admin/img/icon-hidelink.8d245a995e18.svg + assets/admin/img/icon-hidelink.8d245a995e18.svg.gz + assets/admin/img/icon-hidelink.svg + assets/admin/img/icon-hidelink.svg.gz + assets/admin/img/icon-no.439e821418cd.svg + assets/admin/img/icon-no.439e821418cd.svg.gz + assets/admin/img/icon-no.svg + assets/admin/img/icon-no.svg.gz + assets/admin/img/icon-unknown-alt.81536e128bb6.svg + assets/admin/img/icon-unknown-alt.81536e128bb6.svg.gz + assets/admin/img/icon-unknown-alt.svg + assets/admin/img/icon-unknown-alt.svg.gz + assets/admin/img/icon-unknown.a18cb4398978.svg + assets/admin/img/icon-unknown.a18cb4398978.svg.gz + assets/admin/img/icon-unknown.svg + assets/admin/img/icon-unknown.svg.gz + assets/admin/img/icon-viewlink.41eb31f7826e.svg + assets/admin/img/icon-viewlink.41eb31f7826e.svg.gz + assets/admin/img/icon-viewlink.svg + assets/admin/img/icon-viewlink.svg.gz + assets/admin/img/icon-yes.d2f9f035226a.svg + assets/admin/img/icon-yes.d2f9f035226a.svg.gz + assets/admin/img/icon-yes.svg + assets/admin/img/icon-yes.svg.gz + assets/admin/img/inline-delete.358e965fe3e7.svg + assets/admin/img/inline-delete.358e965fe3e7.svg.gz + assets/admin/img/inline-delete.svg + assets/admin/img/inline-delete.svg.gz + assets/admin/img/logo-dark.360ec0ec2b96.svg + assets/admin/img/logo-dark.360ec0ec2b96.svg.gz + assets/admin/img/logo-dark.a43683c31db4.png + assets/admin/img/logo-dark.png + assets/admin/img/logo-dark.svg + assets/admin/img/logo-dark.svg.gz + assets/admin/img/search.7cf54ff789c6.svg + assets/admin/img/search.7cf54ff789c6.svg.gz + assets/admin/img/search.svg + assets/admin/img/search.svg.gz + assets/admin/img/selector-icons.b4555096cea2.svg + assets/admin/img/selector-icons.b4555096cea2.svg.gz + assets/admin/img/selector-icons.svg + assets/admin/img/selector-icons.svg.gz + assets/admin/img/sorting-icons.3a097b59f104.svg + assets/admin/img/sorting-icons.3a097b59f104.svg.gz + assets/admin/img/sorting-icons.svg + assets/admin/img/sorting-icons.svg.gz + assets/admin/img/tooltag-add.e59d620a9742.svg + assets/admin/img/tooltag-add.e59d620a9742.svg.gz + assets/admin/img/tooltag-add.svg + assets/admin/img/tooltag-add.svg.gz + assets/admin/img/tooltag-arrowright.bbfb788a849e.svg + assets/admin/img/tooltag-arrowright.bbfb788a849e.svg.gz + assets/admin/img/tooltag-arrowright.svg + assets/admin/img/tooltag-arrowright.svg.gz + assets/admin/js/SelectBox.7d3ce5a98007.js + assets/admin/js/SelectBox.7d3ce5a98007.js.gz + assets/admin/js/SelectBox.js + assets/admin/js/SelectBox.js.gz + assets/admin/js/SelectFilter2.58388953117f.js + assets/admin/js/SelectFilter2.58388953117f.js.gz + assets/admin/js/SelectFilter2.js + assets/admin/js/SelectFilter2.js.gz + assets/admin/js/actions.f1d5653edb59.js + assets/admin/js/actions.f1d5653edb59.js.gz + assets/admin/js/actions.js + assets/admin/js/actions.js.gz + assets/admin/js/admin/DateTimeShortcuts.9f6e209cebca.js + assets/admin/js/admin/DateTimeShortcuts.9f6e209cebca.js.gz + assets/admin/js/admin/DateTimeShortcuts.js + assets/admin/js/admin/DateTimeShortcuts.js.gz + assets/admin/js/admin/RelatedObjectLookups.ed6240809a40.js + assets/admin/js/admin/RelatedObjectLookups.ed6240809a40.js.gz + assets/admin/js/admin/RelatedObjectLookups.js + assets/admin/js/admin/RelatedObjectLookups.js.gz + assets/admin/js/autocomplete.01591ab27be7.js + assets/admin/js/autocomplete.01591ab27be7.js.gz + assets/admin/js/autocomplete.js + assets/admin/js/autocomplete.js.gz + assets/admin/js/calendar.d64496bbf46d.js + assets/admin/js/calendar.d64496bbf46d.js.gz + assets/admin/js/calendar.js + assets/admin/js/calendar.js.gz + assets/admin/js/cancel.ecc4c5ca7b32.js + assets/admin/js/cancel.ecc4c5ca7b32.js.gz + assets/admin/js/cancel.js + assets/admin/js/cancel.js.gz + assets/admin/js/change_form.9d8ca4f96b75.js + assets/admin/js/change_form.9d8ca4f96b75.js.gz + assets/admin/js/change_form.js + assets/admin/js/change_form.js.gz + assets/admin/js/constance.0ef212beff0a.js + assets/admin/js/constance.0ef212beff0a.js.gz + assets/admin/js/constance.js + assets/admin/js/constance.js.gz + assets/admin/js/core.7e257fdf56dc.js + assets/admin/js/core.7e257fdf56dc.js.gz + assets/admin/js/core.js + assets/admin/js/core.js.gz + assets/admin/js/filters.0e360b7a9f80.js + assets/admin/js/filters.0e360b7a9f80.js.gz + assets/admin/js/filters.js + assets/admin/js/filters.js.gz + assets/admin/js/inlines.89b3c627c5dc.js + assets/admin/js/inlines.89b3c627c5dc.js.gz + assets/admin/js/inlines.js + assets/admin/js/inlines.js.gz + assets/admin/js/jquery.init.b7781a0897fc.js + assets/admin/js/jquery.init.b7781a0897fc.js.gz + assets/admin/js/jquery.init.js + assets/admin/js/jquery.init.js.gz + assets/admin/js/nav_sidebar.3b9190d420b1.js + assets/admin/js/nav_sidebar.3b9190d420b1.js.gz + assets/admin/js/nav_sidebar.js + assets/admin/js/nav_sidebar.js.gz + assets/admin/js/popup_response.96190d343c22.js + assets/admin/js/popup_response.96190d343c22.js.gz + assets/admin/js/popup_response.js + assets/admin/js/popup_response.js.gz + assets/admin/js/prepopulate.bd2361dfd64d.js + assets/admin/js/prepopulate.bd2361dfd64d.js.gz + assets/admin/js/prepopulate.js + assets/admin/js/prepopulate.js.gz + assets/admin/js/prepopulate_init.6cac7f3105b8.js + assets/admin/js/prepopulate_init.6cac7f3105b8.js.gz + assets/admin/js/prepopulate_init.js + assets/admin/js/prepopulate_init.js.gz + assets/admin/js/theme.91cf832f559e.js + assets/admin/js/theme.91cf832f559e.js.gz + assets/admin/js/theme.js + assets/admin/js/theme.js.gz + assets/admin/js/unusable_password_field.017ea86b6ae4.js + assets/admin/js/unusable_password_field.017ea86b6ae4.js.gz + assets/admin/js/unusable_password_field.js + assets/admin/js/unusable_password_field.js.gz + assets/admin/js/urlify.ae970a820212.js + assets/admin/js/urlify.ae970a820212.js.gz + assets/admin/js/urlify.js + assets/admin/js/urlify.js.gz + assets/admin/js/vendor/jquery/LICENSE.de877aa6d744.txt + assets/admin/js/vendor/jquery/LICENSE.de877aa6d744.txt.gz + assets/admin/js/vendor/jquery/LICENSE.txt + assets/admin/js/vendor/jquery/LICENSE.txt.gz + assets/admin/js/vendor/jquery/jquery.12e87d2f3a4c.js + assets/admin/js/vendor/jquery/jquery.12e87d2f3a4c.js.gz + assets/admin/js/vendor/jquery/jquery.js + assets/admin/js/vendor/jquery/jquery.js.gz + assets/admin/js/vendor/jquery/jquery.min.2c872dbe60f4.js + assets/admin/js/vendor/jquery/jquery.min.2c872dbe60f4.js.gz + assets/admin/js/vendor/jquery/jquery.min.js + assets/admin/js/vendor/jquery/jquery.min.js.gz + assets/admin/js/vendor/select2/LICENSE.f94142512c91.md + assets/admin/js/vendor/select2/LICENSE.f94142512c91.md.gz + assets/admin/js/vendor/select2/LICENSE.md + assets/admin/js/vendor/select2/LICENSE.md.gz + assets/admin/js/vendor/select2/i18n/af.4f6fcd73488c.js + assets/admin/js/vendor/select2/i18n/af.4f6fcd73488c.js.gz + assets/admin/js/vendor/select2/i18n/af.js + assets/admin/js/vendor/select2/i18n/af.js.gz + assets/admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js + assets/admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js.gz + assets/admin/js/vendor/select2/i18n/ar.js + assets/admin/js/vendor/select2/i18n/ar.js.gz + assets/admin/js/vendor/select2/i18n/az.270c257daf81.js + assets/admin/js/vendor/select2/i18n/az.270c257daf81.js.gz + assets/admin/js/vendor/select2/i18n/az.js + assets/admin/js/vendor/select2/i18n/az.js.gz + assets/admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js + assets/admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js.gz + assets/admin/js/vendor/select2/i18n/bg.js + assets/admin/js/vendor/select2/i18n/bg.js.gz + assets/admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js + assets/admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js.gz + assets/admin/js/vendor/select2/i18n/bn.js + assets/admin/js/vendor/select2/i18n/bn.js.gz + assets/admin/js/vendor/select2/i18n/bs.91624382358e.js + assets/admin/js/vendor/select2/i18n/bs.91624382358e.js.gz + assets/admin/js/vendor/select2/i18n/bs.js + assets/admin/js/vendor/select2/i18n/bs.js.gz + assets/admin/js/vendor/select2/i18n/ca.a166b745933a.js + assets/admin/js/vendor/select2/i18n/ca.a166b745933a.js.gz + assets/admin/js/vendor/select2/i18n/ca.js + assets/admin/js/vendor/select2/i18n/ca.js.gz + assets/admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js + assets/admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js.gz + assets/admin/js/vendor/select2/i18n/cs.js + assets/admin/js/vendor/select2/i18n/cs.js.gz + assets/admin/js/vendor/select2/i18n/da.766346afe4dd.js + assets/admin/js/vendor/select2/i18n/da.766346afe4dd.js.gz + assets/admin/js/vendor/select2/i18n/da.js + assets/admin/js/vendor/select2/i18n/da.js.gz + assets/admin/js/vendor/select2/i18n/de.8a1c222b0204.js + assets/admin/js/vendor/select2/i18n/de.8a1c222b0204.js.gz + assets/admin/js/vendor/select2/i18n/de.js + assets/admin/js/vendor/select2/i18n/de.js.gz + assets/admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js + assets/admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js.gz + assets/admin/js/vendor/select2/i18n/dsb.js + assets/admin/js/vendor/select2/i18n/dsb.js.gz + assets/admin/js/vendor/select2/i18n/el.27097f071856.js + assets/admin/js/vendor/select2/i18n/el.27097f071856.js.gz + assets/admin/js/vendor/select2/i18n/el.js + assets/admin/js/vendor/select2/i18n/el.js.gz + assets/admin/js/vendor/select2/i18n/en.cf932ba09a98.js + assets/admin/js/vendor/select2/i18n/en.cf932ba09a98.js.gz + assets/admin/js/vendor/select2/i18n/en.js + assets/admin/js/vendor/select2/i18n/en.js.gz + assets/admin/js/vendor/select2/i18n/es.66dbc2652fb1.js + assets/admin/js/vendor/select2/i18n/es.66dbc2652fb1.js.gz + assets/admin/js/vendor/select2/i18n/es.js + assets/admin/js/vendor/select2/i18n/es.js.gz + assets/admin/js/vendor/select2/i18n/et.2b96fd98289d.js + assets/admin/js/vendor/select2/i18n/et.2b96fd98289d.js.gz + assets/admin/js/vendor/select2/i18n/et.js + assets/admin/js/vendor/select2/i18n/et.js.gz + assets/admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js + assets/admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js.gz + assets/admin/js/vendor/select2/i18n/eu.js + assets/admin/js/vendor/select2/i18n/eu.js.gz + assets/admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js + assets/admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js.gz + assets/admin/js/vendor/select2/i18n/fa.js + assets/admin/js/vendor/select2/i18n/fa.js.gz + assets/admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js + assets/admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js.gz + assets/admin/js/vendor/select2/i18n/fi.js + assets/admin/js/vendor/select2/i18n/fi.js.gz + assets/admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js + assets/admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js.gz + assets/admin/js/vendor/select2/i18n/fr.js + assets/admin/js/vendor/select2/i18n/fr.js.gz + assets/admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js + assets/admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js.gz + assets/admin/js/vendor/select2/i18n/gl.js + assets/admin/js/vendor/select2/i18n/gl.js.gz + assets/admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js + assets/admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js.gz + assets/admin/js/vendor/select2/i18n/he.js + assets/admin/js/vendor/select2/i18n/he.js.gz + assets/admin/js/vendor/select2/i18n/hi.70640d41628f.js + assets/admin/js/vendor/select2/i18n/hi.70640d41628f.js.gz + assets/admin/js/vendor/select2/i18n/hi.js + assets/admin/js/vendor/select2/i18n/hi.js.gz + assets/admin/js/vendor/select2/i18n/hr.a2b092cc1147.js + assets/admin/js/vendor/select2/i18n/hr.a2b092cc1147.js.gz + assets/admin/js/vendor/select2/i18n/hr.js + assets/admin/js/vendor/select2/i18n/hr.js.gz + assets/admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js + assets/admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js.gz + assets/admin/js/vendor/select2/i18n/hsb.js + assets/admin/js/vendor/select2/i18n/hsb.js.gz + assets/admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js + assets/admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js.gz + assets/admin/js/vendor/select2/i18n/hu.js + assets/admin/js/vendor/select2/i18n/hu.js.gz + assets/admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js + assets/admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js.gz + assets/admin/js/vendor/select2/i18n/hy.js + assets/admin/js/vendor/select2/i18n/hy.js.gz + assets/admin/js/vendor/select2/i18n/id.04debded514d.js + assets/admin/js/vendor/select2/i18n/id.04debded514d.js.gz + assets/admin/js/vendor/select2/i18n/id.js + assets/admin/js/vendor/select2/i18n/id.js.gz + assets/admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js + assets/admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js.gz + assets/admin/js/vendor/select2/i18n/is.js + assets/admin/js/vendor/select2/i18n/is.js.gz + assets/admin/js/vendor/select2/i18n/it.be4fe8d365b5.js + assets/admin/js/vendor/select2/i18n/it.be4fe8d365b5.js.gz + assets/admin/js/vendor/select2/i18n/it.js + assets/admin/js/vendor/select2/i18n/it.js.gz + assets/admin/js/vendor/select2/i18n/ja.170ae885d74f.js + assets/admin/js/vendor/select2/i18n/ja.170ae885d74f.js.gz + assets/admin/js/vendor/select2/i18n/ja.js + assets/admin/js/vendor/select2/i18n/ja.js.gz + assets/admin/js/vendor/select2/i18n/ka.2083264a54f0.js + assets/admin/js/vendor/select2/i18n/ka.2083264a54f0.js.gz + assets/admin/js/vendor/select2/i18n/ka.js + assets/admin/js/vendor/select2/i18n/ka.js.gz + assets/admin/js/vendor/select2/i18n/km.c23089cb06ca.js + assets/admin/js/vendor/select2/i18n/km.c23089cb06ca.js.gz + assets/admin/js/vendor/select2/i18n/km.js + assets/admin/js/vendor/select2/i18n/km.js.gz + assets/admin/js/vendor/select2/i18n/ko.e7be6c20e673.js + assets/admin/js/vendor/select2/i18n/ko.e7be6c20e673.js.gz + assets/admin/js/vendor/select2/i18n/ko.js + assets/admin/js/vendor/select2/i18n/ko.js.gz + assets/admin/js/vendor/select2/i18n/lt.23c7ce903300.js + assets/admin/js/vendor/select2/i18n/lt.23c7ce903300.js.gz + assets/admin/js/vendor/select2/i18n/lt.js + assets/admin/js/vendor/select2/i18n/lt.js.gz + assets/admin/js/vendor/select2/i18n/lv.08e62128eac1.js + assets/admin/js/vendor/select2/i18n/lv.08e62128eac1.js.gz + assets/admin/js/vendor/select2/i18n/lv.js + assets/admin/js/vendor/select2/i18n/lv.js.gz + assets/admin/js/vendor/select2/i18n/mk.dabbb9087130.js + assets/admin/js/vendor/select2/i18n/mk.dabbb9087130.js.gz + assets/admin/js/vendor/select2/i18n/mk.js + assets/admin/js/vendor/select2/i18n/mk.js.gz + assets/admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js + assets/admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js.gz + assets/admin/js/vendor/select2/i18n/ms.js + assets/admin/js/vendor/select2/i18n/ms.js.gz + assets/admin/js/vendor/select2/i18n/nb.da2fce143f27.js + assets/admin/js/vendor/select2/i18n/nb.da2fce143f27.js.gz + assets/admin/js/vendor/select2/i18n/nb.js + assets/admin/js/vendor/select2/i18n/nb.js.gz + assets/admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js + assets/admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js.gz + assets/admin/js/vendor/select2/i18n/ne.js + assets/admin/js/vendor/select2/i18n/ne.js.gz + assets/admin/js/vendor/select2/i18n/nl.997868a37ed8.js + assets/admin/js/vendor/select2/i18n/nl.997868a37ed8.js.gz + assets/admin/js/vendor/select2/i18n/nl.js + assets/admin/js/vendor/select2/i18n/nl.js.gz + assets/admin/js/vendor/select2/i18n/pl.6031b4f16452.js + assets/admin/js/vendor/select2/i18n/pl.6031b4f16452.js.gz + assets/admin/js/vendor/select2/i18n/pl.js + assets/admin/js/vendor/select2/i18n/pl.js.gz + assets/admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js + assets/admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js.gz + assets/admin/js/vendor/select2/i18n/ps.js + assets/admin/js/vendor/select2/i18n/ps.js.gz + assets/admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js + assets/admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js.gz + assets/admin/js/vendor/select2/i18n/pt-BR.js + assets/admin/js/vendor/select2/i18n/pt-BR.js.gz + assets/admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js + assets/admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js.gz + assets/admin/js/vendor/select2/i18n/pt.js + assets/admin/js/vendor/select2/i18n/pt.js.gz + assets/admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js + assets/admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js.gz + assets/admin/js/vendor/select2/i18n/ro.js + assets/admin/js/vendor/select2/i18n/ro.js.gz + assets/admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js + assets/admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js.gz + assets/admin/js/vendor/select2/i18n/ru.js + assets/admin/js/vendor/select2/i18n/ru.js.gz + assets/admin/js/vendor/select2/i18n/sk.33d02cef8d11.js + assets/admin/js/vendor/select2/i18n/sk.33d02cef8d11.js.gz + assets/admin/js/vendor/select2/i18n/sk.js + assets/admin/js/vendor/select2/i18n/sk.js.gz + assets/admin/js/vendor/select2/i18n/sl.131a78bc0752.js + assets/admin/js/vendor/select2/i18n/sl.131a78bc0752.js.gz + assets/admin/js/vendor/select2/i18n/sl.js + assets/admin/js/vendor/select2/i18n/sl.js.gz + assets/admin/js/vendor/select2/i18n/sq.5636b60d29c9.js + assets/admin/js/vendor/select2/i18n/sq.5636b60d29c9.js.gz + assets/admin/js/vendor/select2/i18n/sq.js + assets/admin/js/vendor/select2/i18n/sq.js.gz + assets/admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js + assets/admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js.gz + assets/admin/js/vendor/select2/i18n/sr-Cyrl.js + assets/admin/js/vendor/select2/i18n/sr-Cyrl.js.gz + assets/admin/js/vendor/select2/i18n/sr.5ed85a48f483.js + assets/admin/js/vendor/select2/i18n/sr.5ed85a48f483.js.gz + assets/admin/js/vendor/select2/i18n/sr.js + assets/admin/js/vendor/select2/i18n/sr.js.gz + assets/admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js + assets/admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js.gz + assets/admin/js/vendor/select2/i18n/sv.js + assets/admin/js/vendor/select2/i18n/sv.js.gz + assets/admin/js/vendor/select2/i18n/th.f38c20b0221b.js + assets/admin/js/vendor/select2/i18n/th.f38c20b0221b.js.gz + assets/admin/js/vendor/select2/i18n/th.js + assets/admin/js/vendor/select2/i18n/th.js.gz + assets/admin/js/vendor/select2/i18n/tk.7c572a68c78f.js + assets/admin/js/vendor/select2/i18n/tk.7c572a68c78f.js.gz + assets/admin/js/vendor/select2/i18n/tk.js + assets/admin/js/vendor/select2/i18n/tk.js.gz + assets/admin/js/vendor/select2/i18n/tr.b5a0643d1545.js + assets/admin/js/vendor/select2/i18n/tr.b5a0643d1545.js.gz + assets/admin/js/vendor/select2/i18n/tr.js + assets/admin/js/vendor/select2/i18n/tr.js.gz + assets/admin/js/vendor/select2/i18n/uk.8cede7f4803c.js + assets/admin/js/vendor/select2/i18n/uk.8cede7f4803c.js.gz + assets/admin/js/vendor/select2/i18n/uk.js + assets/admin/js/vendor/select2/i18n/uk.js.gz + assets/admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js + assets/admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js.gz + assets/admin/js/vendor/select2/i18n/vi.js + assets/admin/js/vendor/select2/i18n/vi.js.gz + assets/admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js + assets/admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js.gz + assets/admin/js/vendor/select2/i18n/zh-CN.js + assets/admin/js/vendor/select2/i18n/zh-CN.js.gz + assets/admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js + assets/admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js.gz + assets/admin/js/vendor/select2/i18n/zh-TW.js + assets/admin/js/vendor/select2/i18n/zh-TW.js.gz + assets/admin/js/vendor/select2/select2.full.c2afdeda3058.js + assets/admin/js/vendor/select2/select2.full.c2afdeda3058.js.gz + assets/admin/js/vendor/select2/select2.full.js + assets/admin/js/vendor/select2/select2.full.js.gz + assets/admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js + assets/admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js.gz + assets/admin/js/vendor/select2/select2.full.min.js + assets/admin/js/vendor/select2/select2.full.min.js.gz + assets/admin/js/vendor/xregexp/LICENSE.b6fd2ceea8d3.txt + assets/admin/js/vendor/xregexp/LICENSE.b6fd2ceea8d3.txt.gz + assets/admin/js/vendor/xregexp/LICENSE.txt + assets/admin/js/vendor/xregexp/LICENSE.txt.gz + assets/admin/js/vendor/xregexp/xregexp.a7e08b0ce686.js + assets/admin/js/vendor/xregexp/xregexp.a7e08b0ce686.js.gz + assets/admin/js/vendor/xregexp/xregexp.js + assets/admin/js/vendor/xregexp/xregexp.js.gz + assets/admin/js/vendor/xregexp/xregexp.min.f1ae4617847c.js + assets/admin/js/vendor/xregexp/xregexp.min.f1ae4617847c.js.gz + assets/admin/js/vendor/xregexp/xregexp.min.js + assets/admin/js/vendor/xregexp/xregexp.min.js.gz + assets/css/input.4bc92896c322.css + assets/css/input.4bc92896c322.css.gz + assets/css/input.css + assets/css/input.css.gz + assets/img/fossilrepo-logo-dark.360ec0ec2b96.svg + assets/img/fossilrepo-logo-dark.360ec0ec2b96.svg.gz + assets/img/fossilrepo-logo-dark.a43683c31db4.png + assets/img/fossilrepo-logo-dark.bbee1e6bbdef.png + assets/img/fossilrepo-logo-dark.f71f0d181200.svg + assets/img/fossilrepo-logo-dark.f71f0d181200.svg.gz + assets/img/fossilrepo-logo-dark.png + assets/img/fossilrepo-logo-dark.svg + assets/img/fossilrepo-logo-dark.svg.gz + assets/import_export/export.48d7162c89e2.css + assets/import_export/export.48d7162c89e2.css.gz + assets/import_export/export.css + assets/import_export/export.css.gz + assets/import_export/export_selectable_fields.a08e5265f672.js + assets/import_export/export_selectable_fields.a08e5265f672.js.gz + assets/import_export/export_selectable_fields.js + assets/import_export/export_selectable_fields.js.gz + assets/import_export/guess_format.1e929842623e.js + assets/import_export/guess_format.1e929842623e.js.gz + assets/import_export/guess_format.js + assets/import_export/guess_format.js.gz + assets/import_export/import.css + assets/import_export/import.css.gz + assets/import_export/import.f3b70b0d21bb.css + assets/import_export/import.f3b70b0d21bb.css.gz + assets/staticfiles.json + config/__pycache__/__init__.cpython-314.pyc + config/__pycache__/settings.cpython-314.pyc + config/__pycache__/urls.cpython-314.pyc + config/__pycache__/wsgi.cpython-314.pyc + core/__pycache__/__init__.cpython-314.pyc + core/__pycache__/admin.cpython-314.pyc + core/__pycache__/apps.cpython-314.pyc + core/__pycache__/context_processors.cpython-314.pyc + core/__pycache__/fields.cpython-314.pyc + core/__pycache__/models.cpython-314.pyc + core/__pycache__/pagination.cpython-314.pyc + core/__pycache__/permissions.cpython-314.pyc + core/__pycache__/sanitize.cpython-314.pyc + core/__pycache__/tests.cpython-314-pytest-9.0.2.pyc + core/__pycache__/urls.cpython-314.pyc + core/__pycache__/views.cpython-314.pyc + core/management/__pycache__/__init__.cpython-314.pyc + core/middleware/__pycache__/__init__.cpython-314.pyc + core/middleware/__pycache__/current_user.cpython-314.pyc + core/migrations/__pycache__/__init__.cpython-314.pyc + core/templatetags/__pycache__/__init__.cpython-314.pyc + core/templatetags/__pycache__/permissions_tags.cpython-314.pyc + ctl/__pycache__/__init__.cpython-314.pyc + ctl/__pycache__/main.cpython-314.pyc + deploy.sh ~ docker-compose.yaml + fossil/__pycache__/__init__.cpython-314.pyc + fossil/__pycache__/admin.cpython-314.pyc + fossil/__pycache__/agent_claims.cpython-314.pyc + fossil/__pycache__/api_auth.cpython-314.pyc + fossil/__pycache__/api_tokens.cpython-314.pyc + fossil/__pycache__/api_views.cpython-314.pyc + fossil/__pycache__/apps.cpython-314.pyc + fossil/__pycache__/branch_protection.cpython-314.pyc + fossil/__pycache__/chat.cpython-314.pyc + fossil/__pycache__/ci.cpython-314.pyc + fossil/__pycache__/cli.cpython-314.pyc + fossil/__pycache__/code_reviews.cpython-314.pyc + fossil/__pycache__/forum.cpython-314.pyc + fossil/__pycache__/models.cpython-314.pyc + fossil/__pycache__/notifications.cpython-314.pyc + fossil/__pycache__/oauth.cpython-314.pyc + fossil/__pycache__/reader.cpython-314.pyc + fossil/__pycache__/releases.cpython-314.pyc + fossil/__pycache__/signals.cpython-314.pyc + fossil/__pycache__/sync_models.cpython-314.pyc + fossil/__pycache__/tasks.cpython-314.pyc + fossil/__pycache__/tests.cpython-314-pytest-9.0.2.pyc + fossil/__pycache__/ticket_fields.cpython-314.pyc + fossil/__pycache__/ticket_reports.cpython-314.pyc + fossil/__pycache__/urls.cpython-314.pyc + fossil/__pycache__/user_keys.cpython-314.pyc + fossil/__pycache__/views.cpython-314.pyc + fossil/__pycache__/webhooks.cpython-314.pyc + fossil/__pycache__/workspaces.cpython-314.pyc ~ fossil/cli.py + fossil/migrations/__pycache__/0001_initial.cpython-314.pyc + fossil/migrations/__pycache__/0002_fossilrepository_last_sync_at_and_more.cpython-314.pyc + fossil/migrations/__pycache__/0003_gitmirror_historicalgitmirror_historicalsshkey_and_more.cpython-314.pyc + fossil/migrations/__pycache__/0004_historicalprojectwatch_notification_projectwatch.cpython-314.pyc + fossil/migrations/__pycache__/0005_alter_gitmirror_auth_credential_and_more.cpython-314.pyc + fossil/migrations/__pycache__/0006_historicalrelease_release_historicalreleaseasset_and_more.cpython-314.pyc + fossil/migrations/__pycache__/0007_forumpost_historicalforumpost_historicalwebhook_and_more.cpython-314.pyc + fossil/migrations/__pycache__/0008_apitoken_historicalapitoken_and_more.cpython-314.pyc + fossil/migrations/__pycache__/0009_historicalticketfielddefinition_and_more.cpython-314.pyc + fossil/migrations/__pycache__/0010_historicalagentworkspace_agentworkspace.cpython-314.pyc + fossil/migrations/__pycache__/0011_codereview_historicalcodereview_and_more.cpython-314.pyc + fossil/migrations/__pycache__/0012_alter_ticketclaim_unique_together.cpython-314.pyc + fossil/migrations/__pycache__/__init__.cpython-314.pyc ~ fossil/views.py + mcp_server/__pycache__/__init__.cpython-314.pyc + mcp_server/__pycache__/__main__.cpython-314.pyc + mcp_server/__pycache__/server.cpython-314.pyc + mcp_server/__pycache__/tools.cpython-314.pyc + organization/__pycache__/__init__.cpython-314.pyc + organization/__pycache__/admin.cpython-314.pyc + organization/__pycache__/apps.cpython-314.pyc + organization/__pycache__/forms.cpython-314.pyc + organization/__pycache__/models.cpython-314.pyc + organization/__pycache__/tests.cpython-314-pytest-9.0.2.pyc + organization/__pycache__/urls.cpython-314.pyc + organization/__pycache__/views.cpython-314.pyc + organization/management/__pycache__/__init__.cpython-314.pyc + organization/management/commands/__pycache__/__init__.cpython-314.pyc + organization/management/commands/__pycache__/seed_roles.cpython-314.pyc + organization/migrations/__pycache__/0001_initial.cpython-314.pyc + organization/migrations/__pycache__/0002_historicalteam_team.cpython-314.pyc + organization/migrations/__pycache__/0003_historicalorgrole_orgrole_and_more.cpython-314.pyc + organization/migrations/__pycache__/__init__.cpython-314.pyc + pages/__pycache__/__init__.cpython-314.pyc + pages/__pycache__/admin.cpython-314.pyc + pages/__pycache__/apps.cpython-314.pyc + pages/__pycache__/forms.cpython-314.pyc + pages/__pycache__/models.cpython-314.pyc + pages/__pycache__/tests.cpython-314-pytest-9.0.2.pyc + pages/__pycache__/urls.cpython-314.pyc + pages/__pycache__/views.cpython-314.pyc + pages/migrations/__pycache__/0001_initial.cpython-314.pyc + pages/migrations/__pycache__/__init__.cpython-314.pyc + projects/__pycache__/__init__.cpython-314.pyc + projects/__pycache__/access.cpython-314.pyc + projects/__pycache__/admin.cpython-314.pyc + projects/__pycache__/apps.cpython-314.pyc + projects/__pycache__/forms.cpython-314.pyc + projects/__pycache__/models.cpython-314.pyc + projects/__pycache__/tests.cpython-314-pytest-9.0.2.pyc + projects/__pycache__/urls.cpython-314.pyc + projects/__pycache__/views.cpython-314.pyc + projects/migrations/__pycache__/0001_initial.cpython-314.pyc + projects/migrations/__pycache__/0002_historicalprojectgroup_projectgroup_and_more.cpython-314.pyc + projects/migrations/__pycache__/0003_add_projectstar.cpython-314.pyc + projects/migrations/__pycache__/__init__.cpython-314.pyc ~ templates/accounts/profile.html ~ templates/base.html ~ templates/fossil/branch_protection_list.html ~ templates/fossil/sync.html + templates/includes/nav_public.html + testdata/__pycache__/__init__.cpython-314.pyc + testdata/__pycache__/apps.cpython-314.pyc + testdata/management/__pycache__/__init__.cpython-314.pyc + testdata/management/commands/__pycache__/__init__.cpython-314.pyc + testdata/management/commands/__pycache__/seed.cpython-314.pyc + testdata/migrations/__pycache__/__init__.cpython-314.pyc + tests/__pycache__/__init__.cpython-314.pyc + tests/__pycache__/test_agent_coordination.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_anonymous_access.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_api_tokens.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_audit_log.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_branch_protection.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_branch_protection_enforcement.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_bundle_cli.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_ci_status.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_dashboard_heatmap.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_email_templates.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_explorer.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_forum.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_git_mirrors.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_json_api.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_mcp_server.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_notification_prefs.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_project_groups.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_releases.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_repo_lifecycle.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_roles.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_security.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_shunning.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_split_diff.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_starring.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_technotes.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_ticket_fields.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_ticket_reports.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_unversioned.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_user_management.cpython-314-pytest-9.0.2.pyc + tests/__pycache__/test_webhooks.cpython-314-pytest-9.0.2.pyc
--- a/assets/admin/css/autocomplete.css
+++ b/assets/admin/css/autocomplete.css
@@ -0,0 +1,279 @@
1
+select.admin-autocomplete {
2
+ width: 20em;
3
+}
4
+
5
+.select2-container--admin-autocomplete.select2-container {
6
+ min-height: 30px;
7
+}
8
+
9
+.select2-container--admin-autocomplete .select2-selection--single,
10
+.select2-container--admin-autocomplete .select2-selection--multiple {
11
+ min-height: 30px;
12
+ padding: 0;
13
+}
14
+
15
+.select2-container--admin-autocomplete.select2-container--focus .select2-selection,
16
+.select2-container--admin-autocomplete.select2-container--open .select2-selection {
17
+ border-color: var(--body-quiet-color);
18
+ min-height: 30px;
19
+}
20
+
21
+.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single,
22
+.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single {
23
+ padding: 0;
24
+}
25
+
26
+.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple,
27
+.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple {
28
+ padding: 0;
29
+}
30
+
31
+.select2-container--admin-autocomplete .select2-selection--single {
32
+ background-color: var(--body-bg);
33
+ border: 1px solid var(--border-color);
34
+ border-radius: 4px;
35
+}
36
+
37
+.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered {
38
+ color: var(--body-fg);
39
+ line-height: 30px;
40
+}
41
+
42
+.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear {
43
+ cursor: pointer;
44
+ float: right;
45
+ font-weight: bold;
46
+}
47
+
48
+.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder {
49
+ color: var(--body-quiet-color);
50
+}
51
+
52
+.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow {
53
+ height: 26px;
54
+ position: absolute;
55
+ top: 1px;
56
+ right: 1px;
57
+ width: 20px;
58
+}
59
+
60
+.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b {
61
+ border-color: #888 transparent transparent transparent;
62
+ border-style: solid;
63
+ border-width: 5px 4px 0 4px;
64
+ height: 0;
65
+ left: 50%;
66
+ margin-left: -4px;
67
+ margin-top: -2px;
68
+ position: absolute;
69
+ top: 50%;
70
+ width: 0;
71
+}
72
+
73
+.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear {
74
+ float: left;
75
+}
76
+
77
+.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow {
78
+ left: 1px;
79
+ right: auto;
80
+}
81
+
82
+.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single {
83
+ background-color: var(--darkened-bg);
84
+ cursor: default;
85
+}
86
+
87
+.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear {
88
+ display: none;
89
+}
90
+
91
+.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b {
92
+ border-color: transparent transparent #888 transparent;
93
+ border-width: 0 4px 5px 4px;
94
+}
95
+
96
+.select2-container--admin-autocomplete .select2-selection--multiple {
97
+ background-color: var(--body-bg);
98
+ border: 1px solid var(--border-color);
99
+ border-radius: 4px;
100
+ cursor: text;
101
+}
102
+
103
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered {
104
+ box-sizing: border-box;
105
+ list-style: none;
106
+ margin: 0;
107
+ padding: 0 10px 5px 5px;
108
+ width: 100%;
109
+ display: flex;
110
+ flex-wrap: wrap;
111
+}
112
+
113
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li {
114
+ list-style: none;
115
+}
116
+
117
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder {
118
+ color: var(--body-quiet-color);
119
+ margin-top: 5px;
120
+ float: left;
121
+}
122
+
123
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear {
124
+ cursor: pointer;
125
+ float: right;
126
+ font-weight: bold;
127
+ margin: 5px;
128
+ position: absolute;
129
+ right: 0;
130
+}
131
+
132
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice {
133
+ background-color: var(--darkened-bg);
134
+ border: 1px solid var(--border-color);
135
+ border-radius: 4px;
136
+ cursor: default;
137
+ float: left;
138
+ margin-right: 5px;
139
+ margin-top: 5px;
140
+ padding: 0 5px;
141
+}
142
+
143
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove {
144
+ color: var(--body-quiet-color);
145
+ cursor: pointer;
146
+ display: inline-block;
147
+ font-weight: bold;
148
+ margin-right: 2px;
149
+}
150
+
151
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover {
152
+ color: var(--body-fg);
153
+}
154
+
155
+.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline {
156
+ float: right;
157
+}
158
+
159
+.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
160
+ margin-left: 5px;
161
+ margin-right: auto;
162
+}
163
+
164
+.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
165
+ margin-left: 2px;
166
+ margin-right: auto;
167
+}
168
+
169
+.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple {
170
+ border: solid var(--body-quiet-color) 1px;
171
+ outline: 0;
172
+}
173
+
174
+.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple {
175
+ background-color: var(--darkened-bg);
176
+ cursor: default;
177
+}
178
+
179
+.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove {
180
+ display: none;
181
+}
182
+
183
+.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple {
184
+ border-top-left-radius: 0;
185
+ border-top-right-radius: 0;
186
+}
187
+
188
+.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple {
189
+ border-bottom-left-radius: 0;
190
+ border-bottom-right-radius: 0;
191
+}
192
+
193
+.select2-container--admin-autocomplete .select2-search--dropdown {
194
+ background: var(--darkened-bg);
195
+}
196
+
197
+.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field {
198
+ background: var(--body-bg);
199
+ color: var(--body-fg);
200
+ border: 1px solid var(--border-color);
201
+ border-radius: 4px;
202
+}
203
+
204
+.select2-container--admin-autocomplete .select2-search--inline .select2-search__field {
205
+ background: transparent;
206
+ color: var(--body-fg);
207
+ border: none;
208
+ outline: 0;
209
+ box-shadow: none;
210
+ -webkit-appearance: textfield;
211
+}
212
+
213
+.select2-container--admin-autocomplete .select2-results > .select2-results__options {
214
+ max-height: 200px;
215
+ overflow-y: auto;
216
+ color: var(--body-fg);
217
+ background: var(--body-bg);
218
+}
219
+
220
+.select2-container--admin-autocomplete .select2-results__option[role=group] {
221
+ padding: 0;
222
+}
223
+
224
+.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] {
225
+ color: var(--body-quiet-color);
226
+}
227
+
228
+.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] {
229
+ background-color: var(--selected-bg);
230
+ color: var(--body-fg);
231
+}
232
+
233
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option {
234
+ padding-left: 1em;
235
+}
236
+
237
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group {
238
+ padding-left: 0;
239
+}
240
+
241
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option {
242
+ margin-left: -1em;
243
+ padding-left: 2em;
244
+}
245
+
246
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
247
+ margin-left: -2em;
248
+ padding-left: 3em;
249
+}
250
+
251
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
252
+ margin-left: -3em;
253
+ padding-left: 4em;
254
+}
255
+
256
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
257
+ margin-left: -4em;
258
+ padding-left: 5em;
259
+}
260
+
261
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
262
+ margin-left: -5em;
263
+ padding-left: 6em;
264
+}
265
+
266
+.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] {
267
+ background-color: var(--primary);
268
+ color: var(--primary-fg);
269
+}
270
+
271
+.select2-container--admin-autocomplete .select2-results__group {
272
+ cursor: default;
273
+ display: block;
274
+ padding: 6px;
275
+}
276
+
277
+.errors .select2-selection {
278
+ border: 1px solid var(--error-fg);
279
+}
--- a/assets/admin/css/autocomplete.css
+++ b/assets/admin/css/autocomplete.css
@@ -0,0 +1,279 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/autocomplete.css
+++ b/assets/admin/css/autocomplete.css
@@ -0,0 +1,279 @@
1 select.admin-autocomplete {
2 width: 20em;
3 }
4
5 .select2-container--admin-autocomplete.select2-container {
6 min-height: 30px;
7 }
8
9 .select2-container--admin-autocomplete .select2-selection--single,
10 .select2-container--admin-autocomplete .select2-selection--multiple {
11 min-height: 30px;
12 padding: 0;
13 }
14
15 .select2-container--admin-autocomplete.select2-container--focus .select2-selection,
16 .select2-container--admin-autocomplete.select2-container--open .select2-selection {
17 border-color: var(--body-quiet-color);
18 min-height: 30px;
19 }
20
21 .select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single,
22 .select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single {
23 padding: 0;
24 }
25
26 .select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple,
27 .select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple {
28 padding: 0;
29 }
30
31 .select2-container--admin-autocomplete .select2-selection--single {
32 background-color: var(--body-bg);
33 border: 1px solid var(--border-color);
34 border-radius: 4px;
35 }
36
37 .select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered {
38 color: var(--body-fg);
39 line-height: 30px;
40 }
41
42 .select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear {
43 cursor: pointer;
44 float: right;
45 font-weight: bold;
46 }
47
48 .select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder {
49 color: var(--body-quiet-color);
50 }
51
52 .select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow {
53 height: 26px;
54 position: absolute;
55 top: 1px;
56 right: 1px;
57 width: 20px;
58 }
59
60 .select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b {
61 border-color: #888 transparent transparent transparent;
62 border-style: solid;
63 border-width: 5px 4px 0 4px;
64 height: 0;
65 left: 50%;
66 margin-left: -4px;
67 margin-top: -2px;
68 position: absolute;
69 top: 50%;
70 width: 0;
71 }
72
73 .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear {
74 float: left;
75 }
76
77 .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow {
78 left: 1px;
79 right: auto;
80 }
81
82 .select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single {
83 background-color: var(--darkened-bg);
84 cursor: default;
85 }
86
87 .select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear {
88 display: none;
89 }
90
91 .select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b {
92 border-color: transparent transparent #888 transparent;
93 border-width: 0 4px 5px 4px;
94 }
95
96 .select2-container--admin-autocomplete .select2-selection--multiple {
97 background-color: var(--body-bg);
98 border: 1px solid var(--border-color);
99 border-radius: 4px;
100 cursor: text;
101 }
102
103 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered {
104 box-sizing: border-box;
105 list-style: none;
106 margin: 0;
107 padding: 0 10px 5px 5px;
108 width: 100%;
109 display: flex;
110 flex-wrap: wrap;
111 }
112
113 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li {
114 list-style: none;
115 }
116
117 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder {
118 color: var(--body-quiet-color);
119 margin-top: 5px;
120 float: left;
121 }
122
123 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear {
124 cursor: pointer;
125 float: right;
126 font-weight: bold;
127 margin: 5px;
128 position: absolute;
129 right: 0;
130 }
131
132 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice {
133 background-color: var(--darkened-bg);
134 border: 1px solid var(--border-color);
135 border-radius: 4px;
136 cursor: default;
137 float: left;
138 margin-right: 5px;
139 margin-top: 5px;
140 padding: 0 5px;
141 }
142
143 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove {
144 color: var(--body-quiet-color);
145 cursor: pointer;
146 display: inline-block;
147 font-weight: bold;
148 margin-right: 2px;
149 }
150
151 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover {
152 color: var(--body-fg);
153 }
154
155 .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline {
156 float: right;
157 }
158
159 .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
160 margin-left: 5px;
161 margin-right: auto;
162 }
163
164 .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
165 margin-left: 2px;
166 margin-right: auto;
167 }
168
169 .select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple {
170 border: solid var(--body-quiet-color) 1px;
171 outline: 0;
172 }
173
174 .select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple {
175 background-color: var(--darkened-bg);
176 cursor: default;
177 }
178
179 .select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove {
180 display: none;
181 }
182
183 .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple {
184 border-top-left-radius: 0;
185 border-top-right-radius: 0;
186 }
187
188 .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple {
189 border-bottom-left-radius: 0;
190 border-bottom-right-radius: 0;
191 }
192
193 .select2-container--admin-autocomplete .select2-search--dropdown {
194 background: var(--darkened-bg);
195 }
196
197 .select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field {
198 background: var(--body-bg);
199 color: var(--body-fg);
200 border: 1px solid var(--border-color);
201 border-radius: 4px;
202 }
203
204 .select2-container--admin-autocomplete .select2-search--inline .select2-search__field {
205 background: transparent;
206 color: var(--body-fg);
207 border: none;
208 outline: 0;
209 box-shadow: none;
210 -webkit-appearance: textfield;
211 }
212
213 .select2-container--admin-autocomplete .select2-results > .select2-results__options {
214 max-height: 200px;
215 overflow-y: auto;
216 color: var(--body-fg);
217 background: var(--body-bg);
218 }
219
220 .select2-container--admin-autocomplete .select2-results__option[role=group] {
221 padding: 0;
222 }
223
224 .select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] {
225 color: var(--body-quiet-color);
226 }
227
228 .select2-container--admin-autocomplete .select2-results__option[aria-selected=true] {
229 background-color: var(--selected-bg);
230 color: var(--body-fg);
231 }
232
233 .select2-container--admin-autocomplete .select2-results__option .select2-results__option {
234 padding-left: 1em;
235 }
236
237 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group {
238 padding-left: 0;
239 }
240
241 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option {
242 margin-left: -1em;
243 padding-left: 2em;
244 }
245
246 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
247 margin-left: -2em;
248 padding-left: 3em;
249 }
250
251 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
252 margin-left: -3em;
253 padding-left: 4em;
254 }
255
256 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
257 margin-left: -4em;
258 padding-left: 5em;
259 }
260
261 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
262 margin-left: -5em;
263 padding-left: 6em;
264 }
265
266 .select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] {
267 background-color: var(--primary);
268 color: var(--primary-fg);
269 }
270
271 .select2-container--admin-autocomplete .select2-results__group {
272 cursor: default;
273 display: block;
274 padding: 6px;
275 }
276
277 .errors .select2-selection {
278 border: 1px solid var(--error-fg);
279 }
--- a/assets/admin/css/autocomplete.d24f10bdee41.css
+++ b/assets/admin/css/autocomplete.d24f10bdee41.css
@@ -0,0 +1,279 @@
1
+select.admin-autocomplete {
2
+ width: 20em;
3
+}
4
+
5
+.select2-container--admin-autocomplete.select2-container {
6
+ min-height: 30px;
7
+}
8
+
9
+.select2-container--admin-autocomplete .select2-selection--single,
10
+.select2-container--admin-autocomplete .select2-selection--multiple {
11
+ min-height: 30px;
12
+ padding: 0;
13
+}
14
+
15
+.select2-container--admin-autocomplete.select2-container--focus .select2-selection,
16
+.select2-container--admin-autocomplete.select2-container--open .select2-selection {
17
+ border-color: var(--body-quiet-color);
18
+ min-height: 30px;
19
+}
20
+
21
+.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single,
22
+.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single {
23
+ padding: 0;
24
+}
25
+
26
+.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple,
27
+.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple {
28
+ padding: 0;
29
+}
30
+
31
+.select2-container--admin-autocomplete .select2-selection--single {
32
+ background-color: var(--body-bg);
33
+ border: 1px solid var(--border-color);
34
+ border-radius: 4px;
35
+}
36
+
37
+.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered {
38
+ color: var(--body-fg);
39
+ line-height: 30px;
40
+}
41
+
42
+.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear {
43
+ cursor: pointer;
44
+ float: right;
45
+ font-weight: bold;
46
+}
47
+
48
+.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder {
49
+ color: var(--body-quiet-color);
50
+}
51
+
52
+.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow {
53
+ height: 26px;
54
+ position: absolute;
55
+ top: 1px;
56
+ right: 1px;
57
+ width: 20px;
58
+}
59
+
60
+.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b {
61
+ border-color: #888 transparent transparent transparent;
62
+ border-style: solid;
63
+ border-width: 5px 4px 0 4px;
64
+ height: 0;
65
+ left: 50%;
66
+ margin-left: -4px;
67
+ margin-top: -2px;
68
+ position: absolute;
69
+ top: 50%;
70
+ width: 0;
71
+}
72
+
73
+.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear {
74
+ float: left;
75
+}
76
+
77
+.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow {
78
+ left: 1px;
79
+ right: auto;
80
+}
81
+
82
+.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single {
83
+ background-color: var(--darkened-bg);
84
+ cursor: default;
85
+}
86
+
87
+.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear {
88
+ display: none;
89
+}
90
+
91
+.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b {
92
+ border-color: transparent transparent #888 transparent;
93
+ border-width: 0 4px 5px 4px;
94
+}
95
+
96
+.select2-container--admin-autocomplete .select2-selection--multiple {
97
+ background-color: var(--body-bg);
98
+ border: 1px solid var(--border-color);
99
+ border-radius: 4px;
100
+ cursor: text;
101
+}
102
+
103
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered {
104
+ box-sizing: border-box;
105
+ list-style: none;
106
+ margin: 0;
107
+ padding: 0 10px 5px 5px;
108
+ width: 100%;
109
+ display: flex;
110
+ flex-wrap: wrap;
111
+}
112
+
113
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li {
114
+ list-style: none;
115
+}
116
+
117
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder {
118
+ color: var(--body-quiet-color);
119
+ margin-top: 5px;
120
+ float: left;
121
+}
122
+
123
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear {
124
+ cursor: pointer;
125
+ float: right;
126
+ font-weight: bold;
127
+ margin: 5px;
128
+ position: absolute;
129
+ right: 0;
130
+}
131
+
132
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice {
133
+ background-color: var(--darkened-bg);
134
+ border: 1px solid var(--border-color);
135
+ border-radius: 4px;
136
+ cursor: default;
137
+ float: left;
138
+ margin-right: 5px;
139
+ margin-top: 5px;
140
+ padding: 0 5px;
141
+}
142
+
143
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove {
144
+ color: var(--body-quiet-color);
145
+ cursor: pointer;
146
+ display: inline-block;
147
+ font-weight: bold;
148
+ margin-right: 2px;
149
+}
150
+
151
+.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover {
152
+ color: var(--body-fg);
153
+}
154
+
155
+.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline {
156
+ float: right;
157
+}
158
+
159
+.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
160
+ margin-left: 5px;
161
+ margin-right: auto;
162
+}
163
+
164
+.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
165
+ margin-left: 2px;
166
+ margin-right: auto;
167
+}
168
+
169
+.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple {
170
+ border: solid var(--body-quiet-color) 1px;
171
+ outline: 0;
172
+}
173
+
174
+.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple {
175
+ background-color: var(--darkened-bg);
176
+ cursor: default;
177
+}
178
+
179
+.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove {
180
+ display: none;
181
+}
182
+
183
+.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple {
184
+ border-top-left-radius: 0;
185
+ border-top-right-radius: 0;
186
+}
187
+
188
+.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple {
189
+ border-bottom-left-radius: 0;
190
+ border-bottom-right-radius: 0;
191
+}
192
+
193
+.select2-container--admin-autocomplete .select2-search--dropdown {
194
+ background: var(--darkened-bg);
195
+}
196
+
197
+.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field {
198
+ background: var(--body-bg);
199
+ color: var(--body-fg);
200
+ border: 1px solid var(--border-color);
201
+ border-radius: 4px;
202
+}
203
+
204
+.select2-container--admin-autocomplete .select2-search--inline .select2-search__field {
205
+ background: transparent;
206
+ color: var(--body-fg);
207
+ border: none;
208
+ outline: 0;
209
+ box-shadow: none;
210
+ -webkit-appearance: textfield;
211
+}
212
+
213
+.select2-container--admin-autocomplete .select2-results > .select2-results__options {
214
+ max-height: 200px;
215
+ overflow-y: auto;
216
+ color: var(--body-fg);
217
+ background: var(--body-bg);
218
+}
219
+
220
+.select2-container--admin-autocomplete .select2-results__option[role=group] {
221
+ padding: 0;
222
+}
223
+
224
+.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] {
225
+ color: var(--body-quiet-color);
226
+}
227
+
228
+.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] {
229
+ background-color: var(--selected-bg);
230
+ color: var(--body-fg);
231
+}
232
+
233
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option {
234
+ padding-left: 1em;
235
+}
236
+
237
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group {
238
+ padding-left: 0;
239
+}
240
+
241
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option {
242
+ margin-left: -1em;
243
+ padding-left: 2em;
244
+}
245
+
246
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
247
+ margin-left: -2em;
248
+ padding-left: 3em;
249
+}
250
+
251
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
252
+ margin-left: -3em;
253
+ padding-left: 4em;
254
+}
255
+
256
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
257
+ margin-left: -4em;
258
+ padding-left: 5em;
259
+}
260
+
261
+.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
262
+ margin-left: -5em;
263
+ padding-left: 6em;
264
+}
265
+
266
+.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] {
267
+ background-color: var(--primary);
268
+ color: var(--primary-fg);
269
+}
270
+
271
+.select2-container--admin-autocomplete .select2-results__group {
272
+ cursor: default;
273
+ display: block;
274
+ padding: 6px;
275
+}
276
+
277
+.errors .select2-selection {
278
+ border: 1px solid var(--error-fg);
279
+}
--- a/assets/admin/css/autocomplete.d24f10bdee41.css
+++ b/assets/admin/css/autocomplete.d24f10bdee41.css
@@ -0,0 +1,279 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/autocomplete.d24f10bdee41.css
+++ b/assets/admin/css/autocomplete.d24f10bdee41.css
@@ -0,0 +1,279 @@
1 select.admin-autocomplete {
2 width: 20em;
3 }
4
5 .select2-container--admin-autocomplete.select2-container {
6 min-height: 30px;
7 }
8
9 .select2-container--admin-autocomplete .select2-selection--single,
10 .select2-container--admin-autocomplete .select2-selection--multiple {
11 min-height: 30px;
12 padding: 0;
13 }
14
15 .select2-container--admin-autocomplete.select2-container--focus .select2-selection,
16 .select2-container--admin-autocomplete.select2-container--open .select2-selection {
17 border-color: var(--body-quiet-color);
18 min-height: 30px;
19 }
20
21 .select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single,
22 .select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single {
23 padding: 0;
24 }
25
26 .select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple,
27 .select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple {
28 padding: 0;
29 }
30
31 .select2-container--admin-autocomplete .select2-selection--single {
32 background-color: var(--body-bg);
33 border: 1px solid var(--border-color);
34 border-radius: 4px;
35 }
36
37 .select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered {
38 color: var(--body-fg);
39 line-height: 30px;
40 }
41
42 .select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear {
43 cursor: pointer;
44 float: right;
45 font-weight: bold;
46 }
47
48 .select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder {
49 color: var(--body-quiet-color);
50 }
51
52 .select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow {
53 height: 26px;
54 position: absolute;
55 top: 1px;
56 right: 1px;
57 width: 20px;
58 }
59
60 .select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b {
61 border-color: #888 transparent transparent transparent;
62 border-style: solid;
63 border-width: 5px 4px 0 4px;
64 height: 0;
65 left: 50%;
66 margin-left: -4px;
67 margin-top: -2px;
68 position: absolute;
69 top: 50%;
70 width: 0;
71 }
72
73 .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear {
74 float: left;
75 }
76
77 .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow {
78 left: 1px;
79 right: auto;
80 }
81
82 .select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single {
83 background-color: var(--darkened-bg);
84 cursor: default;
85 }
86
87 .select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear {
88 display: none;
89 }
90
91 .select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b {
92 border-color: transparent transparent #888 transparent;
93 border-width: 0 4px 5px 4px;
94 }
95
96 .select2-container--admin-autocomplete .select2-selection--multiple {
97 background-color: var(--body-bg);
98 border: 1px solid var(--border-color);
99 border-radius: 4px;
100 cursor: text;
101 }
102
103 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered {
104 box-sizing: border-box;
105 list-style: none;
106 margin: 0;
107 padding: 0 10px 5px 5px;
108 width: 100%;
109 display: flex;
110 flex-wrap: wrap;
111 }
112
113 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li {
114 list-style: none;
115 }
116
117 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder {
118 color: var(--body-quiet-color);
119 margin-top: 5px;
120 float: left;
121 }
122
123 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear {
124 cursor: pointer;
125 float: right;
126 font-weight: bold;
127 margin: 5px;
128 position: absolute;
129 right: 0;
130 }
131
132 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice {
133 background-color: var(--darkened-bg);
134 border: 1px solid var(--border-color);
135 border-radius: 4px;
136 cursor: default;
137 float: left;
138 margin-right: 5px;
139 margin-top: 5px;
140 padding: 0 5px;
141 }
142
143 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove {
144 color: var(--body-quiet-color);
145 cursor: pointer;
146 display: inline-block;
147 font-weight: bold;
148 margin-right: 2px;
149 }
150
151 .select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover {
152 color: var(--body-fg);
153 }
154
155 .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline {
156 float: right;
157 }
158
159 .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
160 margin-left: 5px;
161 margin-right: auto;
162 }
163
164 .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
165 margin-left: 2px;
166 margin-right: auto;
167 }
168
169 .select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple {
170 border: solid var(--body-quiet-color) 1px;
171 outline: 0;
172 }
173
174 .select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple {
175 background-color: var(--darkened-bg);
176 cursor: default;
177 }
178
179 .select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove {
180 display: none;
181 }
182
183 .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple {
184 border-top-left-radius: 0;
185 border-top-right-radius: 0;
186 }
187
188 .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple {
189 border-bottom-left-radius: 0;
190 border-bottom-right-radius: 0;
191 }
192
193 .select2-container--admin-autocomplete .select2-search--dropdown {
194 background: var(--darkened-bg);
195 }
196
197 .select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field {
198 background: var(--body-bg);
199 color: var(--body-fg);
200 border: 1px solid var(--border-color);
201 border-radius: 4px;
202 }
203
204 .select2-container--admin-autocomplete .select2-search--inline .select2-search__field {
205 background: transparent;
206 color: var(--body-fg);
207 border: none;
208 outline: 0;
209 box-shadow: none;
210 -webkit-appearance: textfield;
211 }
212
213 .select2-container--admin-autocomplete .select2-results > .select2-results__options {
214 max-height: 200px;
215 overflow-y: auto;
216 color: var(--body-fg);
217 background: var(--body-bg);
218 }
219
220 .select2-container--admin-autocomplete .select2-results__option[role=group] {
221 padding: 0;
222 }
223
224 .select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] {
225 color: var(--body-quiet-color);
226 }
227
228 .select2-container--admin-autocomplete .select2-results__option[aria-selected=true] {
229 background-color: var(--selected-bg);
230 color: var(--body-fg);
231 }
232
233 .select2-container--admin-autocomplete .select2-results__option .select2-results__option {
234 padding-left: 1em;
235 }
236
237 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group {
238 padding-left: 0;
239 }
240
241 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option {
242 margin-left: -1em;
243 padding-left: 2em;
244 }
245
246 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
247 margin-left: -2em;
248 padding-left: 3em;
249 }
250
251 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
252 margin-left: -3em;
253 padding-left: 4em;
254 }
255
256 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
257 margin-left: -4em;
258 padding-left: 5em;
259 }
260
261 .select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
262 margin-left: -5em;
263 padding-left: 6em;
264 }
265
266 .select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] {
267 background-color: var(--primary);
268 color: var(--primary-fg);
269 }
270
271 .select2-container--admin-autocomplete .select2-results__group {
272 cursor: default;
273 display: block;
274 padding: 6px;
275 }
276
277 .errors .select2-selection {
278 border: 1px solid var(--error-fg);
279 }
--- a/assets/admin/css/base.96c479cedf7a.css
+++ b/assets/admin/css/base.96c479cedf7a.css
@@ -0,0 +1,1180 @@
1
+/*
2
+ DJANGO Admin styles
3
+*/
4
+
5
+/* VARIABLE DEFINITIONS */
6
+html[data-theme="light"],
7
+:root {
8
+ --primary: #79aec8;
9
+ --secondary: #417690;
10
+ --accent: #f5dd5d;
11
+ --primary-fg: #fff;
12
+
13
+ --body-fg: #333;
14
+ --body-bg: #fff;
15
+ --body-quiet-color: #666;
16
+ --body-medium-color: #444;
17
+ --body-loud-color: #000;
18
+
19
+ --header-color: #ffc;
20
+ --header-branding-color: var(--accent);
21
+ --header-bg: var(--secondary);
22
+ --header-link-color: var(--primary-fg);
23
+
24
+ --breadcrumbs-fg: #c4dce8;
25
+ --breadcrumbs-link-fg: var(--body-bg);
26
+ --breadcrumbs-bg: #264b5d;
27
+
28
+ --link-fg: #417893;
29
+ --link-hover-color: #036;
30
+ --link-selected-fg: var(--secondary);
31
+
32
+ --hairline-color: #e8e8e8;
33
+ --border-color: #ccc;
34
+
35
+ --error-fg: #ba2121;
36
+
37
+ --message-success-bg: #dfd;
38
+ --message-warning-bg: #ffc;
39
+ --message-error-bg: #ffefef;
40
+
41
+ --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */
42
+ --selected-bg: #e4e4e4; /* E.g. selected table cells */
43
+ --selected-row: #ffc;
44
+
45
+ --button-fg: #fff;
46
+ --button-bg: var(--secondary);
47
+ --button-hover-bg: #205067;
48
+ --default-button-bg: #205067;
49
+ --default-button-hover-bg: var(--secondary);
50
+ --close-button-bg: #747474;
51
+ --close-button-hover-bg: #333;
52
+ --delete-button-bg: #ba2121;
53
+ --delete-button-hover-bg: #a41515;
54
+
55
+ --object-tools-fg: var(--button-fg);
56
+ --object-tools-bg: var(--close-button-bg);
57
+ --object-tools-hover-bg: var(--close-button-hover-bg);
58
+
59
+ --font-family-primary:
60
+ "Segoe UI",
61
+ system-ui,
62
+ Roboto,
63
+ "Helvetica Neue",
64
+ Arial,
65
+ sans-serif,
66
+ "Apple Color Emoji",
67
+ "Segoe UI Emoji",
68
+ "Segoe UI Symbol",
69
+ "Noto Color Emoji";
70
+ --font-family-monospace:
71
+ ui-monospace,
72
+ Menlo,
73
+ Monaco,
74
+ "Cascadia Mono",
75
+ "Segoe UI Mono",
76
+ "Roboto Mono",
77
+ "Oxygen Mono",
78
+ "Ubuntu Monospace",
79
+ "Source Code Pro",
80
+ "Fira Mono",
81
+ "Droid Sans Mono",
82
+ "Courier New",
83
+ monospace,
84
+ "Apple Color Emoji",
85
+ "Segoe UI Emoji",
86
+ "Segoe UI Symbol",
87
+ "Noto Color Emoji";
88
+
89
+ color-scheme: light;
90
+}
91
+
92
+html, body {
93
+ height: 100%;
94
+}
95
+
96
+body {
97
+ margin: 0;
98
+ padding: 0;
99
+ font-size: 0.875rem;
100
+ font-family: var(--font-family-primary);
101
+ color: var(--body-fg);
102
+ background: var(--body-bg);
103
+}
104
+
105
+/* LINKS */
106
+
107
+a:link, a:visited {
108
+ color: var(--link-fg);
109
+ text-decoration: none;
110
+ transition: color 0.15s, background 0.15s;
111
+}
112
+
113
+a:focus, a:hover {
114
+ color: var(--link-hover-color);
115
+}
116
+
117
+a:focus {
118
+ text-decoration: underline;
119
+}
120
+
121
+a img {
122
+ border: none;
123
+}
124
+
125
+a.section:link, a.section:visited {
126
+ color: var(--header-link-color);
127
+ text-decoration: none;
128
+}
129
+
130
+a.section:focus, a.section:hover {
131
+ text-decoration: underline;
132
+}
133
+
134
+/* GLOBAL DEFAULTS */
135
+
136
+p, ol, ul, dl {
137
+ margin: .2em 0 .8em 0;
138
+}
139
+
140
+p {
141
+ padding: 0;
142
+ line-height: 140%;
143
+}
144
+
145
+h1,h2,h3,h4,h5 {
146
+ font-weight: bold;
147
+}
148
+
149
+h1 {
150
+ margin: 0 0 20px;
151
+ font-weight: 300;
152
+ font-size: 1.25rem;
153
+}
154
+
155
+h2 {
156
+ font-size: 1rem;
157
+ margin: 1em 0 .5em 0;
158
+}
159
+
160
+h2.subhead {
161
+ font-weight: normal;
162
+ margin-top: 0;
163
+}
164
+
165
+h3 {
166
+ font-size: 0.875rem;
167
+ margin: .8em 0 .3em 0;
168
+ color: var(--body-medium-color);
169
+ font-weight: bold;
170
+}
171
+
172
+h4 {
173
+ font-size: 0.75rem;
174
+ margin: 1em 0 .8em 0;
175
+ padding-bottom: 3px;
176
+ color: var(--body-medium-color);
177
+}
178
+
179
+h5 {
180
+ font-size: 0.625rem;
181
+ margin: 1.5em 0 .5em 0;
182
+ color: var(--body-quiet-color);
183
+ text-transform: uppercase;
184
+ letter-spacing: 1px;
185
+}
186
+
187
+ul > li {
188
+ list-style-type: square;
189
+ padding: 1px 0;
190
+}
191
+
192
+li ul {
193
+ margin-bottom: 0;
194
+}
195
+
196
+li, dt, dd {
197
+ font-size: 0.8125rem;
198
+ line-height: 1.25rem;
199
+}
200
+
201
+dt {
202
+ font-weight: bold;
203
+ margin-top: 4px;
204
+}
205
+
206
+dd {
207
+ margin-left: 0;
208
+}
209
+
210
+form {
211
+ margin: 0;
212
+ padding: 0;
213
+}
214
+
215
+fieldset {
216
+ margin: 0;
217
+ min-width: 0;
218
+ padding: 0;
219
+ border: none;
220
+ border-top: 1px solid var(--hairline-color);
221
+}
222
+
223
+details summary {
224
+ cursor: pointer;
225
+}
226
+
227
+blockquote {
228
+ font-size: 0.6875rem;
229
+ color: #777;
230
+ margin-left: 2px;
231
+ padding-left: 10px;
232
+ border-left: 5px solid #ddd;
233
+}
234
+
235
+code, pre {
236
+ font-family: var(--font-family-monospace);
237
+ color: var(--body-quiet-color);
238
+ font-size: 0.75rem;
239
+ overflow-x: auto;
240
+}
241
+
242
+pre.literal-block {
243
+ margin: 10px;
244
+ background: var(--darkened-bg);
245
+ padding: 6px 8px;
246
+}
247
+
248
+code strong {
249
+ color: #930;
250
+}
251
+
252
+hr {
253
+ clear: both;
254
+ color: var(--hairline-color);
255
+ background-color: var(--hairline-color);
256
+ height: 1px;
257
+ border: none;
258
+ margin: 0;
259
+ padding: 0;
260
+ line-height: 1px;
261
+}
262
+
263
+/* TEXT STYLES & MODIFIERS */
264
+
265
+.small {
266
+ font-size: 0.6875rem;
267
+}
268
+
269
+.mini {
270
+ font-size: 0.625rem;
271
+}
272
+
273
+.help, p.help, form p.help, div.help, form div.help, div.help li {
274
+ font-size: 0.6875rem;
275
+ color: var(--body-quiet-color);
276
+}
277
+
278
+div.help ul {
279
+ margin-bottom: 0;
280
+}
281
+
282
+.help-tooltip {
283
+ cursor: help;
284
+}
285
+
286
+p img, h1 img, h2 img, h3 img, h4 img, td img {
287
+ vertical-align: middle;
288
+}
289
+
290
+.quiet, a.quiet:link, a.quiet:visited {
291
+ color: var(--body-quiet-color);
292
+ font-weight: normal;
293
+}
294
+
295
+.clear {
296
+ clear: both;
297
+}
298
+
299
+.nowrap {
300
+ white-space: nowrap;
301
+}
302
+
303
+.hidden {
304
+ display: none !important;
305
+}
306
+
307
+/* TABLES */
308
+
309
+table {
310
+ border-collapse: collapse;
311
+ border-color: var(--border-color);
312
+}
313
+
314
+td, th {
315
+ font-size: 0.8125rem;
316
+ line-height: 1rem;
317
+ border-bottom: 1px solid var(--hairline-color);
318
+ vertical-align: top;
319
+ padding: 8px;
320
+}
321
+
322
+th {
323
+ font-weight: 500;
324
+ text-align: left;
325
+}
326
+
327
+thead th,
328
+tfoot td {
329
+ color: var(--body-quiet-color);
330
+ padding: 5px 10px;
331
+ font-size: 0.6875rem;
332
+ background: var(--body-bg);
333
+ border: none;
334
+ border-top: 1px solid var(--hairline-color);
335
+ border-bottom: 1px solid var(--hairline-color);
336
+}
337
+
338
+tfoot td {
339
+ border-bottom: none;
340
+ border-top: 1px solid var(--hairline-color);
341
+}
342
+
343
+thead th.required {
344
+ font-weight: bold;
345
+}
346
+
347
+tr.alt {
348
+ background: var(--darkened-bg);
349
+}
350
+
351
+tr:nth-child(odd), .row-form-errors {
352
+ background: var(--body-bg);
353
+}
354
+
355
+tr:nth-child(even),
356
+tr:nth-child(even) .errorlist,
357
+tr:nth-child(odd) + .row-form-errors,
358
+tr:nth-child(odd) + .row-form-errors .errorlist {
359
+ background: var(--darkened-bg);
360
+}
361
+
362
+/* SORTABLE TABLES */
363
+
364
+thead th {
365
+ padding: 5px 10px;
366
+ line-height: normal;
367
+ text-transform: uppercase;
368
+ background: var(--darkened-bg);
369
+}
370
+
371
+thead th a:link, thead th a:visited {
372
+ color: var(--body-quiet-color);
373
+}
374
+
375
+thead th.sorted {
376
+ background: var(--selected-bg);
377
+}
378
+
379
+thead th.sorted .text {
380
+ padding-right: 42px;
381
+}
382
+
383
+table thead th .text span {
384
+ padding: 8px 10px;
385
+ display: block;
386
+}
387
+
388
+table thead th .text a {
389
+ display: block;
390
+ cursor: pointer;
391
+ padding: 8px 10px;
392
+}
393
+
394
+table thead th .text a:focus, table thead th .text a:hover {
395
+ background: var(--selected-bg);
396
+}
397
+
398
+thead th.sorted a.sortremove {
399
+ visibility: hidden;
400
+}
401
+
402
+table thead th.sorted:hover a.sortremove {
403
+ visibility: visible;
404
+}
405
+
406
+table thead th.sorted .sortoptions {
407
+ display: block;
408
+ padding: 9px 5px 0 5px;
409
+ float: right;
410
+ text-align: right;
411
+}
412
+
413
+table thead th.sorted .sortpriority {
414
+ font-size: .8em;
415
+ min-width: 12px;
416
+ text-align: center;
417
+ vertical-align: 3px;
418
+ margin-left: 2px;
419
+ margin-right: 2px;
420
+}
421
+
422
+table thead th.sorted .sortoptions a {
423
+ position: relative;
424
+ width: 14px;
425
+ height: 14px;
426
+ display: inline-block;
427
+ background: url("../img/sorting-icons.3a097b59f104.svg") 0 0 no-repeat;
428
+ background-size: 14px auto;
429
+}
430
+
431
+table thead th.sorted .sortoptions a.sortremove {
432
+ background-position: 0 0;
433
+}
434
+
435
+table thead th.sorted .sortoptions a.sortremove:after {
436
+ content: '\\';
437
+ position: absolute;
438
+ top: -6px;
439
+ left: 3px;
440
+ font-weight: 200;
441
+ font-size: 1.125rem;
442
+ color: var(--body-quiet-color);
443
+}
444
+
445
+table thead th.sorted .sortoptions a.sortremove:focus:after,
446
+table thead th.sorted .sortoptions a.sortremove:hover:after {
447
+ color: var(--link-fg);
448
+}
449
+
450
+table thead th.sorted .sortoptions a.sortremove:focus,
451
+table thead th.sorted .sortoptions a.sortremove:hover {
452
+ background-position: 0 -14px;
453
+}
454
+
455
+table thead th.sorted .sortoptions a.ascending {
456
+ background-position: 0 -28px;
457
+}
458
+
459
+table thead th.sorted .sortoptions a.ascending:focus,
460
+table thead th.sorted .sortoptions a.ascending:hover {
461
+ background-position: 0 -42px;
462
+}
463
+
464
+table thead th.sorted .sortoptions a.descending {
465
+ top: 1px;
466
+ background-position: 0 -56px;
467
+}
468
+
469
+table thead th.sorted .sortoptions a.descending:focus,
470
+table thead th.sorted .sortoptions a.descending:hover {
471
+ background-position: 0 -70px;
472
+}
473
+
474
+/* FORM DEFAULTS */
475
+
476
+input, textarea, select, .form-row p, form .button {
477
+ margin: 2px 0;
478
+ padding: 2px 3px;
479
+ vertical-align: middle;
480
+ font-family: var(--font-family-primary);
481
+ font-weight: normal;
482
+ font-size: 0.8125rem;
483
+}
484
+.form-row div.help {
485
+ padding: 2px 3px;
486
+}
487
+
488
+textarea {
489
+ vertical-align: top;
490
+}
491
+
492
+/*
493
+Minifiers remove the default (text) "type" attribute from "input" HTML tags.
494
+Add input:not([type]) to make the CSS stylesheet work the same.
495
+*/
496
+input:not([type]), input[type=text], input[type=password], input[type=email],
497
+input[type=url], input[type=number], input[type=tel], textarea, select,
498
+.vTextField {
499
+ border: 1px solid var(--border-color);
500
+ border-radius: 4px;
501
+ padding: 5px 6px;
502
+ margin-top: 0;
503
+ color: var(--body-fg);
504
+ background-color: var(--body-bg);
505
+}
506
+
507
+/*
508
+Minifiers remove the default (text) "type" attribute from "input" HTML tags.
509
+Add input:not([type]) to make the CSS stylesheet work the same.
510
+*/
511
+input:not([type]):focus, input[type=text]:focus, input[type=password]:focus,
512
+input[type=email]:focus, input[type=url]:focus, input[type=number]:focus,
513
+input[type=tel]:focus, textarea:focus, select:focus, .vTextField:focus {
514
+ border-color: var(--body-quiet-color);
515
+}
516
+
517
+select {
518
+ height: 1.875rem;
519
+}
520
+
521
+select[multiple] {
522
+ /* Allow HTML size attribute to override the height in the rule above. */
523
+ height: auto;
524
+ min-height: 150px;
525
+}
526
+
527
+/* FORM BUTTONS */
528
+
529
+.button, input[type=submit], input[type=button], .submit-row input, a.button {
530
+ background: var(--button-bg);
531
+ padding: 10px 15px;
532
+ border: none;
533
+ border-radius: 4px;
534
+ color: var(--button-fg);
535
+ cursor: pointer;
536
+ transition: background 0.15s;
537
+}
538
+
539
+a.button {
540
+ padding: 4px 5px;
541
+}
542
+
543
+.button:active, input[type=submit]:active, input[type=button]:active,
544
+.button:focus, input[type=submit]:focus, input[type=button]:focus,
545
+.button:hover, input[type=submit]:hover, input[type=button]:hover {
546
+ background: var(--button-hover-bg);
547
+}
548
+
549
+.button[disabled], input[type=submit][disabled], input[type=button][disabled] {
550
+ opacity: 0.4;
551
+}
552
+
553
+.button.default, input[type=submit].default, .submit-row input.default {
554
+ border: none;
555
+ font-weight: 400;
556
+ background: var(--default-button-bg);
557
+}
558
+
559
+.button.default:active, input[type=submit].default:active,
560
+.button.default:focus, input[type=submit].default:focus,
561
+.button.default:hover, input[type=submit].default:hover {
562
+ background: var(--default-button-hover-bg);
563
+}
564
+
565
+.button[disabled].default,
566
+input[type=submit][disabled].default,
567
+input[type=button][disabled].default {
568
+ opacity: 0.4;
569
+}
570
+
571
+
572
+/* MODULES */
573
+
574
+.module {
575
+ border: none;
576
+ margin-bottom: 30px;
577
+ background: var(--body-bg);
578
+}
579
+
580
+.module p, .module ul, .module h3, .module h4, .module dl, .module pre {
581
+ padding-left: 10px;
582
+ padding-right: 10px;
583
+}
584
+
585
+.module blockquote {
586
+ margin-left: 12px;
587
+}
588
+
589
+.module ul, .module ol {
590
+ margin-left: 1.5em;
591
+}
592
+
593
+.module h3 {
594
+ margin-top: .6em;
595
+}
596
+
597
+.module h2, .module caption, .inline-group h2 {
598
+ margin: 0;
599
+ padding: 8px;
600
+ font-weight: 400;
601
+ font-size: 0.8125rem;
602
+ text-align: left;
603
+ background: var(--header-bg);
604
+ color: var(--header-link-color);
605
+}
606
+
607
+.module caption,
608
+.inline-group h2 {
609
+ font-size: 0.75rem;
610
+ letter-spacing: 0.5px;
611
+ text-transform: uppercase;
612
+}
613
+
614
+.module table {
615
+ border-collapse: collapse;
616
+}
617
+
618
+/* MESSAGES & ERRORS */
619
+
620
+ul.messagelist {
621
+ padding: 0;
622
+ margin: 0;
623
+}
624
+
625
+ul.messagelist li {
626
+ display: block;
627
+ font-weight: 400;
628
+ font-size: 0.8125rem;
629
+ padding: 10px 10px 10px 65px;
630
+ margin: 0 0 10px 0;
631
+ background: var(--message-success-bg) url("../img/icon-yes.d2f9f035226a.svg") 40px 12px no-repeat;
632
+ background-size: 16px auto;
633
+ color: var(--body-fg);
634
+ word-break: break-word;
635
+}
636
+
637
+ul.messagelist li.warning {
638
+ background: var(--message-warning-bg) url("../img/icon-alert.034cc7d8a67f.svg") 40px 14px no-repeat;
639
+ background-size: 14px auto;
640
+}
641
+
642
+ul.messagelist li.error {
643
+ background: var(--message-error-bg) url("../img/icon-no.439e821418cd.svg") 40px 12px no-repeat;
644
+ background-size: 16px auto;
645
+}
646
+
647
+.errornote {
648
+ font-size: 0.875rem;
649
+ font-weight: 700;
650
+ display: block;
651
+ padding: 10px 12px;
652
+ margin: 0 0 10px 0;
653
+ color: var(--error-fg);
654
+ border: 1px solid var(--error-fg);
655
+ border-radius: 4px;
656
+ background-color: var(--body-bg);
657
+ background-position: 5px 12px;
658
+ overflow-wrap: break-word;
659
+}
660
+
661
+ul.errorlist {
662
+ margin: 0 0 4px;
663
+ padding: 0;
664
+ color: var(--error-fg);
665
+ background: var(--body-bg);
666
+}
667
+
668
+ul.errorlist li {
669
+ font-size: 0.8125rem;
670
+ display: block;
671
+ margin-bottom: 4px;
672
+ overflow-wrap: break-word;
673
+}
674
+
675
+ul.errorlist li:first-child {
676
+ margin-top: 0;
677
+}
678
+
679
+ul.errorlist li a {
680
+ color: inherit;
681
+ text-decoration: underline;
682
+}
683
+
684
+td ul.errorlist {
685
+ margin: 0;
686
+ padding: 0;
687
+}
688
+
689
+td ul.errorlist li {
690
+ margin: 0;
691
+}
692
+
693
+.form-row.errors {
694
+ margin: 0;
695
+ border: none;
696
+ border-bottom: 1px solid var(--hairline-color);
697
+ background: none;
698
+}
699
+
700
+.form-row.errors ul.errorlist li {
701
+ padding-left: 0;
702
+}
703
+
704
+.errors input, .errors select, .errors textarea,
705
+td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea {
706
+ border: 1px solid var(--error-fg);
707
+}
708
+
709
+.description {
710
+ font-size: 0.75rem;
711
+ padding: 5px 0 0 12px;
712
+}
713
+
714
+/* BREADCRUMBS */
715
+
716
+div.breadcrumbs {
717
+ background: var(--breadcrumbs-bg);
718
+ padding: 10px 40px;
719
+ border: none;
720
+ color: var(--breadcrumbs-fg);
721
+ text-align: left;
722
+}
723
+
724
+div.breadcrumbs a {
725
+ color: var(--breadcrumbs-link-fg);
726
+}
727
+
728
+div.breadcrumbs a:focus, div.breadcrumbs a:hover {
729
+ color: var(--breadcrumbs-fg);
730
+}
731
+
732
+/* ACTION ICONS */
733
+
734
+.viewlink, .inlineviewlink {
735
+ padding-left: 16px;
736
+ background: url("../img/icon-viewlink.41eb31f7826e.svg") 0 1px no-repeat;
737
+}
738
+
739
+.hidelink {
740
+ padding-left: 16px;
741
+ background: url("../img/icon-hidelink.8d245a995e18.svg") 0 1px no-repeat;
742
+}
743
+
744
+.addlink {
745
+ padding-left: 16px;
746
+ background: url("../img/icon-addlink.073aeb1feda7.svg") 0 1px no-repeat;
747
+}
748
+
749
+.changelink, .inlinechangelink {
750
+ padding-left: 16px;
751
+ background: url("../img/icon-changelink.7eddb320e61f.svg") 0 1px no-repeat;
752
+}
753
+
754
+.deletelink {
755
+ padding-left: 16px;
756
+ background: url("../img/icon-deletelink.564ef9dc3854.svg") 0 1px no-repeat;
757
+}
758
+
759
+a.deletelink:link, a.deletelink:visited {
760
+ color: #CC3434; /* XXX Probably unused? */
761
+}
762
+
763
+a.deletelink:focus, a.deletelink:hover {
764
+ color: #993333; /* XXX Probably unused? */
765
+ text-decoration: none;
766
+}
767
+
768
+/* OBJECT TOOLS */
769
+
770
+.object-tools {
771
+ font-size: 0.625rem;
772
+ font-weight: bold;
773
+ padding-left: 0;
774
+ float: right;
775
+ position: relative;
776
+ margin-top: -48px;
777
+}
778
+
779
+.object-tools li {
780
+ display: block;
781
+ float: left;
782
+ margin-left: 5px;
783
+ height: 1rem;
784
+}
785
+
786
+.object-tools a {
787
+ border-radius: 15px;
788
+}
789
+
790
+.object-tools a:link, .object-tools a:visited {
791
+ display: block;
792
+ float: left;
793
+ padding: 3px 12px;
794
+ background: var(--object-tools-bg);
795
+ color: var(--object-tools-fg);
796
+ font-weight: 400;
797
+ font-size: 0.6875rem;
798
+ text-transform: uppercase;
799
+ letter-spacing: 0.5px;
800
+}
801
+
802
+.object-tools a:focus, .object-tools a:hover {
803
+ background-color: var(--object-tools-hover-bg);
804
+}
805
+
806
+.object-tools a:focus{
807
+ text-decoration: none;
808
+}
809
+
810
+.object-tools a.viewsitelink, .object-tools a.addlink {
811
+ background-repeat: no-repeat;
812
+ background-position: right 7px center;
813
+ padding-right: 26px;
814
+}
815
+
816
+.object-tools a.viewsitelink {
817
+ background-image: url("../img/tooltag-arrowright.bbfb788a849e.svg");
818
+}
819
+
820
+.object-tools a.addlink {
821
+ background-image: url("../img/tooltag-add.e59d620a9742.svg");
822
+}
823
+
824
+/* OBJECT HISTORY */
825
+
826
+#change-history table {
827
+ width: 100%;
828
+}
829
+
830
+#change-history table tbody th {
831
+ width: 16em;
832
+}
833
+
834
+#change-history .paginator {
835
+ color: var(--body-quiet-color);
836
+ border-bottom: 1px solid var(--hairline-color);
837
+ background: var(--body-bg);
838
+ overflow: hidden;
839
+}
840
+
841
+/* PAGE STRUCTURE */
842
+
843
+#container {
844
+ position: relative;
845
+ width: 100%;
846
+ min-width: 980px;
847
+ padding: 0;
848
+ display: flex;
849
+ flex-direction: column;
850
+ height: 100%;
851
+}
852
+
853
+#container > .main {
854
+ display: flex;
855
+ flex: 1 0 auto;
856
+}
857
+
858
+.main > .content {
859
+ flex: 1 0;
860
+ max-width: 100%;
861
+}
862
+
863
+.skip-to-content-link {
864
+ position: absolute;
865
+ top: -999px;
866
+ margin: 5px;
867
+ padding: 5px;
868
+ background: var(--body-bg);
869
+ z-index: 1;
870
+}
871
+
872
+.skip-to-content-link:focus {
873
+ left: 0px;
874
+ top: 0px;
875
+}
876
+
877
+#content {
878
+ padding: 20px 40px;
879
+}
880
+
881
+.dashboard #content {
882
+ width: 600px;
883
+}
884
+
885
+#content-main {
886
+ float: left;
887
+ width: 100%;
888
+}
889
+
890
+#content-related {
891
+ float: right;
892
+ width: 260px;
893
+ position: relative;
894
+ margin-right: -300px;
895
+}
896
+
897
+@media (forced-colors: active) {
898
+ #content-related {
899
+ border: 1px solid;
900
+ }
901
+}
902
+
903
+/* COLUMN TYPES */
904
+
905
+.colMS {
906
+ margin-right: 300px;
907
+}
908
+
909
+.colSM {
910
+ margin-left: 300px;
911
+}
912
+
913
+.colSM #content-related {
914
+ float: left;
915
+ margin-right: 0;
916
+ margin-left: -300px;
917
+}
918
+
919
+.colSM #content-main {
920
+ float: right;
921
+}
922
+
923
+.popup .colM {
924
+ width: auto;
925
+}
926
+
927
+/* HEADER */
928
+
929
+#header {
930
+ width: auto;
931
+ height: auto;
932
+ display: flex;
933
+ justify-content: space-between;
934
+ align-items: center;
935
+ padding: 10px 40px;
936
+ background: var(--header-bg);
937
+ color: var(--header-color);
938
+}
939
+
940
+#header a:link, #header a:visited, #logout-form button {
941
+ color: var(--header-link-color);
942
+}
943
+
944
+#header a:focus , #header a:hover {
945
+ text-decoration: underline;
946
+}
947
+
948
+@media (forced-colors: active) {
949
+ #header {
950
+ border-bottom: 1px solid;
951
+ }
952
+}
953
+
954
+#branding {
955
+ display: flex;
956
+}
957
+
958
+#site-name {
959
+ padding: 0;
960
+ margin: 0;
961
+ margin-inline-end: 20px;
962
+ font-weight: 300;
963
+ font-size: 1.5rem;
964
+ color: var(--header-branding-color);
965
+}
966
+
967
+#site-name a:link, #site-name a:visited {
968
+ color: var(--accent);
969
+}
970
+
971
+#branding h2 {
972
+ padding: 0 10px;
973
+ font-size: 0.875rem;
974
+ margin: -8px 0 8px 0;
975
+ font-weight: normal;
976
+ color: var(--header-color);
977
+}
978
+
979
+#branding a:hover {
980
+ text-decoration: none;
981
+}
982
+
983
+#logout-form {
984
+ display: inline;
985
+}
986
+
987
+#logout-form button {
988
+ background: none;
989
+ border: 0;
990
+ cursor: pointer;
991
+ font-family: var(--font-family-primary);
992
+}
993
+
994
+#user-tools {
995
+ float: right;
996
+ margin: 0 0 0 20px;
997
+ text-align: right;
998
+}
999
+
1000
+#user-tools, #logout-form button{
1001
+ padding: 0;
1002
+ font-weight: 300;
1003
+ font-size: 0.6875rem;
1004
+ letter-spacing: 0.5px;
1005
+ text-transform: uppercase;
1006
+}
1007
+
1008
+#user-tools a, #logout-form button {
1009
+ border-bottom: 1px solid rgba(255, 255, 255, 0.25);
1010
+}
1011
+
1012
+#user-tools a:focus, #user-tools a:hover,
1013
+#logout-form button:active, #logout-form button:hover {
1014
+ text-decoration: none;
1015
+ border-bottom: 0;
1016
+}
1017
+
1018
+#logout-form button:active, #logout-form button:hover {
1019
+ margin-bottom: 1px;
1020
+}
1021
+
1022
+/* SIDEBAR */
1023
+
1024
+#content-related {
1025
+ background: var(--darkened-bg);
1026
+}
1027
+
1028
+#content-related .module {
1029
+ background: none;
1030
+}
1031
+
1032
+#content-related h3 {
1033
+ color: var(--body-quiet-color);
1034
+ padding: 0 16px;
1035
+ margin: 0 0 16px;
1036
+}
1037
+
1038
+#content-related h4 {
1039
+ font-size: 0.8125rem;
1040
+}
1041
+
1042
+#content-related p {
1043
+ padding-left: 16px;
1044
+ padding-right: 16px;
1045
+}
1046
+
1047
+#content-related .actionlist {
1048
+ padding: 0;
1049
+ margin: 16px;
1050
+}
1051
+
1052
+#content-related .actionlist li {
1053
+ line-height: 1.2;
1054
+ margin-bottom: 10px;
1055
+ padding-left: 18px;
1056
+}
1057
+
1058
+#content-related .module h2 {
1059
+ background: none;
1060
+ padding: 16px;
1061
+ margin-bottom: 16px;
1062
+ border-bottom: 1px solid var(--hairline-color);
1063
+ font-size: 1.125rem;
1064
+ color: var(--body-fg);
1065
+}
1066
+
1067
+.delete-confirmation form input[type="submit"] {
1068
+ background: var(--delete-button-bg);
1069
+ border-radius: 4px;
1070
+ padding: 10px 15px;
1071
+ color: var(--button-fg);
1072
+}
1073
+
1074
+.delete-confirmation form input[type="submit"]:active,
1075
+.delete-confirmation form input[type="submit"]:focus,
1076
+.delete-confirmation form input[type="submit"]:hover {
1077
+ background: var(--delete-button-hover-bg);
1078
+}
1079
+
1080
+.delete-confirmation form .cancel-link {
1081
+ display: inline-block;
1082
+ vertical-align: middle;
1083
+ height: 0.9375rem;
1084
+ line-height: 0.9375rem;
1085
+ border-radius: 4px;
1086
+ padding: 10px 15px;
1087
+ color: var(--button-fg);
1088
+ background: var(--close-button-bg);
1089
+ margin: 0 0 0 10px;
1090
+}
1091
+
1092
+.delete-confirmation form .cancel-link:active,
1093
+.delete-confirmation form .cancel-link:focus,
1094
+.delete-confirmation form .cancel-link:hover {
1095
+ background: var(--close-button-hover-bg);
1096
+}
1097
+
1098
+/* POPUP */
1099
+.popup #content {
1100
+ padding: 20px;
1101
+}
1102
+
1103
+.popup #container {
1104
+ min-width: 0;
1105
+}
1106
+
1107
+.popup #header {
1108
+ padding: 10px 20px;
1109
+}
1110
+
1111
+/* PAGINATOR */
1112
+
1113
+.paginator {
1114
+ display: flex;
1115
+ align-items: center;
1116
+ gap: 4px;
1117
+ font-size: 0.8125rem;
1118
+ padding-top: 10px;
1119
+ padding-bottom: 10px;
1120
+ line-height: 22px;
1121
+ margin: 0;
1122
+ border-top: 1px solid var(--hairline-color);
1123
+ width: 100%;
1124
+ box-sizing: border-box;
1125
+}
1126
+
1127
+.paginator a:link, .paginator a:visited {
1128
+ padding: 2px 6px;
1129
+ background: var(--button-bg);
1130
+ text-decoration: none;
1131
+ color: var(--button-fg);
1132
+}
1133
+
1134
+.paginator a.showall {
1135
+ border: none;
1136
+ background: none;
1137
+ color: var(--link-fg);
1138
+}
1139
+
1140
+.paginator a.showall:focus, .paginator a.showall:hover {
1141
+ background: none;
1142
+ color: var(--link-hover-color);
1143
+}
1144
+
1145
+.paginator .end {
1146
+ margin-right: 6px;
1147
+}
1148
+
1149
+.paginator .this-page {
1150
+ padding: 2px 6px;
1151
+ font-weight: bold;
1152
+ font-size: 0.8125rem;
1153
+ vertical-align: top;
1154
+}
1155
+
1156
+.paginator a:focus, .paginator a:hover {
1157
+ color: white;
1158
+ background: var(--link-hover-color);
1159
+}
1160
+
1161
+.paginator input {
1162
+ margin-left: auto;
1163
+}
1164
+
1165
+.base-svgs {
1166
+ display: none;
1167
+}
1168
+
1169
+.visually-hidden {
1170
+ position: absolute;
1171
+ width: 1px;
1172
+ height: 1px;
1173
+ padding: 0;
1174
+ overflow: hidden;
1175
+ clip: rect(0,0,0,0);
1176
+ white-space: nowrap;
1177
+ border: 0;
1178
+ color: var(--body-fg);
1179
+ background-color: var(--body-bg);
1180
+}
--- a/assets/admin/css/base.96c479cedf7a.css
+++ b/assets/admin/css/base.96c479cedf7a.css
@@ -0,0 +1,1180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/base.96c479cedf7a.css
+++ b/assets/admin/css/base.96c479cedf7a.css
@@ -0,0 +1,1180 @@
1 /*
2 DJANGO Admin styles
3 */
4
5 /* VARIABLE DEFINITIONS */
6 html[data-theme="light"],
7 :root {
8 --primary: #79aec8;
9 --secondary: #417690;
10 --accent: #f5dd5d;
11 --primary-fg: #fff;
12
13 --body-fg: #333;
14 --body-bg: #fff;
15 --body-quiet-color: #666;
16 --body-medium-color: #444;
17 --body-loud-color: #000;
18
19 --header-color: #ffc;
20 --header-branding-color: var(--accent);
21 --header-bg: var(--secondary);
22 --header-link-color: var(--primary-fg);
23
24 --breadcrumbs-fg: #c4dce8;
25 --breadcrumbs-link-fg: var(--body-bg);
26 --breadcrumbs-bg: #264b5d;
27
28 --link-fg: #417893;
29 --link-hover-color: #036;
30 --link-selected-fg: var(--secondary);
31
32 --hairline-color: #e8e8e8;
33 --border-color: #ccc;
34
35 --error-fg: #ba2121;
36
37 --message-success-bg: #dfd;
38 --message-warning-bg: #ffc;
39 --message-error-bg: #ffefef;
40
41 --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */
42 --selected-bg: #e4e4e4; /* E.g. selected table cells */
43 --selected-row: #ffc;
44
45 --button-fg: #fff;
46 --button-bg: var(--secondary);
47 --button-hover-bg: #205067;
48 --default-button-bg: #205067;
49 --default-button-hover-bg: var(--secondary);
50 --close-button-bg: #747474;
51 --close-button-hover-bg: #333;
52 --delete-button-bg: #ba2121;
53 --delete-button-hover-bg: #a41515;
54
55 --object-tools-fg: var(--button-fg);
56 --object-tools-bg: var(--close-button-bg);
57 --object-tools-hover-bg: var(--close-button-hover-bg);
58
59 --font-family-primary:
60 "Segoe UI",
61 system-ui,
62 Roboto,
63 "Helvetica Neue",
64 Arial,
65 sans-serif,
66 "Apple Color Emoji",
67 "Segoe UI Emoji",
68 "Segoe UI Symbol",
69 "Noto Color Emoji";
70 --font-family-monospace:
71 ui-monospace,
72 Menlo,
73 Monaco,
74 "Cascadia Mono",
75 "Segoe UI Mono",
76 "Roboto Mono",
77 "Oxygen Mono",
78 "Ubuntu Monospace",
79 "Source Code Pro",
80 "Fira Mono",
81 "Droid Sans Mono",
82 "Courier New",
83 monospace,
84 "Apple Color Emoji",
85 "Segoe UI Emoji",
86 "Segoe UI Symbol",
87 "Noto Color Emoji";
88
89 color-scheme: light;
90 }
91
92 html, body {
93 height: 100%;
94 }
95
96 body {
97 margin: 0;
98 padding: 0;
99 font-size: 0.875rem;
100 font-family: var(--font-family-primary);
101 color: var(--body-fg);
102 background: var(--body-bg);
103 }
104
105 /* LINKS */
106
107 a:link, a:visited {
108 color: var(--link-fg);
109 text-decoration: none;
110 transition: color 0.15s, background 0.15s;
111 }
112
113 a:focus, a:hover {
114 color: var(--link-hover-color);
115 }
116
117 a:focus {
118 text-decoration: underline;
119 }
120
121 a img {
122 border: none;
123 }
124
125 a.section:link, a.section:visited {
126 color: var(--header-link-color);
127 text-decoration: none;
128 }
129
130 a.section:focus, a.section:hover {
131 text-decoration: underline;
132 }
133
134 /* GLOBAL DEFAULTS */
135
136 p, ol, ul, dl {
137 margin: .2em 0 .8em 0;
138 }
139
140 p {
141 padding: 0;
142 line-height: 140%;
143 }
144
145 h1,h2,h3,h4,h5 {
146 font-weight: bold;
147 }
148
149 h1 {
150 margin: 0 0 20px;
151 font-weight: 300;
152 font-size: 1.25rem;
153 }
154
155 h2 {
156 font-size: 1rem;
157 margin: 1em 0 .5em 0;
158 }
159
160 h2.subhead {
161 font-weight: normal;
162 margin-top: 0;
163 }
164
165 h3 {
166 font-size: 0.875rem;
167 margin: .8em 0 .3em 0;
168 color: var(--body-medium-color);
169 font-weight: bold;
170 }
171
172 h4 {
173 font-size: 0.75rem;
174 margin: 1em 0 .8em 0;
175 padding-bottom: 3px;
176 color: var(--body-medium-color);
177 }
178
179 h5 {
180 font-size: 0.625rem;
181 margin: 1.5em 0 .5em 0;
182 color: var(--body-quiet-color);
183 text-transform: uppercase;
184 letter-spacing: 1px;
185 }
186
187 ul > li {
188 list-style-type: square;
189 padding: 1px 0;
190 }
191
192 li ul {
193 margin-bottom: 0;
194 }
195
196 li, dt, dd {
197 font-size: 0.8125rem;
198 line-height: 1.25rem;
199 }
200
201 dt {
202 font-weight: bold;
203 margin-top: 4px;
204 }
205
206 dd {
207 margin-left: 0;
208 }
209
210 form {
211 margin: 0;
212 padding: 0;
213 }
214
215 fieldset {
216 margin: 0;
217 min-width: 0;
218 padding: 0;
219 border: none;
220 border-top: 1px solid var(--hairline-color);
221 }
222
223 details summary {
224 cursor: pointer;
225 }
226
227 blockquote {
228 font-size: 0.6875rem;
229 color: #777;
230 margin-left: 2px;
231 padding-left: 10px;
232 border-left: 5px solid #ddd;
233 }
234
235 code, pre {
236 font-family: var(--font-family-monospace);
237 color: var(--body-quiet-color);
238 font-size: 0.75rem;
239 overflow-x: auto;
240 }
241
242 pre.literal-block {
243 margin: 10px;
244 background: var(--darkened-bg);
245 padding: 6px 8px;
246 }
247
248 code strong {
249 color: #930;
250 }
251
252 hr {
253 clear: both;
254 color: var(--hairline-color);
255 background-color: var(--hairline-color);
256 height: 1px;
257 border: none;
258 margin: 0;
259 padding: 0;
260 line-height: 1px;
261 }
262
263 /* TEXT STYLES & MODIFIERS */
264
265 .small {
266 font-size: 0.6875rem;
267 }
268
269 .mini {
270 font-size: 0.625rem;
271 }
272
273 .help, p.help, form p.help, div.help, form div.help, div.help li {
274 font-size: 0.6875rem;
275 color: var(--body-quiet-color);
276 }
277
278 div.help ul {
279 margin-bottom: 0;
280 }
281
282 .help-tooltip {
283 cursor: help;
284 }
285
286 p img, h1 img, h2 img, h3 img, h4 img, td img {
287 vertical-align: middle;
288 }
289
290 .quiet, a.quiet:link, a.quiet:visited {
291 color: var(--body-quiet-color);
292 font-weight: normal;
293 }
294
295 .clear {
296 clear: both;
297 }
298
299 .nowrap {
300 white-space: nowrap;
301 }
302
303 .hidden {
304 display: none !important;
305 }
306
307 /* TABLES */
308
309 table {
310 border-collapse: collapse;
311 border-color: var(--border-color);
312 }
313
314 td, th {
315 font-size: 0.8125rem;
316 line-height: 1rem;
317 border-bottom: 1px solid var(--hairline-color);
318 vertical-align: top;
319 padding: 8px;
320 }
321
322 th {
323 font-weight: 500;
324 text-align: left;
325 }
326
327 thead th,
328 tfoot td {
329 color: var(--body-quiet-color);
330 padding: 5px 10px;
331 font-size: 0.6875rem;
332 background: var(--body-bg);
333 border: none;
334 border-top: 1px solid var(--hairline-color);
335 border-bottom: 1px solid var(--hairline-color);
336 }
337
338 tfoot td {
339 border-bottom: none;
340 border-top: 1px solid var(--hairline-color);
341 }
342
343 thead th.required {
344 font-weight: bold;
345 }
346
347 tr.alt {
348 background: var(--darkened-bg);
349 }
350
351 tr:nth-child(odd), .row-form-errors {
352 background: var(--body-bg);
353 }
354
355 tr:nth-child(even),
356 tr:nth-child(even) .errorlist,
357 tr:nth-child(odd) + .row-form-errors,
358 tr:nth-child(odd) + .row-form-errors .errorlist {
359 background: var(--darkened-bg);
360 }
361
362 /* SORTABLE TABLES */
363
364 thead th {
365 padding: 5px 10px;
366 line-height: normal;
367 text-transform: uppercase;
368 background: var(--darkened-bg);
369 }
370
371 thead th a:link, thead th a:visited {
372 color: var(--body-quiet-color);
373 }
374
375 thead th.sorted {
376 background: var(--selected-bg);
377 }
378
379 thead th.sorted .text {
380 padding-right: 42px;
381 }
382
383 table thead th .text span {
384 padding: 8px 10px;
385 display: block;
386 }
387
388 table thead th .text a {
389 display: block;
390 cursor: pointer;
391 padding: 8px 10px;
392 }
393
394 table thead th .text a:focus, table thead th .text a:hover {
395 background: var(--selected-bg);
396 }
397
398 thead th.sorted a.sortremove {
399 visibility: hidden;
400 }
401
402 table thead th.sorted:hover a.sortremove {
403 visibility: visible;
404 }
405
406 table thead th.sorted .sortoptions {
407 display: block;
408 padding: 9px 5px 0 5px;
409 float: right;
410 text-align: right;
411 }
412
413 table thead th.sorted .sortpriority {
414 font-size: .8em;
415 min-width: 12px;
416 text-align: center;
417 vertical-align: 3px;
418 margin-left: 2px;
419 margin-right: 2px;
420 }
421
422 table thead th.sorted .sortoptions a {
423 position: relative;
424 width: 14px;
425 height: 14px;
426 display: inline-block;
427 background: url("../img/sorting-icons.3a097b59f104.svg") 0 0 no-repeat;
428 background-size: 14px auto;
429 }
430
431 table thead th.sorted .sortoptions a.sortremove {
432 background-position: 0 0;
433 }
434
435 table thead th.sorted .sortoptions a.sortremove:after {
436 content: '\\';
437 position: absolute;
438 top: -6px;
439 left: 3px;
440 font-weight: 200;
441 font-size: 1.125rem;
442 color: var(--body-quiet-color);
443 }
444
445 table thead th.sorted .sortoptions a.sortremove:focus:after,
446 table thead th.sorted .sortoptions a.sortremove:hover:after {
447 color: var(--link-fg);
448 }
449
450 table thead th.sorted .sortoptions a.sortremove:focus,
451 table thead th.sorted .sortoptions a.sortremove:hover {
452 background-position: 0 -14px;
453 }
454
455 table thead th.sorted .sortoptions a.ascending {
456 background-position: 0 -28px;
457 }
458
459 table thead th.sorted .sortoptions a.ascending:focus,
460 table thead th.sorted .sortoptions a.ascending:hover {
461 background-position: 0 -42px;
462 }
463
464 table thead th.sorted .sortoptions a.descending {
465 top: 1px;
466 background-position: 0 -56px;
467 }
468
469 table thead th.sorted .sortoptions a.descending:focus,
470 table thead th.sorted .sortoptions a.descending:hover {
471 background-position: 0 -70px;
472 }
473
474 /* FORM DEFAULTS */
475
476 input, textarea, select, .form-row p, form .button {
477 margin: 2px 0;
478 padding: 2px 3px;
479 vertical-align: middle;
480 font-family: var(--font-family-primary);
481 font-weight: normal;
482 font-size: 0.8125rem;
483 }
484 .form-row div.help {
485 padding: 2px 3px;
486 }
487
488 textarea {
489 vertical-align: top;
490 }
491
492 /*
493 Minifiers remove the default (text) "type" attribute from "input" HTML tags.
494 Add input:not([type]) to make the CSS stylesheet work the same.
495 */
496 input:not([type]), input[type=text], input[type=password], input[type=email],
497 input[type=url], input[type=number], input[type=tel], textarea, select,
498 .vTextField {
499 border: 1px solid var(--border-color);
500 border-radius: 4px;
501 padding: 5px 6px;
502 margin-top: 0;
503 color: var(--body-fg);
504 background-color: var(--body-bg);
505 }
506
507 /*
508 Minifiers remove the default (text) "type" attribute from "input" HTML tags.
509 Add input:not([type]) to make the CSS stylesheet work the same.
510 */
511 input:not([type]):focus, input[type=text]:focus, input[type=password]:focus,
512 input[type=email]:focus, input[type=url]:focus, input[type=number]:focus,
513 input[type=tel]:focus, textarea:focus, select:focus, .vTextField:focus {
514 border-color: var(--body-quiet-color);
515 }
516
517 select {
518 height: 1.875rem;
519 }
520
521 select[multiple] {
522 /* Allow HTML size attribute to override the height in the rule above. */
523 height: auto;
524 min-height: 150px;
525 }
526
527 /* FORM BUTTONS */
528
529 .button, input[type=submit], input[type=button], .submit-row input, a.button {
530 background: var(--button-bg);
531 padding: 10px 15px;
532 border: none;
533 border-radius: 4px;
534 color: var(--button-fg);
535 cursor: pointer;
536 transition: background 0.15s;
537 }
538
539 a.button {
540 padding: 4px 5px;
541 }
542
543 .button:active, input[type=submit]:active, input[type=button]:active,
544 .button:focus, input[type=submit]:focus, input[type=button]:focus,
545 .button:hover, input[type=submit]:hover, input[type=button]:hover {
546 background: var(--button-hover-bg);
547 }
548
549 .button[disabled], input[type=submit][disabled], input[type=button][disabled] {
550 opacity: 0.4;
551 }
552
553 .button.default, input[type=submit].default, .submit-row input.default {
554 border: none;
555 font-weight: 400;
556 background: var(--default-button-bg);
557 }
558
559 .button.default:active, input[type=submit].default:active,
560 .button.default:focus, input[type=submit].default:focus,
561 .button.default:hover, input[type=submit].default:hover {
562 background: var(--default-button-hover-bg);
563 }
564
565 .button[disabled].default,
566 input[type=submit][disabled].default,
567 input[type=button][disabled].default {
568 opacity: 0.4;
569 }
570
571
572 /* MODULES */
573
574 .module {
575 border: none;
576 margin-bottom: 30px;
577 background: var(--body-bg);
578 }
579
580 .module p, .module ul, .module h3, .module h4, .module dl, .module pre {
581 padding-left: 10px;
582 padding-right: 10px;
583 }
584
585 .module blockquote {
586 margin-left: 12px;
587 }
588
589 .module ul, .module ol {
590 margin-left: 1.5em;
591 }
592
593 .module h3 {
594 margin-top: .6em;
595 }
596
597 .module h2, .module caption, .inline-group h2 {
598 margin: 0;
599 padding: 8px;
600 font-weight: 400;
601 font-size: 0.8125rem;
602 text-align: left;
603 background: var(--header-bg);
604 color: var(--header-link-color);
605 }
606
607 .module caption,
608 .inline-group h2 {
609 font-size: 0.75rem;
610 letter-spacing: 0.5px;
611 text-transform: uppercase;
612 }
613
614 .module table {
615 border-collapse: collapse;
616 }
617
618 /* MESSAGES & ERRORS */
619
620 ul.messagelist {
621 padding: 0;
622 margin: 0;
623 }
624
625 ul.messagelist li {
626 display: block;
627 font-weight: 400;
628 font-size: 0.8125rem;
629 padding: 10px 10px 10px 65px;
630 margin: 0 0 10px 0;
631 background: var(--message-success-bg) url("../img/icon-yes.d2f9f035226a.svg") 40px 12px no-repeat;
632 background-size: 16px auto;
633 color: var(--body-fg);
634 word-break: break-word;
635 }
636
637 ul.messagelist li.warning {
638 background: var(--message-warning-bg) url("../img/icon-alert.034cc7d8a67f.svg") 40px 14px no-repeat;
639 background-size: 14px auto;
640 }
641
642 ul.messagelist li.error {
643 background: var(--message-error-bg) url("../img/icon-no.439e821418cd.svg") 40px 12px no-repeat;
644 background-size: 16px auto;
645 }
646
647 .errornote {
648 font-size: 0.875rem;
649 font-weight: 700;
650 display: block;
651 padding: 10px 12px;
652 margin: 0 0 10px 0;
653 color: var(--error-fg);
654 border: 1px solid var(--error-fg);
655 border-radius: 4px;
656 background-color: var(--body-bg);
657 background-position: 5px 12px;
658 overflow-wrap: break-word;
659 }
660
661 ul.errorlist {
662 margin: 0 0 4px;
663 padding: 0;
664 color: var(--error-fg);
665 background: var(--body-bg);
666 }
667
668 ul.errorlist li {
669 font-size: 0.8125rem;
670 display: block;
671 margin-bottom: 4px;
672 overflow-wrap: break-word;
673 }
674
675 ul.errorlist li:first-child {
676 margin-top: 0;
677 }
678
679 ul.errorlist li a {
680 color: inherit;
681 text-decoration: underline;
682 }
683
684 td ul.errorlist {
685 margin: 0;
686 padding: 0;
687 }
688
689 td ul.errorlist li {
690 margin: 0;
691 }
692
693 .form-row.errors {
694 margin: 0;
695 border: none;
696 border-bottom: 1px solid var(--hairline-color);
697 background: none;
698 }
699
700 .form-row.errors ul.errorlist li {
701 padding-left: 0;
702 }
703
704 .errors input, .errors select, .errors textarea,
705 td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea {
706 border: 1px solid var(--error-fg);
707 }
708
709 .description {
710 font-size: 0.75rem;
711 padding: 5px 0 0 12px;
712 }
713
714 /* BREADCRUMBS */
715
716 div.breadcrumbs {
717 background: var(--breadcrumbs-bg);
718 padding: 10px 40px;
719 border: none;
720 color: var(--breadcrumbs-fg);
721 text-align: left;
722 }
723
724 div.breadcrumbs a {
725 color: var(--breadcrumbs-link-fg);
726 }
727
728 div.breadcrumbs a:focus, div.breadcrumbs a:hover {
729 color: var(--breadcrumbs-fg);
730 }
731
732 /* ACTION ICONS */
733
734 .viewlink, .inlineviewlink {
735 padding-left: 16px;
736 background: url("../img/icon-viewlink.41eb31f7826e.svg") 0 1px no-repeat;
737 }
738
739 .hidelink {
740 padding-left: 16px;
741 background: url("../img/icon-hidelink.8d245a995e18.svg") 0 1px no-repeat;
742 }
743
744 .addlink {
745 padding-left: 16px;
746 background: url("../img/icon-addlink.073aeb1feda7.svg") 0 1px no-repeat;
747 }
748
749 .changelink, .inlinechangelink {
750 padding-left: 16px;
751 background: url("../img/icon-changelink.7eddb320e61f.svg") 0 1px no-repeat;
752 }
753
754 .deletelink {
755 padding-left: 16px;
756 background: url("../img/icon-deletelink.564ef9dc3854.svg") 0 1px no-repeat;
757 }
758
759 a.deletelink:link, a.deletelink:visited {
760 color: #CC3434; /* XXX Probably unused? */
761 }
762
763 a.deletelink:focus, a.deletelink:hover {
764 color: #993333; /* XXX Probably unused? */
765 text-decoration: none;
766 }
767
768 /* OBJECT TOOLS */
769
770 .object-tools {
771 font-size: 0.625rem;
772 font-weight: bold;
773 padding-left: 0;
774 float: right;
775 position: relative;
776 margin-top: -48px;
777 }
778
779 .object-tools li {
780 display: block;
781 float: left;
782 margin-left: 5px;
783 height: 1rem;
784 }
785
786 .object-tools a {
787 border-radius: 15px;
788 }
789
790 .object-tools a:link, .object-tools a:visited {
791 display: block;
792 float: left;
793 padding: 3px 12px;
794 background: var(--object-tools-bg);
795 color: var(--object-tools-fg);
796 font-weight: 400;
797 font-size: 0.6875rem;
798 text-transform: uppercase;
799 letter-spacing: 0.5px;
800 }
801
802 .object-tools a:focus, .object-tools a:hover {
803 background-color: var(--object-tools-hover-bg);
804 }
805
806 .object-tools a:focus{
807 text-decoration: none;
808 }
809
810 .object-tools a.viewsitelink, .object-tools a.addlink {
811 background-repeat: no-repeat;
812 background-position: right 7px center;
813 padding-right: 26px;
814 }
815
816 .object-tools a.viewsitelink {
817 background-image: url("../img/tooltag-arrowright.bbfb788a849e.svg");
818 }
819
820 .object-tools a.addlink {
821 background-image: url("../img/tooltag-add.e59d620a9742.svg");
822 }
823
824 /* OBJECT HISTORY */
825
826 #change-history table {
827 width: 100%;
828 }
829
830 #change-history table tbody th {
831 width: 16em;
832 }
833
834 #change-history .paginator {
835 color: var(--body-quiet-color);
836 border-bottom: 1px solid var(--hairline-color);
837 background: var(--body-bg);
838 overflow: hidden;
839 }
840
841 /* PAGE STRUCTURE */
842
843 #container {
844 position: relative;
845 width: 100%;
846 min-width: 980px;
847 padding: 0;
848 display: flex;
849 flex-direction: column;
850 height: 100%;
851 }
852
853 #container > .main {
854 display: flex;
855 flex: 1 0 auto;
856 }
857
858 .main > .content {
859 flex: 1 0;
860 max-width: 100%;
861 }
862
863 .skip-to-content-link {
864 position: absolute;
865 top: -999px;
866 margin: 5px;
867 padding: 5px;
868 background: var(--body-bg);
869 z-index: 1;
870 }
871
872 .skip-to-content-link:focus {
873 left: 0px;
874 top: 0px;
875 }
876
877 #content {
878 padding: 20px 40px;
879 }
880
881 .dashboard #content {
882 width: 600px;
883 }
884
885 #content-main {
886 float: left;
887 width: 100%;
888 }
889
890 #content-related {
891 float: right;
892 width: 260px;
893 position: relative;
894 margin-right: -300px;
895 }
896
897 @media (forced-colors: active) {
898 #content-related {
899 border: 1px solid;
900 }
901 }
902
903 /* COLUMN TYPES */
904
905 .colMS {
906 margin-right: 300px;
907 }
908
909 .colSM {
910 margin-left: 300px;
911 }
912
913 .colSM #content-related {
914 float: left;
915 margin-right: 0;
916 margin-left: -300px;
917 }
918
919 .colSM #content-main {
920 float: right;
921 }
922
923 .popup .colM {
924 width: auto;
925 }
926
927 /* HEADER */
928
929 #header {
930 width: auto;
931 height: auto;
932 display: flex;
933 justify-content: space-between;
934 align-items: center;
935 padding: 10px 40px;
936 background: var(--header-bg);
937 color: var(--header-color);
938 }
939
940 #header a:link, #header a:visited, #logout-form button {
941 color: var(--header-link-color);
942 }
943
944 #header a:focus , #header a:hover {
945 text-decoration: underline;
946 }
947
948 @media (forced-colors: active) {
949 #header {
950 border-bottom: 1px solid;
951 }
952 }
953
954 #branding {
955 display: flex;
956 }
957
958 #site-name {
959 padding: 0;
960 margin: 0;
961 margin-inline-end: 20px;
962 font-weight: 300;
963 font-size: 1.5rem;
964 color: var(--header-branding-color);
965 }
966
967 #site-name a:link, #site-name a:visited {
968 color: var(--accent);
969 }
970
971 #branding h2 {
972 padding: 0 10px;
973 font-size: 0.875rem;
974 margin: -8px 0 8px 0;
975 font-weight: normal;
976 color: var(--header-color);
977 }
978
979 #branding a:hover {
980 text-decoration: none;
981 }
982
983 #logout-form {
984 display: inline;
985 }
986
987 #logout-form button {
988 background: none;
989 border: 0;
990 cursor: pointer;
991 font-family: var(--font-family-primary);
992 }
993
994 #user-tools {
995 float: right;
996 margin: 0 0 0 20px;
997 text-align: right;
998 }
999
1000 #user-tools, #logout-form button{
1001 padding: 0;
1002 font-weight: 300;
1003 font-size: 0.6875rem;
1004 letter-spacing: 0.5px;
1005 text-transform: uppercase;
1006 }
1007
1008 #user-tools a, #logout-form button {
1009 border-bottom: 1px solid rgba(255, 255, 255, 0.25);
1010 }
1011
1012 #user-tools a:focus, #user-tools a:hover,
1013 #logout-form button:active, #logout-form button:hover {
1014 text-decoration: none;
1015 border-bottom: 0;
1016 }
1017
1018 #logout-form button:active, #logout-form button:hover {
1019 margin-bottom: 1px;
1020 }
1021
1022 /* SIDEBAR */
1023
1024 #content-related {
1025 background: var(--darkened-bg);
1026 }
1027
1028 #content-related .module {
1029 background: none;
1030 }
1031
1032 #content-related h3 {
1033 color: var(--body-quiet-color);
1034 padding: 0 16px;
1035 margin: 0 0 16px;
1036 }
1037
1038 #content-related h4 {
1039 font-size: 0.8125rem;
1040 }
1041
1042 #content-related p {
1043 padding-left: 16px;
1044 padding-right: 16px;
1045 }
1046
1047 #content-related .actionlist {
1048 padding: 0;
1049 margin: 16px;
1050 }
1051
1052 #content-related .actionlist li {
1053 line-height: 1.2;
1054 margin-bottom: 10px;
1055 padding-left: 18px;
1056 }
1057
1058 #content-related .module h2 {
1059 background: none;
1060 padding: 16px;
1061 margin-bottom: 16px;
1062 border-bottom: 1px solid var(--hairline-color);
1063 font-size: 1.125rem;
1064 color: var(--body-fg);
1065 }
1066
1067 .delete-confirmation form input[type="submit"] {
1068 background: var(--delete-button-bg);
1069 border-radius: 4px;
1070 padding: 10px 15px;
1071 color: var(--button-fg);
1072 }
1073
1074 .delete-confirmation form input[type="submit"]:active,
1075 .delete-confirmation form input[type="submit"]:focus,
1076 .delete-confirmation form input[type="submit"]:hover {
1077 background: var(--delete-button-hover-bg);
1078 }
1079
1080 .delete-confirmation form .cancel-link {
1081 display: inline-block;
1082 vertical-align: middle;
1083 height: 0.9375rem;
1084 line-height: 0.9375rem;
1085 border-radius: 4px;
1086 padding: 10px 15px;
1087 color: var(--button-fg);
1088 background: var(--close-button-bg);
1089 margin: 0 0 0 10px;
1090 }
1091
1092 .delete-confirmation form .cancel-link:active,
1093 .delete-confirmation form .cancel-link:focus,
1094 .delete-confirmation form .cancel-link:hover {
1095 background: var(--close-button-hover-bg);
1096 }
1097
1098 /* POPUP */
1099 .popup #content {
1100 padding: 20px;
1101 }
1102
1103 .popup #container {
1104 min-width: 0;
1105 }
1106
1107 .popup #header {
1108 padding: 10px 20px;
1109 }
1110
1111 /* PAGINATOR */
1112
1113 .paginator {
1114 display: flex;
1115 align-items: center;
1116 gap: 4px;
1117 font-size: 0.8125rem;
1118 padding-top: 10px;
1119 padding-bottom: 10px;
1120 line-height: 22px;
1121 margin: 0;
1122 border-top: 1px solid var(--hairline-color);
1123 width: 100%;
1124 box-sizing: border-box;
1125 }
1126
1127 .paginator a:link, .paginator a:visited {
1128 padding: 2px 6px;
1129 background: var(--button-bg);
1130 text-decoration: none;
1131 color: var(--button-fg);
1132 }
1133
1134 .paginator a.showall {
1135 border: none;
1136 background: none;
1137 color: var(--link-fg);
1138 }
1139
1140 .paginator a.showall:focus, .paginator a.showall:hover {
1141 background: none;
1142 color: var(--link-hover-color);
1143 }
1144
1145 .paginator .end {
1146 margin-right: 6px;
1147 }
1148
1149 .paginator .this-page {
1150 padding: 2px 6px;
1151 font-weight: bold;
1152 font-size: 0.8125rem;
1153 vertical-align: top;
1154 }
1155
1156 .paginator a:focus, .paginator a:hover {
1157 color: white;
1158 background: var(--link-hover-color);
1159 }
1160
1161 .paginator input {
1162 margin-left: auto;
1163 }
1164
1165 .base-svgs {
1166 display: none;
1167 }
1168
1169 .visually-hidden {
1170 position: absolute;
1171 width: 1px;
1172 height: 1px;
1173 padding: 0;
1174 overflow: hidden;
1175 clip: rect(0,0,0,0);
1176 white-space: nowrap;
1177 border: 0;
1178 color: var(--body-fg);
1179 background-color: var(--body-bg);
1180 }
--- a/assets/admin/css/base.css
+++ b/assets/admin/css/base.css
@@ -0,0 +1,1180 @@
1
+/*
2
+ DJANGO Admin styles
3
+*/
4
+
5
+/* VARIABLE DEFINITIONS */
6
+html[data-theme="light"],
7
+:root {
8
+ --primary: #79aec8;
9
+ --secondary: #417690;
10
+ --accent: #f5dd5d;
11
+ --primary-fg: #fff;
12
+
13
+ --body-fg: #333;
14
+ --body-bg: #fff;
15
+ --body-quiet-color: #666;
16
+ --body-medium-color: #444;
17
+ --body-loud-color: #000;
18
+
19
+ --header-color: #ffc;
20
+ --header-branding-color: var(--accent);
21
+ --header-bg: var(--secondary);
22
+ --header-link-color: var(--primary-fg);
23
+
24
+ --breadcrumbs-fg: #c4dce8;
25
+ --breadcrumbs-link-fg: var(--body-bg);
26
+ --breadcrumbs-bg: #264b5d;
27
+
28
+ --link-fg: #417893;
29
+ --link-hover-color: #036;
30
+ --link-selected-fg: var(--secondary);
31
+
32
+ --hairline-color: #e8e8e8;
33
+ --border-color: #ccc;
34
+
35
+ --error-fg: #ba2121;
36
+
37
+ --message-success-bg: #dfd;
38
+ --message-warning-bg: #ffc;
39
+ --message-error-bg: #ffefef;
40
+
41
+ --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */
42
+ --selected-bg: #e4e4e4; /* E.g. selected table cells */
43
+ --selected-row: #ffc;
44
+
45
+ --button-fg: #fff;
46
+ --button-bg: var(--secondary);
47
+ --button-hover-bg: #205067;
48
+ --default-button-bg: #205067;
49
+ --default-button-hover-bg: var(--secondary);
50
+ --close-button-bg: #747474;
51
+ --close-button-hover-bg: #333;
52
+ --delete-button-bg: #ba2121;
53
+ --delete-button-hover-bg: #a41515;
54
+
55
+ --object-tools-fg: var(--button-fg);
56
+ --object-tools-bg: var(--close-button-bg);
57
+ --object-tools-hover-bg: var(--close-button-hover-bg);
58
+
59
+ --font-family-primary:
60
+ "Segoe UI",
61
+ system-ui,
62
+ Roboto,
63
+ "Helvetica Neue",
64
+ Arial,
65
+ sans-serif,
66
+ "Apple Color Emoji",
67
+ "Segoe UI Emoji",
68
+ "Segoe UI Symbol",
69
+ "Noto Color Emoji";
70
+ --font-family-monospace:
71
+ ui-monospace,
72
+ Menlo,
73
+ Monaco,
74
+ "Cascadia Mono",
75
+ "Segoe UI Mono",
76
+ "Roboto Mono",
77
+ "Oxygen Mono",
78
+ "Ubuntu Monospace",
79
+ "Source Code Pro",
80
+ "Fira Mono",
81
+ "Droid Sans Mono",
82
+ "Courier New",
83
+ monospace,
84
+ "Apple Color Emoji",
85
+ "Segoe UI Emoji",
86
+ "Segoe UI Symbol",
87
+ "Noto Color Emoji";
88
+
89
+ color-scheme: light;
90
+}
91
+
92
+html, body {
93
+ height: 100%;
94
+}
95
+
96
+body {
97
+ margin: 0;
98
+ padding: 0;
99
+ font-size: 0.875rem;
100
+ font-family: var(--font-family-primary);
101
+ color: var(--body-fg);
102
+ background: var(--body-bg);
103
+}
104
+
105
+/* LINKS */
106
+
107
+a:link, a:visited {
108
+ color: var(--link-fg);
109
+ text-decoration: none;
110
+ transition: color 0.15s, background 0.15s;
111
+}
112
+
113
+a:focus, a:hover {
114
+ color: var(--link-hover-color);
115
+}
116
+
117
+a:focus {
118
+ text-decoration: underline;
119
+}
120
+
121
+a img {
122
+ border: none;
123
+}
124
+
125
+a.section:link, a.section:visited {
126
+ color: var(--header-link-color);
127
+ text-decoration: none;
128
+}
129
+
130
+a.section:focus, a.section:hover {
131
+ text-decoration: underline;
132
+}
133
+
134
+/* GLOBAL DEFAULTS */
135
+
136
+p, ol, ul, dl {
137
+ margin: .2em 0 .8em 0;
138
+}
139
+
140
+p {
141
+ padding: 0;
142
+ line-height: 140%;
143
+}
144
+
145
+h1,h2,h3,h4,h5 {
146
+ font-weight: bold;
147
+}
148
+
149
+h1 {
150
+ margin: 0 0 20px;
151
+ font-weight: 300;
152
+ font-size: 1.25rem;
153
+}
154
+
155
+h2 {
156
+ font-size: 1rem;
157
+ margin: 1em 0 .5em 0;
158
+}
159
+
160
+h2.subhead {
161
+ font-weight: normal;
162
+ margin-top: 0;
163
+}
164
+
165
+h3 {
166
+ font-size: 0.875rem;
167
+ margin: .8em 0 .3em 0;
168
+ color: var(--body-medium-color);
169
+ font-weight: bold;
170
+}
171
+
172
+h4 {
173
+ font-size: 0.75rem;
174
+ margin: 1em 0 .8em 0;
175
+ padding-bottom: 3px;
176
+ color: var(--body-medium-color);
177
+}
178
+
179
+h5 {
180
+ font-size: 0.625rem;
181
+ margin: 1.5em 0 .5em 0;
182
+ color: var(--body-quiet-color);
183
+ text-transform: uppercase;
184
+ letter-spacing: 1px;
185
+}
186
+
187
+ul > li {
188
+ list-style-type: square;
189
+ padding: 1px 0;
190
+}
191
+
192
+li ul {
193
+ margin-bottom: 0;
194
+}
195
+
196
+li, dt, dd {
197
+ font-size: 0.8125rem;
198
+ line-height: 1.25rem;
199
+}
200
+
201
+dt {
202
+ font-weight: bold;
203
+ margin-top: 4px;
204
+}
205
+
206
+dd {
207
+ margin-left: 0;
208
+}
209
+
210
+form {
211
+ margin: 0;
212
+ padding: 0;
213
+}
214
+
215
+fieldset {
216
+ margin: 0;
217
+ min-width: 0;
218
+ padding: 0;
219
+ border: none;
220
+ border-top: 1px solid var(--hairline-color);
221
+}
222
+
223
+details summary {
224
+ cursor: pointer;
225
+}
226
+
227
+blockquote {
228
+ font-size: 0.6875rem;
229
+ color: #777;
230
+ margin-left: 2px;
231
+ padding-left: 10px;
232
+ border-left: 5px solid #ddd;
233
+}
234
+
235
+code, pre {
236
+ font-family: var(--font-family-monospace);
237
+ color: var(--body-quiet-color);
238
+ font-size: 0.75rem;
239
+ overflow-x: auto;
240
+}
241
+
242
+pre.literal-block {
243
+ margin: 10px;
244
+ background: var(--darkened-bg);
245
+ padding: 6px 8px;
246
+}
247
+
248
+code strong {
249
+ color: #930;
250
+}
251
+
252
+hr {
253
+ clear: both;
254
+ color: var(--hairline-color);
255
+ background-color: var(--hairline-color);
256
+ height: 1px;
257
+ border: none;
258
+ margin: 0;
259
+ padding: 0;
260
+ line-height: 1px;
261
+}
262
+
263
+/* TEXT STYLES & MODIFIERS */
264
+
265
+.small {
266
+ font-size: 0.6875rem;
267
+}
268
+
269
+.mini {
270
+ font-size: 0.625rem;
271
+}
272
+
273
+.help, p.help, form p.help, div.help, form div.help, div.help li {
274
+ font-size: 0.6875rem;
275
+ color: var(--body-quiet-color);
276
+}
277
+
278
+div.help ul {
279
+ margin-bottom: 0;
280
+}
281
+
282
+.help-tooltip {
283
+ cursor: help;
284
+}
285
+
286
+p img, h1 img, h2 img, h3 img, h4 img, td img {
287
+ vertical-align: middle;
288
+}
289
+
290
+.quiet, a.quiet:link, a.quiet:visited {
291
+ color: var(--body-quiet-color);
292
+ font-weight: normal;
293
+}
294
+
295
+.clear {
296
+ clear: both;
297
+}
298
+
299
+.nowrap {
300
+ white-space: nowrap;
301
+}
302
+
303
+.hidden {
304
+ display: none !important;
305
+}
306
+
307
+/* TABLES */
308
+
309
+table {
310
+ border-collapse: collapse;
311
+ border-color: var(--border-color);
312
+}
313
+
314
+td, th {
315
+ font-size: 0.8125rem;
316
+ line-height: 1rem;
317
+ border-bottom: 1px solid var(--hairline-color);
318
+ vertical-align: top;
319
+ padding: 8px;
320
+}
321
+
322
+th {
323
+ font-weight: 500;
324
+ text-align: left;
325
+}
326
+
327
+thead th,
328
+tfoot td {
329
+ color: var(--body-quiet-color);
330
+ padding: 5px 10px;
331
+ font-size: 0.6875rem;
332
+ background: var(--body-bg);
333
+ border: none;
334
+ border-top: 1px solid var(--hairline-color);
335
+ border-bottom: 1px solid var(--hairline-color);
336
+}
337
+
338
+tfoot td {
339
+ border-bottom: none;
340
+ border-top: 1px solid var(--hairline-color);
341
+}
342
+
343
+thead th.required {
344
+ font-weight: bold;
345
+}
346
+
347
+tr.alt {
348
+ background: var(--darkened-bg);
349
+}
350
+
351
+tr:nth-child(odd), .row-form-errors {
352
+ background: var(--body-bg);
353
+}
354
+
355
+tr:nth-child(even),
356
+tr:nth-child(even) .errorlist,
357
+tr:nth-child(odd) + .row-form-errors,
358
+tr:nth-child(odd) + .row-form-errors .errorlist {
359
+ background: var(--darkened-bg);
360
+}
361
+
362
+/* SORTABLE TABLES */
363
+
364
+thead th {
365
+ padding: 5px 10px;
366
+ line-height: normal;
367
+ text-transform: uppercase;
368
+ background: var(--darkened-bg);
369
+}
370
+
371
+thead th a:link, thead th a:visited {
372
+ color: var(--body-quiet-color);
373
+}
374
+
375
+thead th.sorted {
376
+ background: var(--selected-bg);
377
+}
378
+
379
+thead th.sorted .text {
380
+ padding-right: 42px;
381
+}
382
+
383
+table thead th .text span {
384
+ padding: 8px 10px;
385
+ display: block;
386
+}
387
+
388
+table thead th .text a {
389
+ display: block;
390
+ cursor: pointer;
391
+ padding: 8px 10px;
392
+}
393
+
394
+table thead th .text a:focus, table thead th .text a:hover {
395
+ background: var(--selected-bg);
396
+}
397
+
398
+thead th.sorted a.sortremove {
399
+ visibility: hidden;
400
+}
401
+
402
+table thead th.sorted:hover a.sortremove {
403
+ visibility: visible;
404
+}
405
+
406
+table thead th.sorted .sortoptions {
407
+ display: block;
408
+ padding: 9px 5px 0 5px;
409
+ float: right;
410
+ text-align: right;
411
+}
412
+
413
+table thead th.sorted .sortpriority {
414
+ font-size: .8em;
415
+ min-width: 12px;
416
+ text-align: center;
417
+ vertical-align: 3px;
418
+ margin-left: 2px;
419
+ margin-right: 2px;
420
+}
421
+
422
+table thead th.sorted .sortoptions a {
423
+ position: relative;
424
+ width: 14px;
425
+ height: 14px;
426
+ display: inline-block;
427
+ background: url(../img/sorting-icons.svg) 0 0 no-repeat;
428
+ background-size: 14px auto;
429
+}
430
+
431
+table thead th.sorted .sortoptions a.sortremove {
432
+ background-position: 0 0;
433
+}
434
+
435
+table thead th.sorted .sortoptions a.sortremove:after {
436
+ content: '\\';
437
+ position: absolute;
438
+ top: -6px;
439
+ left: 3px;
440
+ font-weight: 200;
441
+ font-size: 1.125rem;
442
+ color: var(--body-quiet-color);
443
+}
444
+
445
+table thead th.sorted .sortoptions a.sortremove:focus:after,
446
+table thead th.sorted .sortoptions a.sortremove:hover:after {
447
+ color: var(--link-fg);
448
+}
449
+
450
+table thead th.sorted .sortoptions a.sortremove:focus,
451
+table thead th.sorted .sortoptions a.sortremove:hover {
452
+ background-position: 0 -14px;
453
+}
454
+
455
+table thead th.sorted .sortoptions a.ascending {
456
+ background-position: 0 -28px;
457
+}
458
+
459
+table thead th.sorted .sortoptions a.ascending:focus,
460
+table thead th.sorted .sortoptions a.ascending:hover {
461
+ background-position: 0 -42px;
462
+}
463
+
464
+table thead th.sorted .sortoptions a.descending {
465
+ top: 1px;
466
+ background-position: 0 -56px;
467
+}
468
+
469
+table thead th.sorted .sortoptions a.descending:focus,
470
+table thead th.sorted .sortoptions a.descending:hover {
471
+ background-position: 0 -70px;
472
+}
473
+
474
+/* FORM DEFAULTS */
475
+
476
+input, textarea, select, .form-row p, form .button {
477
+ margin: 2px 0;
478
+ padding: 2px 3px;
479
+ vertical-align: middle;
480
+ font-family: var(--font-family-primary);
481
+ font-weight: normal;
482
+ font-size: 0.8125rem;
483
+}
484
+.form-row div.help {
485
+ padding: 2px 3px;
486
+}
487
+
488
+textarea {
489
+ vertical-align: top;
490
+}
491
+
492
+/*
493
+Minifiers remove the default (text) "type" attribute from "input" HTML tags.
494
+Add input:not([type]) to make the CSS stylesheet work the same.
495
+*/
496
+input:not([type]), input[type=text], input[type=password], input[type=email],
497
+input[type=url], input[type=number], input[type=tel], textarea, select,
498
+.vTextField {
499
+ border: 1px solid var(--border-color);
500
+ border-radius: 4px;
501
+ padding: 5px 6px;
502
+ margin-top: 0;
503
+ color: var(--body-fg);
504
+ background-color: var(--body-bg);
505
+}
506
+
507
+/*
508
+Minifiers remove the default (text) "type" attribute from "input" HTML tags.
509
+Add input:not([type]) to make the CSS stylesheet work the same.
510
+*/
511
+input:not([type]):focus, input[type=text]:focus, input[type=password]:focus,
512
+input[type=email]:focus, input[type=url]:focus, input[type=number]:focus,
513
+input[type=tel]:focus, textarea:focus, select:focus, .vTextField:focus {
514
+ border-color: var(--body-quiet-color);
515
+}
516
+
517
+select {
518
+ height: 1.875rem;
519
+}
520
+
521
+select[multiple] {
522
+ /* Allow HTML size attribute to override the height in the rule above. */
523
+ height: auto;
524
+ min-height: 150px;
525
+}
526
+
527
+/* FORM BUTTONS */
528
+
529
+.button, input[type=submit], input[type=button], .submit-row input, a.button {
530
+ background: var(--button-bg);
531
+ padding: 10px 15px;
532
+ border: none;
533
+ border-radius: 4px;
534
+ color: var(--button-fg);
535
+ cursor: pointer;
536
+ transition: background 0.15s;
537
+}
538
+
539
+a.button {
540
+ padding: 4px 5px;
541
+}
542
+
543
+.button:active, input[type=submit]:active, input[type=button]:active,
544
+.button:focus, input[type=submit]:focus, input[type=button]:focus,
545
+.button:hover, input[type=submit]:hover, input[type=button]:hover {
546
+ background: var(--button-hover-bg);
547
+}
548
+
549
+.button[disabled], input[type=submit][disabled], input[type=button][disabled] {
550
+ opacity: 0.4;
551
+}
552
+
553
+.button.default, input[type=submit].default, .submit-row input.default {
554
+ border: none;
555
+ font-weight: 400;
556
+ background: var(--default-button-bg);
557
+}
558
+
559
+.button.default:active, input[type=submit].default:active,
560
+.button.default:focus, input[type=submit].default:focus,
561
+.button.default:hover, input[type=submit].default:hover {
562
+ background: var(--default-button-hover-bg);
563
+}
564
+
565
+.button[disabled].default,
566
+input[type=submit][disabled].default,
567
+input[type=button][disabled].default {
568
+ opacity: 0.4;
569
+}
570
+
571
+
572
+/* MODULES */
573
+
574
+.module {
575
+ border: none;
576
+ margin-bottom: 30px;
577
+ background: var(--body-bg);
578
+}
579
+
580
+.module p, .module ul, .module h3, .module h4, .module dl, .module pre {
581
+ padding-left: 10px;
582
+ padding-right: 10px;
583
+}
584
+
585
+.module blockquote {
586
+ margin-left: 12px;
587
+}
588
+
589
+.module ul, .module ol {
590
+ margin-left: 1.5em;
591
+}
592
+
593
+.module h3 {
594
+ margin-top: .6em;
595
+}
596
+
597
+.module h2, .module caption, .inline-group h2 {
598
+ margin: 0;
599
+ padding: 8px;
600
+ font-weight: 400;
601
+ font-size: 0.8125rem;
602
+ text-align: left;
603
+ background: var(--header-bg);
604
+ color: var(--header-link-color);
605
+}
606
+
607
+.module caption,
608
+.inline-group h2 {
609
+ font-size: 0.75rem;
610
+ letter-spacing: 0.5px;
611
+ text-transform: uppercase;
612
+}
613
+
614
+.module table {
615
+ border-collapse: collapse;
616
+}
617
+
618
+/* MESSAGES & ERRORS */
619
+
620
+ul.messagelist {
621
+ padding: 0;
622
+ margin: 0;
623
+}
624
+
625
+ul.messagelist li {
626
+ display: block;
627
+ font-weight: 400;
628
+ font-size: 0.8125rem;
629
+ padding: 10px 10px 10px 65px;
630
+ margin: 0 0 10px 0;
631
+ background: var(--message-success-bg) url(../img/icon-yes.svg) 40px 12px no-repeat;
632
+ background-size: 16px auto;
633
+ color: var(--body-fg);
634
+ word-break: break-word;
635
+}
636
+
637
+ul.messagelist li.warning {
638
+ background: var(--message-warning-bg) url(../img/icon-alert.svg) 40px 14px no-repeat;
639
+ background-size: 14px auto;
640
+}
641
+
642
+ul.messagelist li.error {
643
+ background: var(--message-error-bg) url(../img/icon-no.svg) 40px 12px no-repeat;
644
+ background-size: 16px auto;
645
+}
646
+
647
+.errornote {
648
+ font-size: 0.875rem;
649
+ font-weight: 700;
650
+ display: block;
651
+ padding: 10px 12px;
652
+ margin: 0 0 10px 0;
653
+ color: var(--error-fg);
654
+ border: 1px solid var(--error-fg);
655
+ border-radius: 4px;
656
+ background-color: var(--body-bg);
657
+ background-position: 5px 12px;
658
+ overflow-wrap: break-word;
659
+}
660
+
661
+ul.errorlist {
662
+ margin: 0 0 4px;
663
+ padding: 0;
664
+ color: var(--error-fg);
665
+ background: var(--body-bg);
666
+}
667
+
668
+ul.errorlist li {
669
+ font-size: 0.8125rem;
670
+ display: block;
671
+ margin-bottom: 4px;
672
+ overflow-wrap: break-word;
673
+}
674
+
675
+ul.errorlist li:first-child {
676
+ margin-top: 0;
677
+}
678
+
679
+ul.errorlist li a {
680
+ color: inherit;
681
+ text-decoration: underline;
682
+}
683
+
684
+td ul.errorlist {
685
+ margin: 0;
686
+ padding: 0;
687
+}
688
+
689
+td ul.errorlist li {
690
+ margin: 0;
691
+}
692
+
693
+.form-row.errors {
694
+ margin: 0;
695
+ border: none;
696
+ border-bottom: 1px solid var(--hairline-color);
697
+ background: none;
698
+}
699
+
700
+.form-row.errors ul.errorlist li {
701
+ padding-left: 0;
702
+}
703
+
704
+.errors input, .errors select, .errors textarea,
705
+td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea {
706
+ border: 1px solid var(--error-fg);
707
+}
708
+
709
+.description {
710
+ font-size: 0.75rem;
711
+ padding: 5px 0 0 12px;
712
+}
713
+
714
+/* BREADCRUMBS */
715
+
716
+div.breadcrumbs {
717
+ background: var(--breadcrumbs-bg);
718
+ padding: 10px 40px;
719
+ border: none;
720
+ color: var(--breadcrumbs-fg);
721
+ text-align: left;
722
+}
723
+
724
+div.breadcrumbs a {
725
+ color: var(--breadcrumbs-link-fg);
726
+}
727
+
728
+div.breadcrumbs a:focus, div.breadcrumbs a:hover {
729
+ color: var(--breadcrumbs-fg);
730
+}
731
+
732
+/* ACTION ICONS */
733
+
734
+.viewlink, .inlineviewlink {
735
+ padding-left: 16px;
736
+ background: url(../img/icon-viewlink.svg) 0 1px no-repeat;
737
+}
738
+
739
+.hidelink {
740
+ padding-left: 16px;
741
+ background: url(../img/icon-hidelink.svg) 0 1px no-repeat;
742
+}
743
+
744
+.addlink {
745
+ padding-left: 16px;
746
+ background: url(../img/icon-addlink.svg) 0 1px no-repeat;
747
+}
748
+
749
+.changelink, .inlinechangelink {
750
+ padding-left: 16px;
751
+ background: url(../img/icon-changelink.svg) 0 1px no-repeat;
752
+}
753
+
754
+.deletelink {
755
+ padding-left: 16px;
756
+ background: url(../img/icon-deletelink.svg) 0 1px no-repeat;
757
+}
758
+
759
+a.deletelink:link, a.deletelink:visited {
760
+ color: #CC3434; /* XXX Probably unused? */
761
+}
762
+
763
+a.deletelink:focus, a.deletelink:hover {
764
+ color: #993333; /* XXX Probably unused? */
765
+ text-decoration: none;
766
+}
767
+
768
+/* OBJECT TOOLS */
769
+
770
+.object-tools {
771
+ font-size: 0.625rem;
772
+ font-weight: bold;
773
+ padding-left: 0;
774
+ float: right;
775
+ position: relative;
776
+ margin-top: -48px;
777
+}
778
+
779
+.object-tools li {
780
+ display: block;
781
+ float: left;
782
+ margin-left: 5px;
783
+ height: 1rem;
784
+}
785
+
786
+.object-tools a {
787
+ border-radius: 15px;
788
+}
789
+
790
+.object-tools a:link, .object-tools a:visited {
791
+ display: block;
792
+ float: left;
793
+ padding: 3px 12px;
794
+ background: var(--object-tools-bg);
795
+ color: var(--object-tools-fg);
796
+ font-weight: 400;
797
+ font-size: 0.6875rem;
798
+ text-transform: uppercase;
799
+ letter-spacing: 0.5px;
800
+}
801
+
802
+.object-tools a:focus, .object-tools a:hover {
803
+ background-color: var(--object-tools-hover-bg);
804
+}
805
+
806
+.object-tools a:focus{
807
+ text-decoration: none;
808
+}
809
+
810
+.object-tools a.viewsitelink, .object-tools a.addlink {
811
+ background-repeat: no-repeat;
812
+ background-position: right 7px center;
813
+ padding-right: 26px;
814
+}
815
+
816
+.object-tools a.viewsitelink {
817
+ background-image: url(../img/tooltag-arrowright.svg);
818
+}
819
+
820
+.object-tools a.addlink {
821
+ background-image: url(../img/tooltag-add.svg);
822
+}
823
+
824
+/* OBJECT HISTORY */
825
+
826
+#change-history table {
827
+ width: 100%;
828
+}
829
+
830
+#change-history table tbody th {
831
+ width: 16em;
832
+}
833
+
834
+#change-history .paginator {
835
+ color: var(--body-quiet-color);
836
+ border-bottom: 1px solid var(--hairline-color);
837
+ background: var(--body-bg);
838
+ overflow: hidden;
839
+}
840
+
841
+/* PAGE STRUCTURE */
842
+
843
+#container {
844
+ position: relative;
845
+ width: 100%;
846
+ min-width: 980px;
847
+ padding: 0;
848
+ display: flex;
849
+ flex-direction: column;
850
+ height: 100%;
851
+}
852
+
853
+#container > .main {
854
+ display: flex;
855
+ flex: 1 0 auto;
856
+}
857
+
858
+.main > .content {
859
+ flex: 1 0;
860
+ max-width: 100%;
861
+}
862
+
863
+.skip-to-content-link {
864
+ position: absolute;
865
+ top: -999px;
866
+ margin: 5px;
867
+ padding: 5px;
868
+ background: var(--body-bg);
869
+ z-index: 1;
870
+}
871
+
872
+.skip-to-content-link:focus {
873
+ left: 0px;
874
+ top: 0px;
875
+}
876
+
877
+#content {
878
+ padding: 20px 40px;
879
+}
880
+
881
+.dashboard #content {
882
+ width: 600px;
883
+}
884
+
885
+#content-main {
886
+ float: left;
887
+ width: 100%;
888
+}
889
+
890
+#content-related {
891
+ float: right;
892
+ width: 260px;
893
+ position: relative;
894
+ margin-right: -300px;
895
+}
896
+
897
+@media (forced-colors: active) {
898
+ #content-related {
899
+ border: 1px solid;
900
+ }
901
+}
902
+
903
+/* COLUMN TYPES */
904
+
905
+.colMS {
906
+ margin-right: 300px;
907
+}
908
+
909
+.colSM {
910
+ margin-left: 300px;
911
+}
912
+
913
+.colSM #content-related {
914
+ float: left;
915
+ margin-right: 0;
916
+ margin-left: -300px;
917
+}
918
+
919
+.colSM #content-main {
920
+ float: right;
921
+}
922
+
923
+.popup .colM {
924
+ width: auto;
925
+}
926
+
927
+/* HEADER */
928
+
929
+#header {
930
+ width: auto;
931
+ height: auto;
932
+ display: flex;
933
+ justify-content: space-between;
934
+ align-items: center;
935
+ padding: 10px 40px;
936
+ background: var(--header-bg);
937
+ color: var(--header-color);
938
+}
939
+
940
+#header a:link, #header a:visited, #logout-form button {
941
+ color: var(--header-link-color);
942
+}
943
+
944
+#header a:focus , #header a:hover {
945
+ text-decoration: underline;
946
+}
947
+
948
+@media (forced-colors: active) {
949
+ #header {
950
+ border-bottom: 1px solid;
951
+ }
952
+}
953
+
954
+#branding {
955
+ display: flex;
956
+}
957
+
958
+#site-name {
959
+ padding: 0;
960
+ margin: 0;
961
+ margin-inline-end: 20px;
962
+ font-weight: 300;
963
+ font-size: 1.5rem;
964
+ color: var(--header-branding-color);
965
+}
966
+
967
+#site-name a:link, #site-name a:visited {
968
+ color: var(--accent);
969
+}
970
+
971
+#branding h2 {
972
+ padding: 0 10px;
973
+ font-size: 0.875rem;
974
+ margin: -8px 0 8px 0;
975
+ font-weight: normal;
976
+ color: var(--header-color);
977
+}
978
+
979
+#branding a:hover {
980
+ text-decoration: none;
981
+}
982
+
983
+#logout-form {
984
+ display: inline;
985
+}
986
+
987
+#logout-form button {
988
+ background: none;
989
+ border: 0;
990
+ cursor: pointer;
991
+ font-family: var(--font-family-primary);
992
+}
993
+
994
+#user-tools {
995
+ float: right;
996
+ margin: 0 0 0 20px;
997
+ text-align: right;
998
+}
999
+
1000
+#user-tools, #logout-form button{
1001
+ padding: 0;
1002
+ font-weight: 300;
1003
+ font-size: 0.6875rem;
1004
+ letter-spacing: 0.5px;
1005
+ text-transform: uppercase;
1006
+}
1007
+
1008
+#user-tools a, #logout-form button {
1009
+ border-bottom: 1px solid rgba(255, 255, 255, 0.25);
1010
+}
1011
+
1012
+#user-tools a:focus, #user-tools a:hover,
1013
+#logout-form button:active, #logout-form button:hover {
1014
+ text-decoration: none;
1015
+ border-bottom: 0;
1016
+}
1017
+
1018
+#logout-form button:active, #logout-form button:hover {
1019
+ margin-bottom: 1px;
1020
+}
1021
+
1022
+/* SIDEBAR */
1023
+
1024
+#content-related {
1025
+ background: var(--darkened-bg);
1026
+}
1027
+
1028
+#content-related .module {
1029
+ background: none;
1030
+}
1031
+
1032
+#content-related h3 {
1033
+ color: var(--body-quiet-color);
1034
+ padding: 0 16px;
1035
+ margin: 0 0 16px;
1036
+}
1037
+
1038
+#content-related h4 {
1039
+ font-size: 0.8125rem;
1040
+}
1041
+
1042
+#content-related p {
1043
+ padding-left: 16px;
1044
+ padding-right: 16px;
1045
+}
1046
+
1047
+#content-related .actionlist {
1048
+ padding: 0;
1049
+ margin: 16px;
1050
+}
1051
+
1052
+#content-related .actionlist li {
1053
+ line-height: 1.2;
1054
+ margin-bottom: 10px;
1055
+ padding-left: 18px;
1056
+}
1057
+
1058
+#content-related .module h2 {
1059
+ background: none;
1060
+ padding: 16px;
1061
+ margin-bottom: 16px;
1062
+ border-bottom: 1px solid var(--hairline-color);
1063
+ font-size: 1.125rem;
1064
+ color: var(--body-fg);
1065
+}
1066
+
1067
+.delete-confirmation form input[type="submit"] {
1068
+ background: var(--delete-button-bg);
1069
+ border-radius: 4px;
1070
+ padding: 10px 15px;
1071
+ color: var(--button-fg);
1072
+}
1073
+
1074
+.delete-confirmation form input[type="submit"]:active,
1075
+.delete-confirmation form input[type="submit"]:focus,
1076
+.delete-confirmation form input[type="submit"]:hover {
1077
+ background: var(--delete-button-hover-bg);
1078
+}
1079
+
1080
+.delete-confirmation form .cancel-link {
1081
+ display: inline-block;
1082
+ vertical-align: middle;
1083
+ height: 0.9375rem;
1084
+ line-height: 0.9375rem;
1085
+ border-radius: 4px;
1086
+ padding: 10px 15px;
1087
+ color: var(--button-fg);
1088
+ background: var(--close-button-bg);
1089
+ margin: 0 0 0 10px;
1090
+}
1091
+
1092
+.delete-confirmation form .cancel-link:active,
1093
+.delete-confirmation form .cancel-link:focus,
1094
+.delete-confirmation form .cancel-link:hover {
1095
+ background: var(--close-button-hover-bg);
1096
+}
1097
+
1098
+/* POPUP */
1099
+.popup #content {
1100
+ padding: 20px;
1101
+}
1102
+
1103
+.popup #container {
1104
+ min-width: 0;
1105
+}
1106
+
1107
+.popup #header {
1108
+ padding: 10px 20px;
1109
+}
1110
+
1111
+/* PAGINATOR */
1112
+
1113
+.paginator {
1114
+ display: flex;
1115
+ align-items: center;
1116
+ gap: 4px;
1117
+ font-size: 0.8125rem;
1118
+ padding-top: 10px;
1119
+ padding-bottom: 10px;
1120
+ line-height: 22px;
1121
+ margin: 0;
1122
+ border-top: 1px solid var(--hairline-color);
1123
+ width: 100%;
1124
+ box-sizing: border-box;
1125
+}
1126
+
1127
+.paginator a:link, .paginator a:visited {
1128
+ padding: 2px 6px;
1129
+ background: var(--button-bg);
1130
+ text-decoration: none;
1131
+ color: var(--button-fg);
1132
+}
1133
+
1134
+.paginator a.showall {
1135
+ border: none;
1136
+ background: none;
1137
+ color: var(--link-fg);
1138
+}
1139
+
1140
+.paginator a.showall:focus, .paginator a.showall:hover {
1141
+ background: none;
1142
+ color: var(--link-hover-color);
1143
+}
1144
+
1145
+.paginator .end {
1146
+ margin-right: 6px;
1147
+}
1148
+
1149
+.paginator .this-page {
1150
+ padding: 2px 6px;
1151
+ font-weight: bold;
1152
+ font-size: 0.8125rem;
1153
+ vertical-align: top;
1154
+}
1155
+
1156
+.paginator a:focus, .paginator a:hover {
1157
+ color: white;
1158
+ background: var(--link-hover-color);
1159
+}
1160
+
1161
+.paginator input {
1162
+ margin-left: auto;
1163
+}
1164
+
1165
+.base-svgs {
1166
+ display: none;
1167
+}
1168
+
1169
+.visually-hidden {
1170
+ position: absolute;
1171
+ width: 1px;
1172
+ height: 1px;
1173
+ padding: 0;
1174
+ overflow: hidden;
1175
+ clip: rect(0,0,0,0);
1176
+ white-space: nowrap;
1177
+ border: 0;
1178
+ color: var(--body-fg);
1179
+ background-color: var(--body-bg);
1180
+}
--- a/assets/admin/css/base.css
+++ b/assets/admin/css/base.css
@@ -0,0 +1,1180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/base.css
+++ b/assets/admin/css/base.css
@@ -0,0 +1,1180 @@
1 /*
2 DJANGO Admin styles
3 */
4
5 /* VARIABLE DEFINITIONS */
6 html[data-theme="light"],
7 :root {
8 --primary: #79aec8;
9 --secondary: #417690;
10 --accent: #f5dd5d;
11 --primary-fg: #fff;
12
13 --body-fg: #333;
14 --body-bg: #fff;
15 --body-quiet-color: #666;
16 --body-medium-color: #444;
17 --body-loud-color: #000;
18
19 --header-color: #ffc;
20 --header-branding-color: var(--accent);
21 --header-bg: var(--secondary);
22 --header-link-color: var(--primary-fg);
23
24 --breadcrumbs-fg: #c4dce8;
25 --breadcrumbs-link-fg: var(--body-bg);
26 --breadcrumbs-bg: #264b5d;
27
28 --link-fg: #417893;
29 --link-hover-color: #036;
30 --link-selected-fg: var(--secondary);
31
32 --hairline-color: #e8e8e8;
33 --border-color: #ccc;
34
35 --error-fg: #ba2121;
36
37 --message-success-bg: #dfd;
38 --message-warning-bg: #ffc;
39 --message-error-bg: #ffefef;
40
41 --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */
42 --selected-bg: #e4e4e4; /* E.g. selected table cells */
43 --selected-row: #ffc;
44
45 --button-fg: #fff;
46 --button-bg: var(--secondary);
47 --button-hover-bg: #205067;
48 --default-button-bg: #205067;
49 --default-button-hover-bg: var(--secondary);
50 --close-button-bg: #747474;
51 --close-button-hover-bg: #333;
52 --delete-button-bg: #ba2121;
53 --delete-button-hover-bg: #a41515;
54
55 --object-tools-fg: var(--button-fg);
56 --object-tools-bg: var(--close-button-bg);
57 --object-tools-hover-bg: var(--close-button-hover-bg);
58
59 --font-family-primary:
60 "Segoe UI",
61 system-ui,
62 Roboto,
63 "Helvetica Neue",
64 Arial,
65 sans-serif,
66 "Apple Color Emoji",
67 "Segoe UI Emoji",
68 "Segoe UI Symbol",
69 "Noto Color Emoji";
70 --font-family-monospace:
71 ui-monospace,
72 Menlo,
73 Monaco,
74 "Cascadia Mono",
75 "Segoe UI Mono",
76 "Roboto Mono",
77 "Oxygen Mono",
78 "Ubuntu Monospace",
79 "Source Code Pro",
80 "Fira Mono",
81 "Droid Sans Mono",
82 "Courier New",
83 monospace,
84 "Apple Color Emoji",
85 "Segoe UI Emoji",
86 "Segoe UI Symbol",
87 "Noto Color Emoji";
88
89 color-scheme: light;
90 }
91
92 html, body {
93 height: 100%;
94 }
95
96 body {
97 margin: 0;
98 padding: 0;
99 font-size: 0.875rem;
100 font-family: var(--font-family-primary);
101 color: var(--body-fg);
102 background: var(--body-bg);
103 }
104
105 /* LINKS */
106
107 a:link, a:visited {
108 color: var(--link-fg);
109 text-decoration: none;
110 transition: color 0.15s, background 0.15s;
111 }
112
113 a:focus, a:hover {
114 color: var(--link-hover-color);
115 }
116
117 a:focus {
118 text-decoration: underline;
119 }
120
121 a img {
122 border: none;
123 }
124
125 a.section:link, a.section:visited {
126 color: var(--header-link-color);
127 text-decoration: none;
128 }
129
130 a.section:focus, a.section:hover {
131 text-decoration: underline;
132 }
133
134 /* GLOBAL DEFAULTS */
135
136 p, ol, ul, dl {
137 margin: .2em 0 .8em 0;
138 }
139
140 p {
141 padding: 0;
142 line-height: 140%;
143 }
144
145 h1,h2,h3,h4,h5 {
146 font-weight: bold;
147 }
148
149 h1 {
150 margin: 0 0 20px;
151 font-weight: 300;
152 font-size: 1.25rem;
153 }
154
155 h2 {
156 font-size: 1rem;
157 margin: 1em 0 .5em 0;
158 }
159
160 h2.subhead {
161 font-weight: normal;
162 margin-top: 0;
163 }
164
165 h3 {
166 font-size: 0.875rem;
167 margin: .8em 0 .3em 0;
168 color: var(--body-medium-color);
169 font-weight: bold;
170 }
171
172 h4 {
173 font-size: 0.75rem;
174 margin: 1em 0 .8em 0;
175 padding-bottom: 3px;
176 color: var(--body-medium-color);
177 }
178
179 h5 {
180 font-size: 0.625rem;
181 margin: 1.5em 0 .5em 0;
182 color: var(--body-quiet-color);
183 text-transform: uppercase;
184 letter-spacing: 1px;
185 }
186
187 ul > li {
188 list-style-type: square;
189 padding: 1px 0;
190 }
191
192 li ul {
193 margin-bottom: 0;
194 }
195
196 li, dt, dd {
197 font-size: 0.8125rem;
198 line-height: 1.25rem;
199 }
200
201 dt {
202 font-weight: bold;
203 margin-top: 4px;
204 }
205
206 dd {
207 margin-left: 0;
208 }
209
210 form {
211 margin: 0;
212 padding: 0;
213 }
214
215 fieldset {
216 margin: 0;
217 min-width: 0;
218 padding: 0;
219 border: none;
220 border-top: 1px solid var(--hairline-color);
221 }
222
223 details summary {
224 cursor: pointer;
225 }
226
227 blockquote {
228 font-size: 0.6875rem;
229 color: #777;
230 margin-left: 2px;
231 padding-left: 10px;
232 border-left: 5px solid #ddd;
233 }
234
235 code, pre {
236 font-family: var(--font-family-monospace);
237 color: var(--body-quiet-color);
238 font-size: 0.75rem;
239 overflow-x: auto;
240 }
241
242 pre.literal-block {
243 margin: 10px;
244 background: var(--darkened-bg);
245 padding: 6px 8px;
246 }
247
248 code strong {
249 color: #930;
250 }
251
252 hr {
253 clear: both;
254 color: var(--hairline-color);
255 background-color: var(--hairline-color);
256 height: 1px;
257 border: none;
258 margin: 0;
259 padding: 0;
260 line-height: 1px;
261 }
262
263 /* TEXT STYLES & MODIFIERS */
264
265 .small {
266 font-size: 0.6875rem;
267 }
268
269 .mini {
270 font-size: 0.625rem;
271 }
272
273 .help, p.help, form p.help, div.help, form div.help, div.help li {
274 font-size: 0.6875rem;
275 color: var(--body-quiet-color);
276 }
277
278 div.help ul {
279 margin-bottom: 0;
280 }
281
282 .help-tooltip {
283 cursor: help;
284 }
285
286 p img, h1 img, h2 img, h3 img, h4 img, td img {
287 vertical-align: middle;
288 }
289
290 .quiet, a.quiet:link, a.quiet:visited {
291 color: var(--body-quiet-color);
292 font-weight: normal;
293 }
294
295 .clear {
296 clear: both;
297 }
298
299 .nowrap {
300 white-space: nowrap;
301 }
302
303 .hidden {
304 display: none !important;
305 }
306
307 /* TABLES */
308
309 table {
310 border-collapse: collapse;
311 border-color: var(--border-color);
312 }
313
314 td, th {
315 font-size: 0.8125rem;
316 line-height: 1rem;
317 border-bottom: 1px solid var(--hairline-color);
318 vertical-align: top;
319 padding: 8px;
320 }
321
322 th {
323 font-weight: 500;
324 text-align: left;
325 }
326
327 thead th,
328 tfoot td {
329 color: var(--body-quiet-color);
330 padding: 5px 10px;
331 font-size: 0.6875rem;
332 background: var(--body-bg);
333 border: none;
334 border-top: 1px solid var(--hairline-color);
335 border-bottom: 1px solid var(--hairline-color);
336 }
337
338 tfoot td {
339 border-bottom: none;
340 border-top: 1px solid var(--hairline-color);
341 }
342
343 thead th.required {
344 font-weight: bold;
345 }
346
347 tr.alt {
348 background: var(--darkened-bg);
349 }
350
351 tr:nth-child(odd), .row-form-errors {
352 background: var(--body-bg);
353 }
354
355 tr:nth-child(even),
356 tr:nth-child(even) .errorlist,
357 tr:nth-child(odd) + .row-form-errors,
358 tr:nth-child(odd) + .row-form-errors .errorlist {
359 background: var(--darkened-bg);
360 }
361
362 /* SORTABLE TABLES */
363
364 thead th {
365 padding: 5px 10px;
366 line-height: normal;
367 text-transform: uppercase;
368 background: var(--darkened-bg);
369 }
370
371 thead th a:link, thead th a:visited {
372 color: var(--body-quiet-color);
373 }
374
375 thead th.sorted {
376 background: var(--selected-bg);
377 }
378
379 thead th.sorted .text {
380 padding-right: 42px;
381 }
382
383 table thead th .text span {
384 padding: 8px 10px;
385 display: block;
386 }
387
388 table thead th .text a {
389 display: block;
390 cursor: pointer;
391 padding: 8px 10px;
392 }
393
394 table thead th .text a:focus, table thead th .text a:hover {
395 background: var(--selected-bg);
396 }
397
398 thead th.sorted a.sortremove {
399 visibility: hidden;
400 }
401
402 table thead th.sorted:hover a.sortremove {
403 visibility: visible;
404 }
405
406 table thead th.sorted .sortoptions {
407 display: block;
408 padding: 9px 5px 0 5px;
409 float: right;
410 text-align: right;
411 }
412
413 table thead th.sorted .sortpriority {
414 font-size: .8em;
415 min-width: 12px;
416 text-align: center;
417 vertical-align: 3px;
418 margin-left: 2px;
419 margin-right: 2px;
420 }
421
422 table thead th.sorted .sortoptions a {
423 position: relative;
424 width: 14px;
425 height: 14px;
426 display: inline-block;
427 background: url(../img/sorting-icons.svg) 0 0 no-repeat;
428 background-size: 14px auto;
429 }
430
431 table thead th.sorted .sortoptions a.sortremove {
432 background-position: 0 0;
433 }
434
435 table thead th.sorted .sortoptions a.sortremove:after {
436 content: '\\';
437 position: absolute;
438 top: -6px;
439 left: 3px;
440 font-weight: 200;
441 font-size: 1.125rem;
442 color: var(--body-quiet-color);
443 }
444
445 table thead th.sorted .sortoptions a.sortremove:focus:after,
446 table thead th.sorted .sortoptions a.sortremove:hover:after {
447 color: var(--link-fg);
448 }
449
450 table thead th.sorted .sortoptions a.sortremove:focus,
451 table thead th.sorted .sortoptions a.sortremove:hover {
452 background-position: 0 -14px;
453 }
454
455 table thead th.sorted .sortoptions a.ascending {
456 background-position: 0 -28px;
457 }
458
459 table thead th.sorted .sortoptions a.ascending:focus,
460 table thead th.sorted .sortoptions a.ascending:hover {
461 background-position: 0 -42px;
462 }
463
464 table thead th.sorted .sortoptions a.descending {
465 top: 1px;
466 background-position: 0 -56px;
467 }
468
469 table thead th.sorted .sortoptions a.descending:focus,
470 table thead th.sorted .sortoptions a.descending:hover {
471 background-position: 0 -70px;
472 }
473
474 /* FORM DEFAULTS */
475
476 input, textarea, select, .form-row p, form .button {
477 margin: 2px 0;
478 padding: 2px 3px;
479 vertical-align: middle;
480 font-family: var(--font-family-primary);
481 font-weight: normal;
482 font-size: 0.8125rem;
483 }
484 .form-row div.help {
485 padding: 2px 3px;
486 }
487
488 textarea {
489 vertical-align: top;
490 }
491
492 /*
493 Minifiers remove the default (text) "type" attribute from "input" HTML tags.
494 Add input:not([type]) to make the CSS stylesheet work the same.
495 */
496 input:not([type]), input[type=text], input[type=password], input[type=email],
497 input[type=url], input[type=number], input[type=tel], textarea, select,
498 .vTextField {
499 border: 1px solid var(--border-color);
500 border-radius: 4px;
501 padding: 5px 6px;
502 margin-top: 0;
503 color: var(--body-fg);
504 background-color: var(--body-bg);
505 }
506
507 /*
508 Minifiers remove the default (text) "type" attribute from "input" HTML tags.
509 Add input:not([type]) to make the CSS stylesheet work the same.
510 */
511 input:not([type]):focus, input[type=text]:focus, input[type=password]:focus,
512 input[type=email]:focus, input[type=url]:focus, input[type=number]:focus,
513 input[type=tel]:focus, textarea:focus, select:focus, .vTextField:focus {
514 border-color: var(--body-quiet-color);
515 }
516
517 select {
518 height: 1.875rem;
519 }
520
521 select[multiple] {
522 /* Allow HTML size attribute to override the height in the rule above. */
523 height: auto;
524 min-height: 150px;
525 }
526
527 /* FORM BUTTONS */
528
529 .button, input[type=submit], input[type=button], .submit-row input, a.button {
530 background: var(--button-bg);
531 padding: 10px 15px;
532 border: none;
533 border-radius: 4px;
534 color: var(--button-fg);
535 cursor: pointer;
536 transition: background 0.15s;
537 }
538
539 a.button {
540 padding: 4px 5px;
541 }
542
543 .button:active, input[type=submit]:active, input[type=button]:active,
544 .button:focus, input[type=submit]:focus, input[type=button]:focus,
545 .button:hover, input[type=submit]:hover, input[type=button]:hover {
546 background: var(--button-hover-bg);
547 }
548
549 .button[disabled], input[type=submit][disabled], input[type=button][disabled] {
550 opacity: 0.4;
551 }
552
553 .button.default, input[type=submit].default, .submit-row input.default {
554 border: none;
555 font-weight: 400;
556 background: var(--default-button-bg);
557 }
558
559 .button.default:active, input[type=submit].default:active,
560 .button.default:focus, input[type=submit].default:focus,
561 .button.default:hover, input[type=submit].default:hover {
562 background: var(--default-button-hover-bg);
563 }
564
565 .button[disabled].default,
566 input[type=submit][disabled].default,
567 input[type=button][disabled].default {
568 opacity: 0.4;
569 }
570
571
572 /* MODULES */
573
574 .module {
575 border: none;
576 margin-bottom: 30px;
577 background: var(--body-bg);
578 }
579
580 .module p, .module ul, .module h3, .module h4, .module dl, .module pre {
581 padding-left: 10px;
582 padding-right: 10px;
583 }
584
585 .module blockquote {
586 margin-left: 12px;
587 }
588
589 .module ul, .module ol {
590 margin-left: 1.5em;
591 }
592
593 .module h3 {
594 margin-top: .6em;
595 }
596
597 .module h2, .module caption, .inline-group h2 {
598 margin: 0;
599 padding: 8px;
600 font-weight: 400;
601 font-size: 0.8125rem;
602 text-align: left;
603 background: var(--header-bg);
604 color: var(--header-link-color);
605 }
606
607 .module caption,
608 .inline-group h2 {
609 font-size: 0.75rem;
610 letter-spacing: 0.5px;
611 text-transform: uppercase;
612 }
613
614 .module table {
615 border-collapse: collapse;
616 }
617
618 /* MESSAGES & ERRORS */
619
620 ul.messagelist {
621 padding: 0;
622 margin: 0;
623 }
624
625 ul.messagelist li {
626 display: block;
627 font-weight: 400;
628 font-size: 0.8125rem;
629 padding: 10px 10px 10px 65px;
630 margin: 0 0 10px 0;
631 background: var(--message-success-bg) url(../img/icon-yes.svg) 40px 12px no-repeat;
632 background-size: 16px auto;
633 color: var(--body-fg);
634 word-break: break-word;
635 }
636
637 ul.messagelist li.warning {
638 background: var(--message-warning-bg) url(../img/icon-alert.svg) 40px 14px no-repeat;
639 background-size: 14px auto;
640 }
641
642 ul.messagelist li.error {
643 background: var(--message-error-bg) url(../img/icon-no.svg) 40px 12px no-repeat;
644 background-size: 16px auto;
645 }
646
647 .errornote {
648 font-size: 0.875rem;
649 font-weight: 700;
650 display: block;
651 padding: 10px 12px;
652 margin: 0 0 10px 0;
653 color: var(--error-fg);
654 border: 1px solid var(--error-fg);
655 border-radius: 4px;
656 background-color: var(--body-bg);
657 background-position: 5px 12px;
658 overflow-wrap: break-word;
659 }
660
661 ul.errorlist {
662 margin: 0 0 4px;
663 padding: 0;
664 color: var(--error-fg);
665 background: var(--body-bg);
666 }
667
668 ul.errorlist li {
669 font-size: 0.8125rem;
670 display: block;
671 margin-bottom: 4px;
672 overflow-wrap: break-word;
673 }
674
675 ul.errorlist li:first-child {
676 margin-top: 0;
677 }
678
679 ul.errorlist li a {
680 color: inherit;
681 text-decoration: underline;
682 }
683
684 td ul.errorlist {
685 margin: 0;
686 padding: 0;
687 }
688
689 td ul.errorlist li {
690 margin: 0;
691 }
692
693 .form-row.errors {
694 margin: 0;
695 border: none;
696 border-bottom: 1px solid var(--hairline-color);
697 background: none;
698 }
699
700 .form-row.errors ul.errorlist li {
701 padding-left: 0;
702 }
703
704 .errors input, .errors select, .errors textarea,
705 td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea {
706 border: 1px solid var(--error-fg);
707 }
708
709 .description {
710 font-size: 0.75rem;
711 padding: 5px 0 0 12px;
712 }
713
714 /* BREADCRUMBS */
715
716 div.breadcrumbs {
717 background: var(--breadcrumbs-bg);
718 padding: 10px 40px;
719 border: none;
720 color: var(--breadcrumbs-fg);
721 text-align: left;
722 }
723
724 div.breadcrumbs a {
725 color: var(--breadcrumbs-link-fg);
726 }
727
728 div.breadcrumbs a:focus, div.breadcrumbs a:hover {
729 color: var(--breadcrumbs-fg);
730 }
731
732 /* ACTION ICONS */
733
734 .viewlink, .inlineviewlink {
735 padding-left: 16px;
736 background: url(../img/icon-viewlink.svg) 0 1px no-repeat;
737 }
738
739 .hidelink {
740 padding-left: 16px;
741 background: url(../img/icon-hidelink.svg) 0 1px no-repeat;
742 }
743
744 .addlink {
745 padding-left: 16px;
746 background: url(../img/icon-addlink.svg) 0 1px no-repeat;
747 }
748
749 .changelink, .inlinechangelink {
750 padding-left: 16px;
751 background: url(../img/icon-changelink.svg) 0 1px no-repeat;
752 }
753
754 .deletelink {
755 padding-left: 16px;
756 background: url(../img/icon-deletelink.svg) 0 1px no-repeat;
757 }
758
759 a.deletelink:link, a.deletelink:visited {
760 color: #CC3434; /* XXX Probably unused? */
761 }
762
763 a.deletelink:focus, a.deletelink:hover {
764 color: #993333; /* XXX Probably unused? */
765 text-decoration: none;
766 }
767
768 /* OBJECT TOOLS */
769
770 .object-tools {
771 font-size: 0.625rem;
772 font-weight: bold;
773 padding-left: 0;
774 float: right;
775 position: relative;
776 margin-top: -48px;
777 }
778
779 .object-tools li {
780 display: block;
781 float: left;
782 margin-left: 5px;
783 height: 1rem;
784 }
785
786 .object-tools a {
787 border-radius: 15px;
788 }
789
790 .object-tools a:link, .object-tools a:visited {
791 display: block;
792 float: left;
793 padding: 3px 12px;
794 background: var(--object-tools-bg);
795 color: var(--object-tools-fg);
796 font-weight: 400;
797 font-size: 0.6875rem;
798 text-transform: uppercase;
799 letter-spacing: 0.5px;
800 }
801
802 .object-tools a:focus, .object-tools a:hover {
803 background-color: var(--object-tools-hover-bg);
804 }
805
806 .object-tools a:focus{
807 text-decoration: none;
808 }
809
810 .object-tools a.viewsitelink, .object-tools a.addlink {
811 background-repeat: no-repeat;
812 background-position: right 7px center;
813 padding-right: 26px;
814 }
815
816 .object-tools a.viewsitelink {
817 background-image: url(../img/tooltag-arrowright.svg);
818 }
819
820 .object-tools a.addlink {
821 background-image: url(../img/tooltag-add.svg);
822 }
823
824 /* OBJECT HISTORY */
825
826 #change-history table {
827 width: 100%;
828 }
829
830 #change-history table tbody th {
831 width: 16em;
832 }
833
834 #change-history .paginator {
835 color: var(--body-quiet-color);
836 border-bottom: 1px solid var(--hairline-color);
837 background: var(--body-bg);
838 overflow: hidden;
839 }
840
841 /* PAGE STRUCTURE */
842
843 #container {
844 position: relative;
845 width: 100%;
846 min-width: 980px;
847 padding: 0;
848 display: flex;
849 flex-direction: column;
850 height: 100%;
851 }
852
853 #container > .main {
854 display: flex;
855 flex: 1 0 auto;
856 }
857
858 .main > .content {
859 flex: 1 0;
860 max-width: 100%;
861 }
862
863 .skip-to-content-link {
864 position: absolute;
865 top: -999px;
866 margin: 5px;
867 padding: 5px;
868 background: var(--body-bg);
869 z-index: 1;
870 }
871
872 .skip-to-content-link:focus {
873 left: 0px;
874 top: 0px;
875 }
876
877 #content {
878 padding: 20px 40px;
879 }
880
881 .dashboard #content {
882 width: 600px;
883 }
884
885 #content-main {
886 float: left;
887 width: 100%;
888 }
889
890 #content-related {
891 float: right;
892 width: 260px;
893 position: relative;
894 margin-right: -300px;
895 }
896
897 @media (forced-colors: active) {
898 #content-related {
899 border: 1px solid;
900 }
901 }
902
903 /* COLUMN TYPES */
904
905 .colMS {
906 margin-right: 300px;
907 }
908
909 .colSM {
910 margin-left: 300px;
911 }
912
913 .colSM #content-related {
914 float: left;
915 margin-right: 0;
916 margin-left: -300px;
917 }
918
919 .colSM #content-main {
920 float: right;
921 }
922
923 .popup .colM {
924 width: auto;
925 }
926
927 /* HEADER */
928
929 #header {
930 width: auto;
931 height: auto;
932 display: flex;
933 justify-content: space-between;
934 align-items: center;
935 padding: 10px 40px;
936 background: var(--header-bg);
937 color: var(--header-color);
938 }
939
940 #header a:link, #header a:visited, #logout-form button {
941 color: var(--header-link-color);
942 }
943
944 #header a:focus , #header a:hover {
945 text-decoration: underline;
946 }
947
948 @media (forced-colors: active) {
949 #header {
950 border-bottom: 1px solid;
951 }
952 }
953
954 #branding {
955 display: flex;
956 }
957
958 #site-name {
959 padding: 0;
960 margin: 0;
961 margin-inline-end: 20px;
962 font-weight: 300;
963 font-size: 1.5rem;
964 color: var(--header-branding-color);
965 }
966
967 #site-name a:link, #site-name a:visited {
968 color: var(--accent);
969 }
970
971 #branding h2 {
972 padding: 0 10px;
973 font-size: 0.875rem;
974 margin: -8px 0 8px 0;
975 font-weight: normal;
976 color: var(--header-color);
977 }
978
979 #branding a:hover {
980 text-decoration: none;
981 }
982
983 #logout-form {
984 display: inline;
985 }
986
987 #logout-form button {
988 background: none;
989 border: 0;
990 cursor: pointer;
991 font-family: var(--font-family-primary);
992 }
993
994 #user-tools {
995 float: right;
996 margin: 0 0 0 20px;
997 text-align: right;
998 }
999
1000 #user-tools, #logout-form button{
1001 padding: 0;
1002 font-weight: 300;
1003 font-size: 0.6875rem;
1004 letter-spacing: 0.5px;
1005 text-transform: uppercase;
1006 }
1007
1008 #user-tools a, #logout-form button {
1009 border-bottom: 1px solid rgba(255, 255, 255, 0.25);
1010 }
1011
1012 #user-tools a:focus, #user-tools a:hover,
1013 #logout-form button:active, #logout-form button:hover {
1014 text-decoration: none;
1015 border-bottom: 0;
1016 }
1017
1018 #logout-form button:active, #logout-form button:hover {
1019 margin-bottom: 1px;
1020 }
1021
1022 /* SIDEBAR */
1023
1024 #content-related {
1025 background: var(--darkened-bg);
1026 }
1027
1028 #content-related .module {
1029 background: none;
1030 }
1031
1032 #content-related h3 {
1033 color: var(--body-quiet-color);
1034 padding: 0 16px;
1035 margin: 0 0 16px;
1036 }
1037
1038 #content-related h4 {
1039 font-size: 0.8125rem;
1040 }
1041
1042 #content-related p {
1043 padding-left: 16px;
1044 padding-right: 16px;
1045 }
1046
1047 #content-related .actionlist {
1048 padding: 0;
1049 margin: 16px;
1050 }
1051
1052 #content-related .actionlist li {
1053 line-height: 1.2;
1054 margin-bottom: 10px;
1055 padding-left: 18px;
1056 }
1057
1058 #content-related .module h2 {
1059 background: none;
1060 padding: 16px;
1061 margin-bottom: 16px;
1062 border-bottom: 1px solid var(--hairline-color);
1063 font-size: 1.125rem;
1064 color: var(--body-fg);
1065 }
1066
1067 .delete-confirmation form input[type="submit"] {
1068 background: var(--delete-button-bg);
1069 border-radius: 4px;
1070 padding: 10px 15px;
1071 color: var(--button-fg);
1072 }
1073
1074 .delete-confirmation form input[type="submit"]:active,
1075 .delete-confirmation form input[type="submit"]:focus,
1076 .delete-confirmation form input[type="submit"]:hover {
1077 background: var(--delete-button-hover-bg);
1078 }
1079
1080 .delete-confirmation form .cancel-link {
1081 display: inline-block;
1082 vertical-align: middle;
1083 height: 0.9375rem;
1084 line-height: 0.9375rem;
1085 border-radius: 4px;
1086 padding: 10px 15px;
1087 color: var(--button-fg);
1088 background: var(--close-button-bg);
1089 margin: 0 0 0 10px;
1090 }
1091
1092 .delete-confirmation form .cancel-link:active,
1093 .delete-confirmation form .cancel-link:focus,
1094 .delete-confirmation form .cancel-link:hover {
1095 background: var(--close-button-hover-bg);
1096 }
1097
1098 /* POPUP */
1099 .popup #content {
1100 padding: 20px;
1101 }
1102
1103 .popup #container {
1104 min-width: 0;
1105 }
1106
1107 .popup #header {
1108 padding: 10px 20px;
1109 }
1110
1111 /* PAGINATOR */
1112
1113 .paginator {
1114 display: flex;
1115 align-items: center;
1116 gap: 4px;
1117 font-size: 0.8125rem;
1118 padding-top: 10px;
1119 padding-bottom: 10px;
1120 line-height: 22px;
1121 margin: 0;
1122 border-top: 1px solid var(--hairline-color);
1123 width: 100%;
1124 box-sizing: border-box;
1125 }
1126
1127 .paginator a:link, .paginator a:visited {
1128 padding: 2px 6px;
1129 background: var(--button-bg);
1130 text-decoration: none;
1131 color: var(--button-fg);
1132 }
1133
1134 .paginator a.showall {
1135 border: none;
1136 background: none;
1137 color: var(--link-fg);
1138 }
1139
1140 .paginator a.showall:focus, .paginator a.showall:hover {
1141 background: none;
1142 color: var(--link-hover-color);
1143 }
1144
1145 .paginator .end {
1146 margin-right: 6px;
1147 }
1148
1149 .paginator .this-page {
1150 padding: 2px 6px;
1151 font-weight: bold;
1152 font-size: 0.8125rem;
1153 vertical-align: top;
1154 }
1155
1156 .paginator a:focus, .paginator a:hover {
1157 color: white;
1158 background: var(--link-hover-color);
1159 }
1160
1161 .paginator input {
1162 margin-left: auto;
1163 }
1164
1165 .base-svgs {
1166 display: none;
1167 }
1168
1169 .visually-hidden {
1170 position: absolute;
1171 width: 1px;
1172 height: 1px;
1173 padding: 0;
1174 overflow: hidden;
1175 clip: rect(0,0,0,0);
1176 white-space: nowrap;
1177 border: 0;
1178 color: var(--body-fg);
1179 background-color: var(--body-bg);
1180 }
--- a/assets/admin/css/changelists.59465e72d1ef.css
+++ b/assets/admin/css/changelists.59465e72d1ef.css
@@ -0,0 +1,343 @@
1
+/* CHANGELISTS */
2
+
3
+#changelist {
4
+ display: flex;
5
+ align-items: flex-start;
6
+ justify-content: space-between;
7
+}
8
+
9
+#changelist .changelist-form-container {
10
+ flex: 1 1 auto;
11
+ min-width: 0;
12
+}
13
+
14
+#changelist table {
15
+ width: 100%;
16
+}
17
+
18
+.change-list .hiddenfields { display:none; }
19
+
20
+.change-list .filtered table {
21
+ border-right: none;
22
+}
23
+
24
+.change-list .filtered {
25
+ min-height: 400px;
26
+}
27
+
28
+.change-list .filtered .results, .change-list .filtered .paginator,
29
+.filtered #toolbar, .filtered div.xfull {
30
+ width: auto;
31
+}
32
+
33
+.change-list .filtered table tbody th {
34
+ padding-right: 1em;
35
+}
36
+
37
+#changelist-form .results {
38
+ overflow-x: auto;
39
+ width: 100%;
40
+}
41
+
42
+#changelist .toplinks {
43
+ border-bottom: 1px solid var(--hairline-color);
44
+}
45
+
46
+#changelist .paginator {
47
+ color: var(--body-quiet-color);
48
+ border-bottom: 1px solid var(--hairline-color);
49
+ background: var(--body-bg);
50
+ overflow: hidden;
51
+}
52
+
53
+/* CHANGELIST TABLES */
54
+
55
+#changelist table thead th {
56
+ padding: 0;
57
+ white-space: nowrap;
58
+ vertical-align: middle;
59
+}
60
+
61
+#changelist table thead th.action-checkbox-column {
62
+ width: 1.5em;
63
+ text-align: center;
64
+}
65
+
66
+#changelist table tbody td.action-checkbox {
67
+ text-align: center;
68
+}
69
+
70
+#changelist table tfoot {
71
+ color: var(--body-quiet-color);
72
+}
73
+
74
+/* TOOLBAR */
75
+
76
+#toolbar {
77
+ padding: 8px 10px;
78
+ margin-bottom: 15px;
79
+ border-top: 1px solid var(--hairline-color);
80
+ border-bottom: 1px solid var(--hairline-color);
81
+ background: var(--darkened-bg);
82
+ color: var(--body-quiet-color);
83
+}
84
+
85
+#toolbar form input {
86
+ border-radius: 4px;
87
+ font-size: 0.875rem;
88
+ padding: 5px;
89
+ color: var(--body-fg);
90
+}
91
+
92
+#toolbar #searchbar {
93
+ height: 1.1875rem;
94
+ border: 1px solid var(--border-color);
95
+ padding: 2px 5px;
96
+ margin: 0;
97
+ vertical-align: top;
98
+ font-size: 0.8125rem;
99
+ max-width: 100%;
100
+}
101
+
102
+#toolbar #searchbar:focus {
103
+ border-color: var(--body-quiet-color);
104
+}
105
+
106
+#toolbar form input[type="submit"] {
107
+ border: 1px solid var(--border-color);
108
+ font-size: 0.8125rem;
109
+ padding: 4px 8px;
110
+ margin: 0;
111
+ vertical-align: middle;
112
+ background: var(--body-bg);
113
+ box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;
114
+ cursor: pointer;
115
+ color: var(--body-fg);
116
+}
117
+
118
+#toolbar form input[type="submit"]:focus,
119
+#toolbar form input[type="submit"]:hover {
120
+ border-color: var(--body-quiet-color);
121
+}
122
+
123
+#changelist-search img {
124
+ vertical-align: middle;
125
+ margin-right: 4px;
126
+}
127
+
128
+#changelist-search .help {
129
+ word-break: break-word;
130
+}
131
+
132
+/* FILTER COLUMN */
133
+
134
+#changelist-filter {
135
+ flex: 0 0 240px;
136
+ order: 1;
137
+ background: var(--darkened-bg);
138
+ border-left: none;
139
+ margin: 0 0 0 30px;
140
+}
141
+
142
+@media (forced-colors: active) {
143
+ #changelist-filter {
144
+ border: 1px solid;
145
+ }
146
+}
147
+
148
+#changelist-filter h2 {
149
+ font-size: 0.875rem;
150
+ text-transform: uppercase;
151
+ letter-spacing: 0.5px;
152
+ padding: 5px 15px;
153
+ margin-bottom: 12px;
154
+ border-bottom: none;
155
+}
156
+
157
+#changelist-filter h3,
158
+#changelist-filter details summary {
159
+ font-weight: 400;
160
+ padding: 0 15px;
161
+ margin-bottom: 10px;
162
+}
163
+
164
+#changelist-filter details summary > * {
165
+ display: inline;
166
+}
167
+
168
+#changelist-filter details > summary {
169
+ list-style-type: none;
170
+}
171
+
172
+#changelist-filter details > summary::-webkit-details-marker {
173
+ display: none;
174
+}
175
+
176
+#changelist-filter details > summary::before {
177
+ content: '→';
178
+ font-weight: bold;
179
+ color: var(--link-hover-color);
180
+}
181
+
182
+#changelist-filter details[open] > summary::before {
183
+ content: '↓';
184
+}
185
+
186
+#changelist-filter ul {
187
+ margin: 5px 0;
188
+ padding: 0 15px 15px;
189
+ border-bottom: 1px solid var(--hairline-color);
190
+}
191
+
192
+#changelist-filter ul:last-child {
193
+ border-bottom: none;
194
+}
195
+
196
+#changelist-filter li {
197
+ list-style-type: none;
198
+ margin-left: 0;
199
+ padding-left: 0;
200
+}
201
+
202
+#changelist-filter a {
203
+ display: block;
204
+ color: var(--body-quiet-color);
205
+ word-break: break-word;
206
+}
207
+
208
+#changelist-filter li.selected {
209
+ border-left: 5px solid var(--hairline-color);
210
+ padding-left: 10px;
211
+ margin-left: -15px;
212
+}
213
+
214
+#changelist-filter li.selected a {
215
+ color: var(--link-selected-fg);
216
+}
217
+
218
+#changelist-filter a:focus, #changelist-filter a:hover,
219
+#changelist-filter li.selected a:focus,
220
+#changelist-filter li.selected a:hover {
221
+ color: var(--link-hover-color);
222
+}
223
+
224
+#changelist-filter #changelist-filter-extra-actions {
225
+ font-size: 0.8125rem;
226
+ margin-bottom: 10px;
227
+ border-bottom: 1px solid var(--hairline-color);
228
+}
229
+
230
+/* DATE DRILLDOWN */
231
+
232
+.change-list .toplinks {
233
+ display: flex;
234
+ padding-bottom: 5px;
235
+ flex-wrap: wrap;
236
+ gap: 3px 17px;
237
+ font-weight: bold;
238
+}
239
+
240
+.change-list .toplinks a {
241
+ font-size: 0.8125rem;
242
+}
243
+
244
+.change-list .toplinks .date-back {
245
+ color: var(--body-quiet-color);
246
+}
247
+
248
+.change-list .toplinks .date-back:focus,
249
+.change-list .toplinks .date-back:hover {
250
+ color: var(--link-hover-color);
251
+}
252
+
253
+/* ACTIONS */
254
+
255
+.filtered .actions {
256
+ border-right: none;
257
+}
258
+
259
+#changelist table input {
260
+ margin: 0;
261
+ vertical-align: baseline;
262
+}
263
+
264
+/* Once the :has() pseudo-class is supported by all browsers, the tr.selected
265
+ selector and the JS adding the class can be removed. */
266
+#changelist tbody tr.selected {
267
+ background-color: var(--selected-row);
268
+}
269
+
270
+#changelist tbody tr:has(.action-select:checked) {
271
+ background-color: var(--selected-row);
272
+}
273
+
274
+@media (forced-colors: active) {
275
+ #changelist tbody tr.selected {
276
+ background-color: SelectedItem;
277
+ }
278
+ #changelist tbody tr:has(.action-select:checked) {
279
+ background-color: SelectedItem;
280
+ }
281
+}
282
+
283
+#changelist .actions {
284
+ padding: 10px;
285
+ background: var(--body-bg);
286
+ border-top: none;
287
+ border-bottom: none;
288
+ line-height: 1.5rem;
289
+ color: var(--body-quiet-color);
290
+ width: 100%;
291
+}
292
+
293
+#changelist .actions span.all,
294
+#changelist .actions span.action-counter,
295
+#changelist .actions span.clear,
296
+#changelist .actions span.question {
297
+ font-size: 0.8125rem;
298
+ margin: 0 0.5em;
299
+}
300
+
301
+#changelist .actions:last-child {
302
+ border-bottom: none;
303
+}
304
+
305
+#changelist .actions select {
306
+ vertical-align: top;
307
+ height: 1.5rem;
308
+ color: var(--body-fg);
309
+ border: 1px solid var(--border-color);
310
+ border-radius: 4px;
311
+ font-size: 0.875rem;
312
+ padding: 0 0 0 4px;
313
+ margin: 0;
314
+ margin-left: 10px;
315
+}
316
+
317
+#changelist .actions select:focus {
318
+ border-color: var(--body-quiet-color);
319
+}
320
+
321
+#changelist .actions label {
322
+ display: inline-block;
323
+ vertical-align: middle;
324
+ font-size: 0.8125rem;
325
+}
326
+
327
+#changelist .actions .button {
328
+ font-size: 0.8125rem;
329
+ border: 1px solid var(--border-color);
330
+ border-radius: 4px;
331
+ background: var(--body-bg);
332
+ box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;
333
+ cursor: pointer;
334
+ height: 1.5rem;
335
+ line-height: 1;
336
+ padding: 4px 8px;
337
+ margin: 0;
338
+ color: var(--body-fg);
339
+}
340
+
341
+#changelist .actions .button:focus, #changelist .actions .button:hover {
342
+ border-color: var(--body-quiet-color);
343
+}
--- a/assets/admin/css/changelists.59465e72d1ef.css
+++ b/assets/admin/css/changelists.59465e72d1ef.css
@@ -0,0 +1,343 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/changelists.59465e72d1ef.css
+++ b/assets/admin/css/changelists.59465e72d1ef.css
@@ -0,0 +1,343 @@
1 /* CHANGELISTS */
2
3 #changelist {
4 display: flex;
5 align-items: flex-start;
6 justify-content: space-between;
7 }
8
9 #changelist .changelist-form-container {
10 flex: 1 1 auto;
11 min-width: 0;
12 }
13
14 #changelist table {
15 width: 100%;
16 }
17
18 .change-list .hiddenfields { display:none; }
19
20 .change-list .filtered table {
21 border-right: none;
22 }
23
24 .change-list .filtered {
25 min-height: 400px;
26 }
27
28 .change-list .filtered .results, .change-list .filtered .paginator,
29 .filtered #toolbar, .filtered div.xfull {
30 width: auto;
31 }
32
33 .change-list .filtered table tbody th {
34 padding-right: 1em;
35 }
36
37 #changelist-form .results {
38 overflow-x: auto;
39 width: 100%;
40 }
41
42 #changelist .toplinks {
43 border-bottom: 1px solid var(--hairline-color);
44 }
45
46 #changelist .paginator {
47 color: var(--body-quiet-color);
48 border-bottom: 1px solid var(--hairline-color);
49 background: var(--body-bg);
50 overflow: hidden;
51 }
52
53 /* CHANGELIST TABLES */
54
55 #changelist table thead th {
56 padding: 0;
57 white-space: nowrap;
58 vertical-align: middle;
59 }
60
61 #changelist table thead th.action-checkbox-column {
62 width: 1.5em;
63 text-align: center;
64 }
65
66 #changelist table tbody td.action-checkbox {
67 text-align: center;
68 }
69
70 #changelist table tfoot {
71 color: var(--body-quiet-color);
72 }
73
74 /* TOOLBAR */
75
76 #toolbar {
77 padding: 8px 10px;
78 margin-bottom: 15px;
79 border-top: 1px solid var(--hairline-color);
80 border-bottom: 1px solid var(--hairline-color);
81 background: var(--darkened-bg);
82 color: var(--body-quiet-color);
83 }
84
85 #toolbar form input {
86 border-radius: 4px;
87 font-size: 0.875rem;
88 padding: 5px;
89 color: var(--body-fg);
90 }
91
92 #toolbar #searchbar {
93 height: 1.1875rem;
94 border: 1px solid var(--border-color);
95 padding: 2px 5px;
96 margin: 0;
97 vertical-align: top;
98 font-size: 0.8125rem;
99 max-width: 100%;
100 }
101
102 #toolbar #searchbar:focus {
103 border-color: var(--body-quiet-color);
104 }
105
106 #toolbar form input[type="submit"] {
107 border: 1px solid var(--border-color);
108 font-size: 0.8125rem;
109 padding: 4px 8px;
110 margin: 0;
111 vertical-align: middle;
112 background: var(--body-bg);
113 box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;
114 cursor: pointer;
115 color: var(--body-fg);
116 }
117
118 #toolbar form input[type="submit"]:focus,
119 #toolbar form input[type="submit"]:hover {
120 border-color: var(--body-quiet-color);
121 }
122
123 #changelist-search img {
124 vertical-align: middle;
125 margin-right: 4px;
126 }
127
128 #changelist-search .help {
129 word-break: break-word;
130 }
131
132 /* FILTER COLUMN */
133
134 #changelist-filter {
135 flex: 0 0 240px;
136 order: 1;
137 background: var(--darkened-bg);
138 border-left: none;
139 margin: 0 0 0 30px;
140 }
141
142 @media (forced-colors: active) {
143 #changelist-filter {
144 border: 1px solid;
145 }
146 }
147
148 #changelist-filter h2 {
149 font-size: 0.875rem;
150 text-transform: uppercase;
151 letter-spacing: 0.5px;
152 padding: 5px 15px;
153 margin-bottom: 12px;
154 border-bottom: none;
155 }
156
157 #changelist-filter h3,
158 #changelist-filter details summary {
159 font-weight: 400;
160 padding: 0 15px;
161 margin-bottom: 10px;
162 }
163
164 #changelist-filter details summary > * {
165 display: inline;
166 }
167
168 #changelist-filter details > summary {
169 list-style-type: none;
170 }
171
172 #changelist-filter details > summary::-webkit-details-marker {
173 display: none;
174 }
175
176 #changelist-filter details > summary::before {
177 content: '→';
178 font-weight: bold;
179 color: var(--link-hover-color);
180 }
181
182 #changelist-filter details[open] > summary::before {
183 content: '↓';
184 }
185
186 #changelist-filter ul {
187 margin: 5px 0;
188 padding: 0 15px 15px;
189 border-bottom: 1px solid var(--hairline-color);
190 }
191
192 #changelist-filter ul:last-child {
193 border-bottom: none;
194 }
195
196 #changelist-filter li {
197 list-style-type: none;
198 margin-left: 0;
199 padding-left: 0;
200 }
201
202 #changelist-filter a {
203 display: block;
204 color: var(--body-quiet-color);
205 word-break: break-word;
206 }
207
208 #changelist-filter li.selected {
209 border-left: 5px solid var(--hairline-color);
210 padding-left: 10px;
211 margin-left: -15px;
212 }
213
214 #changelist-filter li.selected a {
215 color: var(--link-selected-fg);
216 }
217
218 #changelist-filter a:focus, #changelist-filter a:hover,
219 #changelist-filter li.selected a:focus,
220 #changelist-filter li.selected a:hover {
221 color: var(--link-hover-color);
222 }
223
224 #changelist-filter #changelist-filter-extra-actions {
225 font-size: 0.8125rem;
226 margin-bottom: 10px;
227 border-bottom: 1px solid var(--hairline-color);
228 }
229
230 /* DATE DRILLDOWN */
231
232 .change-list .toplinks {
233 display: flex;
234 padding-bottom: 5px;
235 flex-wrap: wrap;
236 gap: 3px 17px;
237 font-weight: bold;
238 }
239
240 .change-list .toplinks a {
241 font-size: 0.8125rem;
242 }
243
244 .change-list .toplinks .date-back {
245 color: var(--body-quiet-color);
246 }
247
248 .change-list .toplinks .date-back:focus,
249 .change-list .toplinks .date-back:hover {
250 color: var(--link-hover-color);
251 }
252
253 /* ACTIONS */
254
255 .filtered .actions {
256 border-right: none;
257 }
258
259 #changelist table input {
260 margin: 0;
261 vertical-align: baseline;
262 }
263
264 /* Once the :has() pseudo-class is supported by all browsers, the tr.selected
265 selector and the JS adding the class can be removed. */
266 #changelist tbody tr.selected {
267 background-color: var(--selected-row);
268 }
269
270 #changelist tbody tr:has(.action-select:checked) {
271 background-color: var(--selected-row);
272 }
273
274 @media (forced-colors: active) {
275 #changelist tbody tr.selected {
276 background-color: SelectedItem;
277 }
278 #changelist tbody tr:has(.action-select:checked) {
279 background-color: SelectedItem;
280 }
281 }
282
283 #changelist .actions {
284 padding: 10px;
285 background: var(--body-bg);
286 border-top: none;
287 border-bottom: none;
288 line-height: 1.5rem;
289 color: var(--body-quiet-color);
290 width: 100%;
291 }
292
293 #changelist .actions span.all,
294 #changelist .actions span.action-counter,
295 #changelist .actions span.clear,
296 #changelist .actions span.question {
297 font-size: 0.8125rem;
298 margin: 0 0.5em;
299 }
300
301 #changelist .actions:last-child {
302 border-bottom: none;
303 }
304
305 #changelist .actions select {
306 vertical-align: top;
307 height: 1.5rem;
308 color: var(--body-fg);
309 border: 1px solid var(--border-color);
310 border-radius: 4px;
311 font-size: 0.875rem;
312 padding: 0 0 0 4px;
313 margin: 0;
314 margin-left: 10px;
315 }
316
317 #changelist .actions select:focus {
318 border-color: var(--body-quiet-color);
319 }
320
321 #changelist .actions label {
322 display: inline-block;
323 vertical-align: middle;
324 font-size: 0.8125rem;
325 }
326
327 #changelist .actions .button {
328 font-size: 0.8125rem;
329 border: 1px solid var(--border-color);
330 border-radius: 4px;
331 background: var(--body-bg);
332 box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;
333 cursor: pointer;
334 height: 1.5rem;
335 line-height: 1;
336 padding: 4px 8px;
337 margin: 0;
338 color: var(--body-fg);
339 }
340
341 #changelist .actions .button:focus, #changelist .actions .button:hover {
342 border-color: var(--body-quiet-color);
343 }
--- a/assets/admin/css/changelists.css
+++ b/assets/admin/css/changelists.css
@@ -0,0 +1,343 @@
1
+/* CHANGELISTS */
2
+
3
+#changelist {
4
+ display: flex;
5
+ align-items: flex-start;
6
+ justify-content: space-between;
7
+}
8
+
9
+#changelist .changelist-form-container {
10
+ flex: 1 1 auto;
11
+ min-width: 0;
12
+}
13
+
14
+#changelist table {
15
+ width: 100%;
16
+}
17
+
18
+.change-list .hiddenfields { display:none; }
19
+
20
+.change-list .filtered table {
21
+ border-right: none;
22
+}
23
+
24
+.change-list .filtered {
25
+ min-height: 400px;
26
+}
27
+
28
+.change-list .filtered .results, .change-list .filtered .paginator,
29
+.filtered #toolbar, .filtered div.xfull {
30
+ width: auto;
31
+}
32
+
33
+.change-list .filtered table tbody th {
34
+ padding-right: 1em;
35
+}
36
+
37
+#changelist-form .results {
38
+ overflow-x: auto;
39
+ width: 100%;
40
+}
41
+
42
+#changelist .toplinks {
43
+ border-bottom: 1px solid var(--hairline-color);
44
+}
45
+
46
+#changelist .paginator {
47
+ color: var(--body-quiet-color);
48
+ border-bottom: 1px solid var(--hairline-color);
49
+ background: var(--body-bg);
50
+ overflow: hidden;
51
+}
52
+
53
+/* CHANGELIST TABLES */
54
+
55
+#changelist table thead th {
56
+ padding: 0;
57
+ white-space: nowrap;
58
+ vertical-align: middle;
59
+}
60
+
61
+#changelist table thead th.action-checkbox-column {
62
+ width: 1.5em;
63
+ text-align: center;
64
+}
65
+
66
+#changelist table tbody td.action-checkbox {
67
+ text-align: center;
68
+}
69
+
70
+#changelist table tfoot {
71
+ color: var(--body-quiet-color);
72
+}
73
+
74
+/* TOOLBAR */
75
+
76
+#toolbar {
77
+ padding: 8px 10px;
78
+ margin-bottom: 15px;
79
+ border-top: 1px solid var(--hairline-color);
80
+ border-bottom: 1px solid var(--hairline-color);
81
+ background: var(--darkened-bg);
82
+ color: var(--body-quiet-color);
83
+}
84
+
85
+#toolbar form input {
86
+ border-radius: 4px;
87
+ font-size: 0.875rem;
88
+ padding: 5px;
89
+ color: var(--body-fg);
90
+}
91
+
92
+#toolbar #searchbar {
93
+ height: 1.1875rem;
94
+ border: 1px solid var(--border-color);
95
+ padding: 2px 5px;
96
+ margin: 0;
97
+ vertical-align: top;
98
+ font-size: 0.8125rem;
99
+ max-width: 100%;
100
+}
101
+
102
+#toolbar #searchbar:focus {
103
+ border-color: var(--body-quiet-color);
104
+}
105
+
106
+#toolbar form input[type="submit"] {
107
+ border: 1px solid var(--border-color);
108
+ font-size: 0.8125rem;
109
+ padding: 4px 8px;
110
+ margin: 0;
111
+ vertical-align: middle;
112
+ background: var(--body-bg);
113
+ box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;
114
+ cursor: pointer;
115
+ color: var(--body-fg);
116
+}
117
+
118
+#toolbar form input[type="submit"]:focus,
119
+#toolbar form input[type="submit"]:hover {
120
+ border-color: var(--body-quiet-color);
121
+}
122
+
123
+#changelist-search img {
124
+ vertical-align: middle;
125
+ margin-right: 4px;
126
+}
127
+
128
+#changelist-search .help {
129
+ word-break: break-word;
130
+}
131
+
132
+/* FILTER COLUMN */
133
+
134
+#changelist-filter {
135
+ flex: 0 0 240px;
136
+ order: 1;
137
+ background: var(--darkened-bg);
138
+ border-left: none;
139
+ margin: 0 0 0 30px;
140
+}
141
+
142
+@media (forced-colors: active) {
143
+ #changelist-filter {
144
+ border: 1px solid;
145
+ }
146
+}
147
+
148
+#changelist-filter h2 {
149
+ font-size: 0.875rem;
150
+ text-transform: uppercase;
151
+ letter-spacing: 0.5px;
152
+ padding: 5px 15px;
153
+ margin-bottom: 12px;
154
+ border-bottom: none;
155
+}
156
+
157
+#changelist-filter h3,
158
+#changelist-filter details summary {
159
+ font-weight: 400;
160
+ padding: 0 15px;
161
+ margin-bottom: 10px;
162
+}
163
+
164
+#changelist-filter details summary > * {
165
+ display: inline;
166
+}
167
+
168
+#changelist-filter details > summary {
169
+ list-style-type: none;
170
+}
171
+
172
+#changelist-filter details > summary::-webkit-details-marker {
173
+ display: none;
174
+}
175
+
176
+#changelist-filter details > summary::before {
177
+ content: '→';
178
+ font-weight: bold;
179
+ color: var(--link-hover-color);
180
+}
181
+
182
+#changelist-filter details[open] > summary::before {
183
+ content: '↓';
184
+}
185
+
186
+#changelist-filter ul {
187
+ margin: 5px 0;
188
+ padding: 0 15px 15px;
189
+ border-bottom: 1px solid var(--hairline-color);
190
+}
191
+
192
+#changelist-filter ul:last-child {
193
+ border-bottom: none;
194
+}
195
+
196
+#changelist-filter li {
197
+ list-style-type: none;
198
+ margin-left: 0;
199
+ padding-left: 0;
200
+}
201
+
202
+#changelist-filter a {
203
+ display: block;
204
+ color: var(--body-quiet-color);
205
+ word-break: break-word;
206
+}
207
+
208
+#changelist-filter li.selected {
209
+ border-left: 5px solid var(--hairline-color);
210
+ padding-left: 10px;
211
+ margin-left: -15px;
212
+}
213
+
214
+#changelist-filter li.selected a {
215
+ color: var(--link-selected-fg);
216
+}
217
+
218
+#changelist-filter a:focus, #changelist-filter a:hover,
219
+#changelist-filter li.selected a:focus,
220
+#changelist-filter li.selected a:hover {
221
+ color: var(--link-hover-color);
222
+}
223
+
224
+#changelist-filter #changelist-filter-extra-actions {
225
+ font-size: 0.8125rem;
226
+ margin-bottom: 10px;
227
+ border-bottom: 1px solid var(--hairline-color);
228
+}
229
+
230
+/* DATE DRILLDOWN */
231
+
232
+.change-list .toplinks {
233
+ display: flex;
234
+ padding-bottom: 5px;
235
+ flex-wrap: wrap;
236
+ gap: 3px 17px;
237
+ font-weight: bold;
238
+}
239
+
240
+.change-list .toplinks a {
241
+ font-size: 0.8125rem;
242
+}
243
+
244
+.change-list .toplinks .date-back {
245
+ color: var(--body-quiet-color);
246
+}
247
+
248
+.change-list .toplinks .date-back:focus,
249
+.change-list .toplinks .date-back:hover {
250
+ color: var(--link-hover-color);
251
+}
252
+
253
+/* ACTIONS */
254
+
255
+.filtered .actions {
256
+ border-right: none;
257
+}
258
+
259
+#changelist table input {
260
+ margin: 0;
261
+ vertical-align: baseline;
262
+}
263
+
264
+/* Once the :has() pseudo-class is supported by all browsers, the tr.selected
265
+ selector and the JS adding the class can be removed. */
266
+#changelist tbody tr.selected {
267
+ background-color: var(--selected-row);
268
+}
269
+
270
+#changelist tbody tr:has(.action-select:checked) {
271
+ background-color: var(--selected-row);
272
+}
273
+
274
+@media (forced-colors: active) {
275
+ #changelist tbody tr.selected {
276
+ background-color: SelectedItem;
277
+ }
278
+ #changelist tbody tr:has(.action-select:checked) {
279
+ background-color: SelectedItem;
280
+ }
281
+}
282
+
283
+#changelist .actions {
284
+ padding: 10px;
285
+ background: var(--body-bg);
286
+ border-top: none;
287
+ border-bottom: none;
288
+ line-height: 1.5rem;
289
+ color: var(--body-quiet-color);
290
+ width: 100%;
291
+}
292
+
293
+#changelist .actions span.all,
294
+#changelist .actions span.action-counter,
295
+#changelist .actions span.clear,
296
+#changelist .actions span.question {
297
+ font-size: 0.8125rem;
298
+ margin: 0 0.5em;
299
+}
300
+
301
+#changelist .actions:last-child {
302
+ border-bottom: none;
303
+}
304
+
305
+#changelist .actions select {
306
+ vertical-align: top;
307
+ height: 1.5rem;
308
+ color: var(--body-fg);
309
+ border: 1px solid var(--border-color);
310
+ border-radius: 4px;
311
+ font-size: 0.875rem;
312
+ padding: 0 0 0 4px;
313
+ margin: 0;
314
+ margin-left: 10px;
315
+}
316
+
317
+#changelist .actions select:focus {
318
+ border-color: var(--body-quiet-color);
319
+}
320
+
321
+#changelist .actions label {
322
+ display: inline-block;
323
+ vertical-align: middle;
324
+ font-size: 0.8125rem;
325
+}
326
+
327
+#changelist .actions .button {
328
+ font-size: 0.8125rem;
329
+ border: 1px solid var(--border-color);
330
+ border-radius: 4px;
331
+ background: var(--body-bg);
332
+ box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;
333
+ cursor: pointer;
334
+ height: 1.5rem;
335
+ line-height: 1;
336
+ padding: 4px 8px;
337
+ margin: 0;
338
+ color: var(--body-fg);
339
+}
340
+
341
+#changelist .actions .button:focus, #changelist .actions .button:hover {
342
+ border-color: var(--body-quiet-color);
343
+}
--- a/assets/admin/css/changelists.css
+++ b/assets/admin/css/changelists.css
@@ -0,0 +1,343 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/changelists.css
+++ b/assets/admin/css/changelists.css
@@ -0,0 +1,343 @@
1 /* CHANGELISTS */
2
3 #changelist {
4 display: flex;
5 align-items: flex-start;
6 justify-content: space-between;
7 }
8
9 #changelist .changelist-form-container {
10 flex: 1 1 auto;
11 min-width: 0;
12 }
13
14 #changelist table {
15 width: 100%;
16 }
17
18 .change-list .hiddenfields { display:none; }
19
20 .change-list .filtered table {
21 border-right: none;
22 }
23
24 .change-list .filtered {
25 min-height: 400px;
26 }
27
28 .change-list .filtered .results, .change-list .filtered .paginator,
29 .filtered #toolbar, .filtered div.xfull {
30 width: auto;
31 }
32
33 .change-list .filtered table tbody th {
34 padding-right: 1em;
35 }
36
37 #changelist-form .results {
38 overflow-x: auto;
39 width: 100%;
40 }
41
42 #changelist .toplinks {
43 border-bottom: 1px solid var(--hairline-color);
44 }
45
46 #changelist .paginator {
47 color: var(--body-quiet-color);
48 border-bottom: 1px solid var(--hairline-color);
49 background: var(--body-bg);
50 overflow: hidden;
51 }
52
53 /* CHANGELIST TABLES */
54
55 #changelist table thead th {
56 padding: 0;
57 white-space: nowrap;
58 vertical-align: middle;
59 }
60
61 #changelist table thead th.action-checkbox-column {
62 width: 1.5em;
63 text-align: center;
64 }
65
66 #changelist table tbody td.action-checkbox {
67 text-align: center;
68 }
69
70 #changelist table tfoot {
71 color: var(--body-quiet-color);
72 }
73
74 /* TOOLBAR */
75
76 #toolbar {
77 padding: 8px 10px;
78 margin-bottom: 15px;
79 border-top: 1px solid var(--hairline-color);
80 border-bottom: 1px solid var(--hairline-color);
81 background: var(--darkened-bg);
82 color: var(--body-quiet-color);
83 }
84
85 #toolbar form input {
86 border-radius: 4px;
87 font-size: 0.875rem;
88 padding: 5px;
89 color: var(--body-fg);
90 }
91
92 #toolbar #searchbar {
93 height: 1.1875rem;
94 border: 1px solid var(--border-color);
95 padding: 2px 5px;
96 margin: 0;
97 vertical-align: top;
98 font-size: 0.8125rem;
99 max-width: 100%;
100 }
101
102 #toolbar #searchbar:focus {
103 border-color: var(--body-quiet-color);
104 }
105
106 #toolbar form input[type="submit"] {
107 border: 1px solid var(--border-color);
108 font-size: 0.8125rem;
109 padding: 4px 8px;
110 margin: 0;
111 vertical-align: middle;
112 background: var(--body-bg);
113 box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;
114 cursor: pointer;
115 color: var(--body-fg);
116 }
117
118 #toolbar form input[type="submit"]:focus,
119 #toolbar form input[type="submit"]:hover {
120 border-color: var(--body-quiet-color);
121 }
122
123 #changelist-search img {
124 vertical-align: middle;
125 margin-right: 4px;
126 }
127
128 #changelist-search .help {
129 word-break: break-word;
130 }
131
132 /* FILTER COLUMN */
133
134 #changelist-filter {
135 flex: 0 0 240px;
136 order: 1;
137 background: var(--darkened-bg);
138 border-left: none;
139 margin: 0 0 0 30px;
140 }
141
142 @media (forced-colors: active) {
143 #changelist-filter {
144 border: 1px solid;
145 }
146 }
147
148 #changelist-filter h2 {
149 font-size: 0.875rem;
150 text-transform: uppercase;
151 letter-spacing: 0.5px;
152 padding: 5px 15px;
153 margin-bottom: 12px;
154 border-bottom: none;
155 }
156
157 #changelist-filter h3,
158 #changelist-filter details summary {
159 font-weight: 400;
160 padding: 0 15px;
161 margin-bottom: 10px;
162 }
163
164 #changelist-filter details summary > * {
165 display: inline;
166 }
167
168 #changelist-filter details > summary {
169 list-style-type: none;
170 }
171
172 #changelist-filter details > summary::-webkit-details-marker {
173 display: none;
174 }
175
176 #changelist-filter details > summary::before {
177 content: '→';
178 font-weight: bold;
179 color: var(--link-hover-color);
180 }
181
182 #changelist-filter details[open] > summary::before {
183 content: '↓';
184 }
185
186 #changelist-filter ul {
187 margin: 5px 0;
188 padding: 0 15px 15px;
189 border-bottom: 1px solid var(--hairline-color);
190 }
191
192 #changelist-filter ul:last-child {
193 border-bottom: none;
194 }
195
196 #changelist-filter li {
197 list-style-type: none;
198 margin-left: 0;
199 padding-left: 0;
200 }
201
202 #changelist-filter a {
203 display: block;
204 color: var(--body-quiet-color);
205 word-break: break-word;
206 }
207
208 #changelist-filter li.selected {
209 border-left: 5px solid var(--hairline-color);
210 padding-left: 10px;
211 margin-left: -15px;
212 }
213
214 #changelist-filter li.selected a {
215 color: var(--link-selected-fg);
216 }
217
218 #changelist-filter a:focus, #changelist-filter a:hover,
219 #changelist-filter li.selected a:focus,
220 #changelist-filter li.selected a:hover {
221 color: var(--link-hover-color);
222 }
223
224 #changelist-filter #changelist-filter-extra-actions {
225 font-size: 0.8125rem;
226 margin-bottom: 10px;
227 border-bottom: 1px solid var(--hairline-color);
228 }
229
230 /* DATE DRILLDOWN */
231
232 .change-list .toplinks {
233 display: flex;
234 padding-bottom: 5px;
235 flex-wrap: wrap;
236 gap: 3px 17px;
237 font-weight: bold;
238 }
239
240 .change-list .toplinks a {
241 font-size: 0.8125rem;
242 }
243
244 .change-list .toplinks .date-back {
245 color: var(--body-quiet-color);
246 }
247
248 .change-list .toplinks .date-back:focus,
249 .change-list .toplinks .date-back:hover {
250 color: var(--link-hover-color);
251 }
252
253 /* ACTIONS */
254
255 .filtered .actions {
256 border-right: none;
257 }
258
259 #changelist table input {
260 margin: 0;
261 vertical-align: baseline;
262 }
263
264 /* Once the :has() pseudo-class is supported by all browsers, the tr.selected
265 selector and the JS adding the class can be removed. */
266 #changelist tbody tr.selected {
267 background-color: var(--selected-row);
268 }
269
270 #changelist tbody tr:has(.action-select:checked) {
271 background-color: var(--selected-row);
272 }
273
274 @media (forced-colors: active) {
275 #changelist tbody tr.selected {
276 background-color: SelectedItem;
277 }
278 #changelist tbody tr:has(.action-select:checked) {
279 background-color: SelectedItem;
280 }
281 }
282
283 #changelist .actions {
284 padding: 10px;
285 background: var(--body-bg);
286 border-top: none;
287 border-bottom: none;
288 line-height: 1.5rem;
289 color: var(--body-quiet-color);
290 width: 100%;
291 }
292
293 #changelist .actions span.all,
294 #changelist .actions span.action-counter,
295 #changelist .actions span.clear,
296 #changelist .actions span.question {
297 font-size: 0.8125rem;
298 margin: 0 0.5em;
299 }
300
301 #changelist .actions:last-child {
302 border-bottom: none;
303 }
304
305 #changelist .actions select {
306 vertical-align: top;
307 height: 1.5rem;
308 color: var(--body-fg);
309 border: 1px solid var(--border-color);
310 border-radius: 4px;
311 font-size: 0.875rem;
312 padding: 0 0 0 4px;
313 margin: 0;
314 margin-left: 10px;
315 }
316
317 #changelist .actions select:focus {
318 border-color: var(--body-quiet-color);
319 }
320
321 #changelist .actions label {
322 display: inline-block;
323 vertical-align: middle;
324 font-size: 0.8125rem;
325 }
326
327 #changelist .actions .button {
328 font-size: 0.8125rem;
329 border: 1px solid var(--border-color);
330 border-radius: 4px;
331 background: var(--body-bg);
332 box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;
333 cursor: pointer;
334 height: 1.5rem;
335 line-height: 1;
336 padding: 4px 8px;
337 margin: 0;
338 color: var(--body-fg);
339 }
340
341 #changelist .actions .button:focus, #changelist .actions .button:hover {
342 border-color: var(--body-quiet-color);
343 }
--- a/assets/admin/css/constance.9180b990baa4.css
+++ b/assets/admin/css/constance.9180b990baa4.css
@@ -0,0 +1,34 @@
1
+#result_list .changed {
2
+ background-color: #ffc;
3
+}
4
+#changelist table thead th .text {
5
+ padding: 2px 5px;
6
+}
7
+#changelist table tbody td:first-child {
8
+ text-align: left;
9
+}
10
+#changelist-form ul.errorlist {
11
+ margin: 0 !important;
12
+}
13
+.help {
14
+ font-weight: normal !important;
15
+}
16
+#results {
17
+ overflow-x: auto;
18
+}
19
+.item-anchor {
20
+ visibility: hidden;
21
+ margin-left: .1em;
22
+}
23
+.item-name {
24
+ white-space: nowrap;
25
+}
26
+.item-name:hover .item-anchor {
27
+ visibility: visible;
28
+}
29
+.sticky-footer {
30
+ position: sticky;
31
+ width: 100%;
32
+ left: 0;
33
+ bottom: 0;
34
+}
--- a/assets/admin/css/constance.9180b990baa4.css
+++ b/assets/admin/css/constance.9180b990baa4.css
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/constance.9180b990baa4.css
+++ b/assets/admin/css/constance.9180b990baa4.css
@@ -0,0 +1,34 @@
1 #result_list .changed {
2 background-color: #ffc;
3 }
4 #changelist table thead th .text {
5 padding: 2px 5px;
6 }
7 #changelist table tbody td:first-child {
8 text-align: left;
9 }
10 #changelist-form ul.errorlist {
11 margin: 0 !important;
12 }
13 .help {
14 font-weight: normal !important;
15 }
16 #results {
17 overflow-x: auto;
18 }
19 .item-anchor {
20 visibility: hidden;
21 margin-left: .1em;
22 }
23 .item-name {
24 white-space: nowrap;
25 }
26 .item-name:hover .item-anchor {
27 visibility: visible;
28 }
29 .sticky-footer {
30 position: sticky;
31 width: 100%;
32 left: 0;
33 bottom: 0;
34 }
--- a/assets/admin/css/constance.css
+++ b/assets/admin/css/constance.css
@@ -0,0 +1,34 @@
1
+#result_list .changed {
2
+ background-color: #ffc;
3
+}
4
+#changelist table thead th .text {
5
+ padding: 2px 5px;
6
+}
7
+#changelist table tbody td:first-child {
8
+ text-align: left;
9
+}
10
+#changelist-form ul.errorlist {
11
+ margin: 0 !important;
12
+}
13
+.help {
14
+ font-weight: normal !important;
15
+}
16
+#results {
17
+ overflow-x: auto;
18
+}
19
+.item-anchor {
20
+ visibility: hidden;
21
+ margin-left: .1em;
22
+}
23
+.item-name {
24
+ white-space: nowrap;
25
+}
26
+.item-name:hover .item-anchor {
27
+ visibility: visible;
28
+}
29
+.sticky-footer {
30
+ position: sticky;
31
+ width: 100%;
32
+ left: 0;
33
+ bottom: 0;
34
+}
--- a/assets/admin/css/constance.css
+++ b/assets/admin/css/constance.css
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/constance.css
+++ b/assets/admin/css/constance.css
@@ -0,0 +1,34 @@
1 #result_list .changed {
2 background-color: #ffc;
3 }
4 #changelist table thead th .text {
5 padding: 2px 5px;
6 }
7 #changelist table tbody td:first-child {
8 text-align: left;
9 }
10 #changelist-form ul.errorlist {
11 margin: 0 !important;
12 }
13 .help {
14 font-weight: normal !important;
15 }
16 #results {
17 overflow-x: auto;
18 }
19 .item-anchor {
20 visibility: hidden;
21 margin-left: .1em;
22 }
23 .item-name {
24 white-space: nowrap;
25 }
26 .item-name:hover .item-anchor {
27 visibility: visible;
28 }
29 .sticky-footer {
30 position: sticky;
31 width: 100%;
32 left: 0;
33 bottom: 0;
34 }
--- a/assets/admin/css/dark_mode.1215cee25eaa.css
+++ b/assets/admin/css/dark_mode.1215cee25eaa.css
@@ -0,0 +1,130 @@
1
+@media (prefers-color-scheme: dark) {
2
+ :root {
3
+ --primary: #264b5d;
4
+ --primary-fg: #f7f7f7;
5
+
6
+ --body-fg: #eeeeee;
7
+ --body-bg: #121212;
8
+ --body-quiet-color: #d0d0d0;
9
+ --body-medium-color: #e0e0e0;
10
+ --body-loud-color: #ffffff;
11
+
12
+ --breadcrumbs-link-fg: #e0e0e0;
13
+ --breadcrumbs-bg: var(--primary);
14
+
15
+ --link-fg: #81d4fa;
16
+ --link-hover-color: #4ac1f7;
17
+ --link-selected-fg: #6f94c6;
18
+
19
+ --hairline-color: #272727;
20
+ --border-color: #353535;
21
+
22
+ --error-fg: #e35f5f;
23
+ --message-success-bg: #006b1b;
24
+ --message-warning-bg: #583305;
25
+ --message-error-bg: #570808;
26
+
27
+ --darkened-bg: #212121;
28
+ --selected-bg: #1b1b1b;
29
+ --selected-row: #00363a;
30
+
31
+ --close-button-bg: #333333;
32
+ --close-button-hover-bg: #666666;
33
+
34
+ color-scheme: dark;
35
+ }
36
+ }
37
+
38
+
39
+html[data-theme="dark"] {
40
+ --primary: #264b5d;
41
+ --primary-fg: #f7f7f7;
42
+
43
+ --body-fg: #eeeeee;
44
+ --body-bg: #121212;
45
+ --body-quiet-color: #d0d0d0;
46
+ --body-medium-color: #e0e0e0;
47
+ --body-loud-color: #ffffff;
48
+
49
+ --breadcrumbs-link-fg: #e0e0e0;
50
+ --breadcrumbs-bg: var(--primary);
51
+
52
+ --link-fg: #81d4fa;
53
+ --link-hover-color: #4ac1f7;
54
+ --link-selected-fg: #6f94c6;
55
+
56
+ --hairline-color: #272727;
57
+ --border-color: #353535;
58
+
59
+ --error-fg: #e35f5f;
60
+ --message-success-bg: #006b1b;
61
+ --message-warning-bg: #583305;
62
+ --message-error-bg: #570808;
63
+
64
+ --darkened-bg: #212121;
65
+ --selected-bg: #1b1b1b;
66
+ --selected-row: #00363a;
67
+
68
+ --close-button-bg: #333333;
69
+ --close-button-hover-bg: #666666;
70
+
71
+ color-scheme: dark;
72
+}
73
+
74
+/* THEME SWITCH */
75
+.theme-toggle {
76
+ cursor: pointer;
77
+ border: none;
78
+ padding: 0;
79
+ background: transparent;
80
+ vertical-align: middle;
81
+ margin-inline-start: 5px;
82
+ margin-top: -1px;
83
+}
84
+
85
+.theme-toggle svg {
86
+ vertical-align: middle;
87
+ height: 1.5rem;
88
+ width: 1.5rem;
89
+ display: none;
90
+}
91
+
92
+/*
93
+Fully hide screen reader text so we only show the one matching the current
94
+theme.
95
+*/
96
+.theme-toggle .visually-hidden {
97
+ display: none;
98
+}
99
+
100
+html[data-theme="auto"] .theme-toggle .theme-label-when-auto {
101
+ display: block;
102
+}
103
+
104
+html[data-theme="dark"] .theme-toggle .theme-label-when-dark {
105
+ display: block;
106
+}
107
+
108
+html[data-theme="light"] .theme-toggle .theme-label-when-light {
109
+ display: block;
110
+}
111
+
112
+/* ICONS */
113
+.theme-toggle svg.theme-icon-when-auto,
114
+.theme-toggle svg.theme-icon-when-dark,
115
+.theme-toggle svg.theme-icon-when-light {
116
+ fill: var(--header-link-color);
117
+ color: var(--header-bg);
118
+}
119
+
120
+html[data-theme="auto"] .theme-toggle svg.theme-icon-when-auto {
121
+ display: block;
122
+}
123
+
124
+html[data-theme="dark"] .theme-toggle svg.theme-icon-when-dark {
125
+ display: block;
126
+}
127
+
128
+html[data-theme="light"] .theme-toggle svg.theme-icon-when-light {
129
+ display: block;
130
+}
--- a/assets/admin/css/dark_mode.1215cee25eaa.css
+++ b/assets/admin/css/dark_mode.1215cee25eaa.css
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/dark_mode.1215cee25eaa.css
+++ b/assets/admin/css/dark_mode.1215cee25eaa.css
@@ -0,0 +1,130 @@
1 @media (prefers-color-scheme: dark) {
2 :root {
3 --primary: #264b5d;
4 --primary-fg: #f7f7f7;
5
6 --body-fg: #eeeeee;
7 --body-bg: #121212;
8 --body-quiet-color: #d0d0d0;
9 --body-medium-color: #e0e0e0;
10 --body-loud-color: #ffffff;
11
12 --breadcrumbs-link-fg: #e0e0e0;
13 --breadcrumbs-bg: var(--primary);
14
15 --link-fg: #81d4fa;
16 --link-hover-color: #4ac1f7;
17 --link-selected-fg: #6f94c6;
18
19 --hairline-color: #272727;
20 --border-color: #353535;
21
22 --error-fg: #e35f5f;
23 --message-success-bg: #006b1b;
24 --message-warning-bg: #583305;
25 --message-error-bg: #570808;
26
27 --darkened-bg: #212121;
28 --selected-bg: #1b1b1b;
29 --selected-row: #00363a;
30
31 --close-button-bg: #333333;
32 --close-button-hover-bg: #666666;
33
34 color-scheme: dark;
35 }
36 }
37
38
39 html[data-theme="dark"] {
40 --primary: #264b5d;
41 --primary-fg: #f7f7f7;
42
43 --body-fg: #eeeeee;
44 --body-bg: #121212;
45 --body-quiet-color: #d0d0d0;
46 --body-medium-color: #e0e0e0;
47 --body-loud-color: #ffffff;
48
49 --breadcrumbs-link-fg: #e0e0e0;
50 --breadcrumbs-bg: var(--primary);
51
52 --link-fg: #81d4fa;
53 --link-hover-color: #4ac1f7;
54 --link-selected-fg: #6f94c6;
55
56 --hairline-color: #272727;
57 --border-color: #353535;
58
59 --error-fg: #e35f5f;
60 --message-success-bg: #006b1b;
61 --message-warning-bg: #583305;
62 --message-error-bg: #570808;
63
64 --darkened-bg: #212121;
65 --selected-bg: #1b1b1b;
66 --selected-row: #00363a;
67
68 --close-button-bg: #333333;
69 --close-button-hover-bg: #666666;
70
71 color-scheme: dark;
72 }
73
74 /* THEME SWITCH */
75 .theme-toggle {
76 cursor: pointer;
77 border: none;
78 padding: 0;
79 background: transparent;
80 vertical-align: middle;
81 margin-inline-start: 5px;
82 margin-top: -1px;
83 }
84
85 .theme-toggle svg {
86 vertical-align: middle;
87 height: 1.5rem;
88 width: 1.5rem;
89 display: none;
90 }
91
92 /*
93 Fully hide screen reader text so we only show the one matching the current
94 theme.
95 */
96 .theme-toggle .visually-hidden {
97 display: none;
98 }
99
100 html[data-theme="auto"] .theme-toggle .theme-label-when-auto {
101 display: block;
102 }
103
104 html[data-theme="dark"] .theme-toggle .theme-label-when-dark {
105 display: block;
106 }
107
108 html[data-theme="light"] .theme-toggle .theme-label-when-light {
109 display: block;
110 }
111
112 /* ICONS */
113 .theme-toggle svg.theme-icon-when-auto,
114 .theme-toggle svg.theme-icon-when-dark,
115 .theme-toggle svg.theme-icon-when-light {
116 fill: var(--header-link-color);
117 color: var(--header-bg);
118 }
119
120 html[data-theme="auto"] .theme-toggle svg.theme-icon-when-auto {
121 display: block;
122 }
123
124 html[data-theme="dark"] .theme-toggle svg.theme-icon-when-dark {
125 display: block;
126 }
127
128 html[data-theme="light"] .theme-toggle svg.theme-icon-when-light {
129 display: block;
130 }
--- a/assets/admin/css/dark_mode.css
+++ b/assets/admin/css/dark_mode.css
@@ -0,0 +1,130 @@
1
+@media (prefers-color-scheme: dark) {
2
+ :root {
3
+ --primary: #264b5d;
4
+ --primary-fg: #f7f7f7;
5
+
6
+ --body-fg: #eeeeee;
7
+ --body-bg: #121212;
8
+ --body-quiet-color: #d0d0d0;
9
+ --body-medium-color: #e0e0e0;
10
+ --body-loud-color: #ffffff;
11
+
12
+ --breadcrumbs-link-fg: #e0e0e0;
13
+ --breadcrumbs-bg: var(--primary);
14
+
15
+ --link-fg: #81d4fa;
16
+ --link-hover-color: #4ac1f7;
17
+ --link-selected-fg: #6f94c6;
18
+
19
+ --hairline-color: #272727;
20
+ --border-color: #353535;
21
+
22
+ --error-fg: #e35f5f;
23
+ --message-success-bg: #006b1b;
24
+ --message-warning-bg: #583305;
25
+ --message-error-bg: #570808;
26
+
27
+ --darkened-bg: #212121;
28
+ --selected-bg: #1b1b1b;
29
+ --selected-row: #00363a;
30
+
31
+ --close-button-bg: #333333;
32
+ --close-button-hover-bg: #666666;
33
+
34
+ color-scheme: dark;
35
+ }
36
+ }
37
+
38
+
39
+html[data-theme="dark"] {
40
+ --primary: #264b5d;
41
+ --primary-fg: #f7f7f7;
42
+
43
+ --body-fg: #eeeeee;
44
+ --body-bg: #121212;
45
+ --body-quiet-color: #d0d0d0;
46
+ --body-medium-color: #e0e0e0;
47
+ --body-loud-color: #ffffff;
48
+
49
+ --breadcrumbs-link-fg: #e0e0e0;
50
+ --breadcrumbs-bg: var(--primary);
51
+
52
+ --link-fg: #81d4fa;
53
+ --link-hover-color: #4ac1f7;
54
+ --link-selected-fg: #6f94c6;
55
+
56
+ --hairline-color: #272727;
57
+ --border-color: #353535;
58
+
59
+ --error-fg: #e35f5f;
60
+ --message-success-bg: #006b1b;
61
+ --message-warning-bg: #583305;
62
+ --message-error-bg: #570808;
63
+
64
+ --darkened-bg: #212121;
65
+ --selected-bg: #1b1b1b;
66
+ --selected-row: #00363a;
67
+
68
+ --close-button-bg: #333333;
69
+ --close-button-hover-bg: #666666;
70
+
71
+ color-scheme: dark;
72
+}
73
+
74
+/* THEME SWITCH */
75
+.theme-toggle {
76
+ cursor: pointer;
77
+ border: none;
78
+ padding: 0;
79
+ background: transparent;
80
+ vertical-align: middle;
81
+ margin-inline-start: 5px;
82
+ margin-top: -1px;
83
+}
84
+
85
+.theme-toggle svg {
86
+ vertical-align: middle;
87
+ height: 1.5rem;
88
+ width: 1.5rem;
89
+ display: none;
90
+}
91
+
92
+/*
93
+Fully hide screen reader text so we only show the one matching the current
94
+theme.
95
+*/
96
+.theme-toggle .visually-hidden {
97
+ display: none;
98
+}
99
+
100
+html[data-theme="auto"] .theme-toggle .theme-label-when-auto {
101
+ display: block;
102
+}
103
+
104
+html[data-theme="dark"] .theme-toggle .theme-label-when-dark {
105
+ display: block;
106
+}
107
+
108
+html[data-theme="light"] .theme-toggle .theme-label-when-light {
109
+ display: block;
110
+}
111
+
112
+/* ICONS */
113
+.theme-toggle svg.theme-icon-when-auto,
114
+.theme-toggle svg.theme-icon-when-dark,
115
+.theme-toggle svg.theme-icon-when-light {
116
+ fill: var(--header-link-color);
117
+ color: var(--header-bg);
118
+}
119
+
120
+html[data-theme="auto"] .theme-toggle svg.theme-icon-when-auto {
121
+ display: block;
122
+}
123
+
124
+html[data-theme="dark"] .theme-toggle svg.theme-icon-when-dark {
125
+ display: block;
126
+}
127
+
128
+html[data-theme="light"] .theme-toggle svg.theme-icon-when-light {
129
+ display: block;
130
+}
--- a/assets/admin/css/dark_mode.css
+++ b/assets/admin/css/dark_mode.css
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/dark_mode.css
+++ b/assets/admin/css/dark_mode.css
@@ -0,0 +1,130 @@
1 @media (prefers-color-scheme: dark) {
2 :root {
3 --primary: #264b5d;
4 --primary-fg: #f7f7f7;
5
6 --body-fg: #eeeeee;
7 --body-bg: #121212;
8 --body-quiet-color: #d0d0d0;
9 --body-medium-color: #e0e0e0;
10 --body-loud-color: #ffffff;
11
12 --breadcrumbs-link-fg: #e0e0e0;
13 --breadcrumbs-bg: var(--primary);
14
15 --link-fg: #81d4fa;
16 --link-hover-color: #4ac1f7;
17 --link-selected-fg: #6f94c6;
18
19 --hairline-color: #272727;
20 --border-color: #353535;
21
22 --error-fg: #e35f5f;
23 --message-success-bg: #006b1b;
24 --message-warning-bg: #583305;
25 --message-error-bg: #570808;
26
27 --darkened-bg: #212121;
28 --selected-bg: #1b1b1b;
29 --selected-row: #00363a;
30
31 --close-button-bg: #333333;
32 --close-button-hover-bg: #666666;
33
34 color-scheme: dark;
35 }
36 }
37
38
39 html[data-theme="dark"] {
40 --primary: #264b5d;
41 --primary-fg: #f7f7f7;
42
43 --body-fg: #eeeeee;
44 --body-bg: #121212;
45 --body-quiet-color: #d0d0d0;
46 --body-medium-color: #e0e0e0;
47 --body-loud-color: #ffffff;
48
49 --breadcrumbs-link-fg: #e0e0e0;
50 --breadcrumbs-bg: var(--primary);
51
52 --link-fg: #81d4fa;
53 --link-hover-color: #4ac1f7;
54 --link-selected-fg: #6f94c6;
55
56 --hairline-color: #272727;
57 --border-color: #353535;
58
59 --error-fg: #e35f5f;
60 --message-success-bg: #006b1b;
61 --message-warning-bg: #583305;
62 --message-error-bg: #570808;
63
64 --darkened-bg: #212121;
65 --selected-bg: #1b1b1b;
66 --selected-row: #00363a;
67
68 --close-button-bg: #333333;
69 --close-button-hover-bg: #666666;
70
71 color-scheme: dark;
72 }
73
74 /* THEME SWITCH */
75 .theme-toggle {
76 cursor: pointer;
77 border: none;
78 padding: 0;
79 background: transparent;
80 vertical-align: middle;
81 margin-inline-start: 5px;
82 margin-top: -1px;
83 }
84
85 .theme-toggle svg {
86 vertical-align: middle;
87 height: 1.5rem;
88 width: 1.5rem;
89 display: none;
90 }
91
92 /*
93 Fully hide screen reader text so we only show the one matching the current
94 theme.
95 */
96 .theme-toggle .visually-hidden {
97 display: none;
98 }
99
100 html[data-theme="auto"] .theme-toggle .theme-label-when-auto {
101 display: block;
102 }
103
104 html[data-theme="dark"] .theme-toggle .theme-label-when-dark {
105 display: block;
106 }
107
108 html[data-theme="light"] .theme-toggle .theme-label-when-light {
109 display: block;
110 }
111
112 /* ICONS */
113 .theme-toggle svg.theme-icon-when-auto,
114 .theme-toggle svg.theme-icon-when-dark,
115 .theme-toggle svg.theme-icon-when-light {
116 fill: var(--header-link-color);
117 color: var(--header-bg);
118 }
119
120 html[data-theme="auto"] .theme-toggle svg.theme-icon-when-auto {
121 display: block;
122 }
123
124 html[data-theme="dark"] .theme-toggle svg.theme-icon-when-dark {
125 display: block;
126 }
127
128 html[data-theme="light"] .theme-toggle svg.theme-icon-when-light {
129 display: block;
130 }
--- a/assets/admin/css/dark_theme.23ccf3764a60.css
+++ b/assets/admin/css/dark_theme.23ccf3764a60.css
@@ -0,0 +1,627 @@
1
+/*
2
+ * Fossilrepo Admin Theme — supports dark, light, and system-auto modes
3
+ * Brand palette:
4
+ * #2B2D2C charcoal (dark body background)
5
+ * #DC394C red (primary brand accent)
6
+ * #8B3138 crimson (secondary / hover states)
7
+ * #FAFAFA near-white (foreground on dark)
8
+ */
9
+
10
+/* ── Shared brand accents + dark defaults ───────────────────────────────── */
11
+
12
+:root {
13
+ /* Brand accents — unchanged across all themes */
14
+ --primary: #DC394C;
15
+ --secondary: #8B3138;
16
+ --accent: #DC394C;
17
+ --primary-fg: #FAFAFA;
18
+
19
+ --button-fg: #FAFAFA;
20
+ --button-bg: #DC394C;
21
+ --button-hover-bg: #c42d3f;
22
+ --default-button-bg: #8B3138;
23
+ --default-button-hover-bg:#6a1921;
24
+ --close-button-bg: #4a4c4b;
25
+ --close-button-hover-bg: #5a5c5b;
26
+ --delete-button-bg: #8B3138;
27
+ --delete-button-hover-bg: #6a1921;
28
+
29
+ --object-tools-fg: #FAFAFA;
30
+ --object-tools-bg: #8B3138;
31
+ --object-tools-hover-bg: #6a1921;
32
+
33
+ --breadcrumbs-bg: #DC394C;
34
+ --breadcrumbs-fg: #FAFAFA;
35
+ --breadcrumbs-link-fg: #FAFAFA;
36
+ --link-selected-fg: #DC394C;
37
+
38
+ /* Header stays dark in both themes for brand consistency */
39
+ --header-color: #FAFAFA;
40
+ --header-branding-color: #FAFAFA;
41
+ --header-bg: #1f2120;
42
+ --header-link-color: #FAFAFA;
43
+
44
+ /* Dark theme defaults (applied when no explicit data-theme is set) */
45
+ --body-fg: #FAFAFA;
46
+ --body-bg: #2B2D2C;
47
+ --body-quiet-color: #a8aaa9;
48
+ --body-loud-color: #ffffff;
49
+
50
+ --link-fg: #e8677a;
51
+ --link-hover-color: #f0929f;
52
+
53
+ --hairline-color: #3d3f3e;
54
+ --border-color: #3d3f3e;
55
+
56
+ --error-fg: #ff7a7a;
57
+ --message-success-bg: #173317;
58
+ --message-success-color: #7ddf7d;
59
+ --message-success-border: #2d5a2d;
60
+ --message-warning-bg: #332e17;
61
+ --message-warning-color: #e6c87a;
62
+ --message-warning-border: #5a4d2d;
63
+ --message-error-bg: #331717;
64
+ --message-error-color: #ff7a7a;
65
+ --message-error-border: #5a2d2d;
66
+
67
+ --darkened-bg: #222423;
68
+ --selected-bg: #3d1e24;
69
+ --selected-row: #3d1e24;
70
+ --input-bg: #1f2120;
71
+}
72
+
73
+/* ── Explicit dark theme (beats Django's html[data-theme="dark"] specificity) */
74
+
75
+:root[data-theme="dark"] {
76
+ --primary: #DC394C;
77
+ --secondary: #8B3138;
78
+ --accent: #DC394C;
79
+ --primary-fg: #FAFAFA;
80
+
81
+ --button-fg: #FAFAFA;
82
+ --button-bg: #DC394C;
83
+ --button-hover-bg: #c42d3f;
84
+ --default-button-bg: #8B3138;
85
+ --default-button-hover-bg:#6a1921;
86
+ --close-button-bg: #4a4c4b;
87
+ --close-button-hover-bg: #5a5c5b;
88
+ --delete-button-bg: #8B3138;
89
+ --delete-button-hover-bg: #6a1921;
90
+
91
+ --object-tools-fg: #FAFAFA;
92
+ --object-tools-bg: #8B3138;
93
+ --object-tools-hover-bg: #6a1921;
94
+
95
+ --breadcrumbs-bg: #DC394C;
96
+ --breadcrumbs-fg: #FAFAFA;
97
+ --breadcrumbs-link-fg: #FAFAFA;
98
+ --link-selected-fg: #DC394C;
99
+
100
+ --header-bg: #1f2120;
101
+ --header-color: #FAFAFA;
102
+ --header-branding-color: #FAFAFA;
103
+ --header-link-color: #FAFAFA;
104
+
105
+ --body-fg: #FAFAFA;
106
+ --body-bg: #0d0d0d;
107
+ --body-quiet-color: #a8aaa9;
108
+ --body-loud-color: #ffffff;
109
+
110
+ --link-fg: #e8677a;
111
+ --link-hover-color: #f0929f;
112
+
113
+ --hairline-color: #2a2c2b;
114
+ --border-color: #2a2c2b;
115
+
116
+ --error-fg: #ff7a7a;
117
+ --message-success-bg: #0f1f0f;
118
+ --message-success-color: #7ddf7d;
119
+ --message-success-border: #1e3d1e;
120
+ --message-warning-bg: #1f1c0f;
121
+ --message-warning-color: #e6c87a;
122
+ --message-warning-border: #3d3519;
123
+ --message-error-bg: #1f0f0f;
124
+ --message-error-color: #ff7a7a;
125
+ --message-error-border: #3d1a1a;
126
+
127
+ --darkened-bg: #141514;
128
+ --selected-bg: #2d1219;
129
+ --selected-row: #2d1219;
130
+ --input-bg: #111211;
131
+}
132
+
133
+/* ── Light theme ─────────────────────────────────────────────────────────── */
134
+
135
+:root[data-theme="light"] {
136
+ /* Header — dark gray in light mode */
137
+ --header-bg: #3a3a3a;
138
+ --header-color: #FAFAFA;
139
+ --header-branding-color: #FAFAFA;
140
+ --header-link-color: #FAFAFA;
141
+
142
+ /* Brand accents — must repeat here to beat base.css html[data-theme="light"] specificity */
143
+ --primary: #DC394C;
144
+ --secondary: #8B3138;
145
+ --accent: #DC394C;
146
+ --primary-fg: #FAFAFA;
147
+
148
+ --button-fg: #FAFAFA;
149
+ --button-bg: #DC394C;
150
+ --button-hover-bg: #c42d3f;
151
+ --default-button-bg: #8B3138;
152
+ --default-button-hover-bg:#6a1921;
153
+ --delete-button-bg: #8B3138;
154
+ --delete-button-hover-bg: #6a1921;
155
+
156
+ --object-tools-fg: #FAFAFA;
157
+ --object-tools-bg: #8B3138;
158
+ --object-tools-hover-bg: #6a1921;
159
+
160
+ --breadcrumbs-bg: #DC394C;
161
+ --breadcrumbs-fg: #FAFAFA;
162
+ --breadcrumbs-link-fg: #FAFAFA;
163
+ --link-selected-fg: #DC394C;
164
+
165
+ --body-fg: #1a1a1a;
166
+ --body-bg: #f8f8f8;
167
+ --body-quiet-color: #666666;
168
+ --body-loud-color: #000000;
169
+
170
+ --link-fg: #DC394C;
171
+ --link-hover-color: #8B3138;
172
+
173
+ --hairline-color: #e0e0e0;
174
+ --border-color: #e0e0e0;
175
+
176
+ --error-fg: #c0392b;
177
+ --message-success-bg: #d4edda;
178
+ --message-success-color: #155724;
179
+ --message-success-border: #c3e6cb;
180
+ --message-warning-bg: #fff3cd;
181
+ --message-warning-color: #856404;
182
+ --message-warning-border: #ffeeba;
183
+ --message-error-bg: #f8d7da;
184
+ --message-error-color: #721c24;
185
+ --message-error-border: #f5c6cb;
186
+
187
+ --darkened-bg: #eeeeee;
188
+ --selected-bg: #fde8ea;
189
+ --selected-row: #fde8ea;
190
+ --input-bg: #ffffff;
191
+}
192
+
193
+/* ── System auto: respect prefers-color-scheme light ─────────────────────── */
194
+
195
+@media (prefers-color-scheme: light) {
196
+ :root:not([data-theme="dark"]) {
197
+ /* Header — dark gray in light mode */
198
+ --header-bg: #3a3a3a;
199
+ --header-color: #FAFAFA;
200
+ --header-branding-color: #FAFAFA;
201
+ --header-link-color: #FAFAFA;
202
+
203
+ /* Brand accents */
204
+ --primary: #DC394C;
205
+ --secondary: #8B3138;
206
+ --accent: #DC394C;
207
+ --primary-fg: #FAFAFA;
208
+
209
+ --button-fg: #FAFAFA;
210
+ --button-bg: #DC394C;
211
+ --button-hover-bg: #c42d3f;
212
+ --default-button-bg: #8B3138;
213
+ --default-button-hover-bg:#6a1921;
214
+ --delete-button-bg: #8B3138;
215
+ --delete-button-hover-bg: #6a1921;
216
+
217
+ --object-tools-fg: #FAFAFA;
218
+ --object-tools-bg: #8B3138;
219
+ --object-tools-hover-bg: #6a1921;
220
+
221
+ --breadcrumbs-bg: #DC394C;
222
+ --breadcrumbs-fg: #FAFAFA;
223
+ --breadcrumbs-link-fg: #FAFAFA;
224
+ --link-selected-fg: #DC394C;
225
+
226
+ --body-fg: #1a1a1a;
227
+ --body-bg: #f8f8f8;
228
+ --body-quiet-color: #666666;
229
+ --body-loud-color: #000000;
230
+
231
+ --link-fg: #DC394C;
232
+ --link-hover-color: #8B3138;
233
+
234
+ --hairline-color: #e0e0e0;
235
+ --border-color: #e0e0e0;
236
+
237
+ --error-fg: #c0392b;
238
+ --message-success-bg: #d4edda;
239
+ --message-success-color: #155724;
240
+ --message-success-border: #c3e6cb;
241
+ --message-warning-bg: #fff3cd;
242
+ --message-warning-color: #856404;
243
+ --message-warning-border: #ffeeba;
244
+ --message-error-bg: #f8d7da;
245
+ --message-error-color: #721c24;
246
+ --message-error-border: #f5c6cb;
247
+
248
+ --darkened-bg: #eeeeee;
249
+ --selected-bg: #fde8ea;
250
+ --selected-row: #fde8ea;
251
+ --input-bg: #ffffff;
252
+ }
253
+}
254
+
255
+
256
+/* ── Layout ─────────────────────────────────────────────────────────────── */
257
+
258
+/*
259
+ * Django's stock base.css gives `.module { background: var(--darkened-bg) }`.
260
+ * #changelist has class "module", so the 30px margin gap between the table and
261
+ * the filter also gets --darkened-bg — the same color as the filter itself.
262
+ * Result: no visible gap.
263
+ *
264
+ * clientcove fixes this by shipping a modified base.css with
265
+ * `.module { background: var(--body-bg) }`. We can't change Django's base.css,
266
+ * so we target #changelist specifically to make the gap show the body background.
267
+ */
268
+#changelist.module {
269
+ background: transparent;
270
+ border: none;
271
+}
272
+
273
+/* Prevent table from overflowing into the filter gap — layout owned by changelists.css */
274
+#changelist .changelist-form-container > div {
275
+ overflow-x: auto;
276
+}
277
+
278
+/* ── Header — always dark, hardcoded values intentional ─────────────────── */
279
+
280
+#header {
281
+ background: var(--header-bg);
282
+ border-bottom: 2px solid var(--primary);
283
+}
284
+
285
+#header a:link,
286
+#header a:visited {
287
+ color: var(--header-link-color);
288
+}
289
+
290
+#header #branding h1 {
291
+ line-height: 1;
292
+ margin: 0;
293
+}
294
+
295
+#header #branding .logo img {
296
+ pe="button"]:hoverblock;
297
+}
298
+
299
+#header #user-tools {
300
+ color: #a8aaa9;
301
+}
302
+
303
+#header #user-tools a {
304
+ color:
305
+ * Fossilrepo Admin Th�� supports dark, light, and system-auto modes
306
+ * Brand palette:
307
+ * #2B2D2C charcoal (dark body background)
308
+ * #DC394C red (primary brand accent)
309
+ * #8B3138 crimson (secondary / hover states)
310
+ * #FAFAFA near-white (foreground on dark)
311
+ */
312
+
313
+/* ── Shared brand accents + dark defaults ───────────────────────────────── */
314
+
315
+:root {
316
+ /* Brand accents — unchanged across all themes */
317
+ --primary: #DC394C;
318
+ --secondary: #8B3138;
319
+ --accent: #DC394C;
320
+ --primary-fg: #FAFAFA;
321
+
322
+ --button-fg: #FAFAFA;
323
+ --button-bg: #DC394C;
324
+ --button-hover-bg: #c42d3f;
325
+ --default-button-bg: #8B3138;
326
+ --default-button-hover-bg:#6a1921;
327
+ --close-button-bg: #4a4c4b;
328
+ --close-button-hover-bg: #5a5c5b;
329
+ --delete-button-bg: #8B3138;
330
+ --delete-button-hover-bg: #6a1921;
331
+
332
+ --object-tools-fg: #FAFAFA;
333
+ --object-tools-bg: #8B3138;
334
+ --object-tools-hover-bg: #6a1921;
335
+
336
+ --breadcrumbs-bg: #DC394C;
337
+ --breadcrumbs-fg: #FAFAFA;
338
+ --breadcrumbs-link-fg: #FAFAFA;
339
+ --link-selected-fg: #DC394C;
340
+
341
+ /* Header stays dark in both themes for brand consistency */
342
+ --header-color: #FAFAFA;
343
+ --header-branding-color: #FAFAFA;
344
+ --header-bg: #1f2120;
345
+ --header-link-color: #FAFAFA;
346
+
347
+ /* Dark theme defaults (applied when no explicit data-theme is set) */
348
+ --body-fg: #FAFAFA;
349
+ --body-bg: #2B2D2C;
350
+ --body-quiet-color: #a8aaa9;
351
+ --body-loud-color: #ffffff;
352
+
353
+ --link-fg: #e8677a;
354
+ --link-hover-color: #f0929f;
355
+
356
+ --hairline-color: #3d3f3e;
357
+ --border-color: #3d3f3e;
358
+
359
+ --error-fg: #ff7a7a;
360
+ --message-success-bg: #173317;
361
+ --message-success-color: #7ddf7d;
362
+ --message-success-border: #2d5a2d;
363
+ --message-warning-bg: #332e17;
364
+ --message-warning-color: #e6c87a;
365
+ --message-warning-border: #5a4d2d;
366
+ --message-error-bg: #331717;
367
+ --message-error-color: #ff7a7a;
368
+ --message-error-border: #5a2d2d;
369
+
370
+ --darkened-bg: #222423;
371
+ --selected-bg: #3d1e24;
372
+ --selected-row: #3d1e24;
373
+ --input-bg: #1f2120;
374
+}
375
+
376
+/* ── Explicit dark theme (beats Django's html[data-theme="dark"] specificity) */
377
+
378
+:root[data-theme="dark"] {
379
+ --primary: #DC394C;
380
+ --secondary: #8B3138;
381
+ --accent: #DC394C;
382
+ --primary-fg: #FAFAFA;
383
+
384
+ --button-fg: #FAFAFA;
385
+ --button-bg: #DC394C;
386
+ --button-hover-bg: #c42d3f;
387
+ --default-button-bg: #8B3138;
388
+ --default-button-hover-bg:#6a1921;
389
+ --close-button-bg: #4a4c4b;
390
+ --close-button-hover-bg: #5a5c5b;
391
+ --delete-button-bg: #8B3138;
392
+ --delete-button-hover-bg: #6a1921;
393
+
394
+ --object-tools-fg: #FAFAFA;
395
+ --object-tools-bg: #8B3138;
396
+ --object-tools-hover-bg: #6a1921;
397
+
398
+ --breadcrumbs-bg: #DC394C;
399
+ --breadcrumbs-fg: #FAFAFA;
400
+ --breadcrumbs-link-fg: #FAFAFA;
401
+ --link-selected-fg: #DC394C;
402
+
403
+ --header-bg: #1f2120;
404
+ --header-color: #FAFAFA;
405
+ --header-branding-color: #FAFAFA;
406
+ --header-link-color: #FAFAFA;
407
+
408
+ --body-fg: #FAFAFA;
409
+ --body-bg: #0d0d0d;
410
+ --body-quiet-color: #a8aaa9;
411
+ --body-loud-color: #ffffff;
412
+
413
+ --link-fg: #e8677a;
414
+ --link-hover-color: #f0929f;
415
+
416
+ --hairline-color: #2a2c2b;
417
+ --border-color: #2a2c2b;
418
+
419
+ --error-fg: #ff7a7a;
420
+ --message-success-bg: #0f1f0f;
421
+ --message-success-color: #7ddf7d;
422
+ --message-success-border: #1e3d1e;
423
+ --message-warning-bg: #1f1c0f;
424
+ --message-warning-color: #e6c87a;
425
+ --message-warning-border: #3d3519;
426
+ --message-error-bg: #1f0f0f;
427
+ --message-error-color: #ff7a7a;
428
+ --message-error-border: #3d1a1a;
429
+
430
+ --darkened-bg: #141514;
431
+ --selected-bg: #2d1219;
432
+ --selected-row: #2d1219;
433
+ --input-bg: #111211;
434
+}
435
+
436
+/* ── Light theme ─────────────────────────────────────────────────────────── */
437
+
438
+:root[data-theme="light"] {
439
+ /* Header — dark gray in light mode */
440
+ --header-bg: #3a3a3a;
441
+ --header-color: #FAFAFA;
442
+ --header-branding-color: #FAFAFA;
443
+ --header-link-color: #FAFAFA;
444
+
445
+ /* Brand accents — must repeat here to beat base.css html[data-theme="light"] specificity */
446
+ --primary: #DC394C;
447
+ --secondary: #8B3138;
448
+ --accent: #DC394C;
449
+ --primary-fg: #FAFAFA;
450
+
451
+ --button-fg: #FAFAFA;
452
+ --button-bg: #DC394C;
453
+ --button-hover-bg: #c42d3f;
454
+ --default-button-bg: #8B3138;
455
+ --default-button-hover-bg:#6a1921;
456
+ --delete-button-bg: #8B3138;
457
+ --delete-button-hover-bg: #6a1921;
458
+
459
+ --object-tools-fg: #FAFAFA;
460
+ --object-tools-bg: #8B3138;
461
+ --object-tools-hover-bg: #6a1921;
462
+
463
+ --breadcrumbs-bg: #DC394C;
464
+ --breadcrumbs-fg: #FAFAFA;
465
+ --breadcrumbs-link-fg: #FAFAFA;
466
+ --link-selected-fg: #DC394C;
467
+
468
+ --body-fg: #1a1a1a;
469
+ --body-bg: #f8f8f8;
470
+ --body-quiet-color: #666666;
471
+ --body-loud-color: #000000;
472
+
473
+ --link-fg: #DC394C;
474
+ --link-hover-color: #8B3138;
475
+
476
+ --hairline-color: #e0e0e0;
477
+ --border-color: #e0e0e0;
478
+
479
+ --error-fg: #c0392b;
480
+ --message-success-bg: #d4edda;
481
+ --message-success-color: #155724;
482
+ --message-success-border: #c3e6cb;
483
+ --message-warning-bg: #fff3cd;
484
+ --message-warning-color: #856404;
485
+ --message-warning-border: #ffeeba;
486
+ --message-error-bg: #f8d7da;
487
+ --message-error-color: #721c24;
488
+ --message-error-border: #f5c6cb;
489
+
490
+ --darkened-bg: #eeeeee;
491
+ --selected-bg: #fde8ea;
492
+ --selected-row: #fde8ea;
493
+ --input-bg: #ffffff;
494
+}
495
+
496
+/* ── System auto: respect prefers-color-scheme light ─────────────────────── */
497
+
498
+@media (prefers-color-scheme: light) {
499
+ :root:not([data-theme="dark"]) {
500
+ /* Header — dark gray in light mode */
501
+ --header-bg: #3a3a3a;
502
+ --header-color: #FAFAFA;
503
+ --header-branding-color: #FAFAFA;
504
+ --header-link-color: #FAFAFA;
505
+
506
+ /* Brand accents */
507
+ --primary: #DC394C;
508
+ --secondary: #8B3138;
509
+ --accent: #DC394C;
510
+ --primary-fg: #FAFAFA;
511
+
512
+ --button-fg: #FAFAFA;
513
+ --button-bg: #DC394C;
514
+ --button-hover-bg: #c42d3f;
515
+ --default-button-bg: #8B3138;
516
+ --default-button-hover-bg:#6a1921;
517
+ --delete-button-bg: #8B3138;
518
+ --delete-button-hover-bg: #6a1921;
519
+
520
+ --object-tools-fg: #FAFAFA;
521
+ --object-tools-bg: #8B3138;
522
+ --object-tools-hover-bg: #6a1921;
523
+
524
+ --breadcrumbs-bg: #DC394C;
525
+ --breadcrumbs-fg: #FAFAFA;
526
+ --breadcrumbs-link-fg: #FAFAFA;
527
+ --link-selected-fg: #DC394C;
528
+
529
+ --body-fg: #1a1a1a;
530
+ --body-bg: #f8f8f8;
531
+ --body-quiet-color: #666666;
532
+ --body-loud-color: #000000;
533
+
534
+ --link-fg: #DC394C;
535
+ --link-hover-color: #8B3138;
536
+
537
+ --hairline-color: #e0e0e0;
538
+ --border-color: #e0e0e0;
539
+
540
+ --error-fg: #c0392b;
541
+ --message-success-bg: #d4edda;
542
+ --message-success-color: #155724;
543
+ --message-success-border: #c3e6cb;
544
+ --message-warning-bg: #fff3cd;
545
+ --message-warning-color: #856404;
546
+ --message-warning-border: #ffeeba;
547
+ --message-error-bg: #f8d7da;
548
+ --message-error-color: #721c24;
549
+ --message-error-border: #f5c6cb;
550
+
551
+ --darkened-bg: #eeeeee;
552
+ --selected-bg: #fde8ea;
553
+ --selected-row: #fde8ea;
554
+ --input-bg: #ffffff;
555
+ }
556
+}
557
+
558
+
559
+/* ── Layout ─────────────────────────────────────────────────────────────── */
560
+
561
+/*
562
+ * Django's stock base.css gives `.module { background: var(--darkened-bg) }`.
563
+ * #changelist has class "module", so the 30px margin gap between the table and
564
+ * the filter also gets --darkened-bg — the same color as the filter itself.
565
+ * Result: no visible gap.
566
+ *
567
+ * clientcove fixes this by shipping a modified base.css with
568
+ * `.module { background: var(--body-bg) }`. We can't change Django's base.css,
569
+ * so we target #changelist specifically to make the gap show the body background.
570
+ */
571
+#changelist.module {
572
+ background: transparent;
573
+ border: none;
574
+}
575
+
576
+/* Prevent table from overflowing into the filter gap — layout owned by changelists.css */
577
+#changelist .changelist-form-container > div {
578
+ overflow-x: auto;
579
+}
580
+
581
+/* ── Header — always dark, hardcoded values intentional ─────────────────── */
582
+
583
+#header {
584
+ background: var(--header-bg);
585
+ border-bottom: 2px solid var(--primary);
586
+}
587
+
588
+#header a:link,
589
+#header a:visited {
590
+ color: var(--header-link-color);
591
+}
592
+
593
+#header #branding h1 {
594
+ line-height: 1;
595
+ margin: 0;
596
+}
597
+
598
+#header #branding .logo img {
599
+ height: 40px;
600
+ width: auto;
601
+ display: block;
602
+}
603
+
604
+#header #user-tools {
605
+ color: #a8aaa9;
606
+}
607
+
608
+#header #user-tools a {
609
+ color: #a8aaa9;
610
+}
611
+
612
+#header #user-tools a:hover {
613
+ color: #FAFAFA;
614
+}
615
+
616
+/* Quick-links group in header */
617
+.bw-links {
618
+ display: inline-flex;
619
+ gap: 2px;
620
+ margin-right: 8px;
621
+ border-right: 1px solid #3d3f3e;
622
+ padding-right: 10px;
623
+}
624
+
625
+.bw-links a {
626
+ display: inline-block;
627
+ pad
--- a/assets/admin/css/dark_theme.23ccf3764a60.css
+++ b/assets/admin/css/dark_theme.23ccf3764a60.css
@@ -0,0 +1,627 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/assets/admin/css/dark_theme.23ccf3764a60.css
+++ b/assets/admin/css/dark_theme.23ccf3764a60.css
@@ -0,0 +1,627 @@
1 /*
2 * Fossilrepo Admin Theme — supports dark, light, and system-auto modes
3 * Brand palette:
4 * #2B2D2C charcoal (dark body background)
5 * #DC394C red (primary brand accent)
6 * #8B3138 crimson (secondary / hover states)
7 * #FAFAFA near-white (foreground on dark)
8 */
9
10 /* ── Shared brand accents + dark defaults ───────────────────────────────── */
11
12 :root {
13 /* Brand accents — unchanged across all themes */
14 --primary: #DC394C;
15 --secondary: #8B3138;
16 --accent: #DC394C;
17 --primary-fg: #FAFAFA;
18
19 --button-fg: #FAFAFA;
20 --button-bg: #DC394C;
21 --button-hover-bg: #c42d3f;
22 --default-button-bg: #8B3138;
23 --default-button-hover-bg:#6a1921;
24 --close-button-bg: #4a4c4b;
25 --close-button-hover-bg: #5a5c5b;
26 --delete-button-bg: #8B3138;
27 --delete-button-hover-bg: #6a1921;
28
29 --object-tools-fg: #FAFAFA;
30 --object-tools-bg: #8B3138;
31 --object-tools-hover-bg: #6a1921;
32
33 --breadcrumbs-bg: #DC394C;
34 --breadcrumbs-fg: #FAFAFA;
35 --breadcrumbs-link-fg: #FAFAFA;
36 --link-selected-fg: #DC394C;
37
38 /* Header stays dark in both themes for brand consistency */
39 --header-color: #FAFAFA;
40 --header-branding-color: #FAFAFA;
41 --header-bg: #1f2120;
42 --header-link-color: #FAFAFA;
43
44 /* Dark theme defaults (applied when no explicit data-theme is set) */
45 --body-fg: #FAFAFA;
46 --body-bg: #2B2D2C;
47 --body-quiet-color: #a8aaa9;
48 --body-loud-color: #ffffff;
49
50 --link-fg: #e8677a;
51 --link-hover-color: #f0929f;
52
53 --hairline-color: #3d3f3e;
54 --border-color: #3d3f3e;
55
56 --error-fg: #ff7a7a;
57 --message-success-bg: #173317;
58 --message-success-color: #7ddf7d;
59 --message-success-border: #2d5a2d;
60 --message-warning-bg: #332e17;
61 --message-warning-color: #e6c87a;
62 --message-warning-border: #5a4d2d;
63 --message-error-bg: #331717;
64 --message-error-color: #ff7a7a;
65 --message-error-border: #5a2d2d;
66
67 --darkened-bg: #222423;
68 --selected-bg: #3d1e24;
69 --selected-row: #3d1e24;
70 --input-bg: #1f2120;
71 }
72
73 /* ── Explicit dark theme (beats Django's html[data-theme="dark"] specificity) */
74
75 :root[data-theme="dark"] {
76 --primary: #DC394C;
77 --secondary: #8B3138;
78 --accent: #DC394C;
79 --primary-fg: #FAFAFA;
80
81 --button-fg: #FAFAFA;
82 --button-bg: #DC394C;
83 --button-hover-bg: #c42d3f;
84 --default-button-bg: #8B3138;
85 --default-button-hover-bg:#6a1921;
86 --close-button-bg: #4a4c4b;
87 --close-button-hover-bg: #5a5c5b;
88 --delete-button-bg: #8B3138;
89 --delete-button-hover-bg: #6a1921;
90
91 --object-tools-fg: #FAFAFA;
92 --object-tools-bg: #8B3138;
93 --object-tools-hover-bg: #6a1921;
94
95 --breadcrumbs-bg: #DC394C;
96 --breadcrumbs-fg: #FAFAFA;
97 --breadcrumbs-link-fg: #FAFAFA;
98 --link-selected-fg: #DC394C;
99
100 --header-bg: #1f2120;
101 --header-color: #FAFAFA;
102 --header-branding-color: #FAFAFA;
103 --header-link-color: #FAFAFA;
104
105 --body-fg: #FAFAFA;
106 --body-bg: #0d0d0d;
107 --body-quiet-color: #a8aaa9;
108 --body-loud-color: #ffffff;
109
110 --link-fg: #e8677a;
111 --link-hover-color: #f0929f;
112
113 --hairline-color: #2a2c2b;
114 --border-color: #2a2c2b;
115
116 --error-fg: #ff7a7a;
117 --message-success-bg: #0f1f0f;
118 --message-success-color: #7ddf7d;
119 --message-success-border: #1e3d1e;
120 --message-warning-bg: #1f1c0f;
121 --message-warning-color: #e6c87a;
122 --message-warning-border: #3d3519;
123 --message-error-bg: #1f0f0f;
124 --message-error-color: #ff7a7a;
125 --message-error-border: #3d1a1a;
126
127 --darkened-bg: #141514;
128 --selected-bg: #2d1219;
129 --selected-row: #2d1219;
130 --input-bg: #111211;
131 }
132
133 /* ── Light theme ─────────────────────────────────────────────────────────── */
134
135 :root[data-theme="light"] {
136 /* Header — dark gray in light mode */
137 --header-bg: #3a3a3a;
138 --header-color: #FAFAFA;
139 --header-branding-color: #FAFAFA;
140 --header-link-color: #FAFAFA;
141
142 /* Brand accents — must repeat here to beat base.css html[data-theme="light"] specificity */
143 --primary: #DC394C;
144 --secondary: #8B3138;
145 --accent: #DC394C;
146 --primary-fg: #FAFAFA;
147
148 --button-fg: #FAFAFA;
149 --button-bg: #DC394C;
150 --button-hover-bg: #c42d3f;
151 --default-button-bg: #8B3138;
152 --default-button-hover-bg:#6a1921;
153 --delete-button-bg: #8B3138;
154 --delete-button-hover-bg: #6a1921;
155
156 --object-tools-fg: #FAFAFA;
157 --object-tools-bg: #8B3138;
158 --object-tools-hover-bg: #6a1921;
159
160 --breadcrumbs-bg: #DC394C;
161 --breadcrumbs-fg: #FAFAFA;
162 --breadcrumbs-link-fg: #FAFAFA;
163 --link-selected-fg: #DC394C;
164
165 --body-fg: #1a1a1a;
166 --body-bg: #f8f8f8;
167 --body-quiet-color: #666666;
168 --body-loud-color: #000000;
169
170 --link-fg: #DC394C;
171 --link-hover-color: #8B3138;
172
173 --hairline-color: #e0e0e0;
174 --border-color: #e0e0e0;
175
176 --error-fg: #c0392b;
177 --message-success-bg: #d4edda;
178 --message-success-color: #155724;
179 --message-success-border: #c3e6cb;
180 --message-warning-bg: #fff3cd;
181 --message-warning-color: #856404;
182 --message-warning-border: #ffeeba;
183 --message-error-bg: #f8d7da;
184 --message-error-color: #721c24;
185 --message-error-border: #f5c6cb;
186
187 --darkened-bg: #eeeeee;
188 --selected-bg: #fde8ea;
189 --selected-row: #fde8ea;
190 --input-bg: #ffffff;
191 }
192
193 /* ── System auto: respect prefers-color-scheme light ─────────────────────── */
194
195 @media (prefers-color-scheme: light) {
196 :root:not([data-theme="dark"]) {
197 /* Header — dark gray in light mode */
198 --header-bg: #3a3a3a;
199 --header-color: #FAFAFA;
200 --header-branding-color: #FAFAFA;
201 --header-link-color: #FAFAFA;
202
203 /* Brand accents */
204 --primary: #DC394C;
205 --secondary: #8B3138;
206 --accent: #DC394C;
207 --primary-fg: #FAFAFA;
208
209 --button-fg: #FAFAFA;
210 --button-bg: #DC394C;
211 --button-hover-bg: #c42d3f;
212 --default-button-bg: #8B3138;
213 --default-button-hover-bg:#6a1921;
214 --delete-button-bg: #8B3138;
215 --delete-button-hover-bg: #6a1921;
216
217 --object-tools-fg: #FAFAFA;
218 --object-tools-bg: #8B3138;
219 --object-tools-hover-bg: #6a1921;
220
221 --breadcrumbs-bg: #DC394C;
222 --breadcrumbs-fg: #FAFAFA;
223 --breadcrumbs-link-fg: #FAFAFA;
224 --link-selected-fg: #DC394C;
225
226 --body-fg: #1a1a1a;
227 --body-bg: #f8f8f8;
228 --body-quiet-color: #666666;
229 --body-loud-color: #000000;
230
231 --link-fg: #DC394C;
232 --link-hover-color: #8B3138;
233
234 --hairline-color: #e0e0e0;
235 --border-color: #e0e0e0;
236
237 --error-fg: #c0392b;
238 --message-success-bg: #d4edda;
239 --message-success-color: #155724;
240 --message-success-border: #c3e6cb;
241 --message-warning-bg: #fff3cd;
242 --message-warning-color: #856404;
243 --message-warning-border: #ffeeba;
244 --message-error-bg: #f8d7da;
245 --message-error-color: #721c24;
246 --message-error-border: #f5c6cb;
247
248 --darkened-bg: #eeeeee;
249 --selected-bg: #fde8ea;
250 --selected-row: #fde8ea;
251 --input-bg: #ffffff;
252 }
253 }
254
255
256 /* ── Layout ─────────────────────────────────────────────────────────────── */
257
258 /*
259 * Django's stock base.css gives `.module { background: var(--darkened-bg) }`.
260 * #changelist has class "module", so the 30px margin gap between the table and
261 * the filter also gets --darkened-bg — the same color as the filter itself.
262 * Result: no visible gap.
263 *
264 * clientcove fixes this by shipping a modified base.css with
265 * `.module { background: var(--body-bg) }`. We can't change Django's base.css,
266 * so we target #changelist specifically to make the gap show the body background.
267 */
268 #changelist.module {
269 background: transparent;
270 border: none;
271 }
272
273 /* Prevent table from overflowing into the filter gap — layout owned by changelists.css */
274 #changelist .changelist-form-container > div {
275 overflow-x: auto;
276 }
277
278 /* ── Header — always dark, hardcoded values intentional ─────────────────── */
279
280 #header {
281 background: var(--header-bg);
282 border-bottom: 2px solid var(--primary);
283 }
284
285 #header a:link,
286 #header a:visited {
287 color: var(--header-link-color);
288 }
289
290 #header #branding h1 {
291 line-height: 1;
292 margin: 0;
293 }
294
295 #header #branding .logo img {
296 pe="button"]:hoverblock;
297 }
298
299 #header #user-tools {
300 color: #a8aaa9;
301 }
302
303 #header #user-tools a {
304 color:
305 * Fossilrepo Admin Th�� supports dark, light, and system-auto modes
306 * Brand palette:
307 * #2B2D2C charcoal (dark body background)
308 * #DC394C red (primary brand accent)
309 * #8B3138 crimson (secondary / hover states)
310 * #FAFAFA near-white (foreground on dark)
311 */
312
313 /* ── Shared brand accents + dark defaults ───────────────────────────────── */
314
315 :root {
316 /* Brand accents — unchanged across all themes */
317 --primary: #DC394C;
318 --secondary: #8B3138;
319 --accent: #DC394C;
320 --primary-fg: #FAFAFA;
321
322 --button-fg: #FAFAFA;
323 --button-bg: #DC394C;
324 --button-hover-bg: #c42d3f;
325 --default-button-bg: #8B3138;
326 --default-button-hover-bg:#6a1921;
327 --close-button-bg: #4a4c4b;
328 --close-button-hover-bg: #5a5c5b;
329 --delete-button-bg: #8B3138;
330 --delete-button-hover-bg: #6a1921;
331
332 --object-tools-fg: #FAFAFA;
333 --object-tools-bg: #8B3138;
334 --object-tools-hover-bg: #6a1921;
335
336 --breadcrumbs-bg: #DC394C;
337 --breadcrumbs-fg: #FAFAFA;
338 --breadcrumbs-link-fg: #FAFAFA;
339 --link-selected-fg: #DC394C;
340
341 /* Header stays dark in both themes for brand consistency */
342 --header-color: #FAFAFA;
343 --header-branding-color: #FAFAFA;
344 --header-bg: #1f2120;
345 --header-link-color: #FAFAFA;
346
347 /* Dark theme defaults (applied when no explicit data-theme is set) */
348 --body-fg: #FAFAFA;
349 --body-bg: #2B2D2C;
350 --body-quiet-color: #a8aaa9;
351 --body-loud-color: #ffffff;
352
353 --link-fg: #e8677a;
354 --link-hover-color: #f0929f;
355
356 --hairline-color: #3d3f3e;
357 --border-color: #3d3f3e;
358
359 --error-fg: #ff7a7a;
360 --message-success-bg: #173317;
361 --message-success-color: #7ddf7d;
362 --message-success-border: #2d5a2d;
363 --message-warning-bg: #332e17;
364 --message-warning-color: #e6c87a;
365 --message-warning-border: #5a4d2d;
366 --message-error-bg: #331717;
367 --message-error-color: #ff7a7a;
368 --message-error-border: #5a2d2d;
369
370 --darkened-bg: #222423;
371 --selected-bg: #3d1e24;
372 --selected-row: #3d1e24;
373 --input-bg: #1f2120;
374 }
375
376 /* ── Explicit dark theme (beats Django's html[data-theme="dark"] specificity) */
377
378 :root[data-theme="dark"] {
379 --primary: #DC394C;
380 --secondary: #8B3138;
381 --accent: #DC394C;
382 --primary-fg: #FAFAFA;
383
384 --button-fg: #FAFAFA;
385 --button-bg: #DC394C;
386 --button-hover-bg: #c42d3f;
387 --default-button-bg: #8B3138;
388 --default-button-hover-bg:#6a1921;
389 --close-button-bg: #4a4c4b;
390 --close-button-hover-bg: #5a5c5b;
391 --delete-button-bg: #8B3138;
392 --delete-button-hover-bg: #6a1921;
393
394 --object-tools-fg: #FAFAFA;
395 --object-tools-bg: #8B3138;
396 --object-tools-hover-bg: #6a1921;
397
398 --breadcrumbs-bg: #DC394C;
399 --breadcrumbs-fg: #FAFAFA;
400 --breadcrumbs-link-fg: #FAFAFA;
401 --link-selected-fg: #DC394C;
402
403 --header-bg: #1f2120;
404 --header-color: #FAFAFA;
405 --header-branding-color: #FAFAFA;
406 --header-link-color: #FAFAFA;
407
408 --body-fg: #FAFAFA;
409 --body-bg: #0d0d0d;
410 --body-quiet-color: #a8aaa9;
411 --body-loud-color: #ffffff;
412
413 --link-fg: #e8677a;
414 --link-hover-color: #f0929f;
415
416 --hairline-color: #2a2c2b;
417 --border-color: #2a2c2b;
418
419 --error-fg: #ff7a7a;
420 --message-success-bg: #0f1f0f;
421 --message-success-color: #7ddf7d;
422 --message-success-border: #1e3d1e;
423 --message-warning-bg: #1f1c0f;
424 --message-warning-color: #e6c87a;
425 --message-warning-border: #3d3519;
426 --message-error-bg: #1f0f0f;
427 --message-error-color: #ff7a7a;
428 --message-error-border: #3d1a1a;
429
430 --darkened-bg: #141514;
431 --selected-bg: #2d1219;
432 --selected-row: #2d1219;
433 --input-bg: #111211;
434 }
435
436 /* ── Light theme ─────────────────────────────────────────────────────────── */
437
438 :root[data-theme="light"] {
439 /* Header — dark gray in light mode */
440 --header-bg: #3a3a3a;
441 --header-color: #FAFAFA;
442 --header-branding-color: #FAFAFA;
443 --header-link-color: #FAFAFA;
444
445 /* Brand accents — must repeat here to beat base.css html[data-theme="light"] specificity */
446 --primary: #DC394C;
447 --secondary: #8B3138;
448 --accent: #DC394C;
449 --primary-fg: #FAFAFA;
450
451 --button-fg: #FAFAFA;
452 --button-bg: #DC394C;
453 --button-hover-bg: #c42d3f;