New upstream version 4.6.2+ds
authorSimon McVittie <smcv@debian.org>
Sun, 20 Mar 2022 17:18:58 +0000 (17:18 +0000)
committerSimon McVittie <smcv@debian.org>
Sun, 20 Mar 2022 17:18:58 +0000 (17:18 +0000)
1  2 
gtk/theme/Default/Default-dark.css
gtk/theme/Default/Default-hc-dark.css
gtk/theme/Default/Default-hc.css
gtk/theme/Default/Default-light.css
subprojects/gi-docgen/docs/project-configuration.rst
subprojects/gi-docgen/gidocgen/config.py
subprojects/gi-docgen/gidocgen/core.py
subprojects/gi-docgen/gidocgen/gdgenerate.py
subprojects/gi-docgen/gidocgen/templates/basic/namespace.html
subprojects/gi-docgen/meson.build
subprojects/gi-docgen/setup.py

index b1265be5a93d463a0ecb2a24aee19c39261cceac,0000000000000000000000000000000000000000..e133f8bc5dadb48ea3eaffccac7878277e638d6f
mode 100644,000000..100644
--- /dev/null
@@@ -1,1868 -1,0 +1,1870 @@@
 +/*************************** Check and Radio buttons * */
 +/*************** Base States * */
 +.background { color: #eeeeec; background-color: #353535; }
 +
 +.background:backdrop { text-shadow: none; -gtk-icon-shadow: none; }
 +
 +dnd { color: #eeeeec; }
 +
 +.normal-icons { -gtk-icon-size: 16px; }
 +
 +.large-icons { -gtk-icon-size: 32px; }
 +
 +image:disabled { -gtk-icon-filter: opacity(0.5); }
 +
 +.view, iconview, textview > text { color: white; background-color: #2d2d2d; }
 +
 +.view:disabled, iconview:disabled, textview > text:disabled { color: #919190; background-color: #323232; }
 +
 +.view:selected:focus, iconview:selected:focus, .view:selected, iconview:selected, textview > text:selected:focus, textview > text:selected { border-radius: 3px; }
 +
++textview > text { background-color: transparent; }
++
 +textview > text > selection { background-color: rgba(90, 90, 90, 0.5); }
 +
 +textview > text > selection:focus-within { background-color: rgba(21, 83, 158, 0.3); }
 +
 +textview:drop(active) { caret-color: #26a269; }
 +
 +textview > border { background-color: #313131; }
 +
 +iconview { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +iconview { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +iconview:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +iconview:drop(active) { box-shadow: none; }
 +
 +iconview > dndtarget:drop(active) { border-style: solid; border-width: 1px; border-color: #030c17; }
 +
 +rubberband, .content-view > rubberband, columnview.view > rubberband, treeview.view > rubberband, gridview > rubberband, flowbox > rubberband { border: 1px solid #0f3b71; background-color: rgba(15, 59, 113, 0.2); }
 +
 +flowbox > flowboxchild { padding: 3px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +flowbox > flowboxchild { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +flowbox > flowboxchild:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +flowbox > flowboxchild:selected { outline-color: rgba(255, 255, 255, 0.3); }
 +
 +gridview > child { padding: 3px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +gridview > child { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +gridview > child:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +gridview > child:selected { outline-color: rgba(255, 255, 255, 0.3); }
 +
 +gridview > child box { border-spacing: 8px; margin: 12px; }
 +
 +coverflow cover { color: white; background-color: #2d2d2d; border: 1px solid black; }
 +
 +label { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +label { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +label:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +label > selection { background-color: rgba(90, 90, 90, 0.5); color: #ffffff; }
 +
 +label > selection:focus-within { background-color: rgba(21, 83, 158, 0.3); }
 +
 +label:disabled { color: #919190; }
 +
 +button label:disabled { color: inherit; }
 +
 +label.error { color: #cc0000; }
 +
 +label.error:disabled { color: rgba(204, 0, 0, 0.5); }
 +
 +.dim-label, .titlebar:not(headerbar) .subtitle, headerbar .subtitle, spinbutton.vertical > text > text > placeholder, spinbutton:not(.vertical) > text > placeholder, entry > text > placeholder, label.separator { opacity: 0.55; text-shadow: none; }
 +
 +window.assistant .sidebar { padding: 5px; border-top: 1px solid #1b1b1b; }
 +
 +window.assistant.csd .sidebar { border-top-style: none; }
 +
 +window.assistant .sidebar > label { padding: 6px 12px; }
 +
 +window.assistant .sidebar > label.highlight { background-color: #202020; border-radius: 5px; }
 +
 +window.aboutdialog image.large-icons { -gtk-icon-size: 128px; }
 +
 +.osd .scale-popup, .app-notification, .osd popover.background > arrow, .osd popover.background > contents, popover.background.touch-selection > arrow, popover.background.touch-selection > contents, popover.background.magnifier > arrow, popover.background.magnifier > contents, .osd { color: #eeeeec; border: none; background-color: rgba(38, 38, 38, 0.7); background-clip: padding-box; -gtk-icon-shadow: 0 1px black; }
 +
 +/********************* Spinner Animation * */
 +@keyframes spin { to { transform: rotate(1turn); } }
 +
 +spinner { background: none; opacity: 0; -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); }
 +
 +spinner:checked { opacity: 1; animation: spin 1s linear infinite; }
 +
 +spinner:checked:disabled { opacity: 0.5; }
 +
 +/********************** General Typography * */
 +.large-title { font-weight: 300; font-size: 24pt; }
 +
 +.title-1 { font-weight: 800; font-size: 20pt; }
 +
 +.title-2 { font-weight: 800; font-size: 15pt; }
 +
 +.title-3 { font-weight: 700; font-size: 15pt; }
 +
 +.title-4 { font-weight: 700; font-size: 13pt; }
 +
 +.heading { font-weight: 700; font-size: 11pt; }
 +
 +.body { font-weight: 400; font-size: 11pt; }
 +
 +.caption-heading { font-weight: 700; font-size: 9pt; }
 +
 +.caption { font-weight: 400; font-size: 9pt; }
 +
 +/**************** Text Entries * */
 +spinbutton.vertical > text, spinbutton:not(.vertical), entry { min-height: 32px; padding-left: 8px; padding-right: 8px; border: 1px solid; border-radius: 5px; border-spacing: 6px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: white; border-color: #1b1b1b; background-color: #2d2d2d; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text, spinbutton:not(.vertical), entry { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text:focus-within, spinbutton:focus-within:not(.vertical), entry:focus-within { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text > image.left, spinbutton:not(.vertical) > image.left, entry > image.left { margin-right: 6px; }
 +
 +spinbutton.vertical > text > image.right, spinbutton:not(.vertical) > image.right, entry > image.right { margin-left: 6px; }
 +
 +spinbutton.vertical > text > text > block-cursor, spinbutton:not(.vertical) > text > block-cursor, entry > text > block-cursor { color: #2d2d2d; background-color: white; }
 +
 +spinbutton.vertical > text.flat, spinbutton.flat:not(.vertical), entry.flat:focus-within, entry.flat:backdrop, entry.flat:disabled, entry.flat { min-height: 0; padding: 2px; background-color: transparent; border-color: transparent; border-radius: 0; }
 +
 +spinbutton.vertical > text:focus-within > placeholder, spinbutton:focus-within:not(.vertical) > placeholder, entry:focus-within > placeholder { opacity: 0; /* We hide placeholders on focus */ }
 +
 +spinbutton.vertical > text:disabled, spinbutton:disabled:not(.vertical), entry:disabled { color: #919190; border-color: #1b1b1b; background-color: #323232; }
 +
 +spinbutton.vertical > text > text > selection, spinbutton:not(.vertical) > text > selection, entry > text > selection { background-color: rgba(90, 90, 90, 0.5); color: transparent; }
 +
 +spinbutton.vertical > text > text > selection:focus-within, spinbutton:not(.vertical) > text > selection:focus-within, entry > text > selection:focus-within { background-color: rgba(21, 83, 158, 0.3); color: #eeeeec; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { color: #cc0000; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text.error:focus-within, spinbutton.error:focus-within:not(.vertical), entry.error:focus-within { outline-color: rgba(204, 0, 0, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text.error > selection, spinbutton.error:not(.vertical) > selection, entry.error > selection { background-color: #cc0000; }
 +
 +spinbutton.vertical > text.warning, spinbutton.warning:not(.vertical), entry.warning { color: #f57900; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text.warning, spinbutton.warning:not(.vertical), entry.warning { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text.warning:focus-within, spinbutton.warning:focus-within:not(.vertical), entry.warning:focus-within { outline-color: rgba(245, 121, 0, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text.warning > selection, spinbutton.warning:not(.vertical) > selection, entry.warning > selection { background-color: #f57900; }
 +
 +spinbutton.vertical > text > image, spinbutton:not(.vertical) > image, entry > image { color: #c7c7c6; }
 +
 +spinbutton.vertical > text > image:hover, spinbutton:not(.vertical) > image:hover, entry > image:hover { color: #eeeeec; }
 +
 +spinbutton.vertical > text > image:active, spinbutton:not(.vertical) > image:active, entry > image:active { color: #15539e; }
 +
 +spinbutton.vertical > text.password image.caps-lock-indicator, spinbutton.password:not(.vertical) image.caps-lock-indicator, entry.password image.caps-lock-indicator { color: #7e7e7d; }
 +
 +spinbutton.vertical > text:drop(active), spinbutton:drop(active):not(.vertical), entry:drop(active):focus-within, entry:drop(active) { border-color: #26a269; box-shadow: inset 0 0 0 1px #26a269; }
 +
 +.osd spinbutton.vertical > text, .osd spinbutton:not(.vertical), .osd entry { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.osd spinbutton.vertical > text:focus-within, .osd spinbutton:focus-within:not(.vertical), .osd entry:focus-within { color: white; border-color: #15539e; background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > text:disabled, .osd spinbutton:disabled:not(.vertical), .osd entry:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(58, 58, 57, 0.5); background-clip: padding-box; }
 +
 +spinbutton.vertical > text > progress, spinbutton:not(.vertical) > progress, entry > progress { margin-bottom: 2px; }
 +
 +spinbutton.vertical > text progress > trough > progress, spinbutton:not(.vertical) progress > trough > progress, entry progress > trough > progress { background-color: transparent; background-image: none; border-radius: 0; border-width: 0 0 2px; border-color: #15539e; border-style: solid; box-shadow: none; }
 +
 +spinbutton.vertical.linked:not(.vertical) > text:drop(active) + text, spinbutton.vertical.linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + text, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + spinbutton:not(.vertical), .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + spinbutton:not(.vertical), spinbutton.vertical.linked:not(.vertical) > text:drop(active) + button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + menubutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + menubutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + dropdown > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + dropdown > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + colorbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + colorbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + fontbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + fontbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + filechooserbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + filechooserbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + combobox > box > button.combo, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + combobox > box > button.combo, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + entry, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + entry, .linked:not(.vertical) > entry:drop(active) + button, .linked:not(.vertical) > entry:drop(active) + menubutton > button, .linked:not(.vertical) > entry:drop(active) + dropdown > button, .linked:not(.vertical) > entry:drop(active) + colorbutton > button, .linked:not(.vertical) > entry:drop(active) + fontbutton > button, .linked:not(.vertical) > entry:drop(active) + filechooserbutton > button, .linked:not(.vertical) > entry:drop(active) + combobox > box > button.combo, spinbutton.vertical.linked:not(.vertical) > entry:drop(active) + text, .linked:not(.vertical) > entry:drop(active) + spinbutton:not(.vertical), .linked:not(.vertical) > entry:drop(active) + entry { border-left-color: #26a269; }
 +
 +spinbutton.vertical.linked > text:not(:disabled) + entry:not(:disabled), .linked.vertical > spinbutton:not(:disabled):not(.vertical) + entry:not(:disabled), spinbutton.vertical.linked > text:not(:disabled) + text:not(:disabled), spinbutton.vertical.linked > spinbutton:not(:disabled):not(.vertical) + text:not(:disabled), spinbutton.vertical.linked > text:not(:disabled) + spinbutton:not(:disabled):not(.vertical), .linked.vertical > spinbutton:not(:disabled):not(.vertical) + spinbutton:not(:disabled):not(.vertical), .linked.vertical > entry:not(:disabled) + entry:not(:disabled), spinbutton.vertical.linked > entry:not(:disabled) + text:not(:disabled), .linked.vertical > entry:not(:disabled) + spinbutton:not(:disabled):not(.vertical) { border-top-color: #282828; }
 +
 +spinbutton.vertical.linked > text:disabled + text:disabled, spinbutton.vertical.linked > spinbutton:disabled:not(.vertical) + text:disabled, spinbutton.vertical.linked > text:disabled + spinbutton:disabled:not(.vertical), .linked.vertical > spinbutton:disabled:not(.vertical) + spinbutton:disabled:not(.vertical), spinbutton.vertical.linked > text:disabled + entry:disabled, .linked.vertical > spinbutton:disabled:not(.vertical) + entry:disabled, spinbutton.vertical.linked > entry:disabled + text:disabled, .linked.vertical > entry:disabled + spinbutton:disabled:not(.vertical), .linked.vertical > entry:disabled + entry:disabled { border-top-color: #282828; }
 +
 +spinbutton.vertical.linked > text + text:drop(active):not(:only-child), spinbutton.vertical.linked > spinbutton:not(.vertical) + text:drop(active):not(:only-child), spinbutton.vertical.linked > text + spinbutton:drop(active):not(:only-child):not(.vertical), .linked.vertical > spinbutton:not(.vertical) + spinbutton:drop(active):not(:only-child):not(.vertical), spinbutton.vertical.linked > text + entry:drop(active):not(:only-child), .linked.vertical > spinbutton:not(.vertical) + entry:drop(active):not(:only-child), spinbutton.vertical.linked > entry + text:drop(active):not(:only-child), .linked.vertical > entry + spinbutton:drop(active):not(:only-child):not(.vertical), .linked.vertical > entry + entry:drop(active):not(:only-child) { border-top-color: #26a269; }
 +
 +spinbutton.vertical.linked > text:drop(active):not(:only-child) + text, spinbutton.vertical.linked > spinbutton:drop(active):not(:only-child):not(.vertical) + text, spinbutton.vertical.linked > text:drop(active):not(:only-child) + spinbutton:not(.vertical), .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + spinbutton:not(.vertical), spinbutton.vertical.linked > text:drop(active):not(:only-child) + entry, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + entry, spinbutton.vertical.linked > text:drop(active):not(:only-child) + button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + menubutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + menubutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + dropdown > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + dropdown > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + colorbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + colorbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + fontbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + fontbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + filechooserbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + filechooserbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + combobox > box > button.combo, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + combobox > box > button.combo, spinbutton.vertical.linked > entry:drop(active):not(:only-child) + text, .linked.vertical > entry:drop(active):not(:only-child) + spinbutton:not(.vertical), .linked.vertical > entry:drop(active):not(:only-child) + entry, .linked.vertical > entry:drop(active):not(:only-child) + button, .linked.vertical > entry:drop(active):not(:only-child) + menubutton > button, .linked.vertical > entry:drop(active):not(:only-child) + dropdown > button, .linked.vertical > entry:drop(active):not(:only-child) + colorbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + fontbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + filechooserbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + combobox > box > button.combo { border-top-color: #26a269; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { color: #cc0000; }
 +
 +treeview entry:focus-within:dir(rtl), treeview entry:focus-within:dir(ltr) { background-color: #2d2d2d; transition-property: color, background; }
 +
 +treeview entry.flat, treeview entry { border-radius: 0; background-image: none; background-color: #2d2d2d; }
 +
 +treeview entry.flat:focus-within, treeview entry:focus-within { border-color: #15539e; }
 +
 +/******************* Editable Labels * */
 +editablelabel > stack > text { color: white; border-color: #1b1b1b; background-color: #2d2d2d; }
 +
 +/*********** Buttons * */
 +@keyframes needs_attention { from { background-image: radial-gradient(farthest-side, #1f76e1 0%, rgba(31, 118, 225, 0) 0%); }
 +  to { background-image: radial-gradient(farthest-side, #1f76e1 95%, rgba(31, 118, 225, 0)); } }
 +
 +notebook > header > tabs > arrow, windowcontrols button, button { min-height: 24px; min-width: 16px; padding: 4px 9px; border: 1px solid; border-radius: 5px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: #eeeeec; outline-color: rgba(21, 83, 158, 0.7); border-color: #1b1b1b; background-image: linear-gradient(to top, #373737 2px, #3a3a3a); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +notebook > header > tabs > arrow, windowcontrols button, button { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +notebook > header > tabs > arrow:focus:focus-visible, button:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +notebook > header > tabs > arrow:hover, button:hover { color: #eeeeec; border-color: #1b1b1b; background-image: linear-gradient(to top, #303030 20%, #323232 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); -gtk-icon-filter: brightness(1.2); }
 +
 +notebook > header > tabs > arrow.keyboard-activating, notebook > header > tabs > arrow:active, notebook > header > tabs > arrow:checked, button.keyboard-activating, button:active, button:checked { color: #eeeeec; border-color: #1b1b1b; background-image: image(#232323); box-shadow: none; transition-duration: 50ms; }
 +
 +notebook > header > tabs > arrow:checked:hover, button:checked:hover { color: #eeeeec; border-color: #1b1b1b; background-image: image(#1b1b1b); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:checked:active, button:checked:active { color: #eeeeec; border-color: #1b1b1b; background-image: image(#161616); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop, button.flat:backdrop, button:backdrop { color: #919190; border-color: #202020; background-image: image(#353535); box-shadow: none; transition: 200ms ease-out; }
 +
 +notebook > header > tabs > arrow:backdrop:not(:disabled), button.flat:backdrop:not(:disabled), button:backdrop:not(:disabled) { -gtk-icon-filter: none; }
 +
 +notebook > header > tabs > arrow:backdrop:active, notebook > header > tabs > arrow:backdrop:checked, button.flat:backdrop:active, button.flat:backdrop:checked, button:backdrop:active, button:backdrop:checked { color: #919190; border-color: #202020; background-image: image(#2e2e2e); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop:disabled, button.flat:backdrop:disabled, button:backdrop:disabled { color: #5b5b5b; border-color: #202020; background-image: image(#323232); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop:disabled:active, notebook > header > tabs > arrow:backdrop:disabled:checked, button.flat:backdrop:disabled:active, button.flat:backdrop:disabled:checked, button:backdrop:disabled:active, button:backdrop:disabled:checked { color: #5b5b5b; border-color: #202020; background-image: image(#2e2e2e); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:disabled, button:disabled { color: #919190; border-color: #202020; background-image: image(#323232); -gtk-icon-filter: opacity(0.5); }
 +
 +notebook > header > tabs > arrow:disabled:active, notebook > header > tabs > arrow:disabled:checked, button:disabled:active, button:disabled:checked { color: #919190; border-color: #202020; background-image: image(#292929); box-shadow: none; }
 +
 +button.sidebar-button, notebook > header > tabs > arrow, windowcontrols button, .toolbar > button, .toolbar > :not(.linked) > button, .toolbar :not(.linked) > menubutton > button, .toolbar :not(.linked) > scalebutton > button, .toolbar :not(.linked) > dropdown > button, .toolbar :not(.linked) > colorbutton > button, .toolbar :not(.linked) > fontbutton > button, .toolbar :not(.linked) > appchooserbutton > button, .toolbar :not(.linked) > combobox > box > button, notebook > header > tabs > arrow.flat, button.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; transition: none; }
 +
 +button.sidebar-button:hover, notebook > header > tabs > arrow:hover, windowcontrols button:hover, .toolbar > button:hover, .toolbar > :not(.linked) > button:hover, .toolbar :not(.linked) > menubutton > button:hover, .toolbar :not(.linked) > scalebutton > button:hover, .toolbar :not(.linked) > dropdown > button:hover, .toolbar :not(.linked) > colorbutton > button:hover, .toolbar :not(.linked) > fontbutton > button:hover, .toolbar :not(.linked) > appchooserbutton > button:hover, .toolbar :not(.linked) > combobox > box > button:hover, button.flat:hover { border-color: transparent; background-image: none; box-shadow: none; background-color: #373737; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-duration: 500ms; }
 +
 +button.keyboard-activating.sidebar-button, notebook > header > tabs > arrow.keyboard-activating, windowcontrols button.keyboard-activating, .toolbar > button.keyboard-activating, .toolbar > :not(.linked) > button.keyboard-activating, .toolbar :not(.linked) > menubutton > button.keyboard-activating, .toolbar :not(.linked) > scalebutton > button.keyboard-activating, .toolbar :not(.linked) > dropdown > button.keyboard-activating, .toolbar :not(.linked) > colorbutton > button.keyboard-activating, .toolbar :not(.linked) > fontbutton > button.keyboard-activating, .toolbar :not(.linked) > appchooserbutton > button.keyboard-activating, .toolbar :not(.linked) > combobox > box > button.keyboard-activating, button.sidebar-button:active, notebook > header > tabs > arrow:active, windowcontrols button:active, .toolbar > button:active, .toolbar > :not(.linked) > button:active, .toolbar :not(.linked) > menubutton > button:active, .toolbar :not(.linked) > scalebutton > button:active, .toolbar :not(.linked) > dropdown > button:active, .toolbar :not(.linked) > colorbutton > button:active, .toolbar :not(.linked) > fontbutton > button:active, .toolbar :not(.linked) > appchooserbutton > button:active, .toolbar :not(.linked) > combobox > box > button:active, button.sidebar-button:checked, notebook > header > tabs > arrow:checked, windowcontrols button:checked, .toolbar > button:checked, .toolbar > :not(.linked) > button:checked, .toolbar :not(.linked) > menubutton > button:checked, .toolbar :not(.linked) > scalebutton > button:checked, .toolbar :not(.linked) > dropdown > button:checked, .toolbar :not(.linked) > colorbutton > button:checked, .toolbar :not(.linked) > fontbutton > button:checked, .toolbar :not(.linked) > appchooserbutton > button:checked, .toolbar :not(.linked) > combobox > box > button:checked, button.flat.keyboard-activating, button.flat:active, button.flat:checked { border-color: transparent; background-image: none; box-shadow: none; background-color: #2d2d2d; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +button.sidebar-button:backdrop, notebook > header > tabs > arrow:backdrop, windowcontrols button:backdrop, .toolbar > button:backdrop, .toolbar > :not(.linked) > button:backdrop, .toolbar :not(.linked) > menubutton > button:backdrop, .toolbar :not(.linked) > scalebutton > button:backdrop, .toolbar :not(.linked) > dropdown > button:backdrop, .toolbar :not(.linked) > colorbutton > button:backdrop, .toolbar :not(.linked) > fontbutton > button:backdrop, .toolbar :not(.linked) > appchooserbutton > button:backdrop, .toolbar :not(.linked) > combobox > box > button:backdrop, button.sidebar-button:disabled, notebook > header > tabs > arrow:disabled, windowcontrols button:disabled, .toolbar > button:disabled, .toolbar > :not(.linked) > button:disabled, .toolbar :not(.linked) > menubutton > button:disabled, .toolbar :not(.linked) > scalebutton > button:disabled, .toolbar :not(.linked) > dropdown > button:disabled, .toolbar :not(.linked) > colorbutton > button:disabled, .toolbar :not(.linked) > fontbutton > button:disabled, .toolbar :not(.linked) > appchooserbutton > button:disabled, .toolbar :not(.linked) > combobox > box > button:disabled, button.flat:backdrop, button.flat:disabled, button.flat:backdrop:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; }
 +
 +notebook > header > tabs > arrow.image-button, button.image-button { min-width: 24px; padding-left: 5px; padding-right: 5px; }
 +
 +notebook > header > tabs > arrow.text-button, button.text-button { padding-left: 16px; padding-right: 16px; }
 +
 +notebook > header > tabs > arrow.text-button.image-button, button.text-button.image-button { padding-left: 8px; padding-right: 8px; }
 +
 +notebook > header > tabs > arrow.text-button.image-button label, button.text-button.image-button label { padding-left: 8px; padding-right: 8px; }
 +
 +notebook > header > tabs > arrow.arrow-button, button.arrow-button { padding-left: 10px; padding-right: 10px; }
 +
 +notebook > header > tabs > arrow.arrow-button > box, windowcontrols button.arrow-button > box, button.arrow-button > box { border-spacing: 4px; }
 +
 +dropdown:drop(active) button.combo, combobox:drop(active) button.combo, notebook > header > tabs > arrow:drop(active), button:drop(active) { color: #26a269; border-color: #26a269; box-shadow: inset 0 0 0 1px #26a269; }
 +
 +row:selected button.sidebar-button:not(:active):not(:checked):not(:hover):not(disabled), row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled) { color: #ffffff; border-color: transparent; }
 +
 +row:selected button.sidebar-button:not(:active):not(:checked):not(:hover):not(disabled):backdrop, row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled):backdrop { color: #919190; }
 +
 +button.osd { min-width: 26px; min-height: 32px; color: #eeeeec; border-radius: 5px; color: #eeeeec; outline-color: rgba(21, 83, 158, 0.7); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; border: none; box-shadow: none; }
 +
 +button.osd.image-button { min-width: 30px; }
 +
 +button.osd.image-button:only-child { margin: 4px; border-radius: 50%; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); }
 +
 +button.osd:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(12, 12, 12, 0.7)); background-clip: padding-box; border: none; box-shadow: none; }
 +
 +button.osd:active, button.osd:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; border: none; box-shadow: none; }
 +
 +.app-notification button, popover.background.touch-selection button, popover.background.magnifier button, .osd button { color: #eeeeec; outline-color: rgba(21, 83, 158, 0.7); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button:hover, popover.background.touch-selection button:hover, popover.background.magnifier button:hover, .osd button:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(12, 12, 12, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button:active, popover.background.touch-selection button:active, popover.background.magnifier button:active, .app-notification button:checked, popover.background.touch-selection button:checked, popover.background.magnifier button:checked, .osd button:active:backdrop, .osd button:active, .osd button:checked:backdrop, .osd button:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.app-notification button:disabled, popover.background.touch-selection button:disabled, popover.background.magnifier button:disabled, .osd button:disabled:backdrop, .osd button:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; }
 +
 +.app-notification button.flat, popover.background.touch-selection button.flat, popover.background.magnifier button.flat, .osd button.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.app-notification button.flat:hover, popover.background.touch-selection button.flat:hover, popover.background.magnifier button.flat:hover, .osd button.flat:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(12, 12, 12, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button.flat:disabled, popover.background.touch-selection button.flat:disabled, popover.background.magnifier button.flat:disabled, .osd button.flat:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; background-image: none; border-color: transparent; box-shadow: none; }
 +
 +.app-notification button.flat:active, popover.background.touch-selection button.flat:active, popover.background.magnifier button.flat:active, .app-notification button.flat:checked, popover.background.touch-selection button.flat:checked, popover.background.magnifier button.flat:checked, .osd button.flat:active, .osd button.flat:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +button.suggested-action { color: white; outline-color: rgba(255, 255, 255, 0.3); border-color: #092444; background-image: linear-gradient(to top, #155099 2px, #15539e); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +button.suggested-action { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +button.suggested-action:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.3); outline-width: 2px; outline-offset: -2px; }
 +
 +button.suggested-action.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #15539e; }
 +
 +button.suggested-action:hover { color: white; border-color: #0c2f5a; background-image: linear-gradient(to top, #13498c 20%, #134c90 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +button.suggested-action:active, button.suggested-action:checked { color: white; border-color: #0c2f5a; background-image: image(#103e75); box-shadow: none; }
 +
 +button.suggested-action.flat:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: rgba(21, 83, 158, 0.8); }
 +
 +button.suggested-action:disabled { color: #919190; border-color: #202020; background-image: image(#323232); }
 +
 +button.suggested-action:disabled:active, button.suggested-action:disabled:checked { color: #a1b2c7; border-color: #0c2f5a; background-image: image(#143f73); box-shadow: none; }
 +
 +.osd button.suggested-action { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.3); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(21, 83, 158, 0.5)); background-clip: padding-box; }
 +
 +.osd button.suggested-action:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(21, 83, 158, 0.7)); background-clip: padding-box; }
 +
 +.osd button.suggested-action:active:backdrop, .osd button.suggested-action:active, .osd button.suggested-action:checked:backdrop, .osd button.suggested-action:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(#15539e); background-clip: padding-box; box-shadow: none; }
 +
 +.osd button.suggested-action:disabled:backdrop, .osd button.suggested-action:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; }
 +
 +button.destructive-action { color: white; outline-color: rgba(255, 255, 255, 0.3); border-color: #570b0e; background-image: linear-gradient(to top, #ae151c 2px, #b2161d); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +button.destructive-action { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +button.destructive-action:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.3); outline-width: 2px; outline-offset: -2px; }
 +
 +button.destructive-action.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #b2161d; }
 +
 +button.destructive-action:hover { color: white; border-color: #6e0d12; background-image: linear-gradient(to top, #a0131a 20%, #a5141a 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +button.destructive-action:active, button.destructive-action:checked { color: white; border-color: #6e0d12; background-image: image(#8a1116); box-shadow: none; }
 +
 +button.destructive-action.flat:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: rgba(178, 22, 29, 0.8); }
 +
 +button.destructive-action:disabled { color: #919190; border-color: #202020; background-image: image(#323232); }
 +
 +button.destructive-action:disabled:active, button.destructive-action:disabled:checked { color: #cea1a3; border-color: #6e0d12; background-image: image(#84151a); box-shadow: none; }
 +
 +.osd button.destructive-action { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.3); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(178, 22, 29, 0.5)); background-clip: padding-box; }
 +
 +.osd button.destructive-action:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(178, 22, 29, 0.7)); background-clip: padding-box; }
 +
 +.osd button.destructive-action:active:backdrop, .osd button.destructive-action:active, .osd button.destructive-action:checked:backdrop, .osd button.destructive-action:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(#b2161d); background-clip: padding-box; box-shadow: none; }
 +
 +.osd button.destructive-action:disabled:backdrop, .osd button.destructive-action:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; }
 +
 +stackswitcher > button > label { padding: 0 6px; margin: 0 -6px; }
 +
 +stackswitcher > button > image { padding: 3px 6px; margin: -3px -6px; }
 +
 +button.font separator { background-color: transparent; }
 +
 +button.font > box { border-spacing: 6px; }
 +
 +button.font > box > box > label { font-weight: bold; }
 +
 +menubutton.circular button, button.circular { min-width: 32px; min-height: 32px; padding: 0; border-radius: 9999px; }
 +
 +menubutton.circular button label, button.circular label { padding: 0; }
 +
 +stacksidebar row.needs-attention > label, stackswitcher > button.needs-attention > label, stackswitcher > button.needs-attention > image { animation: needs_attention 150ms ease-in; background-image: radial-gradient(farthest-side, #1f76e1 96%, rgba(31, 118, 225, 0)); background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; background-position: right 3px, right 2px; }
 +
 +stacksidebar row.needs-attention > label:backdrop, stackswitcher > button.needs-attention > label:backdrop, stackswitcher > button.needs-attention > image:backdrop { background-size: 6px 6px, 0 0; }
 +
 +stacksidebar row.needs-attention > label:dir(rtl), stackswitcher > button.needs-attention > label:dir(rtl), stackswitcher > button.needs-attention > image:dir(rtl) { background-position: left 3px, left 2px; }
 +
 +.linked:not(.vertical) > filechooserbutton > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > filechooserbutton > combobox:dir(ltr):not(:first-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(ltr):not(:first-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(ltr):not(:first-child) > box > button.combo, dropdown.linked button:nth-child(2):dir(ltr), combobox.linked button:nth-child(2):dir(ltr), .linked:not(.vertical) > menubutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > dropdown:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > colorbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > fontbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > filechooserbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > menubutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > dropdown:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > colorbutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > fontbutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > filechooserbutton:dir(ltr):not(:first-child) > button, spinbutton.vertical.linked:not(.vertical) > text:dir(rtl):not(:last-child), .linked:not(.vertical) > spinbutton:dir(rtl):not(:last-child):not(.vertical), .linked:not(.vertical) > entry:dir(rtl):not(:last-child), .linked:not(.vertical) > button:dir(rtl):not(:last-child), spinbutton.vertical.linked:not(.vertical) > text:dir(ltr):not(:first-child), .linked:not(.vertical) > spinbutton:dir(ltr):not(:first-child):not(.vertical), .linked:not(.vertical) > entry:dir(ltr):not(:first-child), .linked:not(.vertical) > button:dir(ltr):not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
 +
 +.linked:not(.vertical) > filechooserbutton > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > filechooserbutton > combobox:dir(ltr):not(:last-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(ltr):not(:last-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(ltr):not(:last-child) > box > button.combo, dropdown.linked button:nth-child(2):dir(rtl), combobox.linked button:nth-child(2):dir(rtl), .linked:not(.vertical) > menubutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > dropdown:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > colorbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > fontbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > filechooserbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > menubutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > dropdown:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > colorbutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > fontbutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > filechooserbutton:dir(ltr):not(:last-child) > button, spinbutton.vertical.linked:not(.vertical) > text:dir(rtl):not(:first-child), .linked:not(.vertical) > spinbutton:dir(rtl):not(:first-child):not(.vertical), .linked:not(.vertical) > entry:dir(rtl):not(:first-child), .linked:not(.vertical) > button:dir(rtl):not(:first-child), spinbutton.vertical.linked:not(.vertical) > text:dir(ltr):not(:last-child), .linked:not(.vertical) > spinbutton:dir(ltr):not(:last-child):not(.vertical), .linked:not(.vertical) > entry:dir(ltr):not(:last-child), .linked:not(.vertical) > button:dir(ltr):not(:last-child) { border-right-style: none; border-top-right-radius: 0; border-bottom-right-radius: 0; }
 +
 +.linked.vertical > filechooserbutton > combobox:not(:first-child) > box > button.combo, .linked.vertical > appchooserbutton > combobox:not(:first-child) > box > button.combo, .linked.vertical > combobox:not(:first-child) > box > button.combo, .linked.vertical > menubutton:not(:first-child) > button, .linked.vertical > dropdown:not(:first-child) > button, .linked.vertical > colorbutton:not(:first-child) > button, .linked.vertical > fontbutton:not(:first-child) > button, .linked.vertical > filechooserbutton:not(:first-child) > button, spinbutton.vertical.linked > text:not(:first-child), .linked.vertical > spinbutton:not(:first-child):not(.vertical), .linked.vertical > entry:not(:first-child), .linked.vertical > button:not(:first-child) { border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +.linked.vertical > filechooserbutton > combobox:not(:last-child) > box > button.combo, .linked.vertical > appchooserbutton > combobox:not(:last-child) > box > button.combo, .linked.vertical > combobox:not(:last-child) > box > button.combo, .linked.vertical > menubutton:not(:last-child) > button, .linked.vertical > dropdown:not(:last-child) > button, .linked.vertical > colorbutton:not(:last-child) > button, .linked.vertical > fontbutton:not(:last-child) > button, .linked.vertical > filechooserbutton:not(:last-child) > button, spinbutton.vertical.linked > text:not(:last-child), .linked.vertical > spinbutton:not(:last-child):not(.vertical), .linked.vertical > entry:not(:last-child), .linked.vertical > button:not(:last-child) { border-bottom-style: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
 +
 +.scale-popup button:hover, button.link, button.link:hover, button.link:active, button.link:checked, popover.menu box.circular-buttons button.circular.image-button.model, list > row button.image-button:not(.flat), modelbutton.flat { background-color: transparent; background-image: none; border-color: transparent; box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); text-shadow: none; -gtk-icon-shadow: none; }
 +
 +/* menu buttons */
 +modelbutton.flat { min-height: 26px; padding-left: 5px; padding-right: 5px; border-radius: 5px; }
 +
 +modelbutton.flat:hover { background-color: #202020; }
 +
 +modelbutton.flat:disabled { color: #919190; }
 +
 +modelbutton.flat arrow { background: none; min-width: 16px; min-height: 16px; opacity: 0.3; }
 +
 +modelbutton.flat arrow:hover { background: none; }
 +
 +modelbutton.flat arrow.left { -gtk-icon-source: -gtk-icontheme("go-previous-symbolic"); }
 +
 +modelbutton.flat arrow.right { -gtk-icon-source: -gtk-icontheme("go-next-symbolic"); }
 +
 +/* oldstyle toolbar buttons */
 +.toolbar > button, .toolbar > :not(.linked) > button, .toolbar :not(.linked) > menubutton > button, .toolbar :not(.linked) > scalebutton > button, .toolbar :not(.linked) > dropdown > button, .toolbar :not(.linked) > colorbutton > button, .toolbar :not(.linked) > fontbutton > button, .toolbar :not(.linked) > appchooserbutton > button, .toolbar :not(.linked) > combobox > box > button { margin: 1px; }
 +
 +button.color { padding: 4px; }
 +
 +button.color > colorswatch:only-child, button.color > colorswatch:only-child > overlay { border-radius: 0; }
 +
 +/* list buttons */
 +/* tone down as per new designs, see issue #1473 */
 +popover.menu box.circular-buttons button.circular.image-button.model, list > row button.image-button:not(.flat) { border: 1px solid rgba(27, 27, 27, 0.5); }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:hover, list > row button.image-button:not(.flat):hover { color: #eeeeec; border-color: #1b1b1b; background-image: linear-gradient(to top, #303030 20%, #323232 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:active, popover.menu box.circular-buttons button.circular.image-button.model:checked, list > row button.image-button:not(.flat):active, list > row button.image-button:not(.flat):checked { color: #eeeeec; border-color: #1b1b1b; background-image: image(#232323); box-shadow: none; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model, list > row button.image-button.suggested-action:not(.flat) { color: white; outline-color: rgba(255, 255, 255, 0.3); border-color: #092444; background-image: linear-gradient(to top, #155099 2px, #15539e); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model, list > row button.image-button.suggested-action:not(.flat) { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model:focus:focus-visible, list > row button.image-button.suggested-action:not(.flat):focus:focus-visible { outline-color: rgba(255, 255, 255, 0.3); outline-width: 2px; outline-offset: -2px; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model, list > row button.image-button.destructive-action:not(.flat) { color: white; outline-color: rgba(255, 255, 255, 0.3); border-color: #570b0e; background-image: linear-gradient(to top, #ae151c 2px, #b2161d); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model, list > row button.image-button.destructive-action:not(.flat) { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model:focus:focus-visible, list > row button.image-button.destructive-action:not(.flat):focus:focus-visible { outline-color: rgba(255, 255, 255, 0.3); outline-width: 2px; outline-offset: -2px; }
 +
 +/********* Links * */
 +button.link, link { color: #3584e4; text-decoration: underline; }
 +
 +button.link:visited, link:visited { color: #1b6acb; }
 +
 +*:selected button.link:visited, *:selected link:visited { color: #a4c4ea; }
 +
 +button.link:hover, link:hover { color: #629fea; }
 +
 +*:selected button.link:hover, *:selected link:hover { color: #eff5fd; }
 +
 +button.link:active, link:active { color: #3584e4; }
 +
 +*:selected button.link:active, *:selected link:active { color: #d7e6fa; }
 +
 +button.link:disabled, link:disabled { color: rgba(141, 141, 141, 0.8); }
 +
 +button.link:selected, *:selected button.link, link:selected, *:selected link { color: #d7e6fa; }
 +
 +link { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +link { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +link:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +button.link, button.link:hover, button.link:active, button.link:checked { text-shadow: none; }
 +
 +button.link > label { text-decoration: underline; }
 +
 +/***************** GtkSpinButton * */
 +spinbutton { font-feature-settings: "tnum"; }
 +
 +spinbutton:not(.vertical) { padding: 0; border-spacing: 0; /* :not here just to bump specificity above that of the list button styling */ }
 +
 +.osd spinbutton:not(.vertical) > text, spinbutton:not(.vertical) > text { min-width: 28px; margin: 0; background: none; background-color: transparent; border: none; border-radius: 0; box-shadow: none; padding: 6px; }
 +
 +.osd spinbutton:not(.vertical) > text:backdrop:disabled, spinbutton:not(.vertical) > text:backdrop:disabled { background-color: transparent; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat), spinbutton:not(.vertical) > button.image-button.down:not(.flat) { min-height: 16px; margin: 0; padding-bottom: 0; padding-top: 0; color: #dbdbd9; background-image: none; border-style: none none none solid; border-color: rgba(27, 27, 27, 0.3); border-radius: 0; box-shadow: none; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl), spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl) { border-style: none solid none none; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):hover, spinbutton:not(.vertical) > button.image-button.down:not(.flat):hover { color: #eeeeec; background-color: #282828; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):disabled, spinbutton:not(.vertical) > button.image-button.down:not(.flat):disabled { color: rgba(145, 145, 144, 0.3); background-color: transparent; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):active, spinbutton:not(.vertical) > button.image-button.down:not(.flat):active { background-color: rgba(0, 0, 0, 0.1); box-shadow: inset 0 2px 3px -1px rgba(0, 0, 0, 0.2); }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(ltr):last-child, spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(ltr):last-child { border-radius: 0 5px 5px 0; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl):first-child, spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl):first-child { border-radius: 5px 0 0 5px; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat), .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat) { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #eeeeec; border-style: none none none solid; border-color: rgba(0, 0, 0, 0.4); border-radius: 0; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl), .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl) { border-style: none solid none none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):hover, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):hover { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #eeeeec; border-color: rgba(0, 0, 0, 0.5); background-color: rgba(12, 12, 12, 0.7); -gtk-icon-shadow: 0 1px black; box-shadow: none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):disabled, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #8a8a89; border-color: rgba(0, 0, 0, 0.5); -gtk-icon-shadow: none; box-shadow: none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(ltr):last-child, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(ltr):last-child { border-radius: 0 5px 5px 0; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl):first-child, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl):first-child { border-radius: 5px 0 0 5px; }
 +
 +spinbutton.vertical:disabled { color: #919190; }
 +
 +spinbutton.vertical:drop(active) { border-color: transparent; box-shadow: none; }
 +
 +spinbutton.vertical > text { min-height: 32px; min-width: 32px; padding: 0; border-radius: 0; }
 +
 +spinbutton.vertical > text > selection { background-color: rgba(90, 90, 90, 0.5); color: transparent; }
 +
 +spinbutton.vertical > text > selection:focus-within { background-color: rgba(21, 83, 158, 0.3); color: #ffffff; }
 +
 +spinbutton.vertical > text > block-cursor { color: #2d2d2d; background-color: white; }
 +
 +spinbutton.vertical > button { min-height: 32px; min-width: 32px; padding: 0; }
 +
 +spinbutton.vertical > button.up { border-bottom-style: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
 +
 +spinbutton.vertical > button.down { border-top-style: none; border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +.osd spinbutton.vertical > button:first-child { color: #eeeeec; outline-color: rgba(21, 83, 158, 0.7); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > button:first-child:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(12, 12, 12, 0.7)); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > button:first-child:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.osd spinbutton.vertical > button:first-child:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; }
 +
 +treeview spinbutton:not(.vertical) { min-height: 0; border-style: none; border-radius: 0; }
 +
 +treeview spinbutton:not(.vertical) > text { min-height: 0; padding: 1px 2px; }
 +
 +/************** ComboBoxes * */
 +dropdown > popover.menu.background > contents { padding: 0; }
 +
 +dropdown > button > box { border-spacing: 6px; }
 +
 +dropdown > button > box > stack > row.activatable:hover { background: none; box-shadow: none; }
 +
 +dropdown arrow, combobox arrow { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); min-height: 16px; min-width: 16px; }
 +
 +dropdown > popover.menu > contents modelbutton, combobox > popover.menu > contents modelbutton { padding-left: 9px; padding-right: 9px; }
 +
 +dropdown:drop(active), combobox:drop(active) { box-shadow: none; }
 +
 +dropdown popover, combobox popover { margin-top: 6px; padding: 0; }
 +
 +dropdown popover listview, combobox popover listview { margin: 8px 0; }
 +
 +dropdown popover listview > row.activatable, combobox popover listview > row.activatable { padding: 8px; }
 +
 +dropdown popover listview > row.activatable:selected, dropdown popover listview > row.activatable:selected:hover, combobox popover listview > row.activatable:selected, combobox popover listview > row.activatable:selected:hover { outline-color: rgba(255, 255, 255, 0.3); color: white; background-color: #202020; box-shadow: none; }
 +
 +dropdown popover .dropdown-searchbar, combobox popover .dropdown-searchbar { padding: 6px; border-bottom: 1px solid #1b1b1b; }
 +
 +/************ Toolbars * */
 +searchbar > revealer > box, .toolbar { padding: 4px; border-spacing: 4px; background-color: #353535; }
 +
 +.osd .toolbar { background-color: transparent; }
 +
 +.toolbar.osd { padding: 13px; border: none; border-radius: 5px; background-color: rgba(38, 38, 38, 0.7); }
 +
 +.toolbar.osd.left, .toolbar.osd.right, .toolbar.osd.top, .toolbar.osd.bottom { border-radius: 0; }
 +
 +.toolbar.horizontal > separator { margin: 4px 0; }
 +
 +.toolbar.vertical > separator { margin: 0 4px; }
 +
 +searchbar > revealer > box { padding: 6px; border-spacing: 6px; border-width: 0 0 1px; }
 +
 +searchbar > revealer > box { border-style: solid; border-color: #1b1b1b; background-color: #2d2d2d; }
 +
 +searchbar > revealer > box:backdrop { border-color: #202020; background-color: #2e2e2e; box-shadow: none; transition: 200ms ease-out; }
 +
 +/************** GtkInfoBar * */
 +infobar > revealer > box { padding: 8px; border-spacing: 12px; }
 +
 +infobar.action:hover > revealer > box { background-color: #3e3b37; }
 +
 +infobar.info > revealer > box, infobar.question > revealer > box, infobar.warning > revealer > box, infobar.error > revealer > box { border-bottom: 1px solid #282828; background-color: #44403b; }
 +
 +infobar .close, searchbar .close { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; min-width: 16px; min-height: 16px; padding: 4px; border-radius: 50%; }
 +
 +infobar .close:hover, searchbar .close:hover { color: #eeeeec; border-color: #1b1b1b; background-image: linear-gradient(to top, #303030 20%, #323232 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +/***************** Title buttons * */
 +windowcontrols { border-spacing: 6px; }
 +
 +windowcontrols.start:not(.empty):dir(ltr), windowcontrols.end:not(.empty):dir(rtl) { margin-right: 7px; }
 +
 +windowcontrols.start:not(.empty):dir(rtl), windowcontrols.end:not(.empty):dir(ltr) { margin-left: 7px; }
 +
 +windowcontrols button { border-radius: 9999px; padding: 6px; margin: 0 2px; min-width: 0; min-height: 0; }
 +
 +windowcontrols button:hover { border-color: transparent; background-image: none; box-shadow: none; background-color: #1b1b1b; }
 +
 +windowcontrols button:active, windowcontrols button:checked { border-color: transparent; background-image: none; box-shadow: none; background-color: #070707; }
 +
 +/*************** Header bars * */
 +.titlebar:not(headerbar), headerbar { padding: 0 6px; min-height: 46px; border-width: 0 0 1px; border-style: solid; border-color: #070707; border-radius: 0; background: #1b1b1b linear-gradient(to top, #262626, #2b2b2b); /* Darken switchbuttons for headerbars. issue #1588 */ }
 +
 +.titlebar:backdrop:not(headerbar), headerbar:backdrop { border-color: #202020; background-color: #353535; background-image: none; transition: 200ms ease-out; }
 +
 +.titlebar:not(headerbar) .title, headerbar .title { padding-left: 12px; padding-right: 12px; font-weight: bold; }
 +
 +.titlebar:not(headerbar) .subtitle, headerbar .subtitle { font-size: smaller; padding-left: 12px; padding-right: 12px; }
 +
 +.titlebar:not(headerbar) stackswitcher > button:checked, .titlebar:not(headerbar) button.toggle:checked, headerbar stackswitcher > button:checked, headerbar button.toggle:checked { background: image(#1e1e1e); border-color: #141414; border-top-color: #070707; }
 +
 +.titlebar:not(headerbar) stackswitcher > button:checked:backdrop, .titlebar:not(headerbar) button.toggle:checked:backdrop, headerbar stackswitcher > button:checked:backdrop, headerbar button.toggle:checked:backdrop { color: #919190; border-color: #202020; background-image: image(#2e2e2e); box-shadow: none; }
 +
 +.tiled .titlebar:not(headerbar), .tiled-top .titlebar:not(headerbar), .tiled-left .titlebar:not(headerbar), .tiled-right .titlebar:not(headerbar), .tiled-bottom .titlebar:not(headerbar), .maximized .titlebar:not(headerbar), .fullscreen .titlebar:not(headerbar), .tiled headerbar, .tiled-top headerbar, .tiled-left headerbar, .tiled-right headerbar, .tiled-bottom headerbar, .maximized headerbar, .fullscreen headerbar { border-radius: 0; }
 +
 +.default-decoration.titlebar:not(headerbar), headerbar.default-decoration { min-height: 28px; padding: 4px; }
 +
 +.default-decoration.titlebar:not(headerbar) windowcontrols button, .default-decoration.titlebar:not(headerbar) windowcontrols menubutton, headerbar.default-decoration windowcontrols button, headerbar.default-decoration windowcontrols menubutton { min-height: 26px; min-width: 26px; margin: 0; padding: 0; }
 +
 +.default-decoration.titlebar:not(headerbar) windowcontrols menubutton button, headerbar.default-decoration windowcontrols menubutton button { min-height: 20px; min-width: 20px; margin: 0; padding: 4px; }
 +
 +.solid-csd .titlebar:dir(rtl):not(headerbar), .solid-csd .titlebar:dir(ltr):not(headerbar), .solid-csd headerbar:backdrop:dir(rtl), .solid-csd headerbar:backdrop:dir(ltr), .solid-csd headerbar:dir(rtl), .solid-csd headerbar:dir(ltr) { margin-left: -1px; margin-right: -1px; margin-top: -1px; border-radius: 0; box-shadow: none; }
 +
 +headerbar > windowhandle > box, headerbar > windowhandle > box > box.start, headerbar > windowhandle > box > box.end { border-spacing: 6px; }
 +
 +headerbar entry, headerbar spinbutton, headerbar separator:not(.sidebar), headerbar button, headerbar menubutton { margin-top: 6px; margin-bottom: 6px; }
 +
 +headerbar menubutton > button { margin-top: 0px; margin-bottom: 0px; }
 +
 +headerbar switch { margin-top: 10px; margin-bottom: 10px; }
 +
 +window.csd > .titlebar:not(headerbar) { padding: 0; background-color: transparent; background-image: none; border-style: none; border-color: transparent; }
 +
 +.titlebar:not(headerbar) separator { background-color: #1b1b1b; }
 +
 +window.devel headerbar.titlebar { background: #353535 cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, linear-gradient(to right, transparent 65%, rgba(21, 83, 158, 0.1)), linear-gradient(to top, #232323 3px, #282828); }
 +
 +window.devel headerbar.titlebar:backdrop { background: #353535 cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, image(#353535); /* background-color would flash */ }
 +
 +/************ Pathbars * */
 +pathbar > button.text-button, pathbar > button.image-button, pathbar > button { padding-left: 4px; padding-right: 4px; }
 +
 +pathbar > button.text-button.image-button label { padding-left: 0; padding-right: 0; }
 +
 +pathbar > button.text-button.image-button label:last-child, pathbar > button label:last-child { padding-right: 8px; }
 +
 +pathbar > button.text-button.image-button label:first-child, pathbar > button label:first-child { padding-left: 8px; }
 +
 +pathbar > button image { padding-left: 4px; padding-right: 4px; }
 +
 +pathbar > button.slider-button { padding-left: 0; padding-right: 0; }
 +
 +/************** Tree Views * */
 +columnview.view, treeview.view { border-left-color: #545453; border-top-color: #545453; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +columnview.view, treeview.view { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +columnview.view:focus:focus-visible, treeview.view:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected { border-radius: 0; outline-color: rgba(255, 255, 255, 0.3); }
 +
 +columnview.view:disabled, treeview.view:disabled { color: #919190; }
 +
 +columnview.view:disabled:selected, treeview.view:disabled:selected { color: #7398c5; }
 +
 +columnview.view:disabled:selected:backdrop, treeview.view:disabled:selected:backdrop { color: #4f7aaf; }
 +
 +columnview.view.separator, treeview.view.separator { min-height: 2px; color: #545453; }
 +
 +columnview.view:backdrop, treeview.view:backdrop { border-left-color: #414141; border-top: #414141; }
 +
 +columnview.view:drop(active), treeview.view:drop(active) { box-shadow: none; }
 +
 +columnview.view > dndtarget:drop(active), treeview.view > dndtarget:drop(active) { border-style: solid none; border-width: 1px; border-color: #030c17; }
 +
 +columnview.view > dndtarget.after:drop(active), treeview.view > dndtarget.after:drop(active) { border-top-style: none; }
 +
 +columnview.view > dndtarget.before:drop(active), treeview.view > dndtarget.before:drop(active) { border-bottom-style: none; }
 +
 +columnview.view.expander, treeview.view.expander { min-width: 16px; min-height: 16px; -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); color: silver; }
 +
 +columnview.view.expander:dir(rtl), treeview.view.expander:dir(rtl) { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); }
 +
 +columnview.view.expander:hover, treeview.view.expander:hover { color: white; }
 +
 +columnview.view.expander:selected, treeview.view.expander:selected { color: #b9cbe2; }
 +
 +columnview.view.expander:selected:hover, treeview.view.expander:selected:hover { color: #ffffff; }
 +
 +columnview.view.expander:checked, treeview.view.expander:checked { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +columnview.view.progressbar, treeview.view.progressbar { background-color: #15539e; background-image: image(#15539e); box-shadow: none; }
 +
 +columnview.view.progressbar:selected:focus, columnview.view.progressbar:selected, treeview.view.progressbar:selected:focus, treeview.view.progressbar:selected { box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); background-image: image(#2d2d2d); }
 +
 +columnview.view.progressbar:selected:focus:backdrop, columnview.view.progressbar:selected:backdrop, treeview.view.progressbar:selected:focus:backdrop, treeview.view.progressbar:selected:backdrop { background-color: #303030; }
 +
 +columnview.view.trough, treeview.view.trough { background-color: rgba(238, 238, 236, 0.1); }
 +
 +columnview.view.trough:selected:focus, columnview.view.trough:selected, treeview.view.trough:selected:focus, treeview.view.trough:selected { background-color: #0f3b71; }
 +
 +columnview.view > header > button, treeview.view > header > button { color: #8e8e8d; background-color: #2d2d2d; font-weight: bold; text-shadow: none; box-shadow: none; }
 +
 +columnview.view > header > button:hover, treeview.view > header > button:hover { color: #bebebd; box-shadow: none; transition: none; }
 +
 +columnview.view > header > button:active, treeview.view > header > button:active { color: #eeeeec; transition: none; }
 +
 +columnview.view > header > button sort-indicator, treeview.view > header > button sort-indicator { min-height: 16px; min-width: 16px; }
 +
 +columnview.view > header > button sort-indicator.ascending, treeview.view > header > button sort-indicator.ascending { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +columnview.view > header > button sort-indicator.descending, treeview.view > header > button sort-indicator.descending { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +columnview.view button.dnd:active, columnview.view button.dnd:selected, columnview.view button.dnd:hover, columnview.view button.dnd, columnview.view header.button.dnd:active, columnview.view header.button.dnd:selected, columnview.view header.button.dnd:hover, columnview.view header.button.dnd, treeview.view button.dnd:active, treeview.view button.dnd:selected, treeview.view button.dnd:hover, treeview.view button.dnd, treeview.view header.button.dnd:active, treeview.view header.button.dnd:selected, treeview.view header.button.dnd:hover, treeview.view header.button.dnd { padding: 0 6px; color: #2d2d2d; background-image: none; background-color: #15539e; border-style: none; border-radius: 0; box-shadow: inset 0 0 0 1px #2d2d2d; text-shadow: none; transition: none; }
 +
 +columnview.view acceleditor > label, treeview.view acceleditor > label { background-color: #15539e; }
 +
 +columnview.view > header > button, treeview.view > header > button, columnview.view > header > button:hover, treeview.view > header > button:hover, columnview.view > header > button:active, treeview.view > header > button:active { padding: 0 6px; background-image: none; border-style: none none solid solid; border-color: #545453; border-radius: 0; text-shadow: none; }
 +
 +columnview.view > header > button:disabled, treeview.view > header > button:disabled { border-color: #353535; background-image: none; }
 +
 +columnview.view > header > button:last-child, treeview.view > header > button:last-child { border-right-style: none; }
 +
 +/*************** Popovers   * */
 +popover.background { background-color: transparent; font: initial; }
 +
 +popover.background > arrow, popover.background > contents { background-color: #2d2d2d; background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.75); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }
 +
 +popover.background:backdrop { background-color: transparent; }
 +
 +popover.background > contents { padding: 8px; border-radius: 9px; }
 +
 +popover.background > contents > list, popover.background > contents > .view, popover.background > contents > iconview, popover.background > contents > .toolbar { border-style: none; background-color: transparent; }
 +
 +popover.background > contents separator { background-color: #232323; margin: 3px; }
 +
 +popover.background > contents list separator { margin: 0; }
 +
 +.osd popover.background, popover.background.touch-selection, popover.background.magnifier { background-color: transparent; }
 +
 +.osd popover.background > arrow, .osd popover.background > contents, popover.background.touch-selection > arrow, popover.background.touch-selection > contents, popover.background.magnifier > arrow, popover.background.magnifier > contents { border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: none; }
 +
 +magnifier { background-color: #2d2d2d; }
 +
 +/********************** Popover Base Menus * */
 +popover.menu { padding: 0; }
 +
 +popover.menu box.inline-buttons { padding: 0 12px; }
 +
 +popover.menu box.inline-buttons button.image-button.model { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; min-height: 30px; min-width: 30px; padding: 0; border: none; outline: none; transition: none; }
 +
 +popover.menu box.inline-buttons button.image-button.model:selected { background: image(#202020); }
 +
 +popover.menu box.circular-buttons { padding: 12px 12px 6px; }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model { padding: 11px; }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:focus { background-color: #202020; border-color: #202020; }
 +
 +popover.menu > arrow, popover.menu.background > contents { background-color: #2d2d2d; padding: 5px; }
 +
 +popover.menu.background separator { margin: 6px 0; }
 +
 +popover.menu accelerator { color: alpha(currentColor,0.55); }
 +
 +popover.menu accelerator:dir(ltr) { margin-left: 12px; }
 +
 +popover.menu accelerator:dir(rtl) { margin-right: 12px; }
 +
 +popover.menu check, popover.menu radio { transform: scale(0.8); border-width: 1.2px; border-color: transparent; box-shadow: none; background-image: image(transparent); color: white; }
 +
 +popover.menu check:hover, popover.menu radio:hover { transform: scale(0.8); border-width: 1.2px; color: white; box-shadow: none; background-image: image(transparent); }
 +
 +popover.menu check:active, popover.menu radio:active { transform: scale(0.8); border-width: 1.2px; color: white; box-shadow: none; background-image: image(transparent); }
 +
 +popover.menu radio { border-color: #1b1b1b; }
 +
 +popover.menu radio:active { border-color: rgba(27, 27, 27, 0.5); }
 +
 +popover.menu arrow.left, popover.menu radio.left, popover.menu check.left { margin-left: -2px; margin-right: 6px; }
 +
 +popover.menu arrow.right, popover.menu radio.right, popover.menu check.right { margin-left: 6px; margin-right: -2px; }
 +
 +popover.menu modelbutton { min-height: 30px; min-width: 40px; padding: 0 12px; border-radius: 5px; }
 +
 +popover.menu modelbutton:selected { color: white; background-color: #202020; }
 +
 +popover.menu modelbutton:selected:active { background-color: #111111; }
 +
 +popover.menu label.title { font-weight: bold; padding: 4px 32px; }
 +
 +menubar { padding: 0px; box-shadow: inset 0 -1px rgba(0, 0, 0, 0.1); }
 +
 +menubar > item { min-height: 16px; padding: 4px 8px; }
 +
 +menubar > item:selected { box-shadow: inset 0 -3px #15539e; color: #3584e4; }
 +
 +menubar > item:disabled { color: #919190; box-shadow: none; }
 +
 +menubar > item popover.menu.background > contents { padding: 5px; }
 +
 +menubar > item popover.menu popover.menu { padding: 0 0 4px 0; }
 +
 +menubar > item popover.menu.background popover.menu.background > contents { margin: 0; border-radius: 9px; }
 +
 +/************* Notebooks * */
 +notebook { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +notebook > header > tabs > tab:checked { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +notebook:focus:focus-visible > header > tabs > tab:checked { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +notebook > header { padding: 1px; border-color: #1b1b1b; border-width: 1px; background-color: #282828; }
 +
 +notebook > header > tabs { margin: -1px; }
 +
 +notebook > header.top { border-bottom-style: solid; }
 +
 +notebook > header.top > tabs { margin-bottom: -2px; }
 +
 +notebook > header.top > tabs > tab:hover { box-shadow: inset 0 -4px #1b1b1b; }
 +
 +notebook > header.top > tabs > tab:checked { box-shadow: inset 0 -4px #15539e; }
 +
 +notebook > header.bottom { border-top-style: solid; }
 +
 +notebook > header.bottom > tabs { margin-top: -2px; }
 +
 +notebook > header.bottom > tabs > tab:hover { box-shadow: inset 0 4px #1b1b1b; }
 +
 +notebook > header.bottom > tabs > tab:checked { box-shadow: inset 0 4px #15539e; }
 +
 +notebook > header.left { border-right-style: solid; }
 +
 +notebook > header.left > tabs { margin-right: -2px; }
 +
 +notebook > header.left > tabs > tab:hover { box-shadow: inset -4px 0 #1b1b1b; }
 +
 +notebook > header.left > tabs > tab:checked { box-shadow: inset -4px 0 #15539e; }
 +
 +notebook > header.right { border-left-style: solid; }
 +
 +notebook > header.right > tabs { margin-left: -2px; }
 +
 +notebook > header.right > tabs > tab:hover { box-shadow: inset 4px 0 #1b1b1b; }
 +
 +notebook > header.right > tabs > tab:checked { box-shadow: inset 4px 0 #15539e; }
 +
 +notebook > header.top > tabs > arrow { border-top-style: none; }
 +
 +notebook > header.bottom > tabs > arrow { border-bottom-style: none; }
 +
 +notebook > header.top > tabs > arrow, notebook > header.bottom > tabs > arrow { margin-left: -5px; margin-right: -5px; padding-left: 4px; padding-right: 4px; }
 +
 +notebook > header.top > tabs > arrow.down, notebook > header.bottom > tabs > arrow.down { -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); }
 +
 +notebook > header.top > tabs > arrow.up, notebook > header.bottom > tabs > arrow.up { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
 +
 +notebook > header.left > tabs > arrow { border-left-style: none; }
 +
 +notebook > header.right > tabs > arrow { border-right-style: none; }
 +
 +notebook > header.left > tabs > arrow, notebook > header.right > tabs > arrow { margin-top: -5px; margin-bottom: -5px; padding-top: 4px; padding-bottom: 4px; }
 +
 +notebook > header.left > tabs > arrow.down, notebook > header.right > tabs > arrow.down { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +notebook > header.left > tabs > arrow.up, notebook > header.right > tabs > arrow.up { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +notebook > header > tabs > arrow { min-height: 16px; min-width: 16px; border-radius: 0; }
 +
 +notebook > header > tabs > arrow:hover:not(:active):not(:backdrop) { background-clip: padding-box; background-image: none; background-color: rgba(255, 255, 255, 0.3); border-color: transparent; box-shadow: none; }
 +
 +notebook > header > tabs > arrow:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; }
 +
 +notebook > header > tabs > tab { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); min-height: 30px; min-width: 30px; padding: 3px 12px; color: #eeeeec; font-weight: normal; border-width: 1px; border-color: transparent; }
 +
 +notebook > header > tabs > tab:hover { color: #eeeeec; background-color: #1e1e1e; }
 +
 +notebook > header > tabs > tab.reorderable-page:hover { border-color: rgba(27, 27, 27, 0.3); background-color: rgba(53, 53, 53, 0.2); }
 +
 +notebook > header > tabs > tab:not(:checked) { outline-color: transparent; }
 +
 +notebook > header > tabs > tab:checked { color: #eeeeec; }
 +
 +notebook > header > tabs > tab.reorderable-page:checked { border-color: rgba(27, 27, 27, 0.5); background-color: rgba(53, 53, 53, 0.5); }
 +
 +notebook > header > tabs > tab.reorderable-page:checked:hover { background-color: rgba(53, 53, 53, 0.7); }
 +
 +notebook > header > tabs > tab button.flat { color: alpha(currentColor,0.3); padding: 0; margin-top: 4px; margin-bottom: 4px; min-width: 20px; min-height: 20px; }
 +
 +notebook > header > tabs > tab button.flat:hover { color: currentColor; }
 +
 +notebook > header > tabs > tab button.flat:last-child { margin-left: 4px; margin-right: -4px; }
 +
 +notebook > header > tabs > tab button.flat:first-child { margin-left: -4px; margin-right: 4px; }
 +
 +notebook > header.top > tabs, notebook > header.bottom > tabs { padding-left: 4px; padding-right: 4px; }
 +
 +notebook > header.top > tabs:not(:only-child), notebook > header.bottom > tabs:not(:only-child) { margin-left: 3px; margin-right: 3px; }
 +
 +notebook > header.top > tabs:not(:only-child):first-child, notebook > header.bottom > tabs:not(:only-child):first-child { margin-left: -1px; }
 +
 +notebook > header.top > tabs:not(:only-child):last-child, notebook > header.bottom > tabs:not(:only-child):last-child { margin-right: -1px; }
 +
 +notebook > header.top > tabs > tab, notebook > header.bottom > tabs > tab { margin-left: 4px; margin-right: 4px; }
 +
 +notebook > header.top > tabs > tab.reorderable-page, notebook > header.bottom > tabs > tab.reorderable-page { border-style: none solid; }
 +
 +notebook > header.left > tabs, notebook > header.right > tabs { padding-top: 4px; padding-bottom: 4px; }
 +
 +notebook > header.left > tabs:not(:only-child), notebook > header.right > tabs:not(:only-child) { margin-top: 3px; margin-bottom: 3px; }
 +
 +notebook > header.left > tabs:not(:only-child):first-child, notebook > header.right > tabs:not(:only-child):first-child { margin-top: -1px; }
 +
 +notebook > header.left > tabs:not(:only-child):last-child, notebook > header.right > tabs:not(:only-child):last-child { margin-bottom: -1px; }
 +
 +notebook > header.left > tabs > tab, notebook > header.right > tabs > tab { margin-top: 4px; margin-bottom: 4px; }
 +
 +notebook > header.left > tabs > tab.reorderable-page, notebook > header.right > tabs > tab.reorderable-page { border-style: solid none; }
 +
 +notebook > header.top > tabs > tab { padding-bottom: 4px; }
 +
 +notebook > header.bottom > tabs > tab { padding-top: 4px; }
 +
 +notebook > stack:not(:only-child) { background-color: #2d2d2d; }
 +
 +/************** Scrollbars * */
 +scrollbar { background-color: #313131; transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scrollbar.top { border-bottom: 1px solid #1b1b1b; }
 +
 +scrollbar.bottom { border-top: 1px solid #1b1b1b; }
 +
 +scrollbar.left { border-right: 1px solid #1b1b1b; }
 +
 +scrollbar.right { border-left: 1px solid #1b1b1b; }
 +
 +scrollbar > range > trough > slider { min-width: 8px; min-height: 8px; margin: -1px; border: 4px solid transparent; border-radius: 10px; background-clip: padding-box; background-color: #a4a4a3; transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scrollbar > range > trough > slider:hover { background-color: #c9c9c7; }
 +
 +scrollbar > range > trough > slider:hover:active { background-color: #1b6acb; }
 +
 +scrollbar > range > trough > slider:disabled { background-color: transparent; }
 +
 +scrollbar > range.fine-tune > trough > slider { transition: none; min-width: 6px; min-height: 6px; }
 +
 +scrollbar > range.fine-tune.horizontal > trough > slider { border-width: 5px 4px; }
 +
 +scrollbar > range.fine-tune.vertical > trough > slider { border-width: 4px 5px; }
 +
 +scrollbar.overlay-indicator:not(.dragging):not(.hovering) { border-color: transparent; opacity: 0.4; background-color: transparent; }
 +
 +scrollbar.overlay-indicator:not(.dragging):not(.hovering) > range > trough > slider { margin: 0; min-width: 3px; min-height: 3px; background-color: #eeeeec; border: 1px solid black; }
 +
 +scrollbar.overlay-indicator.horizontal:not(.dragging):not(.hovering) > range > trough > slider { margin: 0 2px; min-width: 40px; }
 +
 +scrollbar.overlay-indicator.vertical:not(.dragging):not(.hovering) > range > trough > slider { margin: 2px 0; min-height: 40px; }
 +
 +scrollbar.overlay-indicator.dragging, scrollbar.overlay-indicator.hovering { opacity: 0.8; }
 +
 +scrollbar.horizontal > range > trough > slider { min-width: 40px; }
 +
 +scrollbar.vertical > range > trough > slider { min-height: 40px; }
 +
 +treeview ~ scrollbar.vertical { border-top: 1px solid #1b1b1b; margin-top: -1px; }
 +
 +/********** Switch * */
 +switch { font-weight: bold; font-size: smaller; border: 1px solid #1b1b1b; border-radius: 14px; color: #eeeeec; background-color: #282828; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; /* only show i / o for the accessible theme */ }
 +
 +switch { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +switch:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: 0; }
 +
 +headerbar switch { background-color: #141414; }
 +
 +switch:checked { color: #ffffff; border-color: #030c17; background-color: #15539e; }
 +
 +switch:disabled { color: #919190; border-color: #1b1b1b; background-color: #323232; text-shadow: none; }
 +
 +switch > slider { color: #eeeeec; outline-color: rgba(21, 83, 158, 0.7); border-color: #1b1b1b; background-image: linear-gradient(to top, #373737 2px, #3a3a3a); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); margin: -1px; min-width: 24px; min-height: 24px; border: 1px solid; border-color: #1b1b1b; border-radius: 50%; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +switch > image { color: transparent; }
 +
 +switch:hover > slider { color: #eeeeec; border-color: #1b1b1b; background-image: linear-gradient(to top, #303030 20%, #323232 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +switch:checked > slider { border: 1px solid #030c17; }
 +
 +switch:disabled > slider { color: #919190; border-color: #202020; background-image: image(#323232); }
 +
 +row:selected switch { outline-color: rgba(255, 255, 255, 0.3); }
 +
 +/************************* Check and Radio items * */
 +.view.content-view.check:not(list), iconview.content-view.check:not(list), .content-view .tile check:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:hover:not(list), iconview.content-view.check:hover:not(list), .content-view .tile check:hover:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:active:not(list), iconview.content-view.check:active:not(list), .content-view .tile check:active:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:backdrop:not(list), iconview.content-view.check:backdrop:not(list), .content-view .tile check:backdrop:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #5a5a5a; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:not(list), iconview.content-view.check:checked:not(list), .content-view .tile check:checked:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:hover:not(list), iconview.content-view.check:checked:hover:not(list), .content-view .tile check:checked:hover:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:active:not(list), iconview.content-view.check:checked:active:not(list), .content-view .tile check:checked:active:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:backdrop:checked:not(list), iconview.content-view.check:backdrop:checked:not(list), .content-view .tile check:backdrop:checked:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: rgba(238, 238, 236, 0.8); background-color: #5a5a5a; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +checkbutton { border-spacing: 4px; border-radius: 5px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +checkbutton { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +checkbutton:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +checkbutton.text-button { padding: 4px; }
 +
 +check, radio { min-height: 14px; min-width: 14px; border: 1px solid; -gtk-icon-source: none; }
 +
 +check, radio { background-clip: padding-box; background-image: linear-gradient(to bottom, #424242 20%, #353535 90%); border-color: #070707; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:hover, radio:hover { background-image: linear-gradient(to bottom, #4c4c4c 10%, #3f3f3f 90%); }
 +
 +check:active, radio:active { box-shadow: inset 0 1px black; background-image: image(#282828); }
 +
 +check:disabled, radio:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +check:checked, radio:checked { background-clip: border-box; background-image: linear-gradient(to bottom, #185fb4 20%, #15539e 90%); border-color: #092444; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:checked:hover, radio:checked:hover { background-image: linear-gradient(to bottom, #1b68c6 10%, #185cb0 90%); }
 +
 +check:checked:active, radio:checked:active { box-shadow: inset 0 1px black; background-image: image(#124787); }
 +
 +check:checked:disabled, radio:checked:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +check:indeterminate, radio:indeterminate { background-clip: border-box; background-image: linear-gradient(to bottom, #185fb4 20%, #15539e 90%); border-color: #092444; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:indeterminate:hover, radio:indeterminate:hover { background-image: linear-gradient(to bottom, #1b68c6 10%, #185cb0 90%); }
 +
 +check:indeterminate:active, radio:indeterminate:active { box-shadow: inset 0 1px black; background-image: image(#124787); }
 +
 +check:indeterminate:disabled, radio:indeterminate:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +.osd check, .osd radio { color: #eeeeec; outline-color: rgba(21, 83, 158, 0.7); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; }
 +
 +.osd check:hover, .osd radio:hover { color: #eeeeec; outline-color: rgba(21, 83, 158, 0.7); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; }
 +
 +.osd check:active, .osd radio:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.osd check:disabled, .osd radio:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; }
 +
 +check { border-radius: 3px; -gtk-icon-size: 14px; }
 +
 +check:checked { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/check-symbolic.symbolic.png")), -gtk-recolor(url("assets/check@2-symbolic.symbolic.png"))); }
 +
 +check:indeterminate { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/dash-symbolic.symbolic.png")), -gtk-recolor(url("assets/dash@2-symbolic.symbolic.png"))); }
 +
 +treeview.view radio:selected:focus, treeview.view radio:selected, radio { border-radius: 100%; -gtk-icon-size: 14px; }
 +
 +treeview.view radio:checked:selected, radio:checked { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/bullet-symbolic.symbolic.png")), -gtk-recolor(url("assets/bullet@2-symbolic.symbolic.png"))); }
 +
 +treeview.view radio:indeterminate:selected, radio:indeterminate { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/dash-symbolic.symbolic.png")), -gtk-recolor(url("assets/dash@2-symbolic.symbolic.png"))); }
 +
 +treeview.view check:selected:focus, treeview.view check:selected, treeview.view radio:selected:focus, treeview.view radio:selected { color: #ffffff; }
 +
 +/************ GtkScale * */
 +progressbar > trough, scale > trough > fill, scale > trough { border: 1px solid #282828; border-radius: 3px; background-color: #282828; }
 +
 +headerbar progressbar > trough, headerbar scale > trough > fill, headerbar scale > trough { background-color: #141414; }
 +
 +progressbar > trough:disabled, scale > trough > fill:disabled, scale > trough:disabled { background-color: #323232; border-color: #202020; }
 +
 +row:selected progressbar > trough, row:selected scale > trough > fill, row:selected scale > trough { outline-color: rgba(255, 255, 255, 0.3); border-color: #030c17; }
 +
 +.osd progressbar > trough, .osd scale > trough > fill, .osd scale > trough { border-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.5); }
 +
 +.osd progressbar > trough:disabled, .osd scale > trough > fill:disabled, .osd scale > trough:disabled { background-color: rgba(58, 58, 57, 0.5); }
 +
 +progressbar > trough > progress, scale > trough > highlight { border: 1px solid #15539e; border-radius: 3px; background-color: #15539e; }
 +
 +progressbar > trough > progress:disabled, scale > trough > highlight:disabled { background-color: transparent; border-color: transparent; }
 +
 +row:selected progressbar > trough > progress, row:selected scale > trough > highlight { border-color: #030c17; }
 +
 +.osd progressbar > trough > progress, .osd scale > trough > highlight { border-color: rgba(0, 0, 0, 0.7); }
 +
 +.osd progressbar > trough > progress:disabled, .osd scale > trough > highlight:disabled { border-color: transparent; }
 +
 +scale { min-height: 10px; min-width: 10px; padding: 12px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +scale > trough { outline: 0 solid transparent; outline-offset: 16px; }
 +
 +scale:focus:focus-visible > trough { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: 10px; }
 +
 +scale > trough { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scale > trough > fill, scale > trough > highlight { margin: -1px; }
 +
 +scale > trough > slider { min-height: 18px; min-width: 18px; margin: -9px; }
 +
 +scale.fine-tune.horizontal { padding-top: 9px; padding-bottom: 9px; min-height: 16px; }
 +
 +scale.fine-tune.vertical { padding-left: 9px; padding-right: 9px; min-width: 16px; }
 +
 +scale.fine-tune > trough > slider { margin: -6px; }
 +
 +scale.fine-tune > trough > fill, scale.fine-tune > trough > highlight, scale.fine-tune > trough { border-radius: 5px; }
 +
 +scale > trough > fill:disabled { border-color: transparent; background-color: transparent; }
 +
 +.osd scale > trough > fill { background-color: rgba(91, 91, 90, 0.775); }
 +
 +.osd scale > trough > fill:disabled { border-color: transparent; background-color: transparent; }
 +
 +scale > trough > slider { color: #eeeeec; outline-color: rgba(21, 83, 158, 0.7); border-color: #1b1b1b; background-image: linear-gradient(to top, #373737 2px, #3a3a3a); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); border-width: 1px; border-style: solid; border-radius: 100%; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: background, border, box-shadow; }
 +
 +scale > trough > slider:hover { color: #eeeeec; border-color: #1b1b1b; background-image: linear-gradient(to top, #303030 20%, #323232 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +scale > trough > slider:active { border-color: #030c17; }
 +
 +scale > trough > slider:disabled { color: #919190; border-color: #202020; background-image: image(#323232); }
 +
 +row:selected scale > trough > slider:disabled, row:selected scale > trough > slider { border-color: #030c17; }
 +
 +.osd scale > trough > slider { color: #eeeeec; outline-color: rgba(21, 83, 158, 0.7); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; border-color: rgba(0, 0, 0, 0.7); background-color: #262626; }
 +
 +.osd scale > trough > slider:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(12, 12, 12, 0.7)); background-clip: padding-box; background-color: #262626; }
 +
 +.osd scale > trough > slider:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; background-color: #262626; }
 +
 +.osd scale > trough > slider:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; background-color: #262626; }
 +
 +scale > value { color: alpha(currentColor,0.55); font-feature-settings: "tnum"; }
 +
 +scale.horizontal > marks { color: alpha(currentColor,0.55); }
 +
 +scale.horizontal > marks.top { margin-bottom: 6px; }
 +
 +scale.horizontal > marks.bottom { margin-top: 6px; }
 +
 +scale.horizontal > marks indicator { background-color: currentColor; min-height: 6px; min-width: 1px; }
 +
 +scale.horizontal > value.left { margin-right: 9px; }
 +
 +scale.horizontal > value.right { margin-left: 9px; }
 +
 +scale.horizontal.fine-tune > marks.top { margin-top: 3px; }
 +
 +scale.horizontal.fine-tune > marks.bottom { margin-bottom: 3px; }
 +
 +scale.horizontal.fine-tune > marks indicator { min-height: 3px; }
 +
 +scale.vertical > marks { color: alpha(currentColor,0.55); }
 +
 +scale.vertical > marks.top { margin-right: 6px; }
 +
 +scale.vertical > marks.bottom { margin-left: 6px; }
 +
 +scale.vertical > marks indicator { background-color: currentColor; min-height: 1px; min-width: 6px; }
 +
 +scale.vertical > value.top { margin-bottom: 9px; }
 +
 +scale.vertical > value.bottom { margin-top: 9px; }
 +
 +scale.vertical.fine-tune > marks.top { margin-left: 3px; }
 +
 +scale.vertical.fine-tune > marks.bottom { margin-right: 3px; }
 +
 +scale.vertical.fine-tune > marks indicator { min-height: 3px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-dark.png"), url("assets/slider-horz-scale-has-marks-above-dark@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-hover-dark.png"), url("assets/slider-horz-scale-has-marks-above-hover-dark@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-active-dark.png"), url("assets/slider-horz-scale-has-marks-above-active-dark@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-insensitive-dark.png"), url("assets/slider-horz-scale-has-marks-above-insensitive-dark@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-below-dark.png"), url("assets/slider-horz-scale-has-marks-below-dark@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-below-hover-dark.png"), url("assets/slider-horz-scale-has-marks-below-hover-dark@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-below-active-dark.png"), url("assets/slider-horz-scale-has-marks-below-active-dark@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-below-insensitive-dark.png"), url("assets/slider-horz-scale-has-marks-below-insensitive-dark@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-above-dark.png"), url("assets/slider-vert-scale-has-marks-above-dark@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-above-hover-dark.png"), url("assets/slider-vert-scale-has-marks-above-hover-dark@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-above-active-dark.png"), url("assets/slider-vert-scale-has-marks-above-active-dark@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-above-insensitive-dark.png"), url("assets/slider-vert-scale-has-marks-above-insensitive-dark@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-below-dark.png"), url("assets/slider-vert-scale-has-marks-below-dark@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-below-hover-dark.png"), url("assets/slider-vert-scale-has-marks-below-hover-dark@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-below-active-dark.png"), url("assets/slider-vert-scale-has-marks-below-active-dark@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-below-insensitive-dark.png"), url("assets/slider-vert-scale-has-marks-below-insensitive-dark@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.color { min-height: 0; min-width: 0; }
 +
 +scale.color > trough { background-image: image(#1b1b1b); background-repeat: no-repeat; }
 +
 +scale.color.horizontal { padding: 0 0 15px 0; }
 +
 +scale.color.horizontal > trough { padding-bottom: 4px; background-position: 0 -3px; border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +scale.color.horizontal > trough > slider:dir(ltr):hover, scale.color.horizontal > trough > slider:dir(ltr):backdrop, scale.color.horizontal > trough > slider:dir(ltr):disabled, scale.color.horizontal > trough > slider:dir(ltr):backdrop:disabled, scale.color.horizontal > trough > slider:dir(ltr), scale.color.horizontal > trough > slider:dir(rtl):hover, scale.color.horizontal > trough > slider:dir(rtl):backdrop, scale.color.horizontal > trough > slider:dir(rtl):disabled, scale.color.horizontal > trough > slider:dir(rtl):backdrop:disabled, scale.color.horizontal > trough > slider:dir(rtl) { margin-bottom: -15px; margin-top: 6px; }
 +
 +scale.color.vertical:dir(ltr) { padding: 0 0 0 15px; }
 +
 +scale.color.vertical:dir(ltr) > trough { padding-left: 4px; background-position: 3px 0; border-bottom-right-radius: 0; border-top-right-radius: 0; }
 +
 +scale.color.vertical:dir(ltr) > trough > slider:hover, scale.color.vertical:dir(ltr) > trough > slider:backdrop, scale.color.vertical:dir(ltr) > trough > slider:disabled, scale.color.vertical:dir(ltr) > trough > slider:backdrop:disabled, scale.color.vertical:dir(ltr) > trough > slider { margin-left: -15px; margin-right: 6px; }
 +
 +scale.color.vertical:dir(rtl) { padding: 0 15px 0 0; }
 +
 +scale.color.vertical:dir(rtl) > trough { padding-right: 4px; background-position: -3px 0; border-bottom-left-radius: 0; border-top-left-radius: 0; }
 +
 +scale.color.vertical:dir(rtl) > trough > slider:hover, scale.color.vertical:dir(rtl) > trough > slider:backdrop, scale.color.vertical:dir(rtl) > trough > slider:disabled, scale.color.vertical:dir(rtl) > trough > slider:backdrop:disabled, scale.color.vertical:dir(rtl) > trough > slider { margin-right: -15px; margin-left: 6px; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr), scale.color.fine-tune.horizontal:dir(rtl) { padding: 0 0 12px 0; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr) > trough, scale.color.fine-tune.horizontal:dir(rtl) > trough { padding-bottom: 7px; background-position: 0 -6px; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr) > trough > slider, scale.color.fine-tune.horizontal:dir(rtl) > trough > slider { margin-bottom: -15px; margin-top: 6px; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) { padding: 0 0 0 12px; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) > trough { padding-left: 7px; background-position: 6px 0; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) > trough > slider { margin-left: -15px; margin-right: 6px; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) { padding: 0 12px 0 0; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) > trough { padding-right: 7px; background-position: -6px 0; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) > trough > slider { margin-right: -15px; margin-left: 6px; }
 +
 +/***************** Progress bars * */
 +progressbar { font-size: smaller; color: rgba(238, 238, 236, 0.4); font-feature-settings: "tnum"; }
 +
 +progressbar.horizontal > trough { min-width: 150px; }
 +
 +progressbar.horizontal > trough, progressbar.horizontal > trough > progress { min-height: 2px; }
 +
 +progressbar.vertical > trough { min-height: 80px; }
 +
 +progressbar.vertical > trough, progressbar.vertical > trough > progress { min-width: 2px; }
 +
 +progressbar.horizontal > trough > progress { margin: 0 -1px; }
 +
 +progressbar.vertical > trough > progress { margin: -1px 0; }
 +
 +progressbar > trough > progress { /* share most of scales' */ /* override insensitive that is specific to progress */ border-radius: 1.5px; }
 +
 +progressbar > trough > progress:disabled { background-color: #919190; border-color: #919190; }
 +
 +progressbar > trough > progress.left { border-top-left-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +progressbar > trough > progress.right { border-top-right-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +progressbar > trough > progress.top { border-top-right-radius: 5px; border-top-left-radius: 5px; }
 +
 +progressbar > trough > progress.bottom { border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +progressbar.osd { min-width: 3px; min-height: 3px; background-color: transparent; }
 +
 +progressbar.osd > trough { border-style: none; border-radius: 0; background-color: transparent; box-shadow: none; }
 +
 +progressbar.osd > trough > progress { border-style: none; border-radius: 0; }
 +
 +progressbar > trough.empty > progress { all: unset; }
 +
 +/************* Level Bar * */
 +levelbar.horizontal trough > block { min-height: 9px; border-radius: 5px; }
 +
 +levelbar.horizontal trough > block:dir(rtl) { border-radius: 0 5px 5px 0; }
 +
 +levelbar.horizontal trough > block:dir(ltr) { border-radius: 5px 0 0 5px; }
 +
 +levelbar.horizontal trough > block.empty, levelbar.horizontal trough > block.full { border-radius: 5px; }
 +
 +levelbar.horizontal.discrete trough > block { min-height: 2px; margin: 1px; min-width: 24px; border-radius: 0; }
 +
 +levelbar.horizontal.discrete trough > block:first-child { border-radius: 2px 0 0 2px; }
 +
 +levelbar.horizontal.discrete trough > block:last-child { border-radius: 0 2px 2px 0; }
 +
 +levelbar.vertical trough > block { min-width: 9px; border-radius: 5px; }
 +
 +levelbar.vertical.discrete > trough > block { min-width: 2px; margin: 1px 0; min-height: 32px; }
 +
 +levelbar > trough { padding: 0; }
 +
 +levelbar > trough > block { border: 1px solid; }
 +
 +levelbar > trough > block.low { border-color: #f57900; background-color: #f57900; }
 +
 +levelbar > trough > block.high, levelbar > trough > block:not(.empty) { border-color: #15539e; background-color: #15539e; }
 +
 +levelbar > trough > block.full { border-color: #26ab62; background-color: #26ab62; }
 +
 +levelbar > trough > block.empty { background-color: #282828; border-color: #282828; }
 +
 +/**************** Print dialog * */
 +window.dialog.print drawing { color: #eeeeec; background: none; border: none; padding: 0; }
 +
 +window.dialog.print drawing paper { background: white; color: #2e3436; border: 1px solid #1b1b1b; }
 +
 +window.dialog.print .dialog-action-box { margin: 12px; }
 +
 +/********** Frames * */
 +frame, .frame { border: 1px solid #1b1b1b; }
 +
 +frame { border-radius: 8px; }
 +
 +frame > label { margin: 4px; }
 +
 +actionbar > revealer > box { padding: 6px; border-top: 1px solid #1b1b1b; }
 +
 +actionbar > revealer > box, actionbar > revealer > box > box.start, actionbar > revealer > box > box.end { border-spacing: 6px; }
 +
 +scrolledwindow > overshoot.top { background-image: radial-gradient(farthest-side at top, #020202 85%, rgba(2, 2, 2, 0)), radial-gradient(farthest-side at top, rgba(238, 238, 236, 0.07), rgba(238, 238, 236, 0)); background-size: 100% 3%, 100% 50%; background-repeat: no-repeat; background-position: top; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.bottom { background-image: radial-gradient(farthest-side at bottom, #020202 85%, rgba(2, 2, 2, 0)), radial-gradient(farthest-side at bottom, rgba(238, 238, 236, 0.07), rgba(238, 238, 236, 0)); background-size: 100% 3%, 100% 50%; background-repeat: no-repeat; background-position: bottom; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.left { background-image: radial-gradient(farthest-side at left, #020202 85%, rgba(2, 2, 2, 0)), radial-gradient(farthest-side at left, rgba(238, 238, 236, 0.07), rgba(238, 238, 236, 0)); background-size: 3% 100%, 50% 100%; background-repeat: no-repeat; background-position: left; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.right { background-image: radial-gradient(farthest-side at right, #020202 85%, rgba(2, 2, 2, 0)), radial-gradient(farthest-side at right, rgba(238, 238, 236, 0.07), rgba(238, 238, 236, 0)); background-size: 3% 100%, 50% 100%; background-repeat: no-repeat; background-position: right; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > junction { background: #1b1b1b, linear-gradient(to bottom, transparent 1px, #313131 1px), linear-gradient(to right, transparent 1px, #313131 1px); }
 +
 +scrolledwindow > junction:dir(rtl) { background: #1b1b1b, linear-gradient(to bottom, transparent 1px, #313131 1px), linear-gradient(to left, transparent 1px, #313131 1px); }
 +
 +separator { background: #282828; min-width: 1px; min-height: 1px; }
 +
 +/********* Lists * */
 +listview, list { color: white; background-color: #2d2d2d; border-color: #1b1b1b; }
 +
 +listview:backdrop, list:backdrop { color: #d6d6d6; background-color: #303030; border-color: #202020; }
 +
 +listview > row, list > row { padding: 2px; }
 +
 +listview > row.expander, list > row.expander { padding: 0px; }
 +
 +listview > row.expander .row-header, list > row.expander .row-header { padding: 2px; }
 +
 +listview.horizontal row.separator, listview.separators.horizontal > row:not(.separator), list.horizontal row.separator, list.separators.horizontal > row:not(.separator) { border-left: 1px solid #545453; }
 +
 +listview:not(.horizontal) row.separator, listview.separators:not(.horizontal) > row:not(.separator), list:not(.horizontal) row.separator, list.separators:not(.horizontal) > row:not(.separator) { border-bottom: 1px solid #545453; }
 +
 +row { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +row:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +row.activatable.has-open-popup, row.activatable:hover { background-color: rgba(238, 238, 236, 0.05); }
 +
 +row.activatable:active { box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.2); }
 +
 +row.activatable:selected:active { box-shadow: inset 0 2px 3px -1px rgba(0, 0, 0, 0.5); }
 +
 +row.activatable.has-open-popup:selected, row.activatable:selected:hover { background-color: #2b62a6; }
 +
 +row:selected { outline-color: rgba(255, 255, 255, 0.3); }
 +
 +columnview > listview > row { padding: 0; }
 +
 +columnview > listview > row > cell { padding: 8px 6px; }
 +
 +columnview > listview > row > cell:not(:first-child) { border-left: 1px solid transparent; }
 +
 +columnview.column-separators > listview > row > cell { border-left-color: #545453; }
 +
 +columnview.data-table > listview > row > cell { padding-top: 2px; padding-bottom: 2px; }
 +
 +treeexpander { border-spacing: 4px; }
 +
 +/******************************************************** Data Tables                                          * treeview like tables with individual focusable cells * https://gitlab.gnome.org/GNOME/gtk/-/issues/2929     * */
 +columnview row:not(:selected) cell editablelabel:not(.editing):focus-within { outline: 2px solid rgba(21, 83, 158, 0.7); }
 +
 +columnview row:not(:selected) cell editablelabel.editing:focus-within { outline: 2px solid #15539e; }
 +
 +columnview row:not(:selected) cell editablelabel.editing text selection { background-color: rgba(90, 90, 90, 0.5); color: transparent; }
 +
 +columnview row:not(:selected) cell editablelabel.editing text selection:focus-within { background-color: rgba(21, 83, 158, 0.3); color: #eeeeec; }
 +
 +/******************************************************* Rich Lists                                          * Large list usually containing lots of widgets       * https://gitlab.gnome.org/GNOME/gtk/-/issues/3073    * */
 +.rich-list { /* rich lists usually containing other widgets than just labels/text */ }
 +
 +.rich-list > row { padding: 8px 12px; min-height: 32px; /* should be tall even when only containing a label */ }
 +
 +.rich-list > row > box { border-spacing: 12px; }
 +
 +/********************* App Notifications * */
 +.app-notification { padding: 10px; border-spacing: 10px; border-radius: 0 0 5px 5px; background-color: rgba(38, 38, 38, 0.7); background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.2), transparent 2px); background-clip: padding-box; }
 +
 +.app-notification border { border: none; }
 +
 +/************* Expanders * */
 +expander { min-width: 16px; min-height: 16px; -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
 +
 +expander:dir(rtl) { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); }
 +
 +expander:disabled { color: #919190; }
 +
 +expander:checked { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +expander-widget { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +expander-widget > box > title { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +expander-widget:focus:focus-visible > box > title { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +expander-widget > box > title { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); border-radius: 5px; }
 +
 +expander-widget > box > title:hover > expander { color: white; }
 +
 +.navigation-sidebar:not(decoration):not(window):drop(active):focus, .navigation-sidebar:not(decoration):not(window):drop(active), placessidebar:not(decoration):not(window):drop(active):focus, placessidebar:not(decoration):not(window):drop(active), stackswitcher:not(decoration):not(window):drop(active):focus, stackswitcher:not(decoration):not(window):drop(active), expander-widget:not(decoration):not(window):drop(active):focus, expander-widget:not(decoration):not(window):drop(active) { box-shadow: none; }
 +
 +/************ Calendar * */
 +calendar { color: white; border: 1px solid #1b1b1b; font-feature-settings: "tnum"; }
 +
 +calendar > header { border-bottom: 1px solid #1b1b1b; }
 +
 +calendar > header > button { border: none; box-shadow: none; background: none; border-radius: 0; }
 +
 +calendar > header > button:backdrop { background: none; }
 +
 +calendar > grid > label.today { box-shadow: inset 0px -2px #1b1b1b; }
 +
 +calendar > grid > label.today:selected { box-shadow: none; }
 +
 +calendar > grid > label:focus { outline-color: rgba(21, 83, 158, 0.7); outline-offset: -2px; outline-width: 2px; outline-style: solid; }
 +
 +calendar > grid > label.day-number { padding: 4px; }
 +
 +calendar > grid > label.day-number:selected { border-radius: 3px; }
 +
 +calendar > grid > label.day-number.other-month { color: alpha(currentColor,0.3); }
 +
 +/*********** Dialogs * */
 +window.dialog.message .titlebar { min-height: 20px; background-image: none; background-color: #353535; border-style: none; border-top-left-radius: 7px; border-top-right-radius: 7px; }
 +
 +window.dialog.message box.dialog-vbox.vertical { border-spacing: 10px; }
 +
 +window.dialog.message label.title { font-weight: 800; font-size: 15pt; }
 +
 +window.dialog.message.csd.background { border-bottom-left-radius: 9px; border-bottom-right-radius: 9px; }
 +
 +window.dialog.message.csd .dialog-action-area button { padding: 10px 14px; border-radius: 0; border-left-style: solid; border-right-style: none; border-bottom-style: none; }
 +
 +window.dialog.message.csd .dialog-action-area button:first-child { border-left-style: none; border-bottom-left-radius: 7px; }
 +
 +window.dialog.message.csd .dialog-action-area button:last-child { border-bottom-right-radius: 7px; }
 +
 +filechooser .dialog-action-box { border-top: 1px solid #1b1b1b; }
 +
 +filechooser #pathbarbox { border-bottom: 1px solid #353535; }
 +
 +filechooserbutton > button > box { border-spacing: 6px; }
 +
 +filechooserbutton:drop(active) { box-shadow: none; border-color: transparent; }
 +
 +/*********** Sidebar * */
 +.sidebar { background-color: #313131; }
 +
 +.sidebar:not(separator):dir(ltr), .sidebar.left:not(separator), .sidebar.left:not(separator):dir(rtl) { border-right: 1px solid #1b1b1b; border-left-style: none; }
 +
 +.sidebar:not(separator):dir(rtl), .sidebar.right:not(separator) { border-left: 1px solid #1b1b1b; border-right-style: none; }
 +
 +.sidebar listview.view, .sidebar list { background-color: transparent; }
 +
 +paned .sidebar.left, paned .sidebar.right, paned .sidebar.left:dir(rtl), paned .sidebar:dir(rtl), paned .sidebar:dir(ltr), paned .sidebar { border-style: none; }
 +
 +stacksidebar list.separators:not(.horizontal) > row:not(.separator) { border-bottom: none; }
 +
 +stacksidebar row { padding: 10px 4px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +stacksidebar row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +stacksidebar row:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +stacksidebar row > label { padding-left: 6px; padding-right: 6px; }
 +
 +stacksidebar row.needs-attention > label { background-size: 6px 6px, 0 0; }
 +
 +stacksidebar row:selected { background-color: #202020; border-radius: 5px; color: #eeeeec; }
 +
 +stacksidebar row:selected:hover:dir(ltr), stacksidebar row:selected:hover:dir(rtl) { background-color: #141414; }
 +
 +stacksidebar row.activatable:active, stacksidebar row.activatable:selected:active { box-shadow: none; }
 +
 +separator.sidebar { background-color: #1b1b1b; }
 +
 +/********************** Navigation Sidebar * */
 +.navigation-sidebar { padding: 5px 0; }
 +
 +.navigation-sidebar > separator { margin: 5px; }
 +
 +.navigation-sidebar > row { min-height: 36px; padding: 0 8px; border-radius: 5px; margin: 0 5px 2px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +.navigation-sidebar > row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +.navigation-sidebar > row:focus-visible:focus-within { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: -2px; }
 +
 +.navigation-sidebar > row:hover { background-color: #141414; }
 +
 +.navigation-sidebar > row:selected { background-color: #202020; color: inherit; }
 +
 +.navigation-sidebar > row:selected:hover { background-color: #141414; }
 +
 +.navigation-sidebar > row:disabled { color: #919190; }
 +
 +/**************** File chooser * */
 +row image.sidebar-icon { opacity: 0.7; }
 +
 +/* this should be more generic, only using .navigation-sidebar https://gitlab.gnome.org/GNOME/gtk/-/issues/2929 */
 +placessidebar .navigation-sidebar > row { padding: 0; }
 +
 +placessidebar .navigation-sidebar > row > revealer { padding: 0 14px; }
 +
 +placessidebar .navigation-sidebar > row image.sidebar-icon:dir(ltr) { padding-right: 8px; }
 +
 +placessidebar .navigation-sidebar > row image.sidebar-icon:dir(rtl) { padding-left: 8px; }
 +
 +placessidebar .navigation-sidebar > row label.sidebar-label:dir(ltr) { padding-right: 2px; }
 +
 +placessidebar .navigation-sidebar > row label.sidebar-label:dir(rtl) { padding-left: 2px; }
 +
 +button.sidebar-button { min-height: 26px; min-width: 26px; margin-top: 3px; margin-bottom: 3px; padding: 0; border-radius: 100%; }
 +
 +placessidebar .navigation-sidebar > row:selected:active { box-shadow: none; }
 +
 +placessidebar .navigation-sidebar > row.sidebar-placeholder-row { padding: 0 8px; min-height: 2px; background-image: image(#26a269); background-clip: content-box; }
 +
 +placessidebar .navigation-sidebar > row.sidebar-new-bookmark-row { color: #15539e; }
 +
 +placessidebar .navigation-sidebar > row:drop(active):not(:disabled) { color: #26a269; box-shadow: inset 0 1px #26a269, inset 0 -1px #26a269; }
 +
 +placessidebar .navigation-sidebar > row:drop(active):not(:disabled):selected { color: #ffffff; background-color: #26a269; }
 +
 +placesview .server-list-button > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(0turn); }
 +
 +placesview .server-list-button:checked > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(-0.5turn); }
 +
 +placesview > actionbar > revealer > box > box { border-spacing: 6px; }
 +
 +/********* Paned * */
 +paned > separator { min-width: 1px; min-height: 1px; -gtk-icon-source: none; border-style: none; background-color: transparent; background-image: image(#1b1b1b); background-size: 1px 1px; }
 +
 +paned > separator:selected { background-image: image(#15539e); }
 +
 +paned > separator.wide { min-width: 5px; min-height: 5px; background-color: #353535; background-image: image(#1b1b1b), image(#1b1b1b); background-size: 1px 1px, 1px 1px; }
 +
 +paned.horizontal > separator { background-repeat: repeat-y; }
 +
 +paned.horizontal > separator:dir(ltr) { margin: 0 -8px 0 0; padding: 0 8px 0 0; background-position: left; }
 +
 +paned.horizontal > separator:dir(rtl) { margin: 0 0 0 -8px; padding: 0 0 0 8px; background-position: right; }
 +
 +paned.horizontal > separator.wide { margin: 0; padding: 0; background-repeat: repeat-y, repeat-y; background-position: left, right; }
 +
 +paned.vertical > separator { margin: 0 0 -8px 0; padding: 0 0 8px 0; background-repeat: repeat-x; background-position: top; }
 +
 +paned.vertical > separator.wide { margin: 0; padding: 0; background-repeat: repeat-x, repeat-x; background-position: bottom, top; }
 +
 +/************** GtkVideo * */
 +video { background: black; }
 +
 +video image.osd { min-width: 64px; min-height: 64px; border-radius: 32px; }
 +
 +/************ Tooltips * */
 +tooltip { padding: 6px 10px; border-radius: 8px; box-shadow: none; }
 +
 +tooltip.background { background-color: rgba(0, 0, 0, 0.8); background-clip: padding-box; border: 1px solid rgba(255, 255, 255, 0.1); color: white; }
 +
 +tooltip > box { border-spacing: 6px; }
 +
 +/***************** Color Chooser * */
 +colorswatch { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +colorswatch { outline: 0 solid transparent; outline-offset: 6px; }
 +
 +colorswatch:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 4px; outline-offset: -2px; }
 +
 +colorswatch:drop(active), colorswatch { border-style: none; }
 +
 +colorswatch.top { border-top-left-radius: 5.5px; border-top-right-radius: 5.5px; }
 +
 +colorswatch.top > overlay { border-top-left-radius: 5px; border-top-right-radius: 5px; }
 +
 +colorswatch.bottom { border-bottom-left-radius: 5.5px; border-bottom-right-radius: 5.5px; }
 +
 +colorswatch.bottom > overlay { border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +colorswatch.left, colorswatch:first-child:not(.top) { border-top-left-radius: 5.5px; border-bottom-left-radius: 5.5px; }
 +
 +colorswatch.left > overlay, colorswatch:first-child:not(.top) > overlay { border-top-left-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +colorswatch.right, colorswatch:last-child:not(.bottom) { border-top-right-radius: 5.5px; border-bottom-right-radius: 5.5px; }
 +
 +colorswatch.right > overlay, colorswatch:last-child:not(.bottom) > overlay { border-top-right-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +colorswatch.dark > overlay { color: white; }
 +
 +colorswatch.dark.activatable:hover > overlay { border-color: #1b1b1b; }
 +
 +colorswatch.light > overlay { color: black; }
 +
 +colorswatch.light.activatable:hover > overlay { border-color: #1b1b1b; }
 +
 +colorswatch:drop(active) { box-shadow: none; }
 +
 +colorswatch.light:drop(active) > overlay { border-color: #26a269; box-shadow: inset 0 0 0 2px #1b1b1b, inset 0 0 0 1px #26a269; }
 +
 +colorswatch.dark:drop(active) > overlay { border-color: #26a269; box-shadow: inset 0 0 0 2px #1b1b1b, inset 0 0 0 1px #26a269; }
 +
 +colorswatch > overlay { border: 1px solid #1b1b1b; }
 +
 +colorswatch.activatable:hover > overlay { box-shadow: inset 0 1px rgba(255, 255, 255, 0.4), inset 0 -1px rgba(0, 0, 0, 0.2); }
 +
 +colorswatch#add-color-button { border-radius: 5px 0 0 5px; }
 +
 +colorswatch#add-color-button:only-child { border-radius: 5px; }
 +
 +colorswatch#add-color-button > overlay { color: #eeeeec; outline-color: rgba(21, 83, 158, 0.7); border-color: #1b1b1b; background-image: linear-gradient(to top, #373737 2px, #3a3a3a); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +colorswatch#add-color-button.activatable:hover > overlay { color: #eeeeec; border-color: #1b1b1b; background-image: linear-gradient(to top, #303030 20%, #323232 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +colorswatch:disabled { opacity: 0.5; }
 +
 +colorswatch:disabled > overlay { border-color: rgba(0, 0, 0, 0.6); box-shadow: none; }
 +
 +row:selected colorswatch { box-shadow: 0 0 0 2px #ffffff; }
 +
 +colorswatch#editor-color-sample { border-radius: 4px; }
 +
 +colorswatch#editor-color-sample > overlay { border-radius: 4.5px; }
 +
 +plane { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +plane { outline: 0 solid transparent; outline-offset: 6px; }
 +
 +plane:focus:focus-visible { outline-color: rgba(21, 83, 158, 0.7); outline-width: 2px; outline-offset: 2px; }
 +
 +colorchooser .popover.osd { border-radius: 5px; }
 +
 +/******** Misc * */
 +.content-view { background-color: #232323; }
 +
 +.content-view:hover { -gtk-icon-filter: brightness(1.2); }
 +
 +.content-view .tile { margin: 2px; background-color: black; border-radius: 0; padding: 0; }
 +
 +.content-view .tile:active, .content-view .tile:selected { background-color: #15539e; }
 +
 +.content-view .tile:disabled { background-color: #323232; }
 +
 +.osd .scale-popup button.flat { border-style: none; border-radius: 5px; }
 +
 +.scale-popup button:hover { background-color: rgba(238, 238, 236, 0.1); border-radius: 5px; }
 +
 +/********************** Window Decorations * */
 +window { border-width: 0px; }
 +
 +window.csd { box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(0, 0, 0, 0.75); margin: 0px; border-radius: 8px 8px 0 0; }
 +
 +window.csd:backdrop { box-shadow: 0 3px 9px 1px transparent, 0 2px 6px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.75); transition: 200ms ease-out; }
 +
 +window.csd.popup { border-radius: 5px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.65); }
 +
 +window.csd.dialog.message { border-radius: 8px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.65); }
 +
 +window.solid-csd { margin: 0; padding: 4px; border: solid 1px #1b1b1b; border-radius: 0; box-shadow: inset 0 0 0 4px #1b1b1b, inset 0 0 0 3px #2d2d2d, inset 0 1px rgba(238, 238, 236, 0.07); }
 +
 +window.solid-csd:backdrop { box-shadow: inset 0 0 0 4px #1b1b1b, inset 0 0 0 3px #353535, inset 0 1px rgba(238, 238, 236, 0.07); }
 +
 +window.maximized, window.fullscreen { border-radius: 0; box-shadow: none; }
 +
 +window.tiled, window.tiled-top, window.tiled-left, window.tiled-right, window.tiled-bottom { border-radius: 0; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.75), 0 0 0 20px transparent; }
 +
 +window.tiled:backdrop, window.tiled-top:backdrop, window.tiled-left:backdrop, window.tiled-right:backdrop, window.tiled-bottom:backdrop { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.75), 0 0 0 20px transparent; }
 +
 +window.popup { box-shadow: none; }
 +
 +window.ssd { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.75); }
 +
 +tooltip.csd { border-radius: 5px; box-shadow: none; }
 +
 +.view:selected:focus, .view:selected, textview > text:selected:focus, textview > text:selected, iconview:selected:focus, iconview:selected, flowbox > flowboxchild:selected, gridview > child:selected, modelbutton.flat:selected, columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar > grid > label.day-number:selected { background-color: #15539e; }
 +
 +label:selected, .view:selected:focus, .view:selected, textview > text:selected:focus, textview > text:selected, iconview:selected:focus, iconview:selected, flowbox > flowboxchild:selected, gridview > child:selected, modelbutton.flat:selected, columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar > grid > label.day-number:selected { color: #ffffff; }
 +
 +label:disabled > selection, label:disabled:selected, .view:disabled:selected, textview > text:disabled:selected:focus, textview > text:disabled:selected, iconview:disabled:selected:focus, iconview:disabled:selected, flowbox > flowboxchild:disabled:selected, gridview > child:disabled:selected, modelbutton.flat:disabled:selected, columnview.view:disabled:selected, treeview.view:disabled:selected, row:disabled:selected, calendar > grid > label.day-number:disabled:selected { color: #8aa9ce; }
 +
 +.monospace { font-family: monospace; }
 +
 +/********************** Touch Copy & Paste * */
 +cursor-handle { background-color: transparent; background-image: none; box-shadow: none; border-style: none; min-width: 20px; min-height: 24px; padding-left: 20px; padding-right: 20px; padding-top: 24px; padding-bottom: 24px; }
 +
 +cursor-handle.top:dir(ltr), cursor-handle.bottom:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-start-dark.png"), url("assets/text-select-start-dark@2.png")); }
 +
 +cursor-handle.bottom:dir(ltr), cursor-handle.top:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-end-dark.png"), url("assets/text-select-end-dark@2.png")); }
 +
 +cursor-handle.insertion-cursor:dir(ltr), cursor-handle.insertion-cursor:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-dark.png"), url("assets/slider-horz-scale-has-marks-above-dark@2.png")); }
 +
 +cursor-handle.top:hover:dir(ltr), cursor-handle.bottom:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-start-hover-dark.png"), url("assets/text-select-start-hover-dark@2.png")); }
 +
 +cursor-handle.bottom:hover:dir(ltr), cursor-handle.top:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-end-hover-dark.png"), url("assets/text-select-end-hover-dark@2.png")); }
 +
 +cursor-handle.insertion-cursor:hover:dir(ltr), cursor-handle.insertion-cursor:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-hover-dark.png"), url("assets/slider-horz-scale-has-marks-above-hover-dark@2.png")); }
 +
 +cursor-handle.top:active:dir(ltr), cursor-handle.bottom:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-start-active-dark.png"), url("assets/text-select-start-active-dark@2.png")); }
 +
 +cursor-handle.bottom:active:dir(ltr), cursor-handle.top:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-end-active-dark.png"), url("assets/text-select-end-active-dark@2.png")); }
 +
 +cursor-handle.insertion-cursor:active:dir(ltr), cursor-handle.insertion-cursor:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-active-dark.png"), url("assets/slider-horz-scale-has-marks-above-active-dark@2.png")); }
 +
 +shortcuts-section { margin: 20px; }
 +
 +.shortcuts-search-results { margin: 20px; border-spacing: 24px; }
 +
 +shortcut { border-spacing: 6px; }
 +
 +shortcut > .keycap { min-width: 20px; min-height: 25px; margin-top: 2px; padding-bottom: 3px; padding-left: 6px; padding-right: 6px; color: #eeeeec; background-color: #2d2d2d; border: 1px solid; border-color: #1b1b1b; border-radius: 5px; box-shadow: inset 0 -3px #222222; font-size: smaller; }
 +
 +:not(decoration):not(window):drop(active):focus, :not(decoration):not(window):drop(active) { border-color: #26a269; box-shadow: inset 0 0 0 1px #26a269; caret-color: #26a269; }
 +
 +stackswitcher > button.text-button { min-width: 100px; }
 +
 +stackswitcher.circular { border-spacing: 12px; }
 +
 +stackswitcher.circular > button.circular, stackswitcher.circular > button.text-button.circular { min-width: 32px; min-height: 32px; padding: 0; }
 +
 +/************* App Icons * */
 +/* Outline for low res icons */
 +.lowres-icon { -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.05), 1px 0 rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.3), -1px 0 rgba(0, 0, 0, 0.1); }
 +
 +/* Drapshadow for large icons */
 +.icon-dropshadow { -gtk-icon-shadow: 0 1px 12px rgba(0, 0, 0, 0.05), 0 -1px rgba(0, 0, 0, 0.05), 1px 0 rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.3), -1px 0 rgba(0, 0, 0, 0.1); }
 +
 +/********* Emoji * */
 +popover.emoji-picker > contents { padding: 0; }
 +
 +.emoji-searchbar { padding: 6px; border-spacing: 6px; border-bottom: 1px solid #1b1b1b; }
 +
 +.emoji-toolbar { padding: 6px; border-spacing: 6px; border-top: 1px solid #1b1b1b; }
 +
 +button.emoji-section { border-color: transparent; border-width: 3px; border-style: none none solid; border-radius: 0; padding: 3px 0 0; min-width: 32px; min-height: 28px; /* reset props inherited from the button style */ background: none; box-shadow: none; text-shadow: none; }
 +
 +button.emoji-section:hover { border-color: rgba(238, 238, 236, 0.1); }
 +
 +button.emoji-section:checked { border-color: #15539e; }
 +
 +popover.emoji-picker emoji { font-size: x-large; padding: 6px; border-radius: 6px; }
 +
 +popover.emoji-picker emoji:focus, popover.emoji-picker emoji:hover { background: #15539e; }
 +
 +emoji-completion-row > box { border-spacing: 10px; padding: 2px 10px; }
 +
 +emoji-completion-row:focus, emoji-completion-row:hover { background-color: #15539e; color: #ffffff; }
 +
 +emoji-completion-row emoji:focus, emoji-completion-row emoji:hover { background-color: #202020; }
 +
 +popover.entry-completion > contents { padding: 0; }
 +
 +statusbar { padding: 6px 10px 6px 10px; }
 +
 +menubutton > button > box { border-spacing: 6px; }
 +
 +menubutton arrow { min-height: 16px; min-width: 16px; }
 +
 +menubutton arrow.none { -gtk-icon-source: -gtk-icontheme("open-menu-symbolic"); }
 +
 +menubutton arrow.down { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +menubutton arrow.up { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +menubutton arrow.left { -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); }
 +
 +menubutton arrow.right { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
 +
 +/* GTK NAMED COLORS ---------------- use responsibly! */
 +/*
 +widget text/foreground color */
 +@define-color theme_fg_color #eeeeec;
 +/*
 +text color for entries, views and content in general */
 +@define-color theme_text_color white;
 +/*
 +widget base background color */
 +@define-color theme_bg_color #353535;
 +/*
 +text widgets and the like base background color */
 +@define-color theme_base_color #2d2d2d;
 +/*
 +base background color of selections */
 +@define-color theme_selected_bg_color #15539e;
 +/*
 +text/foreground color of selections */
 +@define-color theme_selected_fg_color #ffffff;
 +/*
 +base background color of insensitive widgets */
 +@define-color insensitive_bg_color #323232;
 +/*
 +text foreground color of insensitive widgets */
 +@define-color insensitive_fg_color #919190;
 +/*
 +insensitive text widgets and the like base background color */
 +@define-color insensitive_base_color #2d2d2d;
 +/*
 +widget text/foreground color on backdrop windows */
 +@define-color theme_unfocused_fg_color #919190;
 +/*
 +text color for entries, views and content in general on backdrop windows */
 +@define-color theme_unfocused_text_color white;
 +/*
 +widget base background color on backdrop windows */
 +@define-color theme_unfocused_bg_color #353535;
 +/*
 +text widgets and the like base background color on backdrop windows */
 +@define-color theme_unfocused_base_color #303030;
 +/*
 +base background color of selections on backdrop windows */
 +@define-color theme_unfocused_selected_bg_color #15539e;
 +/*
 +text/foreground color of selections on backdrop windows */
 +@define-color theme_unfocused_selected_fg_color #ffffff;
 +/*
 +insensitive color on backdrop windows*/
 +@define-color unfocused_insensitive_color #5b5b5b;
 +/*
 +widgets main borders color */
 +@define-color borders #1b1b1b;
 +/*
 +widgets main borders color on backdrop windows */
 +@define-color unfocused_borders #202020;
 +/*
 +these are pretty self explicative */
 +@define-color warning_color #f57900;
 +@define-color error_color #cc0000;
 +@define-color success_color #26ab62;
 +/*
 +these colors are exported for the window manager and shouldn't be used in applications,
 +read if you used those and something break with a version upgrade you're on your own... */
 +@define-color wm_title shade(#eeeeec, 1.8);
 +@define-color wm_unfocused_title #919190;
 +@define-color wm_highlight rgba(0, 0, 0, 0);
 +@define-color wm_borders_edge rgba(238, 238, 236, 0.07);
 +@define-color wm_bg_a shade(#353535, 1.2);
 +@define-color wm_bg_b #353535;
 +@define-color wm_shadow alpha(black, 0.35);
 +@define-color wm_border alpha(black, 0.18);
 +@define-color wm_button_hover_color_a shade(#353535, 1.3);
 +@define-color wm_button_hover_color_b #353535;
 +@define-color wm_button_active_color_a shade(#353535, 0.85);
 +@define-color wm_button_active_color_b shade(#353535, 0.89);
 +@define-color wm_button_active_color_c shade(#353535, 0.9);
 +/* content view background such as thumbnails view in Photos or Boxes */
 +@define-color content_view_bg #2d2d2d;
 +/* Very contrasty background for text views (@theme_text_color foreground) */
 +@define-color text_view_bg #1e1e1e;
index e850bcff2f2d2df1bbf2424bd2e1a95a887b9d5f,0000000000000000000000000000000000000000..58efb84fc06a41b0dd1cd0603da5310dd5e3689a
mode 100644,000000..100644
--- /dev/null
@@@ -1,1867 -1,0 +1,1869 @@@
 +/* GTK NAMED COLORS ---------------- use responsibly! */
 +/*
 +widget text/foreground color */
 +@define-color theme_fg_color #f3f3f1;
 +/*
 +text color for entries, views and content in general */
 +@define-color theme_text_color white;
 +/*
 +widget base background color */
 +@define-color theme_bg_color #303030;
 +/*
 +text widgets and the like base background color */
 +@define-color theme_base_color #2d2d2d;
 +/*
 +base background color of selections */
 +@define-color theme_selected_bg_color #0f3b71;
 +/*
 +text/foreground color of selections */
 +@define-color theme_selected_fg_color #ffffff;
 +/*
 +base background color of insensitive widgets */
 +@define-color insensitive_bg_color #2f2f2f;
 +/*
 +text foreground color of insensitive widgets */
 +@define-color insensitive_fg_color #919191;
 +/*
 +insensitive text widgets and the like base background color */
 +@define-color insensitive_base_color #2d2d2d;
 +/*
 +widget text/foreground color on backdrop windows */
 +@define-color theme_unfocused_fg_color #919190;
 +/*
 +text color for entries, views and content in general on backdrop windows */
 +@define-color theme_unfocused_text_color white;
 +/*
 +widget base background color on backdrop windows */
 +@define-color theme_unfocused_bg_color #353535;
 +/*
 +text widgets and the like base background color on backdrop windows */
 +@define-color theme_unfocused_base_color #303030;
 +/*
 +base background color of selections on backdrop windows */
 +@define-color theme_unfocused_selected_bg_color #0f3b71;
 +/*
 +text/foreground color of selections on backdrop windows */
 +@define-color theme_unfocused_selected_fg_color #ffffff;
 +/*
 +insensitive color on backdrop windows*/
 +@define-color unfocused_insensitive_color #5b5b5b;
 +/*
 +widgets main borders color */
 +@define-color borders #686868;
 +/*
 +widgets main borders color on backdrop windows */
 +@define-color unfocused_borders #202020;
 +/*
 +these are pretty self explicative */
 +@define-color warning_color #f57900;
 +@define-color error_color #cc0000;
 +@define-color success_color #26ab62;
 +/*
 +these colors are exported for the window manager and shouldn't be used in applications,
 +read if you used those and something break with a version upgrade you're on your own... */
 +@define-color wm_title shade(#f3f3f1, 1.8);
 +@define-color wm_unfocused_title #919190;
 +@define-color wm_highlight rgba(0, 0, 0, 0);
 +@define-color wm_borders_edge rgba(238, 238, 236, 0.07);
 +@define-color wm_bg_a shade(#303030, 1.2);
 +@define-color wm_bg_b #303030;
 +@define-color wm_shadow alpha(black, 0.35);
 +@define-color wm_border alpha(black, 0.18);
 +@define-color wm_button_hover_color_a shade(#303030, 1.3);
 +@define-color wm_button_hover_color_b #303030;
 +@define-color wm_button_active_color_a shade(#303030, 0.85);
 +@define-color wm_button_active_color_b shade(#303030, 0.89);
 +@define-color wm_button_active_color_c shade(#303030, 0.9);
 +/* content view background such as thumbnails view in Photos or Boxes */
 +@define-color content_view_bg #2d2d2d;
 +/* Very contrasty background for text views (@theme_text_color foreground) */
 +@define-color text_view_bg #1e1e1e;
 +/*************************** Check and Radio buttons * */
 +/*************** Base States * */
 +.background { color: #f3f3f1; background-color: #303030; }
 +
 +.background:backdrop { text-shadow: none; -gtk-icon-shadow: none; }
 +
 +dnd { color: #f3f3f1; }
 +
 +.normal-icons { -gtk-icon-size: 16px; }
 +
 +.large-icons { -gtk-icon-size: 32px; }
 +
 +image:disabled { -gtk-icon-filter: opacity(0.5); }
 +
 +.view, iconview, textview > text { color: white; background-color: #2d2d2d; }
 +
 +.view:disabled, iconview:disabled, textview > text:disabled { color: #919191; background-color: #2f2f2f; }
 +
 +.view:selected:focus, iconview:selected:focus, .view:selected, iconview:selected, textview > text:selected:focus, textview > text:selected { border-radius: 3px; }
 +
++textview > text { background-color: transparent; }
++
 +textview > text > selection { background-color: rgba(90, 90, 90, 0.5); }
 +
 +textview > text > selection:focus-within { background-color: rgba(21, 83, 158, 0.3); }
 +
 +textview:drop(active) { caret-color: #26a269; }
 +
 +textview > border { background-color: #2e2e2e; }
 +
 +iconview { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +iconview { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +iconview:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +iconview:drop(active) { box-shadow: none; }
 +
 +iconview > dndtarget:drop(active) { border-style: solid; border-width: 1px; border-color: black; }
 +
 +rubberband, .content-view > rubberband, columnview.view > rubberband, treeview.view > rubberband, gridview > rubberband, flowbox > rubberband { border: 1px solid #092444; background-color: rgba(9, 36, 68, 0.2); }
 +
 +flowbox > flowboxchild { padding: 3px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +flowbox > flowboxchild { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +flowbox > flowboxchild:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +flowbox > flowboxchild:selected { outline-color: rgba(255, 255, 255, 0.6); }
 +
 +gridview > child { padding: 3px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +gridview > child { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +gridview > child:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +gridview > child:selected { outline-color: rgba(255, 255, 255, 0.6); }
 +
 +gridview > child box { border-spacing: 8px; margin: 12px; }
 +
 +coverflow cover { color: white; background-color: #2d2d2d; border: 1px solid black; }
 +
 +label { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +label { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +label:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +label > selection { background-color: rgba(90, 90, 90, 0.5); color: #ffffff; }
 +
 +label > selection:focus-within { background-color: rgba(21, 83, 158, 0.3); }
 +
 +label:disabled { color: #919191; }
 +
 +button label:disabled { color: inherit; }
 +
 +label.error { color: #cc0000; }
 +
 +label.error:disabled { color: rgba(204, 0, 0, 0.5); }
 +
 +.dim-label, .titlebar:not(headerbar) .subtitle, headerbar .subtitle, spinbutton.vertical > text > text > placeholder, spinbutton:not(.vertical) > text > placeholder, entry > text > placeholder, label.separator { opacity: 0.9; text-shadow: none; }
 +
 +window.assistant .sidebar { padding: 5px; border-top: 1px solid #686868; }
 +
 +window.assistant.csd .sidebar { border-top-style: none; }
 +
 +window.assistant .sidebar > label { padding: 6px 12px; }
 +
 +window.assistant .sidebar > label.highlight { background-color: #161616; border-radius: 5px; }
 +
 +window.aboutdialog image.large-icons { -gtk-icon-size: 128px; }
 +
 +.osd .scale-popup, .app-notification, .osd popover.background > arrow, .osd popover.background > contents, popover.background.touch-selection > arrow, popover.background.touch-selection > contents, popover.background.magnifier > arrow, popover.background.magnifier > contents, .osd { color: #eeeeec; border: none; background-color: rgba(38, 38, 38, 0.7); background-clip: padding-box; -gtk-icon-shadow: 0 1px black; }
 +
 +/********************* Spinner Animation * */
 +@keyframes spin { to { transform: rotate(1turn); } }
 +
 +spinner { background: none; opacity: 0; -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); }
 +
 +spinner:checked { opacity: 1; animation: spin 1s linear infinite; }
 +
 +spinner:checked:disabled { opacity: 0.5; }
 +
 +/********************** General Typography * */
 +.large-title { font-weight: 300; font-size: 24pt; }
 +
 +.title-1 { font-weight: 800; font-size: 20pt; }
 +
 +.title-2 { font-weight: 800; font-size: 15pt; }
 +
 +.title-3 { font-weight: 700; font-size: 15pt; }
 +
 +.title-4 { font-weight: 700; font-size: 13pt; }
 +
 +.heading { font-weight: 700; font-size: 11pt; }
 +
 +.body { font-weight: 400; font-size: 11pt; }
 +
 +.caption-heading { font-weight: 700; font-size: 9pt; }
 +
 +.caption { font-weight: 400; font-size: 9pt; }
 +
 +/**************** Text Entries * */
 +spinbutton.vertical > text, spinbutton:not(.vertical), entry { min-height: 32px; padding-left: 8px; padding-right: 8px; border: 1px solid; border-radius: 5px; border-spacing: 6px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: white; border-color: #686868; background-color: #2d2d2d; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text, spinbutton:not(.vertical), entry { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text:focus-within, spinbutton:focus-within:not(.vertical), entry:focus-within { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text > image.left, spinbutton:not(.vertical) > image.left, entry > image.left { margin-right: 6px; }
 +
 +spinbutton.vertical > text > image.right, spinbutton:not(.vertical) > image.right, entry > image.right { margin-left: 6px; }
 +
 +spinbutton.vertical > text > text > block-cursor, spinbutton:not(.vertical) > text > block-cursor, entry > text > block-cursor { color: #2d2d2d; background-color: white; }
 +
 +spinbutton.vertical > text.flat, spinbutton.flat:not(.vertical), entry.flat:focus-within, entry.flat:backdrop, entry.flat:disabled, entry.flat { min-height: 0; padding: 2px; background-color: transparent; border-color: transparent; border-radius: 0; }
 +
 +spinbutton.vertical > text:focus-within > placeholder, spinbutton:focus-within:not(.vertical) > placeholder, entry:focus-within > placeholder { opacity: 0; /* We hide placeholders on focus */ }
 +
 +spinbutton.vertical > text:disabled, spinbutton:disabled:not(.vertical), entry:disabled { color: #919191; border-color: #686868; background-color: #2f2f2f; }
 +
 +spinbutton.vertical > text > text > selection, spinbutton:not(.vertical) > text > selection, entry > text > selection { background-color: rgba(90, 90, 90, 0.5); color: transparent; }
 +
 +spinbutton.vertical > text > text > selection:focus-within, spinbutton:not(.vertical) > text > selection:focus-within, entry > text > selection:focus-within { background-color: rgba(21, 83, 158, 0.3); color: #f3f3f1; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { color: #cc0000; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text.error:focus-within, spinbutton.error:focus-within:not(.vertical), entry.error:focus-within { outline-color: rgba(204, 0, 0, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text.error > selection, spinbutton.error:not(.vertical) > selection, entry.error > selection { background-color: #cc0000; }
 +
 +spinbutton.vertical > text.warning, spinbutton.warning:not(.vertical), entry.warning { color: #f57900; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text.warning, spinbutton.warning:not(.vertical), entry.warning { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text.warning:focus-within, spinbutton.warning:focus-within:not(.vertical), entry.warning:focus-within { outline-color: rgba(245, 121, 0, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text.warning > selection, spinbutton.warning:not(.vertical) > selection, entry.warning > selection { background-color: #f57900; }
 +
 +spinbutton.vertical > text > image, spinbutton:not(.vertical) > image, entry > image { color: #cbcbca; }
 +
 +spinbutton.vertical > text > image:hover, spinbutton:not(.vertical) > image:hover, entry > image:hover { color: #f3f3f1; }
 +
 +spinbutton.vertical > text > image:active, spinbutton:not(.vertical) > image:active, entry > image:active { color: #0f3b71; }
 +
 +spinbutton.vertical > text.password image.caps-lock-indicator, spinbutton.password:not(.vertical) image.caps-lock-indicator, entry.password image.caps-lock-indicator { color: #7e7e7d; }
 +
 +spinbutton.vertical > text:drop(active), spinbutton:drop(active):not(.vertical), entry:drop(active):focus-within, entry:drop(active) { border-color: #26a269; box-shadow: inset 0 0 0 1px #26a269; }
 +
 +.osd spinbutton.vertical > text, .osd spinbutton:not(.vertical), .osd entry { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.osd spinbutton.vertical > text:focus-within, .osd spinbutton:focus-within:not(.vertical), .osd entry:focus-within { color: white; border-color: #0f3b71; background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > text:disabled, .osd spinbutton:disabled:not(.vertical), .osd entry:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(58, 58, 57, 0.5); background-clip: padding-box; }
 +
 +spinbutton.vertical > text > progress, spinbutton:not(.vertical) > progress, entry > progress { margin-bottom: 2px; }
 +
 +spinbutton.vertical > text progress > trough > progress, spinbutton:not(.vertical) progress > trough > progress, entry progress > trough > progress { background-color: transparent; background-image: none; border-radius: 0; border-width: 0 0 2px; border-color: #0f3b71; border-style: solid; box-shadow: none; }
 +
 +spinbutton.vertical.linked:not(.vertical) > text:drop(active) + text, spinbutton.vertical.linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + text, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + spinbutton:not(.vertical), .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + spinbutton:not(.vertical), spinbutton.vertical.linked:not(.vertical) > text:drop(active) + button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + menubutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + menubutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + dropdown > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + dropdown > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + colorbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + colorbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + fontbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + fontbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + filechooserbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + filechooserbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + combobox > box > button.combo, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + combobox > box > button.combo, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + entry, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + entry, .linked:not(.vertical) > entry:drop(active) + button, .linked:not(.vertical) > entry:drop(active) + menubutton > button, .linked:not(.vertical) > entry:drop(active) + dropdown > button, .linked:not(.vertical) > entry:drop(active) + colorbutton > button, .linked:not(.vertical) > entry:drop(active) + fontbutton > button, .linked:not(.vertical) > entry:drop(active) + filechooserbutton > button, .linked:not(.vertical) > entry:drop(active) + combobox > box > button.combo, spinbutton.vertical.linked:not(.vertical) > entry:drop(active) + text, .linked:not(.vertical) > entry:drop(active) + spinbutton:not(.vertical), .linked:not(.vertical) > entry:drop(active) + entry { border-left-color: #26a269; }
 +
 +spinbutton.vertical.linked > text:not(:disabled) + entry:not(:disabled), .linked.vertical > spinbutton:not(:disabled):not(.vertical) + entry:not(:disabled), spinbutton.vertical.linked > text:not(:disabled) + text:not(:disabled), spinbutton.vertical.linked > spinbutton:not(:disabled):not(.vertical) + text:not(:disabled), spinbutton.vertical.linked > text:not(:disabled) + spinbutton:not(:disabled):not(.vertical), .linked.vertical > spinbutton:not(:disabled):not(.vertical) + spinbutton:not(:disabled):not(.vertical), .linked.vertical > entry:not(:disabled) + entry:not(:disabled), spinbutton.vertical.linked > entry:not(:disabled) + text:not(:disabled), .linked.vertical > entry:not(:disabled) + spinbutton:not(:disabled):not(.vertical) { border-top-color: #3f3f3f; }
 +
 +spinbutton.vertical.linked > text:disabled + text:disabled, spinbutton.vertical.linked > spinbutton:disabled:not(.vertical) + text:disabled, spinbutton.vertical.linked > text:disabled + spinbutton:disabled:not(.vertical), .linked.vertical > spinbutton:disabled:not(.vertical) + spinbutton:disabled:not(.vertical), spinbutton.vertical.linked > text:disabled + entry:disabled, .linked.vertical > spinbutton:disabled:not(.vertical) + entry:disabled, spinbutton.vertical.linked > entry:disabled + text:disabled, .linked.vertical > entry:disabled + spinbutton:disabled:not(.vertical), .linked.vertical > entry:disabled + entry:disabled { border-top-color: #3f3f3f; }
 +
 +spinbutton.vertical.linked > text + text:drop(active):not(:only-child), spinbutton.vertical.linked > spinbutton:not(.vertical) + text:drop(active):not(:only-child), spinbutton.vertical.linked > text + spinbutton:drop(active):not(:only-child):not(.vertical), .linked.vertical > spinbutton:not(.vertical) + spinbutton:drop(active):not(:only-child):not(.vertical), spinbutton.vertical.linked > text + entry:drop(active):not(:only-child), .linked.vertical > spinbutton:not(.vertical) + entry:drop(active):not(:only-child), spinbutton.vertical.linked > entry + text:drop(active):not(:only-child), .linked.vertical > entry + spinbutton:drop(active):not(:only-child):not(.vertical), .linked.vertical > entry + entry:drop(active):not(:only-child) { border-top-color: #26a269; }
 +
 +spinbutton.vertical.linked > text:drop(active):not(:only-child) + text, spinbutton.vertical.linked > spinbutton:drop(active):not(:only-child):not(.vertical) + text, spinbutton.vertical.linked > text:drop(active):not(:only-child) + spinbutton:not(.vertical), .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + spinbutton:not(.vertical), spinbutton.vertical.linked > text:drop(active):not(:only-child) + entry, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + entry, spinbutton.vertical.linked > text:drop(active):not(:only-child) + button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + menubutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + menubutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + dropdown > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + dropdown > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + colorbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + colorbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + fontbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + fontbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + filechooserbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + filechooserbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + combobox > box > button.combo, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + combobox > box > button.combo, spinbutton.vertical.linked > entry:drop(active):not(:only-child) + text, .linked.vertical > entry:drop(active):not(:only-child) + spinbutton:not(.vertical), .linked.vertical > entry:drop(active):not(:only-child) + entry, .linked.vertical > entry:drop(active):not(:only-child) + button, .linked.vertical > entry:drop(active):not(:only-child) + menubutton > button, .linked.vertical > entry:drop(active):not(:only-child) + dropdown > button, .linked.vertical > entry:drop(active):not(:only-child) + colorbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + fontbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + filechooserbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + combobox > box > button.combo { border-top-color: #26a269; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { color: #cc0000; }
 +
 +treeview entry:focus-within:dir(rtl), treeview entry:focus-within:dir(ltr) { background-color: #2d2d2d; transition-property: color, background; }
 +
 +treeview entry.flat, treeview entry { border-radius: 0; background-image: none; background-color: #2d2d2d; }
 +
 +treeview entry.flat:focus-within, treeview entry:focus-within { border-color: #0f3b71; }
 +
 +/******************* Editable Labels * */
 +editablelabel > stack > text { color: white; border-color: #686868; background-color: #2d2d2d; }
 +
 +/*********** Buttons * */
 +@keyframes needs_attention { from { background-image: radial-gradient(farthest-side, #185fb4 0%, rgba(24, 95, 180, 0) 0%); }
 +  to { background-image: radial-gradient(farthest-side, #185fb4 95%, rgba(24, 95, 180, 0)); } }
 +
 +notebook > header > tabs > arrow, windowcontrols button, button { min-height: 24px; min-width: 16px; padding: 4px 9px; border: 1px solid; border-radius: 5px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: #f3f3f1; outline-color: rgba(255, 255, 255, 0.6); border-color: #686868; background-image: linear-gradient(to top, #323232 2px, #353535); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +notebook > header > tabs > arrow, windowcontrols button, button { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +notebook > header > tabs > arrow:focus:focus-visible, button:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +notebook > header > tabs > arrow:hover, button:hover { color: #f3f3f1; border-color: #686868; background-image: linear-gradient(to top, #2b2b2b 20%, #2d2d2d 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); -gtk-icon-filter: brightness(1.2); }
 +
 +notebook > header > tabs > arrow.keyboard-activating, notebook > header > tabs > arrow:active, notebook > header > tabs > arrow:checked, button.keyboard-activating, button:active, button:checked { color: #f3f3f1; border-color: #686868; background-image: image(#1e1e1e); box-shadow: none; transition-duration: 50ms; }
 +
 +notebook > header > tabs > arrow:checked:hover, button:checked:hover { color: #f3f3f1; border-color: #686868; background-image: image(#161616); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:checked:active, button:checked:active { color: #f3f3f1; border-color: #686868; background-image: image(#111111); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop, button.flat:backdrop, button:backdrop { color: #919190; border-color: #202020; background-image: image(#353535); box-shadow: none; transition: 200ms ease-out; }
 +
 +notebook > header > tabs > arrow:backdrop:not(:disabled), button.flat:backdrop:not(:disabled), button:backdrop:not(:disabled) { -gtk-icon-filter: none; }
 +
 +notebook > header > tabs > arrow:backdrop:active, notebook > header > tabs > arrow:backdrop:checked, button.flat:backdrop:active, button.flat:backdrop:checked, button:backdrop:active, button:backdrop:checked { color: #919190; border-color: #202020; background-image: image(#2a2a2a); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop:disabled, button.flat:backdrop:disabled, button:backdrop:disabled { color: #5b5b5b; border-color: #202020; background-image: image(#2f2f2f); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop:disabled:active, notebook > header > tabs > arrow:backdrop:disabled:checked, button.flat:backdrop:disabled:active, button.flat:backdrop:disabled:checked, button:backdrop:disabled:active, button:backdrop:disabled:checked { color: #5b5b5b; border-color: #202020; background-image: image(#2a2a2a); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:disabled, button:disabled { color: #919191; border-color: #5d5d5d; background-image: image(#2f2f2f); -gtk-icon-filter: opacity(0.5); }
 +
 +notebook > header > tabs > arrow:disabled:active, notebook > header > tabs > arrow:disabled:checked, button:disabled:active, button:disabled:checked { color: #919191; border-color: #5d5d5d; background-image: image(#252525); box-shadow: none; }
 +
 +button.sidebar-button, notebook > header > tabs > arrow, windowcontrols button, .toolbar > button, .toolbar > :not(.linked) > button, .toolbar :not(.linked) > menubutton > button, .toolbar :not(.linked) > scalebutton > button, .toolbar :not(.linked) > dropdown > button, .toolbar :not(.linked) > colorbutton > button, .toolbar :not(.linked) > fontbutton > button, .toolbar :not(.linked) > appchooserbutton > button, .toolbar :not(.linked) > combobox > box > button, notebook > header > tabs > arrow.flat, button.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; transition: none; }
 +
 +button.sidebar-button:hover, notebook > header > tabs > arrow:hover, windowcontrols button:hover, .toolbar > button:hover, .toolbar > :not(.linked) > button:hover, .toolbar :not(.linked) > menubutton > button:hover, .toolbar :not(.linked) > scalebutton > button:hover, .toolbar :not(.linked) > dropdown > button:hover, .toolbar :not(.linked) > colorbutton > button:hover, .toolbar :not(.linked) > fontbutton > button:hover, .toolbar :not(.linked) > appchooserbutton > button:hover, .toolbar :not(.linked) > combobox > box > button:hover, button.flat:hover { border-color: transparent; background-image: none; box-shadow: none; background-color: #323232; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-duration: 500ms; }
 +
 +button.keyboard-activating.sidebar-button, notebook > header > tabs > arrow.keyboard-activating, windowcontrols button.keyboard-activating, .toolbar > button.keyboard-activating, .toolbar > :not(.linked) > button.keyboard-activating, .toolbar :not(.linked) > menubutton > button.keyboard-activating, .toolbar :not(.linked) > scalebutton > button.keyboard-activating, .toolbar :not(.linked) > dropdown > button.keyboard-activating, .toolbar :not(.linked) > colorbutton > button.keyboard-activating, .toolbar :not(.linked) > fontbutton > button.keyboard-activating, .toolbar :not(.linked) > appchooserbutton > button.keyboard-activating, .toolbar :not(.linked) > combobox > box > button.keyboard-activating, button.sidebar-button:active, notebook > header > tabs > arrow:active, windowcontrols button:active, .toolbar > button:active, .toolbar > :not(.linked) > button:active, .toolbar :not(.linked) > menubutton > button:active, .toolbar :not(.linked) > scalebutton > button:active, .toolbar :not(.linked) > dropdown > button:active, .toolbar :not(.linked) > colorbutton > button:active, .toolbar :not(.linked) > fontbutton > button:active, .toolbar :not(.linked) > appchooserbutton > button:active, .toolbar :not(.linked) > combobox > box > button:active, button.sidebar-button:checked, notebook > header > tabs > arrow:checked, windowcontrols button:checked, .toolbar > button:checked, .toolbar > :not(.linked) > button:checked, .toolbar :not(.linked) > menubutton > button:checked, .toolbar :not(.linked) > scalebutton > button:checked, .toolbar :not(.linked) > dropdown > button:checked, .toolbar :not(.linked) > colorbutton > button:checked, .toolbar :not(.linked) > fontbutton > button:checked, .toolbar :not(.linked) > appchooserbutton > button:checked, .toolbar :not(.linked) > combobox > box > button:checked, button.flat.keyboard-activating, button.flat:active, button.flat:checked { border-color: transparent; background-image: none; box-shadow: none; background-color: #282828; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +button.sidebar-button:backdrop, notebook > header > tabs > arrow:backdrop, windowcontrols button:backdrop, .toolbar > button:backdrop, .toolbar > :not(.linked) > button:backdrop, .toolbar :not(.linked) > menubutton > button:backdrop, .toolbar :not(.linked) > scalebutton > button:backdrop, .toolbar :not(.linked) > dropdown > button:backdrop, .toolbar :not(.linked) > colorbutton > button:backdrop, .toolbar :not(.linked) > fontbutton > button:backdrop, .toolbar :not(.linked) > appchooserbutton > button:backdrop, .toolbar :not(.linked) > combobox > box > button:backdrop, button.sidebar-button:disabled, notebook > header > tabs > arrow:disabled, windowcontrols button:disabled, .toolbar > button:disabled, .toolbar > :not(.linked) > button:disabled, .toolbar :not(.linked) > menubutton > button:disabled, .toolbar :not(.linked) > scalebutton > button:disabled, .toolbar :not(.linked) > dropdown > button:disabled, .toolbar :not(.linked) > colorbutton > button:disabled, .toolbar :not(.linked) > fontbutton > button:disabled, .toolbar :not(.linked) > appchooserbutton > button:disabled, .toolbar :not(.linked) > combobox > box > button:disabled, button.flat:backdrop, button.flat:disabled, button.flat:backdrop:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; }
 +
 +notebook > header > tabs > arrow.image-button, button.image-button { min-width: 24px; padding-left: 5px; padding-right: 5px; }
 +
 +notebook > header > tabs > arrow.text-button, button.text-button { padding-left: 16px; padding-right: 16px; }
 +
 +notebook > header > tabs > arrow.text-button.image-button, button.text-button.image-button { padding-left: 8px; padding-right: 8px; }
 +
 +notebook > header > tabs > arrow.text-button.image-button label, button.text-button.image-button label { padding-left: 8px; padding-right: 8px; }
 +
 +notebook > header > tabs > arrow.arrow-button, button.arrow-button { padding-left: 10px; padding-right: 10px; }
 +
 +notebook > header > tabs > arrow.arrow-button > box, windowcontrols button.arrow-button > box, button.arrow-button > box { border-spacing: 4px; }
 +
 +dropdown:drop(active) button.combo, combobox:drop(active) button.combo, notebook > header > tabs > arrow:drop(active), button:drop(active) { color: #26a269; border-color: #26a269; box-shadow: inset 0 0 0 1px #26a269; }
 +
 +row:selected button.sidebar-button:not(:active):not(:checked):not(:hover):not(disabled), row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled) { color: #ffffff; border-color: transparent; }
 +
 +row:selected button.sidebar-button:not(:active):not(:checked):not(:hover):not(disabled):backdrop, row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled):backdrop { color: #919190; }
 +
 +button.osd { min-width: 26px; min-height: 32px; color: #eeeeec; border-radius: 5px; color: #eeeeec; outline-color: rgba(255, 255, 255, 0.6); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; border: none; box-shadow: none; }
 +
 +button.osd.image-button { min-width: 30px; }
 +
 +button.osd.image-button:only-child { margin: 4px; border-radius: 50%; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); }
 +
 +button.osd:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(12, 12, 12, 0.7)); background-clip: padding-box; border: none; box-shadow: none; }
 +
 +button.osd:active, button.osd:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; border: none; box-shadow: none; }
 +
 +.app-notification button, popover.background.touch-selection button, popover.background.magnifier button, .osd button { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.6); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button:hover, popover.background.touch-selection button:hover, popover.background.magnifier button:hover, .osd button:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(12, 12, 12, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button:active, popover.background.touch-selection button:active, popover.background.magnifier button:active, .app-notification button:checked, popover.background.touch-selection button:checked, popover.background.magnifier button:checked, .osd button:active:backdrop, .osd button:active, .osd button:checked:backdrop, .osd button:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.app-notification button:disabled, popover.background.touch-selection button:disabled, popover.background.magnifier button:disabled, .osd button:disabled:backdrop, .osd button:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; }
 +
 +.app-notification button.flat, popover.background.touch-selection button.flat, popover.background.magnifier button.flat, .osd button.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.app-notification button.flat:hover, popover.background.touch-selection button.flat:hover, popover.background.magnifier button.flat:hover, .osd button.flat:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(12, 12, 12, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button.flat:disabled, popover.background.touch-selection button.flat:disabled, popover.background.magnifier button.flat:disabled, .osd button.flat:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; background-image: none; border-color: transparent; box-shadow: none; }
 +
 +.app-notification button.flat:active, popover.background.touch-selection button.flat:active, popover.background.magnifier button.flat:active, .app-notification button.flat:checked, popover.background.touch-selection button.flat:checked, popover.background.magnifier button.flat:checked, .osd button.flat:active, .osd button.flat:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +button.suggested-action { color: white; outline-color: rgba(255, 255, 255, 0.6); border-color: #030c17; background-image: linear-gradient(to top, #0e396c 2px, #0f3b71); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +button.suggested-action { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +button.suggested-action:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +button.suggested-action.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #0f3b71; }
 +
 +button.suggested-action:hover { color: white; border-color: #06182d; background-image: linear-gradient(to top, #0d325f 20%, #0d3463 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +button.suggested-action:active, button.suggested-action:checked { color: white; border-color: #06182d; background-image: image(#0a2648); box-shadow: none; }
 +
 +button.suggested-action.flat:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: rgba(15, 59, 113, 0.8); }
 +
 +button.suggested-action:disabled { color: #919191; border-color: #5d5d5d; background-image: image(#2f2f2f); }
 +
 +button.suggested-action:disabled:active, button.suggested-action:disabled:checked { color: #9faab8; border-color: #06182d; background-image: image(#0f2b4d); box-shadow: none; }
 +
 +.osd button.suggested-action { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.6); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(15, 59, 113, 0.5)); background-clip: padding-box; }
 +
 +.osd button.suggested-action:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(15, 59, 113, 0.7)); background-clip: padding-box; }
 +
 +.osd button.suggested-action:active:backdrop, .osd button.suggested-action:active, .osd button.suggested-action:checked:backdrop, .osd button.suggested-action:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(#0f3b71); background-clip: padding-box; box-shadow: none; }
 +
 +.osd button.suggested-action:disabled:backdrop, .osd button.suggested-action:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; }
 +
 +button.destructive-action { color: white; outline-color: rgba(255, 255, 255, 0.6); border-color: #570b0e; background-image: linear-gradient(to top, #ae151c 2px, #b2161d); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +button.destructive-action { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +button.destructive-action:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +button.destructive-action.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #b2161d; }
 +
 +button.destructive-action:hover { color: white; border-color: #6e0d12; background-image: linear-gradient(to top, #a0131a 20%, #a5141a 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +button.destructive-action:active, button.destructive-action:checked { color: white; border-color: #6e0d12; background-image: image(#8a1116); box-shadow: none; }
 +
 +button.destructive-action.flat:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: rgba(178, 22, 29, 0.8); }
 +
 +button.destructive-action:disabled { color: #919191; border-color: #5d5d5d; background-image: image(#2f2f2f); }
 +
 +button.destructive-action:disabled:active, button.destructive-action:disabled:checked { color: #cea1a3; border-color: #6e0d12; background-image: image(#84151a); box-shadow: none; }
 +
 +.osd button.destructive-action { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.6); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(178, 22, 29, 0.5)); background-clip: padding-box; }
 +
 +.osd button.destructive-action:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(178, 22, 29, 0.7)); background-clip: padding-box; }
 +
 +.osd button.destructive-action:active:backdrop, .osd button.destructive-action:active, .osd button.destructive-action:checked:backdrop, .osd button.destructive-action:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(#b2161d); background-clip: padding-box; box-shadow: none; }
 +
 +.osd button.destructive-action:disabled:backdrop, .osd button.destructive-action:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; }
 +
 +stackswitcher > button > label { padding: 0 6px; margin: 0 -6px; }
 +
 +stackswitcher > button > image { padding: 3px 6px; margin: -3px -6px; }
 +
 +button.font separator { background-color: transparent; }
 +
 +button.font > box { border-spacing: 6px; }
 +
 +button.font > box > box > label { font-weight: bold; }
 +
 +menubutton.circular button, button.circular { min-width: 32px; min-height: 32px; padding: 0; border-radius: 9999px; }
 +
 +menubutton.circular button label, button.circular label { padding: 0; }
 +
 +stacksidebar row.needs-attention > label, stackswitcher > button.needs-attention > label, stackswitcher > button.needs-attention > image { animation: needs_attention 150ms ease-in; background-image: radial-gradient(farthest-side, #185fb4 96%, rgba(24, 95, 180, 0)); background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; background-position: right 3px, right 2px; }
 +
 +stacksidebar row.needs-attention > label:backdrop, stackswitcher > button.needs-attention > label:backdrop, stackswitcher > button.needs-attention > image:backdrop { background-size: 6px 6px, 0 0; }
 +
 +stacksidebar row.needs-attention > label:dir(rtl), stackswitcher > button.needs-attention > label:dir(rtl), stackswitcher > button.needs-attention > image:dir(rtl) { background-position: left 3px, left 2px; }
 +
 +.linked:not(.vertical) > filechooserbutton > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > filechooserbutton > combobox:dir(ltr):not(:first-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(ltr):not(:first-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(ltr):not(:first-child) > box > button.combo, dropdown.linked button:nth-child(2):dir(ltr), combobox.linked button:nth-child(2):dir(ltr), .linked:not(.vertical) > menubutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > dropdown:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > colorbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > fontbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > filechooserbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > menubutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > dropdown:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > colorbutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > fontbutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > filechooserbutton:dir(ltr):not(:first-child) > button, spinbutton.vertical.linked:not(.vertical) > text:dir(rtl):not(:last-child), .linked:not(.vertical) > spinbutton:dir(rtl):not(:last-child):not(.vertical), .linked:not(.vertical) > entry:dir(rtl):not(:last-child), .linked:not(.vertical) > button:dir(rtl):not(:last-child), spinbutton.vertical.linked:not(.vertical) > text:dir(ltr):not(:first-child), .linked:not(.vertical) > spinbutton:dir(ltr):not(:first-child):not(.vertical), .linked:not(.vertical) > entry:dir(ltr):not(:first-child), .linked:not(.vertical) > button:dir(ltr):not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
 +
 +.linked:not(.vertical) > filechooserbutton > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > filechooserbutton > combobox:dir(ltr):not(:last-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(ltr):not(:last-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(ltr):not(:last-child) > box > button.combo, dropdown.linked button:nth-child(2):dir(rtl), combobox.linked button:nth-child(2):dir(rtl), .linked:not(.vertical) > menubutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > dropdown:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > colorbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > fontbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > filechooserbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > menubutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > dropdown:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > colorbutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > fontbutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > filechooserbutton:dir(ltr):not(:last-child) > button, spinbutton.vertical.linked:not(.vertical) > text:dir(rtl):not(:first-child), .linked:not(.vertical) > spinbutton:dir(rtl):not(:first-child):not(.vertical), .linked:not(.vertical) > entry:dir(rtl):not(:first-child), .linked:not(.vertical) > button:dir(rtl):not(:first-child), spinbutton.vertical.linked:not(.vertical) > text:dir(ltr):not(:last-child), .linked:not(.vertical) > spinbutton:dir(ltr):not(:last-child):not(.vertical), .linked:not(.vertical) > entry:dir(ltr):not(:last-child), .linked:not(.vertical) > button:dir(ltr):not(:last-child) { border-right-style: none; border-top-right-radius: 0; border-bottom-right-radius: 0; }
 +
 +.linked.vertical > filechooserbutton > combobox:not(:first-child) > box > button.combo, .linked.vertical > appchooserbutton > combobox:not(:first-child) > box > button.combo, .linked.vertical > combobox:not(:first-child) > box > button.combo, .linked.vertical > menubutton:not(:first-child) > button, .linked.vertical > dropdown:not(:first-child) > button, .linked.vertical > colorbutton:not(:first-child) > button, .linked.vertical > fontbutton:not(:first-child) > button, .linked.vertical > filechooserbutton:not(:first-child) > button, spinbutton.vertical.linked > text:not(:first-child), .linked.vertical > spinbutton:not(:first-child):not(.vertical), .linked.vertical > entry:not(:first-child), .linked.vertical > button:not(:first-child) { border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +.linked.vertical > filechooserbutton > combobox:not(:last-child) > box > button.combo, .linked.vertical > appchooserbutton > combobox:not(:last-child) > box > button.combo, .linked.vertical > combobox:not(:last-child) > box > button.combo, .linked.vertical > menubutton:not(:last-child) > button, .linked.vertical > dropdown:not(:last-child) > button, .linked.vertical > colorbutton:not(:last-child) > button, .linked.vertical > fontbutton:not(:last-child) > button, .linked.vertical > filechooserbutton:not(:last-child) > button, spinbutton.vertical.linked > text:not(:last-child), .linked.vertical > spinbutton:not(:last-child):not(.vertical), .linked.vertical > entry:not(:last-child), .linked.vertical > button:not(:last-child) { border-bottom-style: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
 +
 +.scale-popup button:hover, button.link, button.link:hover, button.link:active, button.link:checked, popover.menu box.circular-buttons button.circular.image-button.model, list > row button.image-button:not(.flat), modelbutton.flat { background-color: transparent; background-image: none; border-color: transparent; box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); text-shadow: none; -gtk-icon-shadow: none; }
 +
 +/* menu buttons */
 +modelbutton.flat { min-height: 26px; padding-left: 5px; padding-right: 5px; border-radius: 5px; }
 +
 +modelbutton.flat:hover { background-color: #161616; }
 +
 +modelbutton.flat:disabled { color: #919191; }
 +
 +modelbutton.flat arrow { background: none; min-width: 16px; min-height: 16px; opacity: 0.3; }
 +
 +modelbutton.flat arrow:hover { background: none; }
 +
 +modelbutton.flat arrow.left { -gtk-icon-source: -gtk-icontheme("go-previous-symbolic"); }
 +
 +modelbutton.flat arrow.right { -gtk-icon-source: -gtk-icontheme("go-next-symbolic"); }
 +
 +/* oldstyle toolbar buttons */
 +.toolbar > button, .toolbar > :not(.linked) > button, .toolbar :not(.linked) > menubutton > button, .toolbar :not(.linked) > scalebutton > button, .toolbar :not(.linked) > dropdown > button, .toolbar :not(.linked) > colorbutton > button, .toolbar :not(.linked) > fontbutton > button, .toolbar :not(.linked) > appchooserbutton > button, .toolbar :not(.linked) > combobox > box > button { margin: 1px; }
 +
 +button.color { padding: 4px; }
 +
 +button.color > colorswatch:only-child, button.color > colorswatch:only-child > overlay { border-radius: 0; }
 +
 +/* list buttons */
 +/* tone down as per new designs, see issue #1473 */
 +popover.menu box.circular-buttons button.circular.image-button.model, list > row button.image-button:not(.flat) { border: 1px solid rgba(104, 104, 104, 0.5); }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:hover, list > row button.image-button:not(.flat):hover { color: #f3f3f1; border-color: #686868; background-image: linear-gradient(to top, #2b2b2b 20%, #2d2d2d 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:active, popover.menu box.circular-buttons button.circular.image-button.model:checked, list > row button.image-button:not(.flat):active, list > row button.image-button:not(.flat):checked { color: #f3f3f1; border-color: #686868; background-image: image(#1e1e1e); box-shadow: none; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model, list > row button.image-button.suggested-action:not(.flat) { color: white; outline-color: rgba(255, 255, 255, 0.6); border-color: #030c17; background-image: linear-gradient(to top, #0e396c 2px, #0f3b71); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model, list > row button.image-button.suggested-action:not(.flat) { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model:focus:focus-visible, list > row button.image-button.suggested-action:not(.flat):focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model, list > row button.image-button.destructive-action:not(.flat) { color: white; outline-color: rgba(255, 255, 255, 0.6); border-color: #570b0e; background-image: linear-gradient(to top, #ae151c 2px, #b2161d); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model, list > row button.image-button.destructive-action:not(.flat) { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model:focus:focus-visible, list > row button.image-button.destructive-action:not(.flat):focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +/********* Links * */
 +button.link, link { color: #3584e4; text-decoration: underline; }
 +
 +button.link:visited, link:visited { color: #1b6acb; }
 +
 +*:selected button.link:visited, *:selected link:visited { color: #a4c4ea; }
 +
 +button.link:hover, link:hover { color: #629fea; }
 +
 +*:selected button.link:hover, *:selected link:hover { color: #eff5fd; }
 +
 +button.link:active, link:active { color: #3584e4; }
 +
 +*:selected button.link:active, *:selected link:active { color: #d7e6fa; }
 +
 +button.link:disabled, link:disabled { color: rgba(141, 141, 141, 0.8); }
 +
 +button.link:selected, *:selected button.link, link:selected, *:selected link { color: #d7e6fa; }
 +
 +link { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +link { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +link:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +button.link, button.link:hover, button.link:active, button.link:checked { text-shadow: none; }
 +
 +button.link > label { text-decoration: underline; }
 +
 +/***************** GtkSpinButton * */
 +spinbutton { font-feature-settings: "tnum"; }
 +
 +spinbutton:not(.vertical) { padding: 0; border-spacing: 0; /* :not here just to bump specificity above that of the list button styling */ }
 +
 +.osd spinbutton:not(.vertical) > text, spinbutton:not(.vertical) > text { min-width: 28px; margin: 0; background: none; background-color: transparent; border: none; border-radius: 0; box-shadow: none; padding: 6px; }
 +
 +.osd spinbutton:not(.vertical) > text:backdrop:disabled, spinbutton:not(.vertical) > text:backdrop:disabled { background-color: transparent; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat), spinbutton:not(.vertical) > button.image-button.down:not(.flat) { min-height: 16px; margin: 0; padding-bottom: 0; padding-top: 0; color: #dfdfde; background-image: none; border-style: none none none solid; border-color: rgba(104, 104, 104, 0.3); border-radius: 0; box-shadow: none; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl), spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl) { border-style: none solid none none; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):hover, spinbutton:not(.vertical) > button.image-button.down:not(.flat):hover { color: #f3f3f1; background-color: #232323; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):disabled, spinbutton:not(.vertical) > button.image-button.down:not(.flat):disabled { color: rgba(145, 145, 145, 0.3); background-color: transparent; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):active, spinbutton:not(.vertical) > button.image-button.down:not(.flat):active { background-color: rgba(0, 0, 0, 0.1); box-shadow: inset 0 2px 3px -1px rgba(0, 0, 0, 0.2); }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(ltr):last-child, spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(ltr):last-child { border-radius: 0 5px 5px 0; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl):first-child, spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl):first-child { border-radius: 5px 0 0 5px; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat), .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat) { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #eeeeec; border-style: none none none solid; border-color: rgba(0, 0, 0, 0.4); border-radius: 0; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl), .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl) { border-style: none solid none none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):hover, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):hover { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #eeeeec; border-color: rgba(0, 0, 0, 0.5); background-color: rgba(12, 12, 12, 0.7); -gtk-icon-shadow: 0 1px black; box-shadow: none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):disabled, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #8a8a89; border-color: rgba(0, 0, 0, 0.5); -gtk-icon-shadow: none; box-shadow: none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(ltr):last-child, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(ltr):last-child { border-radius: 0 5px 5px 0; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl):first-child, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl):first-child { border-radius: 5px 0 0 5px; }
 +
 +spinbutton.vertical:disabled { color: #919191; }
 +
 +spinbutton.vertical:drop(active) { border-color: transparent; box-shadow: none; }
 +
 +spinbutton.vertical > text { min-height: 32px; min-width: 32px; padding: 0; border-radius: 0; }
 +
 +spinbutton.vertical > text > selection { background-color: rgba(90, 90, 90, 0.5); color: transparent; }
 +
 +spinbutton.vertical > text > selection:focus-within { background-color: rgba(21, 83, 158, 0.3); color: #ffffff; }
 +
 +spinbutton.vertical > text > block-cursor { color: #2d2d2d; background-color: white; }
 +
 +spinbutton.vertical > button { min-height: 32px; min-width: 32px; padding: 0; }
 +
 +spinbutton.vertical > button.up { border-bottom-style: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
 +
 +spinbutton.vertical > button.down { border-top-style: none; border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +.osd spinbutton.vertical > button:first-child { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.6); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > button:first-child:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(12, 12, 12, 0.7)); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > button:first-child:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.osd spinbutton.vertical > button:first-child:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; }
 +
 +treeview spinbutton:not(.vertical) { min-height: 0; border-style: none; border-radius: 0; }
 +
 +treeview spinbutton:not(.vertical) > text { min-height: 0; padding: 1px 2px; }
 +
 +/************** ComboBoxes * */
 +dropdown > popover.menu.background > contents { padding: 0; }
 +
 +dropdown > button > box { border-spacing: 6px; }
 +
 +dropdown > button > box > stack > row.activatable:hover { background: none; box-shadow: none; }
 +
 +dropdown arrow, combobox arrow { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); min-height: 16px; min-width: 16px; }
 +
 +dropdown > popover.menu > contents modelbutton, combobox > popover.menu > contents modelbutton { padding-left: 9px; padding-right: 9px; }
 +
 +dropdown:drop(active), combobox:drop(active) { box-shadow: none; }
 +
 +dropdown popover, combobox popover { margin-top: 6px; padding: 0; }
 +
 +dropdown popover listview, combobox popover listview { margin: 8px 0; }
 +
 +dropdown popover listview > row.activatable, combobox popover listview > row.activatable { padding: 8px; }
 +
 +dropdown popover listview > row.activatable:selected, dropdown popover listview > row.activatable:selected:hover, combobox popover listview > row.activatable:selected, combobox popover listview > row.activatable:selected:hover { outline-color: rgba(255, 255, 255, 0.6); color: white; background-color: #161616; box-shadow: none; }
 +
 +dropdown popover .dropdown-searchbar, combobox popover .dropdown-searchbar { padding: 6px; border-bottom: 1px solid #686868; }
 +
 +/************ Toolbars * */
 +searchbar > revealer > box, .toolbar { padding: 4px; border-spacing: 4px; background-color: #303030; }
 +
 +.osd .toolbar { background-color: transparent; }
 +
 +.toolbar.osd { padding: 13px; border: none; border-radius: 5px; background-color: rgba(38, 38, 38, 0.7); }
 +
 +.toolbar.osd.left, .toolbar.osd.right, .toolbar.osd.top, .toolbar.osd.bottom { border-radius: 0; }
 +
 +.toolbar.horizontal > separator { margin: 4px 0; }
 +
 +.toolbar.vertical > separator { margin: 0 4px; }
 +
 +searchbar > revealer > box { padding: 6px; border-spacing: 6px; border-width: 0 0 1px; }
 +
 +searchbar > revealer > box { border-style: solid; border-color: #686868; background-color: #414141; }
 +
 +searchbar > revealer > box:backdrop { border-color: #202020; background-color: #2e2e2e; box-shadow: none; transition: 200ms ease-out; }
 +
 +/************** GtkInfoBar * */
 +infobar > revealer > box { padding: 8px; border-spacing: 12px; }
 +
 +infobar.action:hover > revealer > box { background-color: #59544e; }
 +
 +infobar.info > revealer > box, infobar.question > revealer > box, infobar.warning > revealer > box, infobar.error > revealer > box { border-bottom: 1px solid #757575; background-color: #5f5a53; }
 +
 +infobar .close, searchbar .close { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; min-width: 16px; min-height: 16px; padding: 4px; border-radius: 50%; }
 +
 +infobar .close:hover, searchbar .close:hover { color: #f3f3f1; border-color: #686868; background-image: linear-gradient(to top, #2b2b2b 20%, #2d2d2d 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +/***************** Title buttons * */
 +windowcontrols { border-spacing: 6px; }
 +
 +windowcontrols.start:not(.empty):dir(ltr), windowcontrols.end:not(.empty):dir(rtl) { margin-right: 7px; }
 +
 +windowcontrols.start:not(.empty):dir(rtl), windowcontrols.end:not(.empty):dir(ltr) { margin-left: 7px; }
 +
 +windowcontrols button { border-radius: 9999px; padding: 6px; margin: 0 2px; min-width: 0; min-height: 0; }
 +
 +windowcontrols button:hover { border-color: transparent; background-image: none; box-shadow: none; background-color: #1b1b1b; }
 +
 +windowcontrols button:active, windowcontrols button:checked { border-color: transparent; background-image: none; box-shadow: none; background-color: #070707; }
 +
 +/*************** Header bars * */
 +.titlebar:not(headerbar), headerbar { padding: 0 6px; min-height: 46px; border-width: 0 0 1px; border-style: solid; border-color: #4e4e4e; border-radius: 0; background: #161616 linear-gradient(to top, #202020, #262626); /* Darken switchbuttons for headerbars. issue #1588 */ }
 +
 +.titlebar:backdrop:not(headerbar), headerbar:backdrop { border-color: #202020; background-color: #303030; background-image: none; transition: 200ms ease-out; }
 +
 +.titlebar:not(headerbar) .title, headerbar .title { padding-left: 12px; padding-right: 12px; font-weight: bold; }
 +
 +.titlebar:not(headerbar) .subtitle, headerbar .subtitle { font-size: smaller; padding-left: 12px; padding-right: 12px; }
 +
 +.titlebar:not(headerbar) stackswitcher > button:checked, .titlebar:not(headerbar) button.toggle:checked, headerbar stackswitcher > button:checked, headerbar button.toggle:checked { background: image(#191919); border-color: #606060; border-top-color: #535353; }
 +
 +.titlebar:not(headerbar) stackswitcher > button:checked:backdrop, .titlebar:not(headerbar) button.toggle:checked:backdrop, headerbar stackswitcher > button:checked:backdrop, headerbar button.toggle:checked:backdrop { color: #919190; border-color: #202020; background-image: image(#2a2a2a); box-shadow: none; }
 +
 +.tiled .titlebar:not(headerbar), .tiled-top .titlebar:not(headerbar), .tiled-left .titlebar:not(headerbar), .tiled-right .titlebar:not(headerbar), .tiled-bottom .titlebar:not(headerbar), .maximized .titlebar:not(headerbar), .fullscreen .titlebar:not(headerbar), .tiled headerbar, .tiled-top headerbar, .tiled-left headerbar, .tiled-right headerbar, .tiled-bottom headerbar, .maximized headerbar, .fullscreen headerbar { border-radius: 0; }
 +
 +.default-decoration.titlebar:not(headerbar), headerbar.default-decoration { min-height: 28px; padding: 4px; }
 +
 +.default-decoration.titlebar:not(headerbar) windowcontrols button, .default-decoration.titlebar:not(headerbar) windowcontrols menubutton, headerbar.default-decoration windowcontrols button, headerbar.default-decoration windowcontrols menubutton { min-height: 26px; min-width: 26px; margin: 0; padding: 0; }
 +
 +.default-decoration.titlebar:not(headerbar) windowcontrols menubutton button, headerbar.default-decoration windowcontrols menubutton button { min-height: 20px; min-width: 20px; margin: 0; padding: 4px; }
 +
 +.solid-csd .titlebar:dir(rtl):not(headerbar), .solid-csd .titlebar:dir(ltr):not(headerbar), .solid-csd headerbar:backdrop:dir(rtl), .solid-csd headerbar:backdrop:dir(ltr), .solid-csd headerbar:dir(rtl), .solid-csd headerbar:dir(ltr) { margin-left: -1px; margin-right: -1px; margin-top: -1px; border-radius: 0; box-shadow: none; }
 +
 +headerbar > windowhandle > box, headerbar > windowhandle > box > box.start, headerbar > windowhandle > box > box.end { border-spacing: 6px; }
 +
 +headerbar entry, headerbar spinbutton, headerbar separator:not(.sidebar), headerbar button, headerbar menubutton { margin-top: 6px; margin-bottom: 6px; }
 +
 +headerbar menubutton > button { margin-top: 0px; margin-bottom: 0px; }
 +
 +headerbar switch { margin-top: 10px; margin-bottom: 10px; }
 +
 +window.csd > .titlebar:not(headerbar) { padding: 0; background-color: transparent; background-image: none; border-style: none; border-color: transparent; }
 +
 +.titlebar:not(headerbar) separator { background-color: #686868; }
 +
 +window.devel headerbar.titlebar { background: #303030 cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, linear-gradient(to right, transparent 65%, rgba(15, 59, 113, 0.1)), linear-gradient(to top, #1e1e1e 3px, #232323); }
 +
 +window.devel headerbar.titlebar:backdrop { background: #303030 cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, image(#303030); /* background-color would flash */ }
 +
 +/************ Pathbars * */
 +pathbar > button.text-button, pathbar > button.image-button, pathbar > button { padding-left: 4px; padding-right: 4px; }
 +
 +pathbar > button.text-button.image-button label { padding-left: 0; padding-right: 0; }
 +
 +pathbar > button.text-button.image-button label:last-child, pathbar > button label:last-child { padding-right: 8px; }
 +
 +pathbar > button.text-button.image-button label:first-child, pathbar > button label:first-child { padding-left: 8px; }
 +
 +pathbar > button image { padding-left: 4px; padding-right: 4px; }
 +
 +pathbar > button.slider-button { padding-left: 0; padding-right: 0; }
 +
 +/************** Tree Views * */
 +columnview.view, treeview.view { border-left-color: #555554; border-top-color: #555554; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +columnview.view, treeview.view { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +columnview.view:focus:focus-visible, treeview.view:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected { border-radius: 0; outline-color: rgba(255, 255, 255, 0.6); }
 +
 +columnview.view:disabled, treeview.view:disabled { color: #919191; }
 +
 +columnview.view:disabled:selected, treeview.view:disabled:selected { color: #6f8aaa; }
 +
 +columnview.view:disabled:selected:backdrop, treeview.view:disabled:selected:backdrop { color: #4b6a8f; }
 +
 +columnview.view.separator, treeview.view.separator { min-height: 2px; color: #555554; }
 +
 +columnview.view:backdrop, treeview.view:backdrop { border-left-color: #414141; border-top: #414141; }
 +
 +columnview.view:drop(active), treeview.view:drop(active) { box-shadow: none; }
 +
 +columnview.view > dndtarget:drop(active), treeview.view > dndtarget:drop(active) { border-style: solid none; border-width: 1px; border-color: black; }
 +
 +columnview.view > dndtarget.after:drop(active), treeview.view > dndtarget.after:drop(active) { border-top-style: none; }
 +
 +columnview.view > dndtarget.before:drop(active), treeview.view > dndtarget.before:drop(active) { border-bottom-style: none; }
 +
 +columnview.view.expander, treeview.view.expander { min-width: 16px; min-height: 16px; -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); color: silver; }
 +
 +columnview.view.expander:dir(rtl), treeview.view.expander:dir(rtl) { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); }
 +
 +columnview.view.expander:hover, treeview.view.expander:hover { color: white; }
 +
 +columnview.view.expander:selected, treeview.view.expander:selected { color: #b7c4d4; }
 +
 +columnview.view.expander:selected:hover, treeview.view.expander:selected:hover { color: #ffffff; }
 +
 +columnview.view.expander:checked, treeview.view.expander:checked { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +columnview.view.progressbar, treeview.view.progressbar { background-color: #0f3b71; background-image: image(#0f3b71); box-shadow: none; }
 +
 +columnview.view.progressbar:selected:focus, columnview.view.progressbar:selected, treeview.view.progressbar:selected:focus, treeview.view.progressbar:selected { box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); background-image: image(#2d2d2d); }
 +
 +columnview.view.progressbar:selected:focus:backdrop, columnview.view.progressbar:selected:backdrop, treeview.view.progressbar:selected:focus:backdrop, treeview.view.progressbar:selected:backdrop { background-color: #303030; }
 +
 +columnview.view.trough, treeview.view.trough { background-color: rgba(243, 243, 241, 0.1); }
 +
 +columnview.view.trough:selected:focus, columnview.view.trough:selected, treeview.view.trough:selected:focus, treeview.view.trough:selected { background-color: #092444; }
 +
 +columnview.view > header > button, treeview.view > header > button { color: #90908f; background-color: #2d2d2d; font-weight: bold; text-shadow: none; box-shadow: none; }
 +
 +columnview.view > header > button:hover, treeview.view > header > button:hover { color: #c1c1c0; box-shadow: none; transition: none; }
 +
 +columnview.view > header > button:active, treeview.view > header > button:active { color: #f3f3f1; transition: none; }
 +
 +columnview.view > header > button sort-indicator, treeview.view > header > button sort-indicator { min-height: 16px; min-width: 16px; }
 +
 +columnview.view > header > button sort-indicator.ascending, treeview.view > header > button sort-indicator.ascending { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +columnview.view > header > button sort-indicator.descending, treeview.view > header > button sort-indicator.descending { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +columnview.view button.dnd:active, columnview.view button.dnd:selected, columnview.view button.dnd:hover, columnview.view button.dnd, columnview.view header.button.dnd:active, columnview.view header.button.dnd:selected, columnview.view header.button.dnd:hover, columnview.view header.button.dnd, treeview.view button.dnd:active, treeview.view button.dnd:selected, treeview.view button.dnd:hover, treeview.view button.dnd, treeview.view header.button.dnd:active, treeview.view header.button.dnd:selected, treeview.view header.button.dnd:hover, treeview.view header.button.dnd { padding: 0 6px; color: #2d2d2d; background-image: none; background-color: #0f3b71; border-style: none; border-radius: 0; box-shadow: inset 0 0 0 1px #2d2d2d; text-shadow: none; transition: none; }
 +
 +columnview.view acceleditor > label, treeview.view acceleditor > label { background-color: #0f3b71; }
 +
 +columnview.view > header > button, treeview.view > header > button, columnview.view > header > button:hover, treeview.view > header > button:hover, columnview.view > header > button:active, treeview.view > header > button:active { padding: 0 6px; background-image: none; border-style: none none solid solid; border-color: #555554; border-radius: 0; text-shadow: none; }
 +
 +columnview.view > header > button:disabled, treeview.view > header > button:disabled { border-color: #303030; background-image: none; }
 +
 +columnview.view > header > button:last-child, treeview.view > header > button:last-child { border-right-style: none; }
 +
 +/*************** Popovers   * */
 +popover.background { background-color: transparent; font: initial; }
 +
 +popover.background > arrow, popover.background > contents { background-color: #2d2d2d; background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.75); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }
 +
 +popover.background:backdrop { background-color: transparent; }
 +
 +popover.background > contents { padding: 8px; border-radius: 9px; }
 +
 +popover.background > contents > list, popover.background > contents > .view, popover.background > contents > iconview, popover.background > contents > .toolbar { border-style: none; background-color: transparent; }
 +
 +popover.background > contents separator { background-color: #575757; margin: 3px; }
 +
 +popover.background > contents list separator { margin: 0; }
 +
 +.osd popover.background, popover.background.touch-selection, popover.background.magnifier { background-color: transparent; }
 +
 +.osd popover.background > arrow, .osd popover.background > contents, popover.background.touch-selection > arrow, popover.background.touch-selection > contents, popover.background.magnifier > arrow, popover.background.magnifier > contents { border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: none; }
 +
 +magnifier { background-color: #2d2d2d; }
 +
 +/********************** Popover Base Menus * */
 +popover.menu { padding: 0; }
 +
 +popover.menu box.inline-buttons { padding: 0 12px; }
 +
 +popover.menu box.inline-buttons button.image-button.model { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; min-height: 30px; min-width: 30px; padding: 0; border: none; outline: none; transition: none; }
 +
 +popover.menu box.inline-buttons button.image-button.model:selected { background: image(#161616); }
 +
 +popover.menu box.circular-buttons { padding: 12px 12px 6px; }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model { padding: 11px; }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:focus { background-color: #161616; border-color: #161616; }
 +
 +popover.menu > arrow, popover.menu.background > contents { background-color: #2d2d2d; padding: 5px; }
 +
 +popover.menu.background separator { margin: 6px 0; }
 +
 +popover.menu accelerator { color: alpha(currentColor,0.55); }
 +
 +popover.menu accelerator:dir(ltr) { margin-left: 12px; }
 +
 +popover.menu accelerator:dir(rtl) { margin-right: 12px; }
 +
 +popover.menu check, popover.menu radio { transform: scale(0.8); border-width: 1.2px; border-color: transparent; box-shadow: none; background-image: image(transparent); color: white; }
 +
 +popover.menu check:hover, popover.menu radio:hover { transform: scale(0.8); border-width: 1.2px; color: white; box-shadow: none; background-image: image(transparent); }
 +
 +popover.menu check:active, popover.menu radio:active { transform: scale(0.8); border-width: 1.2px; color: white; box-shadow: none; background-image: image(transparent); }
 +
 +popover.menu radio { border-color: #686868; }
 +
 +popover.menu radio:active { border-color: rgba(104, 104, 104, 0.5); }
 +
 +popover.menu arrow.left, popover.menu radio.left, popover.menu check.left { margin-left: -2px; margin-right: 6px; }
 +
 +popover.menu arrow.right, popover.menu radio.right, popover.menu check.right { margin-left: 6px; margin-right: -2px; }
 +
 +popover.menu modelbutton { min-height: 30px; min-width: 40px; padding: 0 12px; border-radius: 5px; }
 +
 +popover.menu modelbutton:selected { color: white; background-color: #161616; }
 +
 +popover.menu modelbutton:selected:active { background-color: #0c0c0c; }
 +
 +popover.menu label.title { font-weight: bold; padding: 4px 32px; }
 +
 +menubar { padding: 0px; box-shadow: inset 0 -1px rgba(0, 0, 0, 0.1); }
 +
 +menubar > item { min-height: 16px; padding: 4px 8px; }
 +
 +menubar > item:selected { box-shadow: inset 0 -3px #0f3b71; color: #3584e4; }
 +
 +menubar > item:disabled { color: #919191; box-shadow: none; }
 +
 +menubar > item popover.menu.background > contents { padding: 5px; }
 +
 +menubar > item popover.menu popover.menu { padding: 0 0 4px 0; }
 +
 +menubar > item popover.menu.background popover.menu.background > contents { margin: 0; border-radius: 9px; }
 +
 +/************* Notebooks * */
 +notebook { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +notebook > header > tabs > tab:checked { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +notebook:focus:focus-visible > header > tabs > tab:checked { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +notebook > header { padding: 1px; border-color: #686868; border-width: 1px; background-color: #282828; }
 +
 +notebook > header > tabs { margin: -1px; }
 +
 +notebook > header.top { border-bottom-style: solid; }
 +
 +notebook > header.top > tabs { margin-bottom: -2px; }
 +
 +notebook > header.top > tabs > tab:hover { box-shadow: inset 0 -4px #686868; }
 +
 +notebook > header.top > tabs > tab:checked { box-shadow: inset 0 -4px #0f3b71; }
 +
 +notebook > header.bottom { border-top-style: solid; }
 +
 +notebook > header.bottom > tabs { margin-top: -2px; }
 +
 +notebook > header.bottom > tabs > tab:hover { box-shadow: inset 0 4px #686868; }
 +
 +notebook > header.bottom > tabs > tab:checked { box-shadow: inset 0 4px #0f3b71; }
 +
 +notebook > header.left { border-right-style: solid; }
 +
 +notebook > header.left > tabs { margin-right: -2px; }
 +
 +notebook > header.left > tabs > tab:hover { box-shadow: inset -4px 0 #686868; }
 +
 +notebook > header.left > tabs > tab:checked { box-shadow: inset -4px 0 #0f3b71; }
 +
 +notebook > header.right { border-left-style: solid; }
 +
 +notebook > header.right > tabs { margin-left: -2px; }
 +
 +notebook > header.right > tabs > tab:hover { box-shadow: inset 4px 0 #686868; }
 +
 +notebook > header.right > tabs > tab:checked { box-shadow: inset 4px 0 #0f3b71; }
 +
 +notebook > header.top > tabs > arrow { border-top-style: none; }
 +
 +notebook > header.bottom > tabs > arrow { border-bottom-style: none; }
 +
 +notebook > header.top > tabs > arrow, notebook > header.bottom > tabs > arrow { margin-left: -5px; margin-right: -5px; padding-left: 4px; padding-right: 4px; }
 +
 +notebook > header.top > tabs > arrow.down, notebook > header.bottom > tabs > arrow.down { -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); }
 +
 +notebook > header.top > tabs > arrow.up, notebook > header.bottom > tabs > arrow.up { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
 +
 +notebook > header.left > tabs > arrow { border-left-style: none; }
 +
 +notebook > header.right > tabs > arrow { border-right-style: none; }
 +
 +notebook > header.left > tabs > arrow, notebook > header.right > tabs > arrow { margin-top: -5px; margin-bottom: -5px; padding-top: 4px; padding-bottom: 4px; }
 +
 +notebook > header.left > tabs > arrow.down, notebook > header.right > tabs > arrow.down { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +notebook > header.left > tabs > arrow.up, notebook > header.right > tabs > arrow.up { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +notebook > header > tabs > arrow { min-height: 16px; min-width: 16px; border-radius: 0; }
 +
 +notebook > header > tabs > arrow:hover:not(:active):not(:backdrop) { background-clip: padding-box; background-image: none; background-color: rgba(255, 255, 255, 0.3); border-color: transparent; box-shadow: none; }
 +
 +notebook > header > tabs > arrow:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; }
 +
 +notebook > header > tabs > tab { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); min-height: 30px; min-width: 30px; padding: 3px 12px; color: #f3f3f1; font-weight: normal; border-width: 1px; border-color: transparent; }
 +
 +notebook > header > tabs > tab:hover { color: #f3f3f1; background-color: #1e1e1e; }
 +
 +notebook > header > tabs > tab.reorderable-page:hover { border-color: rgba(104, 104, 104, 0.3); background-color: rgba(48, 48, 48, 0.2); }
 +
 +notebook > header > tabs > tab:not(:checked) { outline-color: transparent; }
 +
 +notebook > header > tabs > tab:checked { color: #f3f3f1; }
 +
 +notebook > header > tabs > tab.reorderable-page:checked { border-color: rgba(104, 104, 104, 0.5); background-color: rgba(48, 48, 48, 0.5); }
 +
 +notebook > header > tabs > tab.reorderable-page:checked:hover { background-color: rgba(48, 48, 48, 0.7); }
 +
 +notebook > header > tabs > tab button.flat { color: alpha(currentColor,0.3); padding: 0; margin-top: 4px; margin-bottom: 4px; min-width: 20px; min-height: 20px; }
 +
 +notebook > header > tabs > tab button.flat:hover { color: currentColor; }
 +
 +notebook > header > tabs > tab button.flat:last-child { margin-left: 4px; margin-right: -4px; }
 +
 +notebook > header > tabs > tab button.flat:first-child { margin-left: -4px; margin-right: 4px; }
 +
 +notebook > header.top > tabs, notebook > header.bottom > tabs { padding-left: 4px; padding-right: 4px; }
 +
 +notebook > header.top > tabs:not(:only-child), notebook > header.bottom > tabs:not(:only-child) { margin-left: 3px; margin-right: 3px; }
 +
 +notebook > header.top > tabs:not(:only-child):first-child, notebook > header.bottom > tabs:not(:only-child):first-child { margin-left: -1px; }
 +
 +notebook > header.top > tabs:not(:only-child):last-child, notebook > header.bottom > tabs:not(:only-child):last-child { margin-right: -1px; }
 +
 +notebook > header.top > tabs > tab, notebook > header.bottom > tabs > tab { margin-left: 4px; margin-right: 4px; }
 +
 +notebook > header.top > tabs > tab.reorderable-page, notebook > header.bottom > tabs > tab.reorderable-page { border-style: none solid; }
 +
 +notebook > header.left > tabs, notebook > header.right > tabs { padding-top: 4px; padding-bottom: 4px; }
 +
 +notebook > header.left > tabs:not(:only-child), notebook > header.right > tabs:not(:only-child) { margin-top: 3px; margin-bottom: 3px; }
 +
 +notebook > header.left > tabs:not(:only-child):first-child, notebook > header.right > tabs:not(:only-child):first-child { margin-top: -1px; }
 +
 +notebook > header.left > tabs:not(:only-child):last-child, notebook > header.right > tabs:not(:only-child):last-child { margin-bottom: -1px; }
 +
 +notebook > header.left > tabs > tab, notebook > header.right > tabs > tab { margin-top: 4px; margin-bottom: 4px; }
 +
 +notebook > header.left > tabs > tab.reorderable-page, notebook > header.right > tabs > tab.reorderable-page { border-style: solid none; }
 +
 +notebook > header.top > tabs > tab { padding-bottom: 4px; }
 +
 +notebook > header.bottom > tabs > tab { padding-top: 4px; }
 +
 +notebook > stack:not(:only-child) { background-color: #2d2d2d; }
 +
 +/************** Scrollbars * */
 +scrollbar { background-color: #313131; transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scrollbar.top { border-bottom: 1px solid #686868; }
 +
 +scrollbar.bottom { border-top: 1px solid #686868; }
 +
 +scrollbar.left { border-right: 1px solid #686868; }
 +
 +scrollbar.right { border-left: 1px solid #686868; }
 +
 +scrollbar > range > trough > slider { min-width: 8px; min-height: 8px; margin: -1px; border: 4px solid transparent; border-radius: 10px; background-clip: padding-box; background-color: #a4a4a3; transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scrollbar > range > trough > slider:hover { background-color: #c9c9c7; }
 +
 +scrollbar > range > trough > slider:hover:active { background-color: #1b6acb; }
 +
 +scrollbar > range > trough > slider:disabled { background-color: transparent; }
 +
 +scrollbar > range.fine-tune > trough > slider { transition: none; min-width: 6px; min-height: 6px; }
 +
 +scrollbar > range.fine-tune.horizontal > trough > slider { border-width: 5px 4px; }
 +
 +scrollbar > range.fine-tune.vertical > trough > slider { border-width: 4px 5px; }
 +
 +scrollbar.overlay-indicator:not(.dragging):not(.hovering) { border-color: transparent; opacity: 0.4; background-color: transparent; }
 +
 +scrollbar.overlay-indicator:not(.dragging):not(.hovering) > range > trough > slider { margin: 0; min-width: 3px; min-height: 3px; background-color: #f3f3f1; border: 1px solid black; }
 +
 +scrollbar.overlay-indicator.horizontal:not(.dragging):not(.hovering) > range > trough > slider { margin: 0 2px; min-width: 40px; }
 +
 +scrollbar.overlay-indicator.vertical:not(.dragging):not(.hovering) > range > trough > slider { margin: 2px 0; min-height: 40px; }
 +
 +scrollbar.overlay-indicator.dragging, scrollbar.overlay-indicator.hovering { opacity: 0.8; }
 +
 +scrollbar.horizontal > range > trough > slider { min-width: 40px; }
 +
 +scrollbar.vertical > range > trough > slider { min-height: 40px; }
 +
 +treeview ~ scrollbar.vertical { border-top: 1px solid #686868; margin-top: -1px; }
 +
 +/********** Switch * */
 +switch { font-weight: bold; font-size: smaller; border: 1px solid #686868; border-radius: 14px; color: #f3f3f1; background-color: #282828; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; /* only show i / o for the accessible theme */ }
 +
 +switch { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +switch:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: 0; }
 +
 +headerbar switch { background-color: #141414; }
 +
 +switch:checked { color: #ffffff; border-color: #1f76e1; background-color: #15539e; }
 +
 +switch:disabled { color: #919191; border-color: #686868; background-color: #2f2f2f; text-shadow: none; }
 +
 +switch > slider { color: #f3f3f1; outline-color: rgba(255, 255, 255, 0.6); border-color: #686868; background-image: linear-gradient(to top, #323232 2px, #353535); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); margin: -1px; min-width: 24px; min-height: 24px; border: 1px solid; border-color: #686868; border-radius: 50%; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +switch > image { color: transparent; }
 +
 +switch:hover > slider { color: #f3f3f1; border-color: #686868; background-image: linear-gradient(to top, #2b2b2b 20%, #2d2d2d 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +switch:checked > slider { border: 1px solid #1f76e1; }
 +
 +switch:disabled > slider { color: #919191; border-color: #5d5d5d; background-image: image(#2f2f2f); }
 +
 +row:selected switch { outline-color: rgba(255, 255, 255, 0.6); }
 +
 +/************************* Check and Radio items * */
 +.view.content-view.check:not(list), iconview.content-view.check:not(list), .content-view .tile check:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:hover:not(list), iconview.content-view.check:hover:not(list), .content-view .tile check:hover:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:active:not(list), iconview.content-view.check:active:not(list), .content-view .tile check:active:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:backdrop:not(list), iconview.content-view.check:backdrop:not(list), .content-view .tile check:backdrop:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #5a5a5a; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:not(list), iconview.content-view.check:checked:not(list), .content-view .tile check:checked:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:hover:not(list), iconview.content-view.check:checked:hover:not(list), .content-view .tile check:checked:hover:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:active:not(list), iconview.content-view.check:checked:active:not(list), .content-view .tile check:checked:active:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #15539e; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:backdrop:checked:not(list), iconview.content-view.check:backdrop:checked:not(list), .content-view .tile check:backdrop:checked:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: rgba(238, 238, 236, 0.8); background-color: #5a5a5a; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +checkbutton { border-spacing: 4px; border-radius: 5px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +checkbutton { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +checkbutton:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +checkbutton.text-button { padding: 4px; }
 +
 +check, radio { min-height: 14px; min-width: 14px; border: 1px solid; -gtk-icon-source: none; }
 +
 +check, radio { background-clip: padding-box; background-image: linear-gradient(to bottom, #3c3c3c 20%, #303030 90%); border-color: #4e4e4e; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:hover, radio:hover { background-image: linear-gradient(to bottom, #474747 10%, #3a3a3a 90%); }
 +
 +check:active, radio:active { box-shadow: inset 0 1px black; background-image: image(#232323); }
 +
 +check:disabled, radio:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +check:checked, radio:checked { background-clip: border-box; background-image: linear-gradient(to bottom, #185fb4 20%, #15539e 90%); border-color: #092444; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:checked:hover, radio:checked:hover { background-image: linear-gradient(to bottom, #1b68c6 10%, #185cb0 90%); }
 +
 +check:checked:active, radio:checked:active { box-shadow: inset 0 1px black; background-image: image(#124787); }
 +
 +check:checked:disabled, radio:checked:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +check:indeterminate, radio:indeterminate { background-clip: border-box; background-image: linear-gradient(to bottom, #185fb4 20%, #15539e 90%); border-color: #092444; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:indeterminate:hover, radio:indeterminate:hover { background-image: linear-gradient(to bottom, #1b68c6 10%, #185cb0 90%); }
 +
 +check:indeterminate:active, radio:indeterminate:active { box-shadow: inset 0 1px black; background-image: image(#124787); }
 +
 +check:indeterminate:disabled, radio:indeterminate:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +.osd check, .osd radio { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.6); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; }
 +
 +.osd check:hover, .osd radio:hover { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.6); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; }
 +
 +.osd check:active, .osd radio:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.osd check:disabled, .osd radio:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; }
 +
 +check { border-radius: 3px; -gtk-icon-size: 14px; }
 +
 +check:checked { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets-hc/check-symbolic.symbolic.png")), -gtk-recolor(url("assets-hc/check@2-symbolic.symbolic.png"))); }
 +
 +check:indeterminate { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets-hc/dash-symbolic.symbolic.png")), -gtk-recolor(url("assets-hc/dash@2-symbolic.symbolic.png"))); }
 +
 +treeview.view radio:selected:focus, treeview.view radio:selected, radio { border-radius: 100%; -gtk-icon-size: 14px; }
 +
 +treeview.view radio:checked:selected, radio:checked { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets-hc/bullet-symbolic.symbolic.png")), -gtk-recolor(url("assets-hc/bullet@2-symbolic.symbolic.png"))); }
 +
 +treeview.view radio:indeterminate:selected, radio:indeterminate { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets-hc/dash-symbolic.symbolic.png")), -gtk-recolor(url("assets-hc/dash@2-symbolic.symbolic.png"))); }
 +
 +treeview.view check:selected:focus, treeview.view check:selected, treeview.view radio:selected:focus, treeview.view radio:selected { color: #ffffff; }
 +
 +/************ GtkScale * */
 +progressbar > trough, scale > trough > fill, scale > trough { border: 1px solid #282828; border-radius: 3px; background-color: #282828; }
 +
 +headerbar progressbar > trough, headerbar scale > trough > fill, headerbar scale > trough { background-color: #141414; }
 +
 +progressbar > trough:disabled, scale > trough > fill:disabled, scale > trough:disabled { background-color: #2f2f2f; border-color: #5d5d5d; }
 +
 +row:selected progressbar > trough, row:selected scale > trough > fill, row:selected scale > trough { outline-color: rgba(255, 255, 255, 0.6); border-color: black; }
 +
 +.osd progressbar > trough, .osd scale > trough > fill, .osd scale > trough { border-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.5); }
 +
 +.osd progressbar > trough:disabled, .osd scale > trough > fill:disabled, .osd scale > trough:disabled { background-color: rgba(58, 58, 57, 0.5); }
 +
 +progressbar > trough > progress, scale > trough > highlight { border: 1px solid #0f3b71; border-radius: 3px; background-color: #0f3b71; }
 +
 +progressbar > trough > progress:disabled, scale > trough > highlight:disabled { background-color: transparent; border-color: transparent; }
 +
 +row:selected progressbar > trough > progress, row:selected scale > trough > highlight { border-color: black; }
 +
 +.osd progressbar > trough > progress, .osd scale > trough > highlight { border-color: rgba(0, 0, 0, 0.7); }
 +
 +.osd progressbar > trough > progress:disabled, .osd scale > trough > highlight:disabled { border-color: transparent; }
 +
 +scale { min-height: 10px; min-width: 10px; padding: 12px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +scale > trough { outline: 0 solid transparent; outline-offset: 16px; }
 +
 +scale:focus:focus-visible > trough { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: 10px; }
 +
 +scale > trough { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scale > trough > fill, scale > trough > highlight { margin: -1px; }
 +
 +scale > trough > slider { min-height: 18px; min-width: 18px; margin: -9px; }
 +
 +scale.fine-tune.horizontal { padding-top: 9px; padding-bottom: 9px; min-height: 16px; }
 +
 +scale.fine-tune.vertical { padding-left: 9px; padding-right: 9px; min-width: 16px; }
 +
 +scale.fine-tune > trough > slider { margin: -6px; }
 +
 +scale.fine-tune > trough > fill, scale.fine-tune > trough > highlight, scale.fine-tune > trough { border-radius: 5px; }
 +
 +scale > trough > fill:disabled { border-color: transparent; background-color: transparent; }
 +
 +.osd scale > trough > fill { background-color: rgba(91, 91, 90, 0.775); }
 +
 +.osd scale > trough > fill:disabled { border-color: transparent; background-color: transparent; }
 +
 +scale > trough > slider { color: #f3f3f1; outline-color: rgba(255, 255, 255, 0.6); border-color: #686868; background-image: linear-gradient(to top, #323232 2px, #353535); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); border-width: 1px; border-style: solid; border-radius: 100%; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: background, border, box-shadow; }
 +
 +scale > trough > slider:hover { color: #f3f3f1; border-color: #686868; background-image: linear-gradient(to top, #2b2b2b 20%, #2d2d2d 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +scale > trough > slider:active { border-color: black; }
 +
 +scale > trough > slider:disabled { color: #919191; border-color: #5d5d5d; background-image: image(#2f2f2f); }
 +
 +row:selected scale > trough > slider:disabled, row:selected scale > trough > slider { border-color: black; }
 +
 +.osd scale > trough > slider { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.6); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(38, 38, 38, 0.7)); background-clip: padding-box; border-color: rgba(0, 0, 0, 0.7); background-color: #262626; }
 +
 +.osd scale > trough > slider:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(12, 12, 12, 0.7)); background-clip: padding-box; background-color: #262626; }
 +
 +.osd scale > trough > slider:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; background-color: #262626; }
 +
 +.osd scale > trough > slider:disabled { color: #8a8a89; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(58, 58, 57, 0.5)); background-clip: padding-box; background-color: #262626; }
 +
 +scale > value { color: alpha(currentColor,0.55); font-feature-settings: "tnum"; }
 +
 +scale.horizontal > marks { color: alpha(currentColor,0.55); }
 +
 +scale.horizontal > marks.top { margin-bottom: 6px; }
 +
 +scale.horizontal > marks.bottom { margin-top: 6px; }
 +
 +scale.horizontal > marks indicator { background-color: currentColor; min-height: 6px; min-width: 1px; }
 +
 +scale.horizontal > value.left { margin-right: 9px; }
 +
 +scale.horizontal > value.right { margin-left: 9px; }
 +
 +scale.horizontal.fine-tune > marks.top { margin-top: 3px; }
 +
 +scale.horizontal.fine-tune > marks.bottom { margin-bottom: 3px; }
 +
 +scale.horizontal.fine-tune > marks indicator { min-height: 3px; }
 +
 +scale.vertical > marks { color: alpha(currentColor,0.55); }
 +
 +scale.vertical > marks.top { margin-right: 6px; }
 +
 +scale.vertical > marks.bottom { margin-left: 6px; }
 +
 +scale.vertical > marks indicator { background-color: currentColor; min-height: 1px; min-width: 6px; }
 +
 +scale.vertical > value.top { margin-bottom: 9px; }
 +
 +scale.vertical > value.bottom { margin-top: 9px; }
 +
 +scale.vertical.fine-tune > marks.top { margin-left: 3px; }
 +
 +scale.vertical.fine-tune > marks.bottom { margin-right: 3px; }
 +
 +scale.vertical.fine-tune > marks indicator { min-height: 3px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-dark.png"), url("assets-hc/slider-horz-scale-has-marks-above-dark@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-hover-dark.png"), url("assets-hc/slider-horz-scale-has-marks-above-hover-dark@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-active-dark.png"), url("assets-hc/slider-horz-scale-has-marks-above-active-dark@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-insensitive-dark.png"), url("assets-hc/slider-horz-scale-has-marks-above-insensitive-dark@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-below-dark.png"), url("assets-hc/slider-horz-scale-has-marks-below-dark@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-below-hover-dark.png"), url("assets-hc/slider-horz-scale-has-marks-below-hover-dark@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-below-active-dark.png"), url("assets-hc/slider-horz-scale-has-marks-below-active-dark@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-below-insensitive-dark.png"), url("assets-hc/slider-horz-scale-has-marks-below-insensitive-dark@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-above-dark.png"), url("assets-hc/slider-vert-scale-has-marks-above-dark@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-above-hover-dark.png"), url("assets-hc/slider-vert-scale-has-marks-above-hover-dark@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-above-active-dark.png"), url("assets-hc/slider-vert-scale-has-marks-above-active-dark@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-above-insensitive-dark.png"), url("assets-hc/slider-vert-scale-has-marks-above-insensitive-dark@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-below-dark.png"), url("assets-hc/slider-vert-scale-has-marks-below-dark@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-below-hover-dark.png"), url("assets-hc/slider-vert-scale-has-marks-below-hover-dark@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-below-active-dark.png"), url("assets-hc/slider-vert-scale-has-marks-below-active-dark@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-below-insensitive-dark.png"), url("assets-hc/slider-vert-scale-has-marks-below-insensitive-dark@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.color { min-height: 0; min-width: 0; }
 +
 +scale.color > trough { background-image: image(#686868); background-repeat: no-repeat; }
 +
 +scale.color.horizontal { padding: 0 0 15px 0; }
 +
 +scale.color.horizontal > trough { padding-bottom: 4px; background-position: 0 -3px; border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +scale.color.horizontal > trough > slider:dir(ltr):hover, scale.color.horizontal > trough > slider:dir(ltr):backdrop, scale.color.horizontal > trough > slider:dir(ltr):disabled, scale.color.horizontal > trough > slider:dir(ltr):backdrop:disabled, scale.color.horizontal > trough > slider:dir(ltr), scale.color.horizontal > trough > slider:dir(rtl):hover, scale.color.horizontal > trough > slider:dir(rtl):backdrop, scale.color.horizontal > trough > slider:dir(rtl):disabled, scale.color.horizontal > trough > slider:dir(rtl):backdrop:disabled, scale.color.horizontal > trough > slider:dir(rtl) { margin-bottom: -15px; margin-top: 6px; }
 +
 +scale.color.vertical:dir(ltr) { padding: 0 0 0 15px; }
 +
 +scale.color.vertical:dir(ltr) > trough { padding-left: 4px; background-position: 3px 0; border-bottom-right-radius: 0; border-top-right-radius: 0; }
 +
 +scale.color.vertical:dir(ltr) > trough > slider:hover, scale.color.vertical:dir(ltr) > trough > slider:backdrop, scale.color.vertical:dir(ltr) > trough > slider:disabled, scale.color.vertical:dir(ltr) > trough > slider:backdrop:disabled, scale.color.vertical:dir(ltr) > trough > slider { margin-left: -15px; margin-right: 6px; }
 +
 +scale.color.vertical:dir(rtl) { padding: 0 15px 0 0; }
 +
 +scale.color.vertical:dir(rtl) > trough { padding-right: 4px; background-position: -3px 0; border-bottom-left-radius: 0; border-top-left-radius: 0; }
 +
 +scale.color.vertical:dir(rtl) > trough > slider:hover, scale.color.vertical:dir(rtl) > trough > slider:backdrop, scale.color.vertical:dir(rtl) > trough > slider:disabled, scale.color.vertical:dir(rtl) > trough > slider:backdrop:disabled, scale.color.vertical:dir(rtl) > trough > slider { margin-right: -15px; margin-left: 6px; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr), scale.color.fine-tune.horizontal:dir(rtl) { padding: 0 0 12px 0; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr) > trough, scale.color.fine-tune.horizontal:dir(rtl) > trough { padding-bottom: 7px; background-position: 0 -6px; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr) > trough > slider, scale.color.fine-tune.horizontal:dir(rtl) > trough > slider { margin-bottom: -15px; margin-top: 6px; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) { padding: 0 0 0 12px; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) > trough { padding-left: 7px; background-position: 6px 0; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) > trough > slider { margin-left: -15px; margin-right: 6px; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) { padding: 0 12px 0 0; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) > trough { padding-right: 7px; background-position: -6px 0; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) > trough > slider { margin-right: -15px; margin-left: 6px; }
 +
 +/***************** Progress bars * */
 +progressbar { font-size: smaller; color: rgba(243, 243, 241, 0.4); font-feature-settings: "tnum"; }
 +
 +progressbar.horizontal > trough { min-width: 150px; }
 +
 +progressbar.horizontal > trough, progressbar.horizontal > trough > progress { min-height: 2px; }
 +
 +progressbar.vertical > trough { min-height: 80px; }
 +
 +progressbar.vertical > trough, progressbar.vertical > trough > progress { min-width: 2px; }
 +
 +progressbar.horizontal > trough > progress { margin: 0 -1px; }
 +
 +progressbar.vertical > trough > progress { margin: -1px 0; }
 +
 +progressbar > trough > progress { /* share most of scales' */ /* override insensitive that is specific to progress */ border-radius: 1.5px; }
 +
 +progressbar > trough > progress:disabled { background-color: #919191; border-color: #919191; }
 +
 +progressbar > trough > progress.left { border-top-left-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +progressbar > trough > progress.right { border-top-right-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +progressbar > trough > progress.top { border-top-right-radius: 5px; border-top-left-radius: 5px; }
 +
 +progressbar > trough > progress.bottom { border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +progressbar.osd { min-width: 3px; min-height: 3px; background-color: transparent; }
 +
 +progressbar.osd > trough { border-style: none; border-radius: 0; background-color: transparent; box-shadow: none; }
 +
 +progressbar.osd > trough > progress { border-style: none; border-radius: 0; }
 +
 +progressbar > trough.empty > progress { all: unset; }
 +
 +/************* Level Bar * */
 +levelbar.horizontal trough > block { min-height: 9px; border-radius: 5px; }
 +
 +levelbar.horizontal trough > block:dir(rtl) { border-radius: 0 5px 5px 0; }
 +
 +levelbar.horizontal trough > block:dir(ltr) { border-radius: 5px 0 0 5px; }
 +
 +levelbar.horizontal trough > block.empty, levelbar.horizontal trough > block.full { border-radius: 5px; }
 +
 +levelbar.horizontal.discrete trough > block { min-height: 2px; margin: 1px; min-width: 24px; border-radius: 0; }
 +
 +levelbar.horizontal.discrete trough > block:first-child { border-radius: 2px 0 0 2px; }
 +
 +levelbar.horizontal.discrete trough > block:last-child { border-radius: 0 2px 2px 0; }
 +
 +levelbar.vertical trough > block { min-width: 9px; border-radius: 5px; }
 +
 +levelbar.vertical.discrete > trough > block { min-width: 2px; margin: 1px 0; min-height: 32px; }
 +
 +levelbar > trough { padding: 0; }
 +
 +levelbar > trough > block { border: 1px solid; }
 +
 +levelbar > trough > block.low { border-color: #f57900; background-color: #f57900; }
 +
 +levelbar > trough > block.high, levelbar > trough > block:not(.empty) { border-color: #0f3b71; background-color: #0f3b71; }
 +
 +levelbar > trough > block.full { border-color: #26ab62; background-color: #26ab62; }
 +
 +levelbar > trough > block.empty { background-color: #232323; border-color: #232323; }
 +
 +/**************** Print dialog * */
 +window.dialog.print drawing { color: #f3f3f1; background: none; border: none; padding: 0; }
 +
 +window.dialog.print drawing paper { background: white; color: #2e3436; border: 1px solid #686868; }
 +
 +window.dialog.print .dialog-action-box { margin: 12px; }
 +
 +/********** Frames * */
 +frame, .frame { border: 1px solid #686868; }
 +
 +frame { border-radius: 8px; }
 +
 +frame > label { margin: 4px; }
 +
 +actionbar > revealer > box { padding: 6px; border-top: 1px solid #686868; }
 +
 +actionbar > revealer > box, actionbar > revealer > box > box.start, actionbar > revealer > box > box.end { border-spacing: 6px; }
 +
 +scrolledwindow > overshoot.top { background-image: radial-gradient(farthest-side at top, #4e4e4e 85%, rgba(78, 78, 78, 0)), radial-gradient(farthest-side at top, rgba(243, 243, 241, 0.07), rgba(243, 243, 241, 0)); background-size: 100% 3%, 100% 50%; background-repeat: no-repeat; background-position: top; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.bottom { background-image: radial-gradient(farthest-side at bottom, #4e4e4e 85%, rgba(78, 78, 78, 0)), radial-gradient(farthest-side at bottom, rgba(243, 243, 241, 0.07), rgba(243, 243, 241, 0)); background-size: 100% 3%, 100% 50%; background-repeat: no-repeat; background-position: bottom; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.left { background-image: radial-gradient(farthest-side at left, #4e4e4e 85%, rgba(78, 78, 78, 0)), radial-gradient(farthest-side at left, rgba(243, 243, 241, 0.07), rgba(243, 243, 241, 0)); background-size: 3% 100%, 50% 100%; background-repeat: no-repeat; background-position: left; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.right { background-image: radial-gradient(farthest-side at right, #4e4e4e 85%, rgba(78, 78, 78, 0)), radial-gradient(farthest-side at right, rgba(243, 243, 241, 0.07), rgba(243, 243, 241, 0)); background-size: 3% 100%, 50% 100%; background-repeat: no-repeat; background-position: right; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > junction { background: #686868, linear-gradient(to bottom, transparent 1px, #313131 1px), linear-gradient(to right, transparent 1px, #313131 1px); }
 +
 +scrolledwindow > junction:dir(rtl) { background: #686868, linear-gradient(to bottom, transparent 1px, #313131 1px), linear-gradient(to left, transparent 1px, #313131 1px); }
 +
 +separator { background: #757575; min-width: 1px; min-height: 1px; }
 +
 +/********* Lists * */
 +listview, list { color: white; background-color: #2d2d2d; border-color: #686868; }
 +
 +listview:backdrop, list:backdrop { color: #d6d6d6; background-color: #303030; border-color: #202020; }
 +
 +listview > row, list > row { padding: 2px; }
 +
 +listview > row.expander, list > row.expander { padding: 0px; }
 +
 +listview > row.expander .row-header, list > row.expander .row-header { padding: 2px; }
 +
 +listview.horizontal row.separator, listview.separators.horizontal > row:not(.separator), list.horizontal row.separator, list.separators.horizontal > row:not(.separator) { border-left: 1px solid #555554; }
 +
 +listview:not(.horizontal) row.separator, listview.separators:not(.horizontal) > row:not(.separator), list:not(.horizontal) row.separator, list.separators:not(.horizontal) > row:not(.separator) { border-bottom: 1px solid #555554; }
 +
 +row { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +row:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +row.activatable.has-open-popup, row.activatable:hover { background-color: rgba(243, 243, 241, 0.05); }
 +
 +row.activatable:active { box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.2); }
 +
 +row.activatable:selected:active { box-shadow: inset 0 2px 3px -1px rgba(0, 0, 0, 0.5); }
 +
 +row.activatable.has-open-popup:selected, row.activatable:selected:hover { background-color: #264e7e; }
 +
 +row:selected { outline-color: rgba(255, 255, 255, 0.6); }
 +
 +columnview > listview > row { padding: 0; }
 +
 +columnview > listview > row > cell { padding: 8px 6px; }
 +
 +columnview > listview > row > cell:not(:first-child) { border-left: 1px solid transparent; }
 +
 +columnview.column-separators > listview > row > cell { border-left-color: #555554; }
 +
 +columnview.data-table > listview > row > cell { padding-top: 2px; padding-bottom: 2px; }
 +
 +treeexpander { border-spacing: 4px; }
 +
 +/******************************************************** Data Tables                                          * treeview like tables with individual focusable cells * https://gitlab.gnome.org/GNOME/gtk/-/issues/2929     * */
 +columnview row:not(:selected) cell editablelabel:not(.editing):focus-within { outline: 2px solid rgba(255, 255, 255, 0.6); }
 +
 +columnview row:not(:selected) cell editablelabel.editing:focus-within { outline: 2px solid #0f3b71; }
 +
 +columnview row:not(:selected) cell editablelabel.editing text selection { background-color: rgba(90, 90, 90, 0.5); color: transparent; }
 +
 +columnview row:not(:selected) cell editablelabel.editing text selection:focus-within { background-color: rgba(21, 83, 158, 0.3); color: #f3f3f1; }
 +
 +/******************************************************* Rich Lists                                          * Large list usually containing lots of widgets       * https://gitlab.gnome.org/GNOME/gtk/-/issues/3073    * */
 +.rich-list { /* rich lists usually containing other widgets than just labels/text */ }
 +
 +.rich-list > row { padding: 8px 12px; min-height: 32px; /* should be tall even when only containing a label */ }
 +
 +.rich-list > row > box { border-spacing: 12px; }
 +
 +/********************* App Notifications * */
 +.app-notification { padding: 10px; border-spacing: 10px; border-radius: 0 0 5px 5px; background-color: rgba(38, 38, 38, 0.7); background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.2), transparent 2px); background-clip: padding-box; }
 +
 +.app-notification border { border: none; }
 +
 +/************* Expanders * */
 +expander { min-width: 16px; min-height: 16px; -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
 +
 +expander:dir(rtl) { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); }
 +
 +expander:disabled { color: #919191; }
 +
 +expander:checked { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +expander-widget { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +expander-widget > box > title { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +expander-widget:focus:focus-visible > box > title { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +expander-widget > box > title { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); border-radius: 5px; }
 +
 +expander-widget > box > title:hover > expander { color: white; }
 +
 +.navigation-sidebar:not(decoration):not(window):drop(active):focus, .navigation-sidebar:not(decoration):not(window):drop(active), placessidebar:not(decoration):not(window):drop(active):focus, placessidebar:not(decoration):not(window):drop(active), stackswitcher:not(decoration):not(window):drop(active):focus, stackswitcher:not(decoration):not(window):drop(active), expander-widget:not(decoration):not(window):drop(active):focus, expander-widget:not(decoration):not(window):drop(active) { box-shadow: none; }
 +
 +/************ Calendar * */
 +calendar { color: white; border: 1px solid #686868; font-feature-settings: "tnum"; }
 +
 +calendar > header { border-bottom: 1px solid #686868; }
 +
 +calendar > header > button { border: none; box-shadow: none; background: none; border-radius: 0; }
 +
 +calendar > header > button:backdrop { background: none; }
 +
 +calendar > grid > label.today { box-shadow: inset 0px -2px #686868; }
 +
 +calendar > grid > label.today:selected { box-shadow: none; }
 +
 +calendar > grid > label:focus { outline-color: rgba(255, 255, 255, 0.6); outline-offset: -2px; outline-width: 2px; outline-style: solid; }
 +
 +calendar > grid > label.day-number { padding: 4px; }
 +
 +calendar > grid > label.day-number:selected { border-radius: 3px; }
 +
 +calendar > grid > label.day-number.other-month { color: alpha(currentColor,0.3); }
 +
 +/*********** Dialogs * */
 +window.dialog.message .titlebar { min-height: 20px; background-image: none; background-color: #303030; border-style: none; border-top-left-radius: 7px; border-top-right-radius: 7px; }
 +
 +window.dialog.message box.dialog-vbox.vertical { border-spacing: 10px; }
 +
 +window.dialog.message label.title { font-weight: 800; font-size: 15pt; }
 +
 +window.dialog.message.csd.background { border-bottom-left-radius: 9px; border-bottom-right-radius: 9px; }
 +
 +window.dialog.message.csd .dialog-action-area button { padding: 10px 14px; border-radius: 0; border-left-style: solid; border-right-style: none; border-bottom-style: none; }
 +
 +window.dialog.message.csd .dialog-action-area button:first-child { border-left-style: none; border-bottom-left-radius: 7px; }
 +
 +window.dialog.message.csd .dialog-action-area button:last-child { border-bottom-right-radius: 7px; }
 +
 +filechooser .dialog-action-box { border-top: 1px solid #686868; }
 +
 +filechooser #pathbarbox { border-bottom: 1px solid #303030; }
 +
 +filechooserbutton > button > box { border-spacing: 6px; }
 +
 +filechooserbutton:drop(active) { box-shadow: none; border-color: transparent; }
 +
 +/*********** Sidebar * */
 +.sidebar { background-color: #2e2e2e; }
 +
 +.sidebar:not(separator):dir(ltr), .sidebar.left:not(separator), .sidebar.left:not(separator):dir(rtl) { border-right: 1px solid #686868; border-left-style: none; }
 +
 +.sidebar:not(separator):dir(rtl), .sidebar.right:not(separator) { border-left: 1px solid #686868; border-right-style: none; }
 +
 +.sidebar listview.view, .sidebar list { background-color: transparent; }
 +
 +paned .sidebar.left, paned .sidebar.right, paned .sidebar.left:dir(rtl), paned .sidebar:dir(rtl), paned .sidebar:dir(ltr), paned .sidebar { border-style: none; }
 +
 +stacksidebar list.separators:not(.horizontal) > row:not(.separator) { border-bottom: none; }
 +
 +stacksidebar row { padding: 10px 4px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +stacksidebar row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +stacksidebar row:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +stacksidebar row > label { padding-left: 6px; padding-right: 6px; }
 +
 +stacksidebar row.needs-attention > label { background-size: 6px 6px, 0 0; }
 +
 +stacksidebar row:selected { background-color: #161616; border-radius: 5px; color: #f3f3f1; }
 +
 +stacksidebar row:selected:hover:dir(ltr), stacksidebar row:selected:hover:dir(rtl) { background-color: #090909; }
 +
 +stacksidebar row.activatable:active, stacksidebar row.activatable:selected:active { box-shadow: none; }
 +
 +separator.sidebar { background-color: #686868; }
 +
 +/********************** Navigation Sidebar * */
 +.navigation-sidebar { padding: 5px 0; }
 +
 +.navigation-sidebar > separator { margin: 5px; }
 +
 +.navigation-sidebar > row { min-height: 36px; padding: 0 8px; border-radius: 5px; margin: 0 5px 2px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +.navigation-sidebar > row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +.navigation-sidebar > row:focus-visible:focus-within { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: -2px; }
 +
 +.navigation-sidebar > row:hover { background-color: #090909; }
 +
 +.navigation-sidebar > row:selected { background-color: #161616; color: inherit; }
 +
 +.navigation-sidebar > row:selected:hover { background-color: #090909; }
 +
 +.navigation-sidebar > row:disabled { color: #919191; }
 +
 +/**************** File chooser * */
 +row image.sidebar-icon { opacity: 0.7; }
 +
 +/* this should be more generic, only using .navigation-sidebar https://gitlab.gnome.org/GNOME/gtk/-/issues/2929 */
 +placessidebar .navigation-sidebar > row { padding: 0; }
 +
 +placessidebar .navigation-sidebar > row > revealer { padding: 0 14px; }
 +
 +placessidebar .navigation-sidebar > row image.sidebar-icon:dir(ltr) { padding-right: 8px; }
 +
 +placessidebar .navigation-sidebar > row image.sidebar-icon:dir(rtl) { padding-left: 8px; }
 +
 +placessidebar .navigation-sidebar > row label.sidebar-label:dir(ltr) { padding-right: 2px; }
 +
 +placessidebar .navigation-sidebar > row label.sidebar-label:dir(rtl) { padding-left: 2px; }
 +
 +button.sidebar-button { min-height: 26px; min-width: 26px; margin-top: 3px; margin-bottom: 3px; padding: 0; border-radius: 100%; }
 +
 +placessidebar .navigation-sidebar > row:selected:active { box-shadow: none; }
 +
 +placessidebar .navigation-sidebar > row.sidebar-placeholder-row { padding: 0 8px; min-height: 2px; background-image: image(#26a269); background-clip: content-box; }
 +
 +placessidebar .navigation-sidebar > row.sidebar-new-bookmark-row { color: #0f3b71; }
 +
 +placessidebar .navigation-sidebar > row:drop(active):not(:disabled) { color: #26a269; box-shadow: inset 0 1px #26a269, inset 0 -1px #26a269; }
 +
 +placessidebar .navigation-sidebar > row:drop(active):not(:disabled):selected { color: #ffffff; background-color: #26a269; }
 +
 +placesview .server-list-button > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(0turn); }
 +
 +placesview .server-list-button:checked > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(-0.5turn); }
 +
 +placesview > actionbar > revealer > box > box { border-spacing: 6px; }
 +
 +/********* Paned * */
 +paned > separator { min-width: 1px; min-height: 1px; -gtk-icon-source: none; border-style: none; background-color: transparent; background-image: image(#686868); background-size: 1px 1px; }
 +
 +paned > separator:selected { background-image: image(#0f3b71); }
 +
 +paned > separator.wide { min-width: 5px; min-height: 5px; background-color: #303030; background-image: image(#686868), image(#686868); background-size: 1px 1px, 1px 1px; }
 +
 +paned.horizontal > separator { background-repeat: repeat-y; }
 +
 +paned.horizontal > separator:dir(ltr) { margin: 0 -8px 0 0; padding: 0 8px 0 0; background-position: left; }
 +
 +paned.horizontal > separator:dir(rtl) { margin: 0 0 0 -8px; padding: 0 0 0 8px; background-position: right; }
 +
 +paned.horizontal > separator.wide { margin: 0; padding: 0; background-repeat: repeat-y, repeat-y; background-position: left, right; }
 +
 +paned.vertical > separator { margin: 0 0 -8px 0; padding: 0 0 8px 0; background-repeat: repeat-x; background-position: top; }
 +
 +paned.vertical > separator.wide { margin: 0; padding: 0; background-repeat: repeat-x, repeat-x; background-position: bottom, top; }
 +
 +/************** GtkVideo * */
 +video { background: black; }
 +
 +video image.osd { min-width: 64px; min-height: 64px; border-radius: 32px; }
 +
 +/************ Tooltips * */
 +tooltip { padding: 6px 10px; border-radius: 8px; box-shadow: none; }
 +
 +tooltip.background { background-color: rgba(0, 0, 0, 0.8); background-clip: padding-box; border: 1px solid rgba(255, 255, 255, 0.1); color: white; }
 +
 +tooltip > box { border-spacing: 6px; }
 +
 +/***************** Color Chooser * */
 +colorswatch { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +colorswatch { outline: 0 solid transparent; outline-offset: 6px; }
 +
 +colorswatch:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 4px; outline-offset: -2px; }
 +
 +colorswatch:drop(active), colorswatch { border-style: none; }
 +
 +colorswatch.top { border-top-left-radius: 5.5px; border-top-right-radius: 5.5px; }
 +
 +colorswatch.top > overlay { border-top-left-radius: 5px; border-top-right-radius: 5px; }
 +
 +colorswatch.bottom { border-bottom-left-radius: 5.5px; border-bottom-right-radius: 5.5px; }
 +
 +colorswatch.bottom > overlay { border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +colorswatch.left, colorswatch:first-child:not(.top) { border-top-left-radius: 5.5px; border-bottom-left-radius: 5.5px; }
 +
 +colorswatch.left > overlay, colorswatch:first-child:not(.top) > overlay { border-top-left-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +colorswatch.right, colorswatch:last-child:not(.bottom) { border-top-right-radius: 5.5px; border-bottom-right-radius: 5.5px; }
 +
 +colorswatch.right > overlay, colorswatch:last-child:not(.bottom) > overlay { border-top-right-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +colorswatch.dark > overlay { color: white; }
 +
 +colorswatch.dark.activatable:hover > overlay { border-color: #686868; }
 +
 +colorswatch.light > overlay { color: black; }
 +
 +colorswatch.light.activatable:hover > overlay { border-color: #686868; }
 +
 +colorswatch:drop(active) { box-shadow: none; }
 +
 +colorswatch.light:drop(active) > overlay { border-color: #26a269; box-shadow: inset 0 0 0 2px #686868, inset 0 0 0 1px #26a269; }
 +
 +colorswatch.dark:drop(active) > overlay { border-color: #26a269; box-shadow: inset 0 0 0 2px #686868, inset 0 0 0 1px #26a269; }
 +
 +colorswatch > overlay { border: 1px solid #686868; }
 +
 +colorswatch.activatable:hover > overlay { box-shadow: inset 0 1px rgba(255, 255, 255, 0.4), inset 0 -1px rgba(0, 0, 0, 0.2); }
 +
 +colorswatch#add-color-button { border-radius: 5px 0 0 5px; }
 +
 +colorswatch#add-color-button:only-child { border-radius: 5px; }
 +
 +colorswatch#add-color-button > overlay { color: #f3f3f1; outline-color: rgba(255, 255, 255, 0.6); border-color: #686868; background-image: linear-gradient(to top, #323232 2px, #353535); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +colorswatch#add-color-button.activatable:hover > overlay { color: #f3f3f1; border-color: #686868; background-image: linear-gradient(to top, #2b2b2b 20%, #2d2d2d 90%); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +colorswatch:disabled { opacity: 0.5; }
 +
 +colorswatch:disabled > overlay { border-color: rgba(0, 0, 0, 0.6); box-shadow: none; }
 +
 +row:selected colorswatch { box-shadow: 0 0 0 2px #ffffff; }
 +
 +colorswatch#editor-color-sample { border-radius: 4px; }
 +
 +colorswatch#editor-color-sample > overlay { border-radius: 4.5px; }
 +
 +plane { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +plane { outline: 0 solid transparent; outline-offset: 6px; }
 +
 +plane:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.6); outline-width: 2px; outline-offset: 2px; }
 +
 +colorchooser .popover.osd { border-radius: 5px; }
 +
 +/******** Misc * */
 +.content-view { background-color: #1e1e1e; }
 +
 +.content-view:hover { -gtk-icon-filter: brightness(1.2); }
 +
 +.content-view .tile { margin: 2px; background-color: black; border-radius: 0; padding: 0; }
 +
 +.content-view .tile:active, .content-view .tile:selected { background-color: #0f3b71; }
 +
 +.content-view .tile:disabled { background-color: #2f2f2f; }
 +
 +.osd .scale-popup button.flat { border-style: none; border-radius: 5px; }
 +
 +.scale-popup button:hover { background-color: rgba(243, 243, 241, 0.1); border-radius: 5px; }
 +
 +/********************** Window Decorations * */
 +window { border-width: 0px; }
 +
 +window.csd { box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(0, 0, 0, 0.75); margin: 0px; border-radius: 8px 8px 0 0; }
 +
 +window.csd:backdrop { box-shadow: 0 3px 9px 1px transparent, 0 2px 6px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.75); transition: 200ms ease-out; }
 +
 +window.csd.popup { border-radius: 5px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.65); }
 +
 +window.csd.dialog.message { border-radius: 8px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.65); }
 +
 +window.solid-csd { margin: 0; padding: 4px; border: solid 1px #686868; border-radius: 0; box-shadow: inset 0 0 0 4px #686868, inset 0 0 0 3px #2d2d2d, inset 0 1px rgba(238, 238, 236, 0.07); }
 +
 +window.solid-csd:backdrop { box-shadow: inset 0 0 0 4px #686868, inset 0 0 0 3px #353535, inset 0 1px rgba(238, 238, 236, 0.07); }
 +
 +window.maximized, window.fullscreen { border-radius: 0; box-shadow: none; }
 +
 +window.tiled, window.tiled-top, window.tiled-left, window.tiled-right, window.tiled-bottom { border-radius: 0; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.75), 0 0 0 20px transparent; }
 +
 +window.tiled:backdrop, window.tiled-top:backdrop, window.tiled-left:backdrop, window.tiled-right:backdrop, window.tiled-bottom:backdrop { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.75), 0 0 0 20px transparent; }
 +
 +window.popup { box-shadow: none; }
 +
 +window.ssd { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.75); }
 +
 +tooltip.csd { border-radius: 5px; box-shadow: none; }
 +
 +.view:selected:focus, .view:selected, textview > text:selected:focus, textview > text:selected, iconview:selected:focus, iconview:selected, flowbox > flowboxchild:selected, gridview > child:selected, modelbutton.flat:selected, columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar > grid > label.day-number:selected { background-color: #0f3b71; }
 +
 +label:selected, .view:selected:focus, .view:selected, textview > text:selected:focus, textview > text:selected, iconview:selected:focus, iconview:selected, flowbox > flowboxchild:selected, gridview > child:selected, modelbutton.flat:selected, columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar > grid > label.day-number:selected { color: #ffffff; }
 +
 +label:disabled > selection, label:disabled:selected, .view:disabled:selected, textview > text:disabled:selected:focus, textview > text:disabled:selected, iconview:disabled:selected:focus, iconview:disabled:selected, flowbox > flowboxchild:disabled:selected, gridview > child:disabled:selected, modelbutton.flat:disabled:selected, columnview.view:disabled:selected, treeview.view:disabled:selected, row:disabled:selected, calendar > grid > label.day-number:disabled:selected { color: #879db8; }
 +
 +.monospace { font-family: monospace; }
 +
 +/********************** Touch Copy & Paste * */
 +cursor-handle { background-color: transparent; background-image: none; box-shadow: none; border-style: none; min-width: 20px; min-height: 24px; padding-left: 20px; padding-right: 20px; padding-top: 24px; padding-bottom: 24px; }
 +
 +cursor-handle.top:dir(ltr), cursor-handle.bottom:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-start-dark.png"), url("assets-hc/text-select-start-dark@2.png")); }
 +
 +cursor-handle.bottom:dir(ltr), cursor-handle.top:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-end-dark.png"), url("assets-hc/text-select-end-dark@2.png")); }
 +
 +cursor-handle.insertion-cursor:dir(ltr), cursor-handle.insertion-cursor:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-dark.png"), url("assets-hc/slider-horz-scale-has-marks-above-dark@2.png")); }
 +
 +cursor-handle.top:hover:dir(ltr), cursor-handle.bottom:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-start-hover-dark.png"), url("assets-hc/text-select-start-hover-dark@2.png")); }
 +
 +cursor-handle.bottom:hover:dir(ltr), cursor-handle.top:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-end-hover-dark.png"), url("assets-hc/text-select-end-hover-dark@2.png")); }
 +
 +cursor-handle.insertion-cursor:hover:dir(ltr), cursor-handle.insertion-cursor:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-hover-dark.png"), url("assets-hc/slider-horz-scale-has-marks-above-hover-dark@2.png")); }
 +
 +cursor-handle.top:active:dir(ltr), cursor-handle.bottom:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-start-active-dark.png"), url("assets-hc/text-select-start-active-dark@2.png")); }
 +
 +cursor-handle.bottom:active:dir(ltr), cursor-handle.top:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-end-active-dark.png"), url("assets-hc/text-select-end-active-dark@2.png")); }
 +
 +cursor-handle.insertion-cursor:active:dir(ltr), cursor-handle.insertion-cursor:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-active-dark.png"), url("assets-hc/slider-horz-scale-has-marks-above-active-dark@2.png")); }
 +
 +shortcuts-section { margin: 20px; }
 +
 +.shortcuts-search-results { margin: 20px; border-spacing: 24px; }
 +
 +shortcut { border-spacing: 6px; }
 +
 +shortcut > .keycap { min-width: 20px; min-height: 25px; margin-top: 2px; padding-bottom: 3px; padding-left: 6px; padding-right: 6px; color: #f3f3f1; background-color: #2d2d2d; border: 1px solid; border-color: #686868; border-radius: 5px; box-shadow: inset 0 -3px #505050; font-size: smaller; }
 +
 +:not(decoration):not(window):drop(active):focus, :not(decoration):not(window):drop(active) { border-color: #26a269; box-shadow: inset 0 0 0 1px #26a269; caret-color: #26a269; }
 +
 +stackswitcher > button.text-button { min-width: 100px; }
 +
 +stackswitcher.circular { border-spacing: 12px; }
 +
 +stackswitcher.circular > button.circular, stackswitcher.circular > button.text-button.circular { min-width: 32px; min-height: 32px; padding: 0; }
 +
 +/************* App Icons * */
 +/* Outline for low res icons */
 +.lowres-icon { -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.05), 1px 0 rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.3), -1px 0 rgba(0, 0, 0, 0.1); }
 +
 +/* Drapshadow for large icons */
 +.icon-dropshadow { -gtk-icon-shadow: 0 1px 12px rgba(0, 0, 0, 0.05), 0 -1px rgba(0, 0, 0, 0.05), 1px 0 rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.3), -1px 0 rgba(0, 0, 0, 0.1); }
 +
 +/********* Emoji * */
 +popover.emoji-picker > contents { padding: 0; }
 +
 +.emoji-searchbar { padding: 6px; border-spacing: 6px; border-bottom: 1px solid #686868; }
 +
 +.emoji-toolbar { padding: 6px; border-spacing: 6px; border-top: 1px solid #686868; }
 +
 +button.emoji-section { border-color: transparent; border-width: 3px; border-style: none none solid; border-radius: 0; padding: 3px 0 0; min-width: 32px; min-height: 28px; /* reset props inherited from the button style */ background: none; box-shadow: none; text-shadow: none; }
 +
 +button.emoji-section:hover { border-color: rgba(243, 243, 241, 0.1); }
 +
 +button.emoji-section:checked { border-color: #0f3b71; }
 +
 +popover.emoji-picker emoji { font-size: x-large; padding: 6px; border-radius: 6px; }
 +
 +popover.emoji-picker emoji:focus, popover.emoji-picker emoji:hover { background: #0f3b71; }
 +
 +emoji-completion-row > box { border-spacing: 10px; padding: 2px 10px; }
 +
 +emoji-completion-row:focus, emoji-completion-row:hover { background-color: #0f3b71; color: #ffffff; }
 +
 +emoji-completion-row emoji:focus, emoji-completion-row emoji:hover { background-color: #161616; }
 +
 +popover.entry-completion > contents { padding: 0; }
 +
 +statusbar { padding: 6px 10px 6px 10px; }
 +
 +menubutton > button > box { border-spacing: 6px; }
 +
 +menubutton arrow { min-height: 16px; min-width: 16px; }
 +
 +menubutton arrow.none { -gtk-icon-source: -gtk-icontheme("open-menu-symbolic"); }
 +
 +menubutton arrow.down { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +menubutton arrow.up { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +menubutton arrow.left { -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); }
 +
 +menubutton arrow.right { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
index 8931433284f38d141a191da053cb1a26f4524493,0000000000000000000000000000000000000000..d7a8e158a19df9be8b37dd410e8b5d5d03d972a7
mode 100644,000000..100644
--- /dev/null
@@@ -1,1879 -1,0 +1,1881 @@@
 +/* GTK NAMED COLORS ---------------- use responsibly! */
 +/*
 +widget text/foreground color */
 +@define-color theme_fg_color #272c2e;
 +/*
 +text color for entries, views and content in general */
 +@define-color theme_text_color black;
 +/*
 +widget base background color */
 +@define-color theme_bg_color #fdfdfc;
 +/*
 +text widgets and the like base background color */
 +@define-color theme_base_color #ffffff;
 +/*
 +base background color of selections */
 +@define-color theme_selected_bg_color #1b6acb;
 +/*
 +text/foreground color of selections */
 +@define-color theme_selected_fg_color #ffffff;
 +/*
 +base background color of insensitive widgets */
 +@define-color insensitive_bg_color #fefefd;
 +/*
 +text foreground color of insensitive widgets */
 +@define-color insensitive_fg_color #929495;
 +/*
 +insensitive text widgets and the like base background color */
 +@define-color insensitive_base_color #ffffff;
 +/*
 +widget text/foreground color on backdrop windows */
 +@define-color theme_unfocused_fg_color #929595;
 +/*
 +text color for entries, views and content in general on backdrop windows */
 +@define-color theme_unfocused_text_color black;
 +/*
 +widget base background color on backdrop windows */
 +@define-color theme_unfocused_bg_color #f6f5f4;
 +/*
 +text widgets and the like base background color on backdrop windows */
 +@define-color theme_unfocused_base_color #fcfcfc;
 +/*
 +base background color of selections on backdrop windows */
 +@define-color theme_unfocused_selected_bg_color #1b6acb;
 +/*
 +text/foreground color of selections on backdrop windows */
 +@define-color theme_unfocused_selected_fg_color #ffffff;
 +/*
 +insensitive color on backdrop windows*/
 +@define-color unfocused_insensitive_color #d4cfca;
 +/*
 +widgets main borders color */
 +@define-color borders #877b6e;
 +/*
 +widgets main borders color on backdrop windows */
 +@define-color unfocused_borders #d5d0cc;
 +/*
 +these are pretty self explicative */
 +@define-color warning_color #f57900;
 +@define-color error_color #cc0000;
 +@define-color success_color #33d17a;
 +/*
 +these colors are exported for the window manager and shouldn't be used in applications,
 +read if you used those and something break with a version upgrade you're on your own... */
 +@define-color wm_title shade(#272c2e, 1.8);
 +@define-color wm_unfocused_title #929595;
 +@define-color wm_highlight rgba(255, 255, 255, 0.8);
 +@define-color wm_borders_edge rgba(255, 255, 255, 0.8);
 +@define-color wm_bg_a shade(#fdfdfc, 1.2);
 +@define-color wm_bg_b #fdfdfc;
 +@define-color wm_shadow alpha(black, 0.35);
 +@define-color wm_border alpha(black, 0.18);
 +@define-color wm_button_hover_color_a shade(#fdfdfc, 1.3);
 +@define-color wm_button_hover_color_b #fdfdfc;
 +@define-color wm_button_active_color_a shade(#fdfdfc, 0.85);
 +@define-color wm_button_active_color_b shade(#fdfdfc, 0.89);
 +@define-color wm_button_active_color_c shade(#fdfdfc, 0.9);
 +/* content view background such as thumbnails view in Photos or Boxes */
 +@define-color content_view_bg #ffffff;
 +/* Very contrasty background for text views (@theme_text_color foreground) */
 +@define-color text_view_bg #ffffff;
 +/*************************** Check and Radio buttons * */
 +/*************** Base States * */
 +.background { color: #272c2e; background-color: #fdfdfc; }
 +
 +.background:backdrop { text-shadow: none; -gtk-icon-shadow: none; }
 +
 +dnd { color: #272c2e; }
 +
 +.normal-icons { -gtk-icon-size: 16px; }
 +
 +.large-icons { -gtk-icon-size: 32px; }
 +
 +image:disabled { -gtk-icon-filter: opacity(0.5); }
 +
 +.view, iconview, textview > text { color: black; background-color: #ffffff; }
 +
 +.view:disabled, iconview:disabled, textview > text:disabled { color: #929495; background-color: #fefefd; }
 +
 +.view:selected:focus, iconview:selected:focus, .view:selected, iconview:selected, textview > text:selected:focus, textview > text:selected { border-radius: 3px; }
 +
++textview > text { background-color: transparent; }
++
 +textview > text > selection { background-color: rgba(141, 141, 141, 0.5); }
 +
 +textview > text > selection:focus-within { background-color: rgba(53, 132, 228, 0.3); }
 +
 +textview:drop(active) { caret-color: #2ec27e; }
 +
 +textview > border { background-color: #fefefe; }
 +
 +iconview { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +iconview { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +iconview:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +iconview:drop(active) { box-shadow: none; }
 +
 +iconview > dndtarget:drop(active) { border-style: solid; border-width: 1px; border-color: #124787; }
 +
 +rubberband, .content-view > rubberband, columnview.view > rubberband, treeview.view > rubberband, gridview > rubberband, flowbox > rubberband { border: 1px solid #15539e; background-color: rgba(21, 83, 158, 0.2); }
 +
 +flowbox > flowboxchild { padding: 3px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +flowbox > flowboxchild { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +flowbox > flowboxchild:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +flowbox > flowboxchild:selected { outline-color: white; }
 +
 +gridview > child { padding: 3px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +gridview > child { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +gridview > child:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +gridview > child:selected { outline-color: white; }
 +
 +gridview > child box { border-spacing: 8px; margin: 12px; }
 +
 +coverflow cover { color: black; background-color: #ffffff; border: 1px solid black; }
 +
 +label { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +label { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +label:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +label > selection { background-color: rgba(141, 141, 141, 0.5); color: #ffffff; }
 +
 +label > selection:focus-within { background-color: rgba(53, 132, 228, 0.3); }
 +
 +label:disabled { color: #929495; }
 +
 +button label:disabled { color: inherit; }
 +
 +label.error { color: #cc0000; }
 +
 +label.error:disabled { color: rgba(204, 0, 0, 0.5); }
 +
 +.dim-label, .titlebar:not(headerbar) .subtitle, headerbar .subtitle, spinbutton.vertical > text > text > placeholder, spinbutton:not(.vertical) > text > placeholder, entry > text > placeholder, label.separator { opacity: 0.9; text-shadow: none; }
 +
 +window.assistant .sidebar { padding: 5px; border-top: 1px solid #877b6e; }
 +
 +window.assistant.csd .sidebar { border-top-style: none; }
 +
 +window.assistant .sidebar > label { padding: 6px 12px; }
 +
 +window.assistant .sidebar > label.highlight { background-color: #e6e3e0; border-radius: 5px; }
 +
 +window.aboutdialog image.large-icons { -gtk-icon-size: 128px; }
 +
 +.osd .scale-popup, .app-notification, .osd popover.background > arrow, .osd popover.background > contents, popover.background.touch-selection > arrow, popover.background.touch-selection > contents, popover.background.magnifier > arrow, popover.background.magnifier > contents, .osd { color: #eeeeec; border: none; background-color: rgba(53, 53, 53, 0.7); background-clip: padding-box; -gtk-icon-shadow: 0 1px black; }
 +
 +/********************* Spinner Animation * */
 +@keyframes spin { to { transform: rotate(1turn); } }
 +
 +spinner { background: none; opacity: 0; -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); }
 +
 +spinner:checked { opacity: 1; animation: spin 1s linear infinite; }
 +
 +spinner:checked:disabled { opacity: 0.5; }
 +
 +/********************** General Typography * */
 +.large-title { font-weight: 300; font-size: 24pt; }
 +
 +.title-1 { font-weight: 800; font-size: 20pt; }
 +
 +.title-2 { font-weight: 800; font-size: 15pt; }
 +
 +.title-3 { font-weight: 700; font-size: 15pt; }
 +
 +.title-4 { font-weight: 700; font-size: 13pt; }
 +
 +.heading { font-weight: 700; font-size: 11pt; }
 +
 +.body { font-weight: 400; font-size: 11pt; }
 +
 +.caption-heading { font-weight: 700; font-size: 9pt; }
 +
 +.caption { font-weight: 400; font-size: 9pt; }
 +
 +/**************** Text Entries * */
 +spinbutton.vertical > text, spinbutton:not(.vertical), entry { min-height: 32px; padding-left: 8px; padding-right: 8px; border: 1px solid; border-radius: 5px; border-spacing: 6px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: black; border-color: #877b6e; background-color: #ffffff; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text, spinbutton:not(.vertical), entry { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text:focus-within, spinbutton:focus-within:not(.vertical), entry:focus-within { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text > image.left, spinbutton:not(.vertical) > image.left, entry > image.left { margin-right: 6px; }
 +
 +spinbutton.vertical > text > image.right, spinbutton:not(.vertical) > image.right, entry > image.right { margin-left: 6px; }
 +
 +spinbutton.vertical > text > text > block-cursor, spinbutton:not(.vertical) > text > block-cursor, entry > text > block-cursor { color: #ffffff; background-color: black; }
 +
 +spinbutton.vertical > text.flat, spinbutton.flat:not(.vertical), entry.flat:focus-within, entry.flat:backdrop, entry.flat:disabled, entry.flat { min-height: 0; padding: 2px; background-color: transparent; border-color: transparent; border-radius: 0; }
 +
 +spinbutton.vertical > text:focus-within > placeholder, spinbutton:focus-within:not(.vertical) > placeholder, entry:focus-within > placeholder { opacity: 0; /* We hide placeholders on focus */ }
 +
 +spinbutton.vertical > text:disabled, spinbutton:disabled:not(.vertical), entry:disabled { color: #929495; border-color: #877b6e; background-color: #fefefd; }
 +
 +spinbutton.vertical > text > text > selection, spinbutton:not(.vertical) > text > selection, entry > text > selection { background-color: rgba(141, 141, 141, 0.5); color: transparent; }
 +
 +spinbutton.vertical > text > text > selection:focus-within, spinbutton:not(.vertical) > text > selection:focus-within, entry > text > selection:focus-within { background-color: rgba(53, 132, 228, 0.3); color: #272c2e; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { color: #cc0000; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text.error:focus-within, spinbutton.error:focus-within:not(.vertical), entry.error:focus-within { outline-color: rgba(204, 0, 0, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text.error > selection, spinbutton.error:not(.vertical) > selection, entry.error > selection { background-color: #cc0000; }
 +
 +spinbutton.vertical > text.warning, spinbutton.warning:not(.vertical), entry.warning { color: #f57900; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text.warning, spinbutton.warning:not(.vertical), entry.warning { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text.warning:focus-within, spinbutton.warning:focus-within:not(.vertical), entry.warning:focus-within { outline-color: rgba(245, 121, 0, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text.warning > selection, spinbutton.warning:not(.vertical) > selection, entry.warning > selection { background-color: #f57900; }
 +
 +spinbutton.vertical > text > image, spinbutton:not(.vertical) > image, entry > image { color: #525658; }
 +
 +spinbutton.vertical > text > image:hover, spinbutton:not(.vertical) > image:hover, entry > image:hover { color: #272c2e; }
 +
 +spinbutton.vertical > text > image:active, spinbutton:not(.vertical) > image:active, entry > image:active { color: #1b6acb; }
 +
 +spinbutton.vertical > text.password image.caps-lock-indicator, spinbutton.password:not(.vertical) image.caps-lock-indicator, entry.password image.caps-lock-indicator { color: #a7aaaa; }
 +
 +spinbutton.vertical > text:drop(active), spinbutton:drop(active):not(.vertical), entry:drop(active):focus-within, entry:drop(active) { border-color: #2ec27e; box-shadow: inset 0 0 0 1px #2ec27e; }
 +
 +.osd spinbutton.vertical > text, .osd spinbutton:not(.vertical), .osd entry { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.osd spinbutton.vertical > text:focus-within, .osd spinbutton:focus-within:not(.vertical), .osd entry:focus-within { color: white; border-color: #1b6acb; background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > text:disabled, .osd spinbutton:disabled:not(.vertical), .osd entry:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(71, 71, 71, 0.5); background-clip: padding-box; }
 +
 +spinbutton.vertical > text > progress, spinbutton:not(.vertical) > progress, entry > progress { margin-bottom: 2px; }
 +
 +spinbutton.vertical > text progress > trough > progress, spinbutton:not(.vertical) progress > trough > progress, entry progress > trough > progress { background-color: transparent; background-image: none; border-radius: 0; border-width: 0 0 2px; border-color: #1b6acb; border-style: solid; box-shadow: none; }
 +
 +spinbutton.vertical.linked:not(.vertical) > text:drop(active) + text, spinbutton.vertical.linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + text, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + spinbutton:not(.vertical), .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + spinbutton:not(.vertical), spinbutton.vertical.linked:not(.vertical) > text:drop(active) + button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + menubutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + menubutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + dropdown > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + dropdown > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + colorbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + colorbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + fontbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + fontbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + filechooserbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + filechooserbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + combobox > box > button.combo, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + combobox > box > button.combo, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + entry, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + entry, .linked:not(.vertical) > entry:drop(active) + button, .linked:not(.vertical) > entry:drop(active) + menubutton > button, .linked:not(.vertical) > entry:drop(active) + dropdown > button, .linked:not(.vertical) > entry:drop(active) + colorbutton > button, .linked:not(.vertical) > entry:drop(active) + fontbutton > button, .linked:not(.vertical) > entry:drop(active) + filechooserbutton > button, .linked:not(.vertical) > entry:drop(active) + combobox > box > button.combo, spinbutton.vertical.linked:not(.vertical) > entry:drop(active) + text, .linked:not(.vertical) > entry:drop(active) + spinbutton:not(.vertical), .linked:not(.vertical) > entry:drop(active) + entry { border-left-color: #2ec27e; }
 +
 +spinbutton.vertical.linked > text:not(:disabled) + entry:not(:disabled), .linked.vertical > spinbutton:not(:disabled):not(.vertical) + entry:not(:disabled), spinbutton.vertical.linked > text:not(:disabled) + text:not(:disabled), spinbutton.vertical.linked > spinbutton:not(:disabled):not(.vertical) + text:not(:disabled), spinbutton.vertical.linked > text:not(:disabled) + spinbutton:not(:disabled):not(.vertical), .linked.vertical > spinbutton:not(:disabled):not(.vertical) + spinbutton:not(:disabled):not(.vertical), .linked.vertical > entry:not(:disabled) + entry:not(:disabled), spinbutton.vertical.linked > entry:not(:disabled) + text:not(:disabled), .linked.vertical > entry:not(:disabled) + spinbutton:not(:disabled):not(.vertical) { border-top-color: #dbd7d4; }
 +
 +spinbutton.vertical.linked > text:disabled + text:disabled, spinbutton.vertical.linked > spinbutton:disabled:not(.vertical) + text:disabled, spinbutton.vertical.linked > text:disabled + spinbutton:disabled:not(.vertical), .linked.vertical > spinbutton:disabled:not(.vertical) + spinbutton:disabled:not(.vertical), spinbutton.vertical.linked > text:disabled + entry:disabled, .linked.vertical > spinbutton:disabled:not(.vertical) + entry:disabled, spinbutton.vertical.linked > entry:disabled + text:disabled, .linked.vertical > entry:disabled + spinbutton:disabled:not(.vertical), .linked.vertical > entry:disabled + entry:disabled { border-top-color: #dbd7d4; }
 +
 +spinbutton.vertical.linked > text + text:drop(active):not(:only-child), spinbutton.vertical.linked > spinbutton:not(.vertical) + text:drop(active):not(:only-child), spinbutton.vertical.linked > text + spinbutton:drop(active):not(:only-child):not(.vertical), .linked.vertical > spinbutton:not(.vertical) + spinbutton:drop(active):not(:only-child):not(.vertical), spinbutton.vertical.linked > text + entry:drop(active):not(:only-child), .linked.vertical > spinbutton:not(.vertical) + entry:drop(active):not(:only-child), spinbutton.vertical.linked > entry + text:drop(active):not(:only-child), .linked.vertical > entry + spinbutton:drop(active):not(:only-child):not(.vertical), .linked.vertical > entry + entry:drop(active):not(:only-child) { border-top-color: #2ec27e; }
 +
 +spinbutton.vertical.linked > text:drop(active):not(:only-child) + text, spinbutton.vertical.linked > spinbutton:drop(active):not(:only-child):not(.vertical) + text, spinbutton.vertical.linked > text:drop(active):not(:only-child) + spinbutton:not(.vertical), .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + spinbutton:not(.vertical), spinbutton.vertical.linked > text:drop(active):not(:only-child) + entry, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + entry, spinbutton.vertical.linked > text:drop(active):not(:only-child) + button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + menubutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + menubutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + dropdown > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + dropdown > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + colorbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + colorbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + fontbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + fontbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + filechooserbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + filechooserbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + combobox > box > button.combo, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + combobox > box > button.combo, spinbutton.vertical.linked > entry:drop(active):not(:only-child) + text, .linked.vertical > entry:drop(active):not(:only-child) + spinbutton:not(.vertical), .linked.vertical > entry:drop(active):not(:only-child) + entry, .linked.vertical > entry:drop(active):not(:only-child) + button, .linked.vertical > entry:drop(active):not(:only-child) + menubutton > button, .linked.vertical > entry:drop(active):not(:only-child) + dropdown > button, .linked.vertical > entry:drop(active):not(:only-child) + colorbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + fontbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + filechooserbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + combobox > box > button.combo { border-top-color: #2ec27e; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { color: #cc0000; }
 +
 +treeview entry:focus-within:dir(rtl), treeview entry:focus-within:dir(ltr) { background-color: #ffffff; transition-property: color, background; }
 +
 +treeview entry.flat, treeview entry { border-radius: 0; background-image: none; background-color: #ffffff; }
 +
 +treeview entry.flat:focus-within, treeview entry:focus-within { border-color: #1b6acb; }
 +
 +/******************* Editable Labels * */
 +editablelabel > stack > text { color: black; border-color: #877b6e; background-color: #ffffff; }
 +
 +/*********** Buttons * */
 +@keyframes needs_attention { from { background-image: radial-gradient(farthest-side, #1b6acb 0%, rgba(27, 106, 203, 0) 0%); }
 +  to { background-image: radial-gradient(farthest-side, #1b6acb 95%, rgba(27, 106, 203, 0)); } }
 +
 +notebook > header > tabs > arrow, windowcontrols button, button { min-height: 24px; min-width: 16px; padding: 4px 9px; border: 1px solid; border-radius: 5px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: #272c2e; outline-color: rgba(27, 106, 203, 0.8); border-color: #877b6e; background-image: linear-gradient(to top, #fafaf9 2px, white); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +notebook > header > tabs > arrow, windowcontrols button, button { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +notebook > header > tabs > arrow:focus:focus-visible, button:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +notebook > header > tabs > arrow:hover, button:hover { color: #272c2e; border-color: #877b6e; background-image: linear-gradient(to top, #dad6d2, #edebe9 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); -gtk-icon-filter: brightness(1.2); }
 +
 +notebook > header > tabs > arrow.keyboard-activating, notebook > header > tabs > arrow:active, notebook > header > tabs > arrow:checked, button.keyboard-activating, button:active, button:checked { color: #272c2e; border-color: #877b6e; background-image: image(#dfdbd8); box-shadow: none; transition-duration: 50ms; }
 +
 +notebook > header > tabs > arrow:checked:hover, button:checked:hover { color: #272c2e; border-color: #877b6e; background-image: image(#d6d1cd); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:checked:active, button:checked:active { color: #272c2e; border-color: #877b6e; background-image: image(#cdc7c1); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop, button.flat:backdrop, button:backdrop { color: #929595; border-color: #d5d0cc; background-image: image(#f6f5f4); box-shadow: none; transition: 200ms ease-out; }
 +
 +notebook > header > tabs > arrow:backdrop:not(:disabled), button.flat:backdrop:not(:disabled), button:backdrop:not(:disabled) { -gtk-icon-filter: none; }
 +
 +notebook > header > tabs > arrow:backdrop:active, notebook > header > tabs > arrow:backdrop:checked, button.flat:backdrop:active, button.flat:backdrop:checked, button:backdrop:active, button:backdrop:checked { color: #929595; border-color: #d5d0cc; background-image: image(#ebebeb); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop:disabled, button.flat:backdrop:disabled, button:backdrop:disabled { color: #d4cfca; border-color: #d5d0cc; background-image: image(#fefefd); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop:disabled:active, notebook > header > tabs > arrow:backdrop:disabled:checked, button.flat:backdrop:disabled:active, button.flat:backdrop:disabled:checked, button:backdrop:disabled:active, button:backdrop:disabled:checked { color: #d4cfca; border-color: #d5d0cc; background-image: image(#ebebeb); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:disabled, button:disabled { color: #929495; border-color: #9e958b; background-image: image(#fefefd); -gtk-icon-filter: opacity(0.5); }
 +
 +notebook > header > tabs > arrow:disabled:active, notebook > header > tabs > arrow:disabled:checked, button:disabled:active, button:disabled:checked { color: #929495; border-color: #9e958b; background-image: image(#ebebeb); box-shadow: none; }
 +
 +button.sidebar-button, notebook > header > tabs > arrow, windowcontrols button, .toolbar > button, .toolbar > :not(.linked) > button, .toolbar :not(.linked) > menubutton > button, .toolbar :not(.linked) > scalebutton > button, .toolbar :not(.linked) > dropdown > button, .toolbar :not(.linked) > colorbutton > button, .toolbar :not(.linked) > fontbutton > button, .toolbar :not(.linked) > appchooserbutton > button, .toolbar :not(.linked) > combobox > box > button, notebook > header > tabs > arrow.flat, button.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; transition: none; }
 +
 +button.sidebar-button:hover, notebook > header > tabs > arrow:hover, windowcontrols button:hover, .toolbar > button:hover, .toolbar > :not(.linked) > button:hover, .toolbar :not(.linked) > menubutton > button:hover, .toolbar :not(.linked) > scalebutton > button:hover, .toolbar :not(.linked) > dropdown > button:hover, .toolbar :not(.linked) > colorbutton > button:hover, .toolbar :not(.linked) > fontbutton > button:hover, .toolbar :not(.linked) > appchooserbutton > button:hover, .toolbar :not(.linked) > combobox > box > button:hover, button.flat:hover { border-color: transparent; background-image: none; box-shadow: none; background-color: #dfdbd8; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-duration: 500ms; }
 +
 +button.keyboard-activating.sidebar-button, notebook > header > tabs > arrow.keyboard-activating, windowcontrols button.keyboard-activating, .toolbar > button.keyboard-activating, .toolbar > :not(.linked) > button.keyboard-activating, .toolbar :not(.linked) > menubutton > button.keyboard-activating, .toolbar :not(.linked) > scalebutton > button.keyboard-activating, .toolbar :not(.linked) > dropdown > button.keyboard-activating, .toolbar :not(.linked) > colorbutton > button.keyboard-activating, .toolbar :not(.linked) > fontbutton > button.keyboard-activating, .toolbar :not(.linked) > appchooserbutton > button.keyboard-activating, .toolbar :not(.linked) > combobox > box > button.keyboard-activating, button.sidebar-button:active, notebook > header > tabs > arrow:active, windowcontrols button:active, .toolbar > button:active, .toolbar > :not(.linked) > button:active, .toolbar :not(.linked) > menubutton > button:active, .toolbar :not(.linked) > scalebutton > button:active, .toolbar :not(.linked) > dropdown > button:active, .toolbar :not(.linked) > colorbutton > button:active, .toolbar :not(.linked) > fontbutton > button:active, .toolbar :not(.linked) > appchooserbutton > button:active, .toolbar :not(.linked) > combobox > box > button:active, button.sidebar-button:checked, notebook > header > tabs > arrow:checked, windowcontrols button:checked, .toolbar > button:checked, .toolbar > :not(.linked) > button:checked, .toolbar :not(.linked) > menubutton > button:checked, .toolbar :not(.linked) > scalebutton > button:checked, .toolbar :not(.linked) > dropdown > button:checked, .toolbar :not(.linked) > colorbutton > button:checked, .toolbar :not(.linked) > fontbutton > button:checked, .toolbar :not(.linked) > appchooserbutton > button:checked, .toolbar :not(.linked) > combobox > box > button:checked, button.flat.keyboard-activating, button.flat:active, button.flat:checked { border-color: transparent; background-image: none; box-shadow: none; background-color: #d1ccc7; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +button.sidebar-button:backdrop, notebook > header > tabs > arrow:backdrop, windowcontrols button:backdrop, .toolbar > button:backdrop, .toolbar > :not(.linked) > button:backdrop, .toolbar :not(.linked) > menubutton > button:backdrop, .toolbar :not(.linked) > scalebutton > button:backdrop, .toolbar :not(.linked) > dropdown > button:backdrop, .toolbar :not(.linked) > colorbutton > button:backdrop, .toolbar :not(.linked) > fontbutton > button:backdrop, .toolbar :not(.linked) > appchooserbutton > button:backdrop, .toolbar :not(.linked) > combobox > box > button:backdrop, button.sidebar-button:disabled, notebook > header > tabs > arrow:disabled, windowcontrols button:disabled, .toolbar > button:disabled, .toolbar > :not(.linked) > button:disabled, .toolbar :not(.linked) > menubutton > button:disabled, .toolbar :not(.linked) > scalebutton > button:disabled, .toolbar :not(.linked) > dropdown > button:disabled, .toolbar :not(.linked) > colorbutton > button:disabled, .toolbar :not(.linked) > fontbutton > button:disabled, .toolbar :not(.linked) > appchooserbutton > button:disabled, .toolbar :not(.linked) > combobox > box > button:disabled, button.flat:backdrop, button.flat:disabled, button.flat:backdrop:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; }
 +
 +notebook > header > tabs > arrow.image-button, button.image-button { min-width: 24px; padding-left: 5px; padding-right: 5px; }
 +
 +notebook > header > tabs > arrow.text-button, button.text-button { padding-left: 16px; padding-right: 16px; }
 +
 +notebook > header > tabs > arrow.text-button.image-button, button.text-button.image-button { padding-left: 8px; padding-right: 8px; }
 +
 +notebook > header > tabs > arrow.text-button.image-button label, button.text-button.image-button label { padding-left: 8px; padding-right: 8px; }
 +
 +notebook > header > tabs > arrow.arrow-button, button.arrow-button { padding-left: 10px; padding-right: 10px; }
 +
 +notebook > header > tabs > arrow.arrow-button > box, windowcontrols button.arrow-button > box, button.arrow-button > box { border-spacing: 4px; }
 +
 +dropdown:drop(active) button.combo, combobox:drop(active) button.combo, notebook > header > tabs > arrow:drop(active), button:drop(active) { color: #2ec27e; border-color: #2ec27e; box-shadow: inset 0 0 0 1px #2ec27e; }
 +
 +row:selected button { border-color: #124787; }
 +
 +row:selected button.sidebar-button:not(:active):not(:checked):not(:hover):not(disabled), row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled) { color: #ffffff; border-color: transparent; }
 +
 +row:selected button.sidebar-button:not(:active):not(:checked):not(:hover):not(disabled):backdrop, row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled):backdrop { color: #fcfcfc; }
 +
 +button.osd { min-width: 26px; min-height: 32px; color: #eeeeec; border-radius: 5px; color: #eeeeec; outline-color: rgba(27, 106, 203, 0.8); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; border: none; box-shadow: none; }
 +
 +button.osd.image-button { min-width: 30px; }
 +
 +button.osd.image-button:only-child { margin: 4px; border-radius: 50%; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); }
 +
 +button.osd:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 27, 27, 0.7)); background-clip: padding-box; border: none; box-shadow: none; }
 +
 +button.osd:active, button.osd:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; border: none; box-shadow: none; }
 +
 +.app-notification button, popover.background.touch-selection button, popover.background.magnifier button, .osd button { color: #eeeeec; outline-color: rgba(27, 106, 203, 0.8); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button:hover, popover.background.touch-selection button:hover, popover.background.magnifier button:hover, .osd button:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 27, 27, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button:active, popover.background.touch-selection button:active, popover.background.magnifier button:active, .app-notification button:checked, popover.background.touch-selection button:checked, popover.background.magnifier button:checked, .osd button:active:backdrop, .osd button:active, .osd button:checked:backdrop, .osd button:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.app-notification button:disabled, popover.background.touch-selection button:disabled, popover.background.magnifier button:disabled, .osd button:disabled:backdrop, .osd button:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; }
 +
 +.app-notification button.flat, popover.background.touch-selection button.flat, popover.background.magnifier button.flat, .osd button.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.app-notification button.flat:hover, popover.background.touch-selection button.flat:hover, popover.background.magnifier button.flat:hover, .osd button.flat:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 27, 27, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button.flat:disabled, popover.background.touch-selection button.flat:disabled, popover.background.magnifier button.flat:disabled, .osd button.flat:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; background-image: none; border-color: transparent; box-shadow: none; }
 +
 +.app-notification button.flat:active, popover.background.touch-selection button.flat:active, popover.background.magnifier button.flat:active, .app-notification button.flat:checked, popover.background.touch-selection button.flat:checked, popover.background.magnifier button.flat:checked, .osd button.flat:active, .osd button.flat:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +button.suggested-action { color: white; outline-color: white; border-color: #0f3b71; background-image: linear-gradient(to top, #1a66c2 2px, #1b6acb); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +button.suggested-action { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +button.suggested-action:focus:focus-visible { outline-color: white; outline-width: 2px; outline-offset: -2px; }
 +
 +button.suggested-action.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #1b6acb; }
 +
 +button.suggested-action:hover { color: white; border-color: #124787; background-image: linear-gradient(to top, #114583, #1658a7 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +button.suggested-action:active, button.suggested-action:checked { color: white; border-color: #124787; background-image: image(#13498c); box-shadow: none; }
 +
 +button.suggested-action.flat:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: rgba(27, 106, 203, 0.8); }
 +
 +button.suggested-action:disabled { color: #929495; border-color: #9e958b; background-image: image(#fefefd); }
 +
 +button.suggested-action:disabled:active, button.suggested-action:disabled:checked { color: #aac5e4; border-color: #124787; background-image: image(#2b6dbc); box-shadow: none; }
 +
 +.osd button.suggested-action { color: #eeeeec; outline-color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 106, 203, 0.5)); background-clip: padding-box; }
 +
 +.osd button.suggested-action:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 106, 203, 0.7)); background-clip: padding-box; }
 +
 +.osd button.suggested-action:active:backdrop, .osd button.suggested-action:active, .osd button.suggested-action:checked:backdrop, .osd button.suggested-action:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(#1b6acb); background-clip: padding-box; box-shadow: none; }
 +
 +.osd button.suggested-action:disabled:backdrop, .osd button.suggested-action:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; }
 +
 +button.destructive-action { color: white; outline-color: white; border-color: #851015; background-image: linear-gradient(to top, #d71a23 2px, #e01b24); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +button.destructive-action { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +button.destructive-action:focus:focus-visible { outline-color: white; outline-width: 2px; outline-offset: -2px; }
 +
 +button.destructive-action.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #e01b24; }
 +
 +button.destructive-action:hover { color: white; border-color: #9c1319; background-image: linear-gradient(to top, #971218, #bc171e 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +button.destructive-action:active, button.destructive-action:checked { color: white; border-color: #9c1319; background-image: image(#a0131a); box-shadow: none; }
 +
 +button.destructive-action.flat:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: rgba(224, 27, 36, 0.8); }
 +
 +button.destructive-action:disabled { color: #929495; border-color: #9e958b; background-image: image(#fefefd); }
 +
 +button.destructive-action:disabled:active, button.destructive-action:disabled:checked { color: #f1a5a8; border-color: #9c1319; background-image: image(#dc1d27); box-shadow: none; }
 +
 +.osd button.destructive-action { color: #eeeeec; outline-color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(224, 27, 36, 0.5)); background-clip: padding-box; }
 +
 +.osd button.destructive-action:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(224, 27, 36, 0.7)); background-clip: padding-box; }
 +
 +.osd button.destructive-action:active:backdrop, .osd button.destructive-action:active, .osd button.destructive-action:checked:backdrop, .osd button.destructive-action:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(#e01b24); background-clip: padding-box; box-shadow: none; }
 +
 +.osd button.destructive-action:disabled:backdrop, .osd button.destructive-action:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; }
 +
 +stackswitcher > button > label { padding: 0 6px; margin: 0 -6px; }
 +
 +stackswitcher > button > image { padding: 3px 6px; margin: -3px -6px; }
 +
 +button.font separator { background-color: transparent; }
 +
 +button.font > box { border-spacing: 6px; }
 +
 +button.font > box > box > label { font-weight: bold; }
 +
 +menubutton.circular button, button.circular { min-width: 32px; min-height: 32px; padding: 0; border-radius: 9999px; }
 +
 +menubutton.circular button label, button.circular label { padding: 0; }
 +
 +stacksidebar row.needs-attention > label, stackswitcher > button.needs-attention > label, stackswitcher > button.needs-attention > image { animation: needs_attention 150ms ease-in; background-image: radial-gradient(farthest-side, #1b6acb 96%, rgba(27, 106, 203, 0)); background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; background-position: right 3px, right 4px; }
 +
 +stacksidebar row.needs-attention > label:backdrop, stackswitcher > button.needs-attention > label:backdrop, stackswitcher > button.needs-attention > image:backdrop { background-size: 6px 6px, 0 0; }
 +
 +stacksidebar row.needs-attention > label:dir(rtl), stackswitcher > button.needs-attention > label:dir(rtl), stackswitcher > button.needs-attention > image:dir(rtl) { background-position: left 3px, left 4px; }
 +
 +.linked:not(.vertical) > filechooserbutton > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > filechooserbutton > combobox:dir(ltr):not(:first-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(ltr):not(:first-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(ltr):not(:first-child) > box > button.combo, dropdown.linked button:nth-child(2):dir(ltr), combobox.linked button:nth-child(2):dir(ltr), .linked:not(.vertical) > menubutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > dropdown:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > colorbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > fontbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > filechooserbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > menubutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > dropdown:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > colorbutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > fontbutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > filechooserbutton:dir(ltr):not(:first-child) > button, spinbutton.vertical.linked:not(.vertical) > text:dir(rtl):not(:last-child), .linked:not(.vertical) > spinbutton:dir(rtl):not(:last-child):not(.vertical), .linked:not(.vertical) > entry:dir(rtl):not(:last-child), .linked:not(.vertical) > button:dir(rtl):not(:last-child), spinbutton.vertical.linked:not(.vertical) > text:dir(ltr):not(:first-child), .linked:not(.vertical) > spinbutton:dir(ltr):not(:first-child):not(.vertical), .linked:not(.vertical) > entry:dir(ltr):not(:first-child), .linked:not(.vertical) > button:dir(ltr):not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
 +
 +.linked:not(.vertical) > filechooserbutton > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > filechooserbutton > combobox:dir(ltr):not(:last-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(ltr):not(:last-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(ltr):not(:last-child) > box > button.combo, dropdown.linked button:nth-child(2):dir(rtl), combobox.linked button:nth-child(2):dir(rtl), .linked:not(.vertical) > menubutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > dropdown:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > colorbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > fontbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > filechooserbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > menubutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > dropdown:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > colorbutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > fontbutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > filechooserbutton:dir(ltr):not(:last-child) > button, spinbutton.vertical.linked:not(.vertical) > text:dir(rtl):not(:first-child), .linked:not(.vertical) > spinbutton:dir(rtl):not(:first-child):not(.vertical), .linked:not(.vertical) > entry:dir(rtl):not(:first-child), .linked:not(.vertical) > button:dir(rtl):not(:first-child), spinbutton.vertical.linked:not(.vertical) > text:dir(ltr):not(:last-child), .linked:not(.vertical) > spinbutton:dir(ltr):not(:last-child):not(.vertical), .linked:not(.vertical) > entry:dir(ltr):not(:last-child), .linked:not(.vertical) > button:dir(ltr):not(:last-child) { border-right-style: none; border-top-right-radius: 0; border-bottom-right-radius: 0; }
 +
 +.linked.vertical > filechooserbutton > combobox:not(:first-child) > box > button.combo, .linked.vertical > appchooserbutton > combobox:not(:first-child) > box > button.combo, .linked.vertical > combobox:not(:first-child) > box > button.combo, .linked.vertical > menubutton:not(:first-child) > button, .linked.vertical > dropdown:not(:first-child) > button, .linked.vertical > colorbutton:not(:first-child) > button, .linked.vertical > fontbutton:not(:first-child) > button, .linked.vertical > filechooserbutton:not(:first-child) > button, spinbutton.vertical.linked > text:not(:first-child), .linked.vertical > spinbutton:not(:first-child):not(.vertical), .linked.vertical > entry:not(:first-child), .linked.vertical > button:not(:first-child) { border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +.linked.vertical > filechooserbutton > combobox:not(:last-child) > box > button.combo, .linked.vertical > appchooserbutton > combobox:not(:last-child) > box > button.combo, .linked.vertical > combobox:not(:last-child) > box > button.combo, .linked.vertical > menubutton:not(:last-child) > button, .linked.vertical > dropdown:not(:last-child) > button, .linked.vertical > colorbutton:not(:last-child) > button, .linked.vertical > fontbutton:not(:last-child) > button, .linked.vertical > filechooserbutton:not(:last-child) > button, spinbutton.vertical.linked > text:not(:last-child), .linked.vertical > spinbutton:not(:last-child):not(.vertical), .linked.vertical > entry:not(:last-child), .linked.vertical > button:not(:last-child) { border-bottom-style: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
 +
 +.scale-popup button:hover, button.link, button.link:hover, button.link:active, button.link:checked, popover.menu box.circular-buttons button.circular.image-button.model, list > row button.image-button:not(.flat), modelbutton.flat { background-color: transparent; background-image: none; border-color: transparent; box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); text-shadow: none; -gtk-icon-shadow: none; }
 +
 +/* menu buttons */
 +modelbutton.flat { min-height: 26px; padding-left: 5px; padding-right: 5px; border-radius: 5px; }
 +
 +modelbutton.flat:hover { background-color: #e6e3e0; }
 +
 +modelbutton.flat:disabled { color: #929495; }
 +
 +modelbutton.flat arrow { background: none; min-width: 16px; min-height: 16px; opacity: 0.3; }
 +
 +modelbutton.flat arrow:hover { background: none; }
 +
 +modelbutton.flat arrow.left { -gtk-icon-source: -gtk-icontheme("go-previous-symbolic"); }
 +
 +modelbutton.flat arrow.right { -gtk-icon-source: -gtk-icontheme("go-next-symbolic"); }
 +
 +/* oldstyle toolbar buttons */
 +.toolbar > button, .toolbar > :not(.linked) > button, .toolbar :not(.linked) > menubutton > button, .toolbar :not(.linked) > scalebutton > button, .toolbar :not(.linked) > dropdown > button, .toolbar :not(.linked) > colorbutton > button, .toolbar :not(.linked) > fontbutton > button, .toolbar :not(.linked) > appchooserbutton > button, .toolbar :not(.linked) > combobox > box > button { margin: 1px; }
 +
 +button.color { padding: 4px; }
 +
 +button.color > colorswatch:only-child { box-shadow: 0 1px rgba(0, 0, 0, 0.1); }
 +
 +button.color > colorswatch:only-child, button.color > colorswatch:only-child > overlay { border-radius: 0; }
 +
 +.osd button.color > colorswatch:only-child { box-shadow: none; }
 +
 +.osd button.color:disabled colorswatch:only-child, .osd button.color:active colorswatch:only-child, .osd button.color:checked colorswatch:only-child, button.color:disabled colorswatch:only-child, button.color:active colorswatch:only-child, button.color:checked colorswatch:only-child { box-shadow: none; }
 +
 +/* list buttons */
 +/* tone down as per new designs, see issue #1473 */
 +popover.menu box.circular-buttons button.circular.image-button.model, list > row button.image-button:not(.flat) { border: 1px solid rgba(135, 123, 110, 0.5); }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:hover, list > row button.image-button:not(.flat):hover { color: #272c2e; border-color: #877b6e; background-image: linear-gradient(to top, #dad6d2, #edebe9 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:active, popover.menu box.circular-buttons button.circular.image-button.model:checked, list > row button.image-button:not(.flat):active, list > row button.image-button:not(.flat):checked { color: #272c2e; border-color: #877b6e; background-image: image(#dfdbd8); box-shadow: none; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model, list > row button.image-button.suggested-action:not(.flat) { color: white; outline-color: white; border-color: #0f3b71; background-image: linear-gradient(to top, #1a66c2 2px, #1b6acb); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model, list > row button.image-button.suggested-action:not(.flat) { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model:focus:focus-visible, list > row button.image-button.suggested-action:not(.flat):focus:focus-visible { outline-color: white; outline-width: 2px; outline-offset: -2px; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model, list > row button.image-button.destructive-action:not(.flat) { color: white; outline-color: white; border-color: #851015; background-image: linear-gradient(to top, #d71a23 2px, #e01b24); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model, list > row button.image-button.destructive-action:not(.flat) { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model:focus:focus-visible, list > row button.image-button.destructive-action:not(.flat):focus:focus-visible { outline-color: white; outline-width: 2px; outline-offset: -2px; }
 +
 +/********* Links * */
 +button.link, link { color: #1b6acb; text-decoration: underline; }
 +
 +button.link:visited, link:visited { color: #15539e; }
 +
 +*:selected button.link:visited, *:selected link:visited { color: #a1bad8; }
 +
 +button.link:hover, link:hover { color: #3584e4; }
 +
 +*:selected button.link:hover, *:selected link:hover { color: #ebf3fc; }
 +
 +button.link:active, link:active { color: #1b6acb; }
 +
 +*:selected button.link:active, *:selected link:active { color: #d1e1f5; }
 +
 +button.link:disabled, link:disabled { color: rgba(115, 115, 115, 0.8); }
 +
 +button.link:selected, *:selected button.link, link:selected, *:selected link { color: #d1e1f5; }
 +
 +link { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +link { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +link:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +button.link, button.link:hover, button.link:active, button.link:checked { text-shadow: none; }
 +
 +button.link > label { text-decoration: underline; }
 +
 +/***************** GtkSpinButton * */
 +spinbutton { font-feature-settings: "tnum"; }
 +
 +spinbutton:not(.vertical) { padding: 0; border-spacing: 0; /* :not here just to bump specificity above that of the list button styling */ }
 +
 +.osd spinbutton:not(.vertical) > text, spinbutton:not(.vertical) > text { min-width: 28px; margin: 0; background: none; background-color: transparent; border: none; border-radius: 0; box-shadow: none; padding: 6px; }
 +
 +.osd spinbutton:not(.vertical) > text:backdrop:disabled, spinbutton:not(.vertical) > text:backdrop:disabled { background-color: transparent; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat), spinbutton:not(.vertical) > button.image-button.down:not(.flat) { min-height: 16px; margin: 0; padding-bottom: 0; padding-top: 0; color: #3d4143; background-image: none; border-style: none none none solid; border-color: rgba(135, 123, 110, 0.3); border-radius: 0; box-shadow: none; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl), spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl) { border-style: none solid none none; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):hover, spinbutton:not(.vertical) > button.image-button.down:not(.flat):hover { color: #272c2e; background-color: #f1f0ee; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):disabled, spinbutton:not(.vertical) > button.image-button.down:not(.flat):disabled { color: rgba(146, 148, 149, 0.3); background-color: transparent; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):active, spinbutton:not(.vertical) > button.image-button.down:not(.flat):active { background-color: rgba(0, 0, 0, 0.1); box-shadow: inset 0 2px 3px -1px rgba(0, 0, 0, 0.2); }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(ltr):last-child, spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(ltr):last-child { border-radius: 0 5px 5px 0; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl):first-child, spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl):first-child { border-radius: 5px 0 0 5px; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat), .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat) { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #eeeeec; border-style: none none none solid; border-color: rgba(0, 0, 0, 0.4); border-radius: 0; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl), .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl) { border-style: none solid none none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):hover, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):hover { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #eeeeec; border-color: rgba(0, 0, 0, 0.5); background-color: rgba(27, 27, 27, 0.7); -gtk-icon-shadow: 0 1px black; box-shadow: none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):disabled, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #919190; border-color: rgba(0, 0, 0, 0.5); -gtk-icon-shadow: none; box-shadow: none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(ltr):last-child, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(ltr):last-child { border-radius: 0 5px 5px 0; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl):first-child, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl):first-child { border-radius: 5px 0 0 5px; }
 +
 +spinbutton.vertical:disabled { color: #929495; }
 +
 +spinbutton.vertical:drop(active) { border-color: transparent; box-shadow: none; }
 +
 +spinbutton.vertical > text { min-height: 32px; min-width: 32px; padding: 0; border-radius: 0; }
 +
 +spinbutton.vertical > text > selection { background-color: rgba(141, 141, 141, 0.5); color: transparent; }
 +
 +spinbutton.vertical > text > selection:focus-within { background-color: rgba(53, 132, 228, 0.3); color: #ffffff; }
 +
 +spinbutton.vertical > text > block-cursor { color: #ffffff; background-color: black; }
 +
 +spinbutton.vertical > button { min-height: 32px; min-width: 32px; padding: 0; }
 +
 +spinbutton.vertical > button.up { border-bottom-style: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
 +
 +spinbutton.vertical > button.down { border-top-style: none; border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +.osd spinbutton.vertical > button:first-child { color: #eeeeec; outline-color: rgba(27, 106, 203, 0.8); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > button:first-child:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 27, 27, 0.7)); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > button:first-child:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.osd spinbutton.vertical > button:first-child:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; }
 +
 +treeview spinbutton:not(.vertical) { min-height: 0; border-style: none; border-radius: 0; }
 +
 +treeview spinbutton:not(.vertical) > text { min-height: 0; padding: 1px 2px; }
 +
 +/************** ComboBoxes * */
 +dropdown > popover.menu.background > contents { padding: 0; }
 +
 +dropdown > button > box { border-spacing: 6px; }
 +
 +dropdown > button > box > stack > row.activatable:hover { background: none; box-shadow: none; }
 +
 +dropdown arrow, combobox arrow { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); min-height: 16px; min-width: 16px; }
 +
 +dropdown > popover.menu > contents modelbutton, combobox > popover.menu > contents modelbutton { padding-left: 9px; padding-right: 9px; }
 +
 +dropdown:drop(active), combobox:drop(active) { box-shadow: none; }
 +
 +dropdown popover, combobox popover { margin-top: 6px; padding: 0; }
 +
 +dropdown popover listview, combobox popover listview { margin: 8px 0; }
 +
 +dropdown popover listview > row.activatable, combobox popover listview > row.activatable { padding: 8px; }
 +
 +dropdown popover listview > row.activatable:selected, dropdown popover listview > row.activatable:selected:hover, combobox popover listview > row.activatable:selected, combobox popover listview > row.activatable:selected:hover { outline-color: white; color: black; background-color: #e6e3e0; box-shadow: none; }
 +
 +dropdown popover .dropdown-searchbar, combobox popover .dropdown-searchbar { padding: 6px; border-bottom: 1px solid #877b6e; }
 +
 +/************ Toolbars * */
 +searchbar > revealer > box, .toolbar { padding: 4px; border-spacing: 4px; background-color: #fdfdfc; }
 +
 +.osd .toolbar { background-color: transparent; }
 +
 +.toolbar.osd { padding: 13px; border: none; border-radius: 5px; background-color: rgba(53, 53, 53, 0.7); }
 +
 +.toolbar.osd.left, .toolbar.osd.right, .toolbar.osd.top, .toolbar.osd.bottom { border-radius: 0; }
 +
 +.toolbar.horizontal > separator { margin: 4px 0; }
 +
 +.toolbar.vertical > separator { margin: 0 4px; }
 +
 +searchbar > revealer > box { padding: 6px; border-spacing: 6px; border-width: 0 0 1px; }
 +
 +searchbar > revealer > box { border-style: solid; border-color: #877b6e; background-color: #d9d6d2; }
 +
 +searchbar > revealer > box:backdrop { border-color: #d5d0cc; background-color: #eae8e6; box-shadow: none; transition: 200ms ease-out; }
 +
 +/************** GtkInfoBar * */
 +infobar > revealer > box { padding: 8px; border-spacing: 12px; }
 +
 +infobar.action:hover > revealer > box { background-color: white; }
 +
 +infobar.info > revealer > box, infobar.question > revealer > box, infobar.warning > revealer > box, infobar.error > revealer > box { border-bottom: 1px solid #93877b; background-color: white; }
 +
 +infobar .close, searchbar .close { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; min-width: 16px; min-height: 16px; padding: 4px; border-radius: 50%; }
 +
 +infobar .close:hover, searchbar .close:hover { color: #272c2e; border-color: #877b6e; background-image: linear-gradient(to top, #dad6d2, #edebe9 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +/***************** Title buttons * */
 +windowcontrols { border-spacing: 6px; }
 +
 +windowcontrols.start:not(.empty):dir(ltr), windowcontrols.end:not(.empty):dir(rtl) { margin-right: 7px; }
 +
 +windowcontrols.start:not(.empty):dir(rtl), windowcontrols.end:not(.empty):dir(ltr) { margin-left: 7px; }
 +
 +windowcontrols button { border-radius: 9999px; padding: 6px; margin: 0 2px; min-width: 0; min-height: 0; }
 +
 +windowcontrols button:hover { border-color: transparent; background-image: none; box-shadow: none; background-color: #d1ccc7; }
 +
 +windowcontrols button:active, windowcontrols button:checked { border-color: transparent; background-image: none; box-shadow: none; background-color: #bab3ab; }
 +
 +/*************** Header bars * */
 +.titlebar:not(headerbar), headerbar { padding: 0 6px; min-height: 46px; border-width: 0 0 1px; border-style: solid; border-color: #6e645a; border-radius: 0; background: #e6e3e0 linear-gradient(to top, #e1dedb, #e8e6e3); /* Darken switchbuttons for headerbars. issue #1588 */ }
 +
 +.titlebar:backdrop:not(headerbar), headerbar:backdrop { border-color: #d5d0cc; background-color: #fdfdfc; background-image: none; transition: 200ms ease-out; }
 +
 +.titlebar:not(headerbar) .title, headerbar .title { padding-left: 12px; padding-right: 12px; font-weight: bold; }
 +
 +.titlebar:not(headerbar) .subtitle, headerbar .subtitle { font-size: smaller; padding-left: 12px; padding-right: 12px; }
 +
 +.titlebar:not(headerbar) stackswitcher > button:checked, .titlebar:not(headerbar) button.toggle:checked, headerbar stackswitcher > button:checked, headerbar button.toggle:checked { background: image(#d6d1cd); border-color: #7e7367; border-top-color: #70665c; }
 +
 +.titlebar:not(headerbar) stackswitcher > button:checked:backdrop, .titlebar:not(headerbar) button.toggle:checked:backdrop, headerbar stackswitcher > button:checked:backdrop, headerbar button.toggle:checked:backdrop { color: #929595; border-color: #d5d0cc; background-image: image(#ebebeb); box-shadow: none; }
 +
 +.tiled .titlebar:not(headerbar), .tiled-top .titlebar:not(headerbar), .tiled-left .titlebar:not(headerbar), .tiled-right .titlebar:not(headerbar), .tiled-bottom .titlebar:not(headerbar), .maximized .titlebar:not(headerbar), .fullscreen .titlebar:not(headerbar), .tiled headerbar, .tiled-top headerbar, .tiled-left headerbar, .tiled-right headerbar, .tiled-bottom headerbar, .maximized headerbar, .fullscreen headerbar { border-radius: 0; }
 +
 +.default-decoration.titlebar:not(headerbar), headerbar.default-decoration { min-height: 28px; padding: 4px; }
 +
 +.default-decoration.titlebar:not(headerbar) windowcontrols button, .default-decoration.titlebar:not(headerbar) windowcontrols menubutton, headerbar.default-decoration windowcontrols button, headerbar.default-decoration windowcontrols menubutton { min-height: 26px; min-width: 26px; margin: 0; padding: 0; }
 +
 +.default-decoration.titlebar:not(headerbar) windowcontrols menubutton button, headerbar.default-decoration windowcontrols menubutton button { min-height: 20px; min-width: 20px; margin: 0; padding: 4px; }
 +
 +.solid-csd .titlebar:dir(rtl):not(headerbar), .solid-csd .titlebar:dir(ltr):not(headerbar), .solid-csd headerbar:backdrop:dir(rtl), .solid-csd headerbar:backdrop:dir(ltr), .solid-csd headerbar:dir(rtl), .solid-csd headerbar:dir(ltr) { margin-left: -1px; margin-right: -1px; margin-top: -1px; border-radius: 0; box-shadow: none; }
 +
 +headerbar > windowhandle > box, headerbar > windowhandle > box > box.start, headerbar > windowhandle > box > box.end { border-spacing: 6px; }
 +
 +headerbar entry, headerbar spinbutton, headerbar separator:not(.sidebar), headerbar button, headerbar menubutton { margin-top: 6px; margin-bottom: 6px; }
 +
 +headerbar menubutton > button { margin-top: 0px; margin-bottom: 0px; }
 +
 +headerbar switch { margin-top: 10px; margin-bottom: 10px; }
 +
 +window.csd > .titlebar:not(headerbar) { padding: 0; background-color: transparent; background-image: none; border-style: none; border-color: transparent; }
 +
 +.titlebar:not(headerbar) separator { background-color: #877b6e; }
 +
 +window.devel headerbar.titlebar { background: #fdfdfc cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, linear-gradient(to right, transparent 65%, rgba(27, 106, 203, 0.2)), linear-gradient(to top, #dfdcd8, #e6e3e0 3px, #f4f2f1); }
 +
 +window.devel headerbar.titlebar:backdrop { background: #fdfdfc cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, image(#fdfdfc); /* background-color would flash */ }
 +
 +/************ Pathbars * */
 +pathbar > button.text-button, pathbar > button.image-button, pathbar > button { padding-left: 4px; padding-right: 4px; }
 +
 +pathbar > button.text-button.image-button label { padding-left: 0; padding-right: 0; }
 +
 +pathbar > button.text-button.image-button label:last-child, pathbar > button label:last-child { padding-right: 8px; }
 +
 +pathbar > button.text-button.image-button label:first-child, pathbar > button label:first-child { padding-left: 8px; }
 +
 +pathbar > button image { padding-left: 4px; padding-right: 4px; }
 +
 +pathbar > button.slider-button { padding-left: 0; padding-right: 0; }
 +
 +/************** Tree Views * */
 +columnview.view, treeview.view { border-left-color: #9f958b; border-top-color: #9f958b; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +columnview.view, treeview.view { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +columnview.view:focus:focus-visible, treeview.view:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected { border-radius: 0; outline-color: white; }
 +
 +columnview.view:disabled, treeview.view:disabled { color: #929495; }
 +
 +columnview.view:disabled:selected, treeview.view:disabled:selected { color: #76a6e0; }
 +
 +columnview.view:disabled:selected:backdrop, treeview.view:disabled:selected:backdrop { color: #5f96da; }
 +
 +columnview.view.separator, treeview.view.separator { min-height: 2px; color: #9f958b; }
 +
 +columnview.view:backdrop, treeview.view:backdrop { border-left-color: #ddd9d6; border-top: #ddd9d6; }
 +
 +columnview.view:drop(active), treeview.view:drop(active) { box-shadow: none; }
 +
 +columnview.view > dndtarget:drop(active), treeview.view > dndtarget:drop(active) { border-style: solid none; border-width: 1px; border-color: #124787; }
 +
 +columnview.view > dndtarget.after:drop(active), treeview.view > dndtarget.after:drop(active) { border-top-style: none; }
 +
 +columnview.view > dndtarget.before:drop(active), treeview.view > dndtarget.before:drop(active) { border-bottom-style: none; }
 +
 +columnview.view.expander, treeview.view.expander { min-width: 16px; min-height: 16px; -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); color: #4d4d4d; }
 +
 +columnview.view.expander:dir(rtl), treeview.view.expander:dir(rtl) { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); }
 +
 +columnview.view.expander:hover, treeview.view.expander:hover { color: black; }
 +
 +columnview.view.expander:selected, treeview.view.expander:selected { color: #bbd2ef; }
 +
 +columnview.view.expander:selected:hover, treeview.view.expander:selected:hover { color: #ffffff; }
 +
 +columnview.view.expander:checked, treeview.view.expander:checked { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +columnview.view.progressbar, treeview.view.progressbar { color: #ffffff; background-color: #1b6acb; background-image: image(#1b6acb); box-shadow: none; }
 +
 +columnview.view.progressbar:selected:focus, columnview.view.progressbar:selected, treeview.view.progressbar:selected:focus, treeview.view.progressbar:selected { color: #1b6acb; background-image: image(#ffffff); }
 +
 +columnview.view.progressbar:selected:focus:backdrop, columnview.view.progressbar:selected:backdrop, treeview.view.progressbar:selected:focus:backdrop, treeview.view.progressbar:selected:backdrop { color: #1b6acb; background-color: #fcfcfc; }
 +
 +columnview.view.trough, treeview.view.trough { background-color: rgba(39, 44, 46, 0.1); }
 +
 +columnview.view.trough:selected:focus, columnview.view.trough:selected, treeview.view.trough:selected:focus, treeview.view.trough:selected { background-color: rgba(255, 255, 255, 0.3); }
 +
 +columnview.view > header > button, treeview.view > header > button { color: #939696; background-color: #ffffff; font-weight: bold; text-shadow: none; box-shadow: none; }
 +
 +columnview.view > header > button:hover, treeview.view > header > button:hover { color: #5d6162; box-shadow: none; transition: none; }
 +
 +columnview.view > header > button:active, treeview.view > header > button:active { color: #272c2e; transition: none; }
 +
 +columnview.view > header > button sort-indicator, treeview.view > header > button sort-indicator { min-height: 16px; min-width: 16px; }
 +
 +columnview.view > header > button sort-indicator.ascending, treeview.view > header > button sort-indicator.ascending { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +columnview.view > header > button sort-indicator.descending, treeview.view > header > button sort-indicator.descending { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +columnview.view button.dnd:active, columnview.view button.dnd:selected, columnview.view button.dnd:hover, columnview.view button.dnd, columnview.view header.button.dnd:active, columnview.view header.button.dnd:selected, columnview.view header.button.dnd:hover, columnview.view header.button.dnd, treeview.view button.dnd:active, treeview.view button.dnd:selected, treeview.view button.dnd:hover, treeview.view button.dnd, treeview.view header.button.dnd:active, treeview.view header.button.dnd:selected, treeview.view header.button.dnd:hover, treeview.view header.button.dnd { padding: 0 6px; color: #ffffff; background-image: none; background-color: #1b6acb; border-style: none; border-radius: 0; box-shadow: inset 0 0 0 1px #ffffff; text-shadow: none; transition: none; }
 +
 +columnview.view acceleditor > label, treeview.view acceleditor > label { background-color: #1b6acb; }
 +
 +columnview.view > header > button, treeview.view > header > button, columnview.view > header > button:hover, treeview.view > header > button:hover, columnview.view > header > button:active, treeview.view > header > button:active { padding: 0 6px; background-image: none; border-style: none none solid solid; border-color: #9f958b; border-radius: 0; text-shadow: none; }
 +
 +columnview.view > header > button:disabled, treeview.view > header > button:disabled { border-color: #fdfdfc; background-image: none; }
 +
 +columnview.view > header > button:last-child, treeview.view > header > button:last-child { border-right-style: none; }
 +
 +/*************** Popovers   * */
 +popover.background { background-color: transparent; font: initial; }
 +
 +popover.background > arrow, popover.background > contents { background-color: #ffffff; background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.23); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }
 +
 +popover.background:backdrop { background-color: transparent; }
 +
 +popover.background > contents { padding: 8px; border-radius: 9px; }
 +
 +popover.background > contents > list, popover.background > contents > .view, popover.background > contents > iconview, popover.background > contents > .toolbar { border-style: none; background-color: transparent; }
 +
 +popover.background > contents separator { background-color: #aaa299; margin: 3px; }
 +
 +popover.background > contents list separator { margin: 0; }
 +
 +.osd popover.background, popover.background.touch-selection, popover.background.magnifier { background-color: transparent; }
 +
 +.osd popover.background > arrow, .osd popover.background > contents, popover.background.touch-selection > arrow, popover.background.touch-selection > contents, popover.background.magnifier > arrow, popover.background.magnifier > contents { border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: none; }
 +
 +magnifier { background-color: #ffffff; }
 +
 +/********************** Popover Base Menus * */
 +popover.menu { padding: 0; }
 +
 +popover.menu box.inline-buttons { padding: 0 12px; }
 +
 +popover.menu box.inline-buttons button.image-button.model { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; min-height: 30px; min-width: 30px; padding: 0; border: none; outline: none; transition: none; }
 +
 +popover.menu box.inline-buttons button.image-button.model:selected { background: image(#e6e3e0); }
 +
 +popover.menu box.circular-buttons { padding: 12px 12px 6px; }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model { padding: 11px; }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:focus { background-color: #e6e3e0; border-color: #e6e3e0; }
 +
 +popover.menu > arrow, popover.menu.background > contents { background-color: #ffffff; padding: 5px; }
 +
 +popover.menu.background separator { margin: 6px 0; }
 +
 +popover.menu accelerator { color: alpha(currentColor,0.55); }
 +
 +popover.menu accelerator:dir(ltr) { margin-left: 12px; }
 +
 +popover.menu accelerator:dir(rtl) { margin-right: 12px; }
 +
 +popover.menu check, popover.menu radio { transform: scale(0.8); border-width: 1.2px; border-color: transparent; box-shadow: none; background-image: image(transparent); color: black; }
 +
 +popover.menu check:hover, popover.menu radio:hover { transform: scale(0.8); border-width: 1.2px; color: black; box-shadow: none; background-image: image(transparent); }
 +
 +popover.menu check:active, popover.menu radio:active { transform: scale(0.8); border-width: 1.2px; color: black; box-shadow: none; background-image: image(transparent); }
 +
 +popover.menu radio { border-color: #877b6e; }
 +
 +popover.menu radio:active { border-color: rgba(135, 123, 110, 0.5); }
 +
 +popover.menu arrow.left, popover.menu radio.left, popover.menu check.left { margin-left: -2px; margin-right: 6px; }
 +
 +popover.menu arrow.right, popover.menu radio.right, popover.menu check.right { margin-left: 6px; margin-right: -2px; }
 +
 +popover.menu modelbutton { min-height: 30px; min-width: 40px; padding: 0 12px; border-radius: 5px; }
 +
 +popover.menu modelbutton:selected { color: black; background-color: #e6e3e0; }
 +
 +popover.menu modelbutton:selected:active { background-color: #ddd9d5; }
 +
 +popover.menu label.title { font-weight: bold; padding: 4px 32px; }
 +
 +menubar { padding: 0px; box-shadow: inset 0 -1px rgba(0, 0, 0, 0.1); }
 +
 +menubar > item { min-height: 16px; padding: 4px 8px; }
 +
 +menubar > item:selected { box-shadow: inset 0 -3px #1b6acb; color: #1b6acb; }
 +
 +menubar > item:disabled { color: #929495; box-shadow: none; }
 +
 +menubar > item popover.menu.background > contents { padding: 5px; }
 +
 +menubar > item popover.menu popover.menu { padding: 0 0 4px 0; }
 +
 +menubar > item popover.menu.background popover.menu.background > contents { margin: 0; border-radius: 9px; }
 +
 +/************* Notebooks * */
 +notebook { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +notebook > header > tabs > tab:checked { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +notebook:focus:focus-visible > header > tabs > tab:checked { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +notebook > header { padding: 1px; border-color: #877b6e; border-width: 1px; background-color: #e1dedb; }
 +
 +notebook > header > tabs { margin: -1px; }
 +
 +notebook > header.top { border-bottom-style: solid; }
 +
 +notebook > header.top > tabs { margin-bottom: -2px; }
 +
 +notebook > header.top > tabs > tab:hover { box-shadow: inset 0 -4px #877b6e; }
 +
 +notebook > header.top > tabs > tab:checked { box-shadow: inset 0 -4px #1b6acb; }
 +
 +notebook > header.bottom { border-top-style: solid; }
 +
 +notebook > header.bottom > tabs { margin-top: -2px; }
 +
 +notebook > header.bottom > tabs > tab:hover { box-shadow: inset 0 4px #877b6e; }
 +
 +notebook > header.bottom > tabs > tab:checked { box-shadow: inset 0 4px #1b6acb; }
 +
 +notebook > header.left { border-right-style: solid; }
 +
 +notebook > header.left > tabs { margin-right: -2px; }
 +
 +notebook > header.left > tabs > tab:hover { box-shadow: inset -4px 0 #877b6e; }
 +
 +notebook > header.left > tabs > tab:checked { box-shadow: inset -4px 0 #1b6acb; }
 +
 +notebook > header.right { border-left-style: solid; }
 +
 +notebook > header.right > tabs { margin-left: -2px; }
 +
 +notebook > header.right > tabs > tab:hover { box-shadow: inset 4px 0 #877b6e; }
 +
 +notebook > header.right > tabs > tab:checked { box-shadow: inset 4px 0 #1b6acb; }
 +
 +notebook > header.top > tabs > arrow { border-top-style: none; }
 +
 +notebook > header.bottom > tabs > arrow { border-bottom-style: none; }
 +
 +notebook > header.top > tabs > arrow, notebook > header.bottom > tabs > arrow { margin-left: -5px; margin-right: -5px; padding-left: 4px; padding-right: 4px; }
 +
 +notebook > header.top > tabs > arrow.down, notebook > header.bottom > tabs > arrow.down { -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); }
 +
 +notebook > header.top > tabs > arrow.up, notebook > header.bottom > tabs > arrow.up { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
 +
 +notebook > header.left > tabs > arrow { border-left-style: none; }
 +
 +notebook > header.right > tabs > arrow { border-right-style: none; }
 +
 +notebook > header.left > tabs > arrow, notebook > header.right > tabs > arrow { margin-top: -5px; margin-bottom: -5px; padding-top: 4px; padding-bottom: 4px; }
 +
 +notebook > header.left > tabs > arrow.down, notebook > header.right > tabs > arrow.down { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +notebook > header.left > tabs > arrow.up, notebook > header.right > tabs > arrow.up { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +notebook > header > tabs > arrow { min-height: 16px; min-width: 16px; border-radius: 0; }
 +
 +notebook > header > tabs > arrow:hover:not(:active):not(:backdrop) { background-clip: padding-box; background-image: none; background-color: rgba(255, 255, 255, 0.3); border-color: transparent; box-shadow: none; }
 +
 +notebook > header > tabs > arrow:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; }
 +
 +notebook > header > tabs > tab { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); min-height: 30px; min-width: 30px; padding: 3px 12px; color: #272c2e; font-weight: normal; border-width: 1px; border-color: transparent; }
 +
 +notebook > header > tabs > tab:hover { color: #272c2e; background-color: #d8d4d0; }
 +
 +notebook > header > tabs > tab.reorderable-page:hover { border-color: rgba(135, 123, 110, 0.3); background-color: rgba(253, 253, 252, 0.2); }
 +
 +notebook > header > tabs > tab:not(:checked) { outline-color: transparent; }
 +
 +notebook > header > tabs > tab:checked { color: #272c2e; }
 +
 +notebook > header > tabs > tab.reorderable-page:checked { border-color: rgba(135, 123, 110, 0.5); background-color: rgba(253, 253, 252, 0.5); }
 +
 +notebook > header > tabs > tab.reorderable-page:checked:hover { background-color: rgba(253, 253, 252, 0.7); }
 +
 +notebook > header > tabs > tab button.flat { color: alpha(currentColor,0.3); padding: 0; margin-top: 4px; margin-bottom: 4px; min-width: 20px; min-height: 20px; }
 +
 +notebook > header > tabs > tab button.flat:hover { color: currentColor; }
 +
 +notebook > header > tabs > tab button.flat:last-child { margin-left: 4px; margin-right: -4px; }
 +
 +notebook > header > tabs > tab button.flat:first-child { margin-left: -4px; margin-right: 4px; }
 +
 +notebook > header.top > tabs, notebook > header.bottom > tabs { padding-left: 4px; padding-right: 4px; }
 +
 +notebook > header.top > tabs:not(:only-child), notebook > header.bottom > tabs:not(:only-child) { margin-left: 3px; margin-right: 3px; }
 +
 +notebook > header.top > tabs:not(:only-child):first-child, notebook > header.bottom > tabs:not(:only-child):first-child { margin-left: -1px; }
 +
 +notebook > header.top > tabs:not(:only-child):last-child, notebook > header.bottom > tabs:not(:only-child):last-child { margin-right: -1px; }
 +
 +notebook > header.top > tabs > tab, notebook > header.bottom > tabs > tab { margin-left: 4px; margin-right: 4px; }
 +
 +notebook > header.top > tabs > tab.reorderable-page, notebook > header.bottom > tabs > tab.reorderable-page { border-style: none solid; }
 +
 +notebook > header.left > tabs, notebook > header.right > tabs { padding-top: 4px; padding-bottom: 4px; }
 +
 +notebook > header.left > tabs:not(:only-child), notebook > header.right > tabs:not(:only-child) { margin-top: 3px; margin-bottom: 3px; }
 +
 +notebook > header.left > tabs:not(:only-child):first-child, notebook > header.right > tabs:not(:only-child):first-child { margin-top: -1px; }
 +
 +notebook > header.left > tabs:not(:only-child):last-child, notebook > header.right > tabs:not(:only-child):last-child { margin-bottom: -1px; }
 +
 +notebook > header.left > tabs > tab, notebook > header.right > tabs > tab { margin-top: 4px; margin-bottom: 4px; }
 +
 +notebook > header.left > tabs > tab.reorderable-page, notebook > header.right > tabs > tab.reorderable-page { border-style: solid none; }
 +
 +notebook > header.top > tabs > tab { padding-bottom: 4px; }
 +
 +notebook > header.bottom > tabs > tab { padding-top: 4px; }
 +
 +notebook > stack:not(:only-child) { background-color: #ffffff; }
 +
 +/************** Scrollbars * */
 +scrollbar { background-color: #cecece; transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scrollbar.top { border-bottom: 1px solid #877b6e; }
 +
 +scrollbar.bottom { border-top: 1px solid #877b6e; }
 +
 +scrollbar.left { border-right: 1px solid #877b6e; }
 +
 +scrollbar.right { border-left: 1px solid #877b6e; }
 +
 +scrollbar > range > trough > slider { min-width: 8px; min-height: 8px; margin: -1px; border: 4px solid transparent; border-radius: 10px; background-clip: padding-box; background-color: #7e8182; transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scrollbar > range > trough > slider:hover { background-color: #565b5c; }
 +
 +scrollbar > range > trough > slider:hover:active { background-color: #1b6acb; }
 +
 +scrollbar > range > trough > slider:disabled { background-color: transparent; }
 +
 +scrollbar > range.fine-tune > trough > slider { transition: none; min-width: 6px; min-height: 6px; }
 +
 +scrollbar > range.fine-tune.horizontal > trough > slider { border-width: 5px 4px; }
 +
 +scrollbar > range.fine-tune.vertical > trough > slider { border-width: 4px 5px; }
 +
 +scrollbar.overlay-indicator:not(.dragging):not(.hovering) { border-color: transparent; opacity: 0.4; background-color: transparent; }
 +
 +scrollbar.overlay-indicator:not(.dragging):not(.hovering) > range > trough > slider { margin: 0; min-width: 3px; min-height: 3px; background-color: #272c2e; border: 1px solid white; }
 +
 +scrollbar.overlay-indicator.horizontal:not(.dragging):not(.hovering) > range > trough > slider { margin: 0 2px; min-width: 40px; }
 +
 +scrollbar.overlay-indicator.vertical:not(.dragging):not(.hovering) > range > trough > slider { margin: 2px 0; min-height: 40px; }
 +
 +scrollbar.overlay-indicator.dragging, scrollbar.overlay-indicator.hovering { opacity: 0.8; }
 +
 +scrollbar.horizontal > range > trough > slider { min-width: 40px; }
 +
 +scrollbar.vertical > range > trough > slider { min-height: 40px; }
 +
 +treeview ~ scrollbar.vertical { border-top: 1px solid #877b6e; margin-top: -1px; }
 +
 +/********** Switch * */
 +switch { font-weight: bold; font-size: smaller; border: 1px solid #877b6e; border-radius: 14px; color: #272c2e; background-color: #e1dedb; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; /* only show i / o for the accessible theme */ }
 +
 +switch { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +switch:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: 0; }
 +
 +headerbar switch { background-color: #cecac5; }
 +
 +switch:checked { color: #ffffff; border-color: #185fb4; background-color: #3584e4; }
 +
 +switch:disabled { color: #929495; border-color: #877b6e; background-color: #fefefd; text-shadow: none; }
 +
 +switch > slider { color: #272c2e; outline-color: rgba(27, 106, 203, 0.8); border-color: #877b6e; background-image: linear-gradient(to top, #fafaf9 2px, white); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); margin: -1px; min-width: 24px; min-height: 24px; border: 1px solid; border-color: #877b6e; border-radius: 50%; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +switch > image { color: transparent; }
 +
 +switch:hover > slider { color: #272c2e; border-color: #877b6e; background-image: linear-gradient(to top, #dad6d2, #edebe9 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +switch:checked > slider { border: 1px solid #185fb4; }
 +
 +switch:disabled > slider { color: #929495; border-color: #9e958b; background-image: image(#fefefd); }
 +
 +row:selected switch { outline-color: white; box-shadow: none; border-color: #185fb4; }
 +
 +row:selected switch > slider:checked, row:selected switch > slider { border-color: #185fb4; }
 +
 +/************************* Check and Radio items * */
 +.view.content-view.check:not(list), iconview.content-view.check:not(list), .content-view .tile check:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:hover:not(list), iconview.content-view.check:hover:not(list), .content-view .tile check:hover:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:active:not(list), iconview.content-view.check:active:not(list), .content-view .tile check:active:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:backdrop:not(list), iconview.content-view.check:backdrop:not(list), .content-view .tile check:backdrop:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #8d8d8d; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:not(list), iconview.content-view.check:checked:not(list), .content-view .tile check:checked:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:hover:not(list), iconview.content-view.check:checked:hover:not(list), .content-view .tile check:checked:hover:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:active:not(list), iconview.content-view.check:checked:active:not(list), .content-view .tile check:checked:active:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:backdrop:checked:not(list), iconview.content-view.check:backdrop:checked:not(list), .content-view .tile check:backdrop:checked:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: rgba(238, 238, 236, 0.8); background-color: #8d8d8d; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +checkbutton { border-spacing: 4px; border-radius: 5px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +checkbutton { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +checkbutton:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +checkbutton.text-button { padding: 4px; }
 +
 +check, radio { min-height: 14px; min-width: 14px; border: 1px solid; -gtk-icon-source: none; }
 +
 +check, radio { background-clip: padding-box; background-image: linear-gradient(to bottom, white 20%, white 90%); border-color: #6e645a; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:hover, radio:hover { background-image: image(#f2f2f2); }
 +
 +check:active, radio:active { box-shadow: inset 0 1px rgba(0, 0, 0, 0.2); background-image: image(#d9d9d9); }
 +
 +check:disabled, radio:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +check:checked, radio:checked { background-clip: border-box; background-image: linear-gradient(to bottom, #4b92e7 20%, #3584e4 90%); border-color: #1b6acb; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:checked:hover, radio:checked:hover { background-image: linear-gradient(to bottom, #5d9de9 10%, #478fe6 90%); }
 +
 +check:checked:active, radio:checked:active { box-shadow: inset 0 1px rgba(0, 0, 0, 0.2); background-image: image(#1f76e1); }
 +
 +check:checked:disabled, radio:checked:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +check:indeterminate, radio:indeterminate { background-clip: border-box; background-image: linear-gradient(to bottom, #4b92e7 20%, #3584e4 90%); border-color: #1b6acb; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:indeterminate:hover, radio:indeterminate:hover { background-image: linear-gradient(to bottom, #5d9de9 10%, #478fe6 90%); }
 +
 +check:indeterminate:active, radio:indeterminate:active { box-shadow: inset 0 1px rgba(0, 0, 0, 0.2); background-image: image(#1f76e1); }
 +
 +check:indeterminate:disabled, radio:indeterminate:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +row:selected check, row:selected radio { border-color: #1b6acb; }
 +
 +.osd check, .osd radio { color: #eeeeec; outline-color: rgba(27, 106, 203, 0.8); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; }
 +
 +.osd check:hover, .osd radio:hover { color: #eeeeec; outline-color: rgba(27, 106, 203, 0.8); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; }
 +
 +.osd check:active, .osd radio:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.osd check:disabled, .osd radio:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; }
 +
 +check { border-radius: 3px; -gtk-icon-size: 14px; }
 +
 +check:checked { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets-hc/check-symbolic.symbolic.png")), -gtk-recolor(url("assets-hc/check@2-symbolic.symbolic.png"))); }
 +
 +check:indeterminate { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets-hc/dash-symbolic.symbolic.png")), -gtk-recolor(url("assets-hc/dash@2-symbolic.symbolic.png"))); }
 +
 +treeview.view radio:selected:focus, treeview.view radio:selected, radio { border-radius: 100%; -gtk-icon-size: 14px; }
 +
 +treeview.view radio:checked:selected, radio:checked { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets-hc/bullet-symbolic.symbolic.png")), -gtk-recolor(url("assets-hc/bullet@2-symbolic.symbolic.png"))); }
 +
 +treeview.view radio:indeterminate:selected, radio:indeterminate { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets-hc/dash-symbolic.symbolic.png")), -gtk-recolor(url("assets-hc/dash@2-symbolic.symbolic.png"))); }
 +
 +treeview.view check:selected:focus, treeview.view check:selected, treeview.view radio:selected:focus, treeview.view radio:selected { color: #ffffff; border-color: #124787; }
 +
 +/************ GtkScale * */
 +progressbar > trough, scale > trough > fill, scale > trough { border: 1px solid #e1dedb; border-radius: 3px; background-color: #e1dedb; }
 +
 +headerbar progressbar > trough, headerbar scale > trough > fill, headerbar scale > trough { background-color: #cecac5; }
 +
 +progressbar > trough:disabled, scale > trough > fill:disabled, scale > trough:disabled { background-color: #fefefd; border-color: #9e958b; }
 +
 +row:selected progressbar > trough, row:selected scale > trough > fill, row:selected scale > trough { outline-color: white; border-color: #124787; }
 +
 +.osd progressbar > trough, .osd scale > trough > fill, .osd scale > trough { border-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.5); }
 +
 +.osd progressbar > trough:disabled, .osd scale > trough > fill:disabled, .osd scale > trough:disabled { background-color: rgba(71, 71, 71, 0.5); }
 +
 +progressbar > trough > progress, scale > trough > highlight { border: 1px solid #1b6acb; border-radius: 3px; background-color: #1b6acb; }
 +
 +progressbar > trough > progress:disabled, scale > trough > highlight:disabled { background-color: transparent; border-color: transparent; }
 +
 +row:selected progressbar > trough > progress, row:selected scale > trough > highlight { border-color: #124787; }
 +
 +.osd progressbar > trough > progress, .osd scale > trough > highlight { border-color: rgba(0, 0, 0, 0.7); }
 +
 +.osd progressbar > trough > progress:disabled, .osd scale > trough > highlight:disabled { border-color: transparent; }
 +
 +scale { min-height: 10px; min-width: 10px; padding: 12px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +scale > trough { outline: 0 solid transparent; outline-offset: 16px; }
 +
 +scale:focus:focus-visible > trough { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: 10px; }
 +
 +scale > trough { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scale > trough > fill, scale > trough > highlight { margin: -1px; }
 +
 +scale > trough > slider { min-height: 18px; min-width: 18px; margin: -9px; }
 +
 +scale.fine-tune.horizontal { padding-top: 9px; padding-bottom: 9px; min-height: 16px; }
 +
 +scale.fine-tune.vertical { padding-left: 9px; padding-right: 9px; min-width: 16px; }
 +
 +scale.fine-tune > trough > slider { margin: -6px; }
 +
 +scale.fine-tune > trough > fill, scale.fine-tune > trough > highlight, scale.fine-tune > trough { border-radius: 5px; }
 +
 +scale > trough > fill:disabled { border-color: transparent; background-color: transparent; }
 +
 +.osd scale > trough > fill { background-color: rgba(91, 91, 90, 0.775); }
 +
 +.osd scale > trough > fill:disabled { border-color: transparent; background-color: transparent; }
 +
 +scale > trough > slider { color: #272c2e; outline-color: rgba(27, 106, 203, 0.8); border-color: #877b6e; background-image: linear-gradient(to top, #fafaf9 2px, white); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); border-width: 1px; border-style: solid; border-radius: 100%; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: background, border, box-shadow; }
 +
 +scale > trough > slider:hover { color: #272c2e; border-color: #877b6e; background-image: linear-gradient(to top, #dad6d2, #edebe9 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +scale > trough > slider:active { border-color: #124787; }
 +
 +scale > trough > slider:disabled { color: #929495; border-color: #9e958b; background-image: image(#fefefd); }
 +
 +row:selected scale > trough > slider:disabled, row:selected scale > trough > slider { border-color: #124787; }
 +
 +.osd scale > trough > slider { color: #eeeeec; outline-color: rgba(27, 106, 203, 0.8); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; border-color: rgba(0, 0, 0, 0.7); background-color: #353535; }
 +
 +.osd scale > trough > slider:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 27, 27, 0.7)); background-clip: padding-box; background-color: #353535; }
 +
 +.osd scale > trough > slider:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; background-color: #353535; }
 +
 +.osd scale > trough > slider:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; background-color: #353535; }
 +
 +scale > value { color: alpha(currentColor,0.55); font-feature-settings: "tnum"; }
 +
 +scale.horizontal > marks { color: alpha(currentColor,0.55); }
 +
 +scale.horizontal > marks.top { margin-bottom: 6px; }
 +
 +scale.horizontal > marks.bottom { margin-top: 6px; }
 +
 +scale.horizontal > marks indicator { background-color: currentColor; min-height: 6px; min-width: 1px; }
 +
 +scale.horizontal > value.left { margin-right: 9px; }
 +
 +scale.horizontal > value.right { margin-left: 9px; }
 +
 +scale.horizontal.fine-tune > marks.top { margin-top: 3px; }
 +
 +scale.horizontal.fine-tune > marks.bottom { margin-bottom: 3px; }
 +
 +scale.horizontal.fine-tune > marks indicator { min-height: 3px; }
 +
 +scale.vertical > marks { color: alpha(currentColor,0.55); }
 +
 +scale.vertical > marks.top { margin-right: 6px; }
 +
 +scale.vertical > marks.bottom { margin-left: 6px; }
 +
 +scale.vertical > marks indicator { background-color: currentColor; min-height: 1px; min-width: 6px; }
 +
 +scale.vertical > value.top { margin-bottom: 9px; }
 +
 +scale.vertical > value.bottom { margin-top: 9px; }
 +
 +scale.vertical.fine-tune > marks.top { margin-left: 3px; }
 +
 +scale.vertical.fine-tune > marks.bottom { margin-right: 3px; }
 +
 +scale.vertical.fine-tune > marks indicator { min-height: 3px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above.png"), url("assets-hc/slider-horz-scale-has-marks-above@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-hover.png"), url("assets-hc/slider-horz-scale-has-marks-above-hover@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-active.png"), url("assets-hc/slider-horz-scale-has-marks-above-active@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-insensitive.png"), url("assets-hc/slider-horz-scale-has-marks-above-insensitive@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-below.png"), url("assets-hc/slider-horz-scale-has-marks-below@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-below-hover.png"), url("assets-hc/slider-horz-scale-has-marks-below-hover@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-below-active.png"), url("assets-hc/slider-horz-scale-has-marks-below-active@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-below-insensitive.png"), url("assets-hc/slider-horz-scale-has-marks-below-insensitive@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-above.png"), url("assets-hc/slider-vert-scale-has-marks-above@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-above-hover.png"), url("assets-hc/slider-vert-scale-has-marks-above-hover@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-above-active.png"), url("assets-hc/slider-vert-scale-has-marks-above-active@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-above-insensitive.png"), url("assets-hc/slider-vert-scale-has-marks-above-insensitive@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-below.png"), url("assets-hc/slider-vert-scale-has-marks-below@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-below-hover.png"), url("assets-hc/slider-vert-scale-has-marks-below-hover@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-below-active.png"), url("assets-hc/slider-vert-scale-has-marks-below-active@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets-hc/slider-vert-scale-has-marks-below-insensitive.png"), url("assets-hc/slider-vert-scale-has-marks-below-insensitive@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.color { min-height: 0; min-width: 0; }
 +
 +scale.color > trough { background-image: image(#877b6e); background-repeat: no-repeat; }
 +
 +scale.color.horizontal { padding: 0 0 15px 0; }
 +
 +scale.color.horizontal > trough { padding-bottom: 4px; background-position: 0 -3px; border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +scale.color.horizontal > trough > slider:dir(ltr):hover, scale.color.horizontal > trough > slider:dir(ltr):backdrop, scale.color.horizontal > trough > slider:dir(ltr):disabled, scale.color.horizontal > trough > slider:dir(ltr):backdrop:disabled, scale.color.horizontal > trough > slider:dir(ltr), scale.color.horizontal > trough > slider:dir(rtl):hover, scale.color.horizontal > trough > slider:dir(rtl):backdrop, scale.color.horizontal > trough > slider:dir(rtl):disabled, scale.color.horizontal > trough > slider:dir(rtl):backdrop:disabled, scale.color.horizontal > trough > slider:dir(rtl) { margin-bottom: -15px; margin-top: 6px; }
 +
 +scale.color.vertical:dir(ltr) { padding: 0 0 0 15px; }
 +
 +scale.color.vertical:dir(ltr) > trough { padding-left: 4px; background-position: 3px 0; border-bottom-right-radius: 0; border-top-right-radius: 0; }
 +
 +scale.color.vertical:dir(ltr) > trough > slider:hover, scale.color.vertical:dir(ltr) > trough > slider:backdrop, scale.color.vertical:dir(ltr) > trough > slider:disabled, scale.color.vertical:dir(ltr) > trough > slider:backdrop:disabled, scale.color.vertical:dir(ltr) > trough > slider { margin-left: -15px; margin-right: 6px; }
 +
 +scale.color.vertical:dir(rtl) { padding: 0 15px 0 0; }
 +
 +scale.color.vertical:dir(rtl) > trough { padding-right: 4px; background-position: -3px 0; border-bottom-left-radius: 0; border-top-left-radius: 0; }
 +
 +scale.color.vertical:dir(rtl) > trough > slider:hover, scale.color.vertical:dir(rtl) > trough > slider:backdrop, scale.color.vertical:dir(rtl) > trough > slider:disabled, scale.color.vertical:dir(rtl) > trough > slider:backdrop:disabled, scale.color.vertical:dir(rtl) > trough > slider { margin-right: -15px; margin-left: 6px; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr), scale.color.fine-tune.horizontal:dir(rtl) { padding: 0 0 12px 0; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr) > trough, scale.color.fine-tune.horizontal:dir(rtl) > trough { padding-bottom: 7px; background-position: 0 -6px; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr) > trough > slider, scale.color.fine-tune.horizontal:dir(rtl) > trough > slider { margin-bottom: -15px; margin-top: 6px; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) { padding: 0 0 0 12px; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) > trough { padding-left: 7px; background-position: 6px 0; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) > trough > slider { margin-left: -15px; margin-right: 6px; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) { padding: 0 12px 0 0; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) > trough { padding-right: 7px; background-position: -6px 0; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) > trough > slider { margin-right: -15px; margin-left: 6px; }
 +
 +/***************** Progress bars * */
 +progressbar { font-size: smaller; color: rgba(39, 44, 46, 0.4); font-feature-settings: "tnum"; }
 +
 +progressbar.horizontal > trough { min-width: 150px; }
 +
 +progressbar.horizontal > trough, progressbar.horizontal > trough > progress { min-height: 2px; }
 +
 +progressbar.vertical > trough { min-height: 80px; }
 +
 +progressbar.vertical > trough, progressbar.vertical > trough > progress { min-width: 2px; }
 +
 +progressbar.horizontal > trough > progress { margin: 0 -1px; }
 +
 +progressbar.vertical > trough > progress { margin: -1px 0; }
 +
 +progressbar > trough > progress { /* share most of scales' */ /* override insensitive that is specific to progress */ border-radius: 1.5px; }
 +
 +progressbar > trough > progress:disabled { background-color: #929495; border-color: #929495; }
 +
 +progressbar > trough > progress.left { border-top-left-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +progressbar > trough > progress.right { border-top-right-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +progressbar > trough > progress.top { border-top-right-radius: 5px; border-top-left-radius: 5px; }
 +
 +progressbar > trough > progress.bottom { border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +progressbar.osd { min-width: 3px; min-height: 3px; background-color: transparent; }
 +
 +progressbar.osd > trough { border-style: none; border-radius: 0; background-color: transparent; box-shadow: none; }
 +
 +progressbar.osd > trough > progress { border-style: none; border-radius: 0; }
 +
 +progressbar > trough.empty > progress { all: unset; }
 +
 +/************* Level Bar * */
 +levelbar.horizontal trough > block { min-height: 9px; border-radius: 5px; }
 +
 +levelbar.horizontal trough > block:dir(rtl) { border-radius: 0 5px 5px 0; }
 +
 +levelbar.horizontal trough > block:dir(ltr) { border-radius: 5px 0 0 5px; }
 +
 +levelbar.horizontal trough > block.empty, levelbar.horizontal trough > block.full { border-radius: 5px; }
 +
 +levelbar.horizontal.discrete trough > block { min-height: 2px; margin: 1px; min-width: 24px; border-radius: 0; }
 +
 +levelbar.horizontal.discrete trough > block:first-child { border-radius: 2px 0 0 2px; }
 +
 +levelbar.horizontal.discrete trough > block:last-child { border-radius: 0 2px 2px 0; }
 +
 +levelbar.vertical trough > block { min-width: 9px; border-radius: 5px; }
 +
 +levelbar.vertical.discrete > trough > block { min-width: 2px; margin: 1px 0; min-height: 32px; }
 +
 +levelbar > trough { padding: 0; }
 +
 +levelbar > trough > block { border: 1px solid; }
 +
 +levelbar > trough > block.low { border-color: #f57900; background-color: #f57900; }
 +
 +levelbar > trough > block.high, levelbar > trough > block:not(.empty) { border-color: #1b6acb; background-color: #1b6acb; }
 +
 +levelbar > trough > block.full { border-color: #33d17a; background-color: #33d17a; }
 +
 +levelbar > trough > block.empty { background-color: #f1f0ee; border-color: #f1f0ee; }
 +
 +/**************** Print dialog * */
 +window.dialog.print drawing { color: #272c2e; background: none; border: none; padding: 0; }
 +
 +window.dialog.print drawing paper { background: white; color: #2e3436; border: 1px solid #877b6e; }
 +
 +window.dialog.print .dialog-action-box { margin: 12px; }
 +
 +/********** Frames * */
 +frame, .frame { border: 1px solid #877b6e; }
 +
 +frame { border-radius: 8px; }
 +
 +frame > label { margin: 4px; }
 +
 +actionbar > revealer > box { padding: 6px; border-top: 1px solid #877b6e; }
 +
 +actionbar > revealer > box, actionbar > revealer > box > box.start, actionbar > revealer > box > box.end { border-spacing: 6px; }
 +
 +scrolledwindow > overshoot.top { background-image: radial-gradient(farthest-side at top, #6b6157 85%, rgba(107, 97, 87, 0)), radial-gradient(farthest-side at top, rgba(39, 44, 46, 0.07), rgba(39, 44, 46, 0)); background-size: 100% 3%, 100% 50%; background-repeat: no-repeat; background-position: top; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.bottom { background-image: radial-gradient(farthest-side at bottom, #6b6157 85%, rgba(107, 97, 87, 0)), radial-gradient(farthest-side at bottom, rgba(39, 44, 46, 0.07), rgba(39, 44, 46, 0)); background-size: 100% 3%, 100% 50%; background-repeat: no-repeat; background-position: bottom; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.left { background-image: radial-gradient(farthest-side at left, #6b6157 85%, rgba(107, 97, 87, 0)), radial-gradient(farthest-side at left, rgba(39, 44, 46, 0.07), rgba(39, 44, 46, 0)); background-size: 3% 100%, 50% 100%; background-repeat: no-repeat; background-position: left; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.right { background-image: radial-gradient(farthest-side at right, #6b6157 85%, rgba(107, 97, 87, 0)), radial-gradient(farthest-side at right, rgba(39, 44, 46, 0.07), rgba(39, 44, 46, 0)); background-size: 3% 100%, 50% 100%; background-repeat: no-repeat; background-position: right; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > junction { background: #877b6e, linear-gradient(to bottom, transparent 1px, #cecece 1px), linear-gradient(to right, transparent 1px, #cecece 1px); }
 +
 +scrolledwindow > junction:dir(rtl) { background: #877b6e, linear-gradient(to bottom, transparent 1px, #cecece 1px), linear-gradient(to left, transparent 1px, #cecece 1px); }
 +
 +separator { background: #93877b; min-width: 1px; min-height: 1px; }
 +
 +/********* Lists * */
 +listview, list { color: black; background-color: #ffffff; border-color: #877b6e; }
 +
 +listview:backdrop, list:backdrop { color: #323232; background-color: #fcfcfc; border-color: #d5d0cc; }
 +
 +listview > row, list > row { padding: 2px; }
 +
 +listview > row.expander, list > row.expander { padding: 0px; }
 +
 +listview > row.expander .row-header, list > row.expander .row-header { padding: 2px; }
 +
 +listview.horizontal row.separator, listview.separators.horizontal > row:not(.separator), list.horizontal row.separator, list.separators.horizontal > row:not(.separator) { border-left: 1px solid #9f958b; }
 +
 +listview:not(.horizontal) row.separator, listview.separators:not(.horizontal) > row:not(.separator), list:not(.horizontal) row.separator, list.separators:not(.horizontal) > row:not(.separator) { border-bottom: 1px solid #9f958b; }
 +
 +row { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +row:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +row.activatable.has-open-popup, row.activatable:hover { background-color: rgba(39, 44, 46, 0.05); }
 +
 +row.activatable:active { box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.2); }
 +
 +row.activatable:selected:active { box-shadow: inset 0 2px 3px -1px rgba(0, 0, 0, 0.5); }
 +
 +row.activatable.has-open-popup:selected, row.activatable:selected:hover { background-color: #1c64bb; }
 +
 +row:selected { outline-color: white; }
 +
 +columnview > listview > row { padding: 0; }
 +
 +columnview > listview > row > cell { padding: 8px 6px; }
 +
 +columnview > listview > row > cell:not(:first-child) { border-left: 1px solid transparent; }
 +
 +columnview.column-separators > listview > row > cell { border-left-color: #9f958b; }
 +
 +columnview.data-table > listview > row > cell { padding-top: 2px; padding-bottom: 2px; }
 +
 +treeexpander { border-spacing: 4px; }
 +
 +/******************************************************** Data Tables                                          * treeview like tables with individual focusable cells * https://gitlab.gnome.org/GNOME/gtk/-/issues/2929     * */
 +columnview row:not(:selected) cell editablelabel:not(.editing):focus-within { outline: 2px solid rgba(27, 106, 203, 0.8); }
 +
 +columnview row:not(:selected) cell editablelabel.editing:focus-within { outline: 2px solid #1b6acb; }
 +
 +columnview row:not(:selected) cell editablelabel.editing text selection { background-color: rgba(141, 141, 141, 0.5); color: transparent; }
 +
 +columnview row:not(:selected) cell editablelabel.editing text selection:focus-within { background-color: rgba(53, 132, 228, 0.3); color: #272c2e; }
 +
 +/******************************************************* Rich Lists                                          * Large list usually containing lots of widgets       * https://gitlab.gnome.org/GNOME/gtk/-/issues/3073    * */
 +.rich-list { /* rich lists usually containing other widgets than just labels/text */ }
 +
 +.rich-list > row { padding: 8px 12px; min-height: 32px; /* should be tall even when only containing a label */ }
 +
 +.rich-list > row > box { border-spacing: 12px; }
 +
 +/********************* App Notifications * */
 +.app-notification { padding: 10px; border-spacing: 10px; border-radius: 0 0 5px 5px; background-color: rgba(53, 53, 53, 0.7); background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.2), transparent 2px); background-clip: padding-box; }
 +
 +.app-notification border { border: none; }
 +
 +/************* Expanders * */
 +expander { min-width: 16px; min-height: 16px; -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
 +
 +expander:dir(rtl) { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); }
 +
 +expander:disabled { color: #929495; }
 +
 +expander:checked { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +expander-widget { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +expander-widget > box > title { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +expander-widget:focus:focus-visible > box > title { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +expander-widget > box > title { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); border-radius: 5px; }
 +
 +expander-widget > box > title:hover > expander { color: #6d7c80; }
 +
 +.navigation-sidebar:not(decoration):not(window):drop(active):focus, .navigation-sidebar:not(decoration):not(window):drop(active), placessidebar:not(decoration):not(window):drop(active):focus, placessidebar:not(decoration):not(window):drop(active), stackswitcher:not(decoration):not(window):drop(active):focus, stackswitcher:not(decoration):not(window):drop(active), expander-widget:not(decoration):not(window):drop(active):focus, expander-widget:not(decoration):not(window):drop(active) { box-shadow: none; }
 +
 +/************ Calendar * */
 +calendar { color: black; border: 1px solid #877b6e; font-feature-settings: "tnum"; }
 +
 +calendar > header { border-bottom: 1px solid #877b6e; }
 +
 +calendar > header > button { border: none; box-shadow: none; background: none; border-radius: 0; }
 +
 +calendar > header > button:backdrop { background: none; }
 +
 +calendar > grid > label.today { box-shadow: inset 0px -2px #877b6e; }
 +
 +calendar > grid > label.today:selected { box-shadow: none; }
 +
 +calendar > grid > label:focus { outline-color: rgba(27, 106, 203, 0.8); outline-offset: -2px; outline-width: 2px; outline-style: solid; }
 +
 +calendar > grid > label.day-number { padding: 4px; }
 +
 +calendar > grid > label.day-number:selected { border-radius: 3px; }
 +
 +calendar > grid > label.day-number.other-month { color: alpha(currentColor,0.3); }
 +
 +/*********** Dialogs * */
 +window.dialog.message .titlebar { min-height: 20px; background-image: none; background-color: #fdfdfc; border-style: none; border-top-left-radius: 7px; border-top-right-radius: 7px; }
 +
 +window.dialog.message box.dialog-vbox.vertical { border-spacing: 10px; }
 +
 +window.dialog.message label.title { font-weight: 800; font-size: 15pt; }
 +
 +window.dialog.message.csd.background { border-bottom-left-radius: 9px; border-bottom-right-radius: 9px; }
 +
 +window.dialog.message.csd .dialog-action-area button { padding: 10px 14px; border-radius: 0; border-left-style: solid; border-right-style: none; border-bottom-style: none; }
 +
 +window.dialog.message.csd .dialog-action-area button:first-child { border-left-style: none; border-bottom-left-radius: 7px; }
 +
 +window.dialog.message.csd .dialog-action-area button:last-child { border-bottom-right-radius: 7px; }
 +
 +filechooser .dialog-action-box { border-top: 1px solid #877b6e; }
 +
 +filechooser #pathbarbox { border-bottom: 1px solid #fdfdfc; }
 +
 +filechooserbutton > button > box { border-spacing: 6px; }
 +
 +filechooserbutton:drop(active) { box-shadow: none; border-color: transparent; }
 +
 +/*********** Sidebar * */
 +.sidebar { background-color: #fefefe; }
 +
 +.sidebar:not(separator):dir(ltr), .sidebar.left:not(separator), .sidebar.left:not(separator):dir(rtl) { border-right: 1px solid #877b6e; border-left-style: none; }
 +
 +.sidebar:not(separator):dir(rtl), .sidebar.right:not(separator) { border-left: 1px solid #877b6e; border-right-style: none; }
 +
 +.sidebar listview.view, .sidebar list { background-color: transparent; }
 +
 +paned .sidebar.left, paned .sidebar.right, paned .sidebar.left:dir(rtl), paned .sidebar:dir(rtl), paned .sidebar:dir(ltr), paned .sidebar { border-style: none; }
 +
 +stacksidebar list.separators:not(.horizontal) > row:not(.separator) { border-bottom: none; }
 +
 +stacksidebar row { padding: 10px 4px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +stacksidebar row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +stacksidebar row:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +stacksidebar row > label { padding-left: 6px; padding-right: 6px; }
 +
 +stacksidebar row.needs-attention > label { background-size: 6px 6px, 0 0; }
 +
 +stacksidebar row:selected { background-color: #e6e3e0; border-radius: 5px; color: #272c2e; }
 +
 +stacksidebar row:selected:hover:dir(ltr), stacksidebar row:selected:hover:dir(rtl) { background-color: #dad6d2; }
 +
 +stacksidebar row.activatable:active, stacksidebar row.activatable:selected:active { box-shadow: none; }
 +
 +separator.sidebar { background-color: #877b6e; }
 +
 +/********************** Navigation Sidebar * */
 +.navigation-sidebar { padding: 5px 0; }
 +
 +.navigation-sidebar > separator { margin: 5px; }
 +
 +.navigation-sidebar > row { min-height: 36px; padding: 0 8px; border-radius: 5px; margin: 0 5px 2px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +.navigation-sidebar > row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +.navigation-sidebar > row:focus-visible:focus-within { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +.navigation-sidebar > row:hover { background-color: #dad6d2; }
 +
 +.navigation-sidebar > row:selected { background-color: #e6e3e0; color: inherit; }
 +
 +.navigation-sidebar > row:selected:hover { background-color: #dad6d2; }
 +
 +.navigation-sidebar > row:disabled { color: #929495; }
 +
 +/**************** File chooser * */
 +row image.sidebar-icon { opacity: 0.7; }
 +
 +/* this should be more generic, only using .navigation-sidebar https://gitlab.gnome.org/GNOME/gtk/-/issues/2929 */
 +placessidebar .navigation-sidebar > row { padding: 0; }
 +
 +placessidebar .navigation-sidebar > row > revealer { padding: 0 14px; }
 +
 +placessidebar .navigation-sidebar > row image.sidebar-icon:dir(ltr) { padding-right: 8px; }
 +
 +placessidebar .navigation-sidebar > row image.sidebar-icon:dir(rtl) { padding-left: 8px; }
 +
 +placessidebar .navigation-sidebar > row label.sidebar-label:dir(ltr) { padding-right: 2px; }
 +
 +placessidebar .navigation-sidebar > row label.sidebar-label:dir(rtl) { padding-left: 2px; }
 +
 +button.sidebar-button { min-height: 26px; min-width: 26px; margin-top: 3px; margin-bottom: 3px; padding: 0; border-radius: 100%; }
 +
 +placessidebar .navigation-sidebar > row:selected:active { box-shadow: none; }
 +
 +placessidebar .navigation-sidebar > row.sidebar-placeholder-row { padding: 0 8px; min-height: 2px; background-image: image(#2ec27e); background-clip: content-box; }
 +
 +placessidebar .navigation-sidebar > row.sidebar-new-bookmark-row { color: #1b6acb; }
 +
 +placessidebar .navigation-sidebar > row:drop(active):not(:disabled) { color: #2ec27e; box-shadow: inset 0 1px #2ec27e, inset 0 -1px #2ec27e; }
 +
 +placessidebar .navigation-sidebar > row:drop(active):not(:disabled):selected { color: #ffffff; background-color: #2ec27e; }
 +
 +placesview .server-list-button > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(0turn); }
 +
 +placesview .server-list-button:checked > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(-0.5turn); }
 +
 +placesview > actionbar > revealer > box > box { border-spacing: 6px; }
 +
 +/********* Paned * */
 +paned > separator { min-width: 1px; min-height: 1px; -gtk-icon-source: none; border-style: none; background-color: transparent; background-image: image(#877b6e); background-size: 1px 1px; }
 +
 +paned > separator:selected { background-image: image(#1b6acb); }
 +
 +paned > separator.wide { min-width: 5px; min-height: 5px; background-color: #fdfdfc; background-image: image(#877b6e), image(#877b6e); background-size: 1px 1px, 1px 1px; }
 +
 +paned.horizontal > separator { background-repeat: repeat-y; }
 +
 +paned.horizontal > separator:dir(ltr) { margin: 0 -8px 0 0; padding: 0 8px 0 0; background-position: left; }
 +
 +paned.horizontal > separator:dir(rtl) { margin: 0 0 0 -8px; padding: 0 0 0 8px; background-position: right; }
 +
 +paned.horizontal > separator.wide { margin: 0; padding: 0; background-repeat: repeat-y, repeat-y; background-position: left, right; }
 +
 +paned.vertical > separator { margin: 0 0 -8px 0; padding: 0 0 8px 0; background-repeat: repeat-x; background-position: top; }
 +
 +paned.vertical > separator.wide { margin: 0; padding: 0; background-repeat: repeat-x, repeat-x; background-position: bottom, top; }
 +
 +/************** GtkVideo * */
 +video { background: black; }
 +
 +video image.osd { min-width: 64px; min-height: 64px; border-radius: 32px; }
 +
 +/************ Tooltips * */
 +tooltip { padding: 6px 10px; border-radius: 8px; box-shadow: none; }
 +
 +tooltip.background { background-color: rgba(0, 0, 0, 0.8); background-clip: padding-box; border: 1px solid rgba(255, 255, 255, 0.1); color: white; }
 +
 +tooltip > box { border-spacing: 6px; }
 +
 +/***************** Color Chooser * */
 +colorswatch { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +colorswatch { outline: 0 solid transparent; outline-offset: 6px; }
 +
 +colorswatch:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 4px; outline-offset: -2px; }
 +
 +colorswatch:drop(active), colorswatch { border-style: none; }
 +
 +colorswatch.top { border-top-left-radius: 5.5px; border-top-right-radius: 5.5px; }
 +
 +colorswatch.top > overlay { border-top-left-radius: 5px; border-top-right-radius: 5px; }
 +
 +colorswatch.bottom { border-bottom-left-radius: 5.5px; border-bottom-right-radius: 5.5px; }
 +
 +colorswatch.bottom > overlay { border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +colorswatch.left, colorswatch:first-child:not(.top) { border-top-left-radius: 5.5px; border-bottom-left-radius: 5.5px; }
 +
 +colorswatch.left > overlay, colorswatch:first-child:not(.top) > overlay { border-top-left-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +colorswatch.right, colorswatch:last-child:not(.bottom) { border-top-right-radius: 5.5px; border-bottom-right-radius: 5.5px; }
 +
 +colorswatch.right > overlay, colorswatch:last-child:not(.bottom) > overlay { border-top-right-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +colorswatch.dark > overlay { color: white; }
 +
 +colorswatch.dark.activatable:hover > overlay { border-color: rgba(0, 0, 0, 0.8); }
 +
 +colorswatch.light > overlay { color: black; }
 +
 +colorswatch.light.activatable:hover > overlay { border-color: rgba(0, 0, 0, 0.5); }
 +
 +colorswatch:drop(active) { box-shadow: none; }
 +
 +colorswatch.light:drop(active) > overlay { border-color: #2ec27e; box-shadow: inset 0 0 0 2px #27a56b, inset 0 0 0 1px #2ec27e; }
 +
 +colorswatch.dark:drop(active) > overlay { border-color: #2ec27e; box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.3), inset 0 0 0 1px #2ec27e; }
 +
 +colorswatch > overlay { border: 1px solid rgba(0, 0, 0, 0.3); }
 +
 +colorswatch.activatable:hover > overlay { box-shadow: inset 0 1px rgba(255, 255, 255, 0.4), inset 0 -1px rgba(0, 0, 0, 0.2); }
 +
 +colorswatch#add-color-button { border-radius: 5px 0 0 5px; }
 +
 +colorswatch#add-color-button:only-child { border-radius: 5px; }
 +
 +colorswatch#add-color-button > overlay { color: #272c2e; outline-color: rgba(27, 106, 203, 0.8); border-color: #877b6e; background-image: linear-gradient(to top, #fafaf9 2px, white); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +colorswatch#add-color-button.activatable:hover > overlay { color: #272c2e; border-color: #877b6e; background-image: linear-gradient(to top, #dad6d2, #edebe9 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +colorswatch:disabled { opacity: 0.5; }
 +
 +colorswatch:disabled > overlay { border-color: rgba(0, 0, 0, 0.6); box-shadow: none; }
 +
 +row:selected colorswatch { box-shadow: 0 0 0 2px #ffffff; }
 +
 +colorswatch#editor-color-sample { border-radius: 4px; }
 +
 +colorswatch#editor-color-sample > overlay { border-radius: 4.5px; }
 +
 +plane { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +plane { outline: 0 solid transparent; outline-offset: 6px; }
 +
 +plane:focus:focus-visible { outline-color: rgba(27, 106, 203, 0.8); outline-width: 2px; outline-offset: 2px; }
 +
 +colorchooser .popover.osd { border-radius: 5px; }
 +
 +/******** Misc * */
 +.content-view { background-color: #edebe9; }
 +
 +.content-view:hover { -gtk-icon-filter: brightness(1.2); }
 +
 +.content-view .tile { margin: 2px; background-color: transparent; border-radius: 0; padding: 0; }
 +
 +.content-view .tile:active, .content-view .tile:selected { background-color: transparent; }
 +
 +.content-view .tile:disabled { background-color: transparent; }
 +
 +.osd .scale-popup button.flat { border-style: none; border-radius: 5px; }
 +
 +.scale-popup button:hover { background-color: rgba(39, 44, 46, 0.1); border-radius: 5px; }
 +
 +/********************** Window Decorations * */
 +window { border-width: 0px; }
 +
 +window.csd { box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(0, 0, 0, 0.23); margin: 0px; border-radius: 8px 8px 0 0; }
 +
 +window.csd:backdrop { box-shadow: 0 3px 9px 1px transparent, 0 2px 6px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.18); transition: 200ms ease-out; }
 +
 +window.csd.popup { border-radius: 5px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13); }
 +
 +window.csd.dialog.message { border-radius: 8px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13); }
 +
 +window.solid-csd { margin: 0; padding: 4px; border: solid 1px #877b6e; border-radius: 0; box-shadow: inset 0 0 0 4px #877b6e, inset 0 0 0 3px white, inset 0 1px rgba(255, 255, 255, 0.8); }
 +
 +window.solid-csd:backdrop { box-shadow: inset 0 0 0 4px #877b6e, inset 0 0 0 3px #f6f5f4, inset 0 1px rgba(255, 255, 255, 0.8); }
 +
 +window.maximized, window.fullscreen { border-radius: 0; box-shadow: none; }
 +
 +window.tiled, window.tiled-top, window.tiled-left, window.tiled-right, window.tiled-bottom { border-radius: 0; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.23), 0 0 0 20px transparent; }
 +
 +window.tiled:backdrop, window.tiled-top:backdrop, window.tiled-left:backdrop, window.tiled-right:backdrop, window.tiled-bottom:backdrop { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.18), 0 0 0 20px transparent; }
 +
 +window.popup { box-shadow: none; }
 +
 +window.ssd { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.23); }
 +
 +tooltip.csd { border-radius: 5px; box-shadow: none; }
 +
 +.view:selected:focus, .view:selected, textview > text:selected:focus, textview > text:selected, iconview:selected:focus, iconview:selected, flowbox > flowboxchild:selected, gridview > child:selected, modelbutton.flat:selected, columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar > grid > label.day-number:selected { background-color: #1b6acb; }
 +
 +label:selected, .view:selected:focus, .view:selected, textview > text:selected:focus, textview > text:selected, iconview:selected:focus, iconview:selected, flowbox > flowboxchild:selected, gridview > child:selected, modelbutton.flat:selected, columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar > grid > label.day-number:selected { color: #ffffff; }
 +
 +label:disabled > selection, label:disabled:selected, .view:disabled:selected, textview > text:disabled:selected:focus, textview > text:disabled:selected, iconview:disabled:selected:focus, iconview:disabled:selected, flowbox > flowboxchild:disabled:selected, gridview > child:disabled:selected, modelbutton.flat:disabled:selected, columnview.view:disabled:selected, treeview.view:disabled:selected, row:disabled:selected, calendar > grid > label.day-number:disabled:selected { color: #8db5e5; }
 +
 +.monospace { font-family: monospace; }
 +
 +/********************** Touch Copy & Paste * */
 +cursor-handle { background-color: transparent; background-image: none; box-shadow: none; border-style: none; min-width: 20px; min-height: 24px; padding-left: 20px; padding-right: 20px; padding-top: 24px; padding-bottom: 24px; }
 +
 +cursor-handle.top:dir(ltr), cursor-handle.bottom:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-start.png"), url("assets-hc/text-select-start@2.png")); }
 +
 +cursor-handle.bottom:dir(ltr), cursor-handle.top:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-end.png"), url("assets-hc/text-select-end@2.png")); }
 +
 +cursor-handle.insertion-cursor:dir(ltr), cursor-handle.insertion-cursor:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above.png"), url("assets-hc/slider-horz-scale-has-marks-above@2.png")); }
 +
 +cursor-handle.top:hover:dir(ltr), cursor-handle.bottom:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-start-hover.png"), url("assets-hc/text-select-start-hover@2.png")); }
 +
 +cursor-handle.bottom:hover:dir(ltr), cursor-handle.top:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-end-hover.png"), url("assets-hc/text-select-end-hover@2.png")); }
 +
 +cursor-handle.insertion-cursor:hover:dir(ltr), cursor-handle.insertion-cursor:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-hover.png"), url("assets-hc/slider-horz-scale-has-marks-above-hover@2.png")); }
 +
 +cursor-handle.top:active:dir(ltr), cursor-handle.bottom:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-start-active.png"), url("assets-hc/text-select-start-active@2.png")); }
 +
 +cursor-handle.bottom:active:dir(ltr), cursor-handle.top:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/text-select-end-active.png"), url("assets-hc/text-select-end-active@2.png")); }
 +
 +cursor-handle.insertion-cursor:active:dir(ltr), cursor-handle.insertion-cursor:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets-hc/slider-horz-scale-has-marks-above-active.png"), url("assets-hc/slider-horz-scale-has-marks-above-active@2.png")); }
 +
 +shortcuts-section { margin: 20px; }
 +
 +.shortcuts-search-results { margin: 20px; border-spacing: 24px; }
 +
 +shortcut { border-spacing: 6px; }
 +
 +shortcut > .keycap { min-width: 20px; min-height: 25px; margin-top: 2px; padding-bottom: 3px; padding-left: 6px; padding-right: 6px; color: #272c2e; background-color: #ffffff; border: 1px solid; border-color: #c2bcb5; border-radius: 5px; box-shadow: inset 0 -3px #fdfdfd; font-size: smaller; }
 +
 +:not(decoration):not(window):drop(active):focus, :not(decoration):not(window):drop(active) { border-color: #2ec27e; box-shadow: inset 0 0 0 1px #2ec27e; caret-color: #2ec27e; }
 +
 +stackswitcher > button.text-button { min-width: 100px; }
 +
 +stackswitcher.circular { border-spacing: 12px; }
 +
 +stackswitcher.circular > button.circular, stackswitcher.circular > button.text-button.circular { min-width: 32px; min-height: 32px; padding: 0; }
 +
 +/************* App Icons * */
 +/* Outline for low res icons */
 +.lowres-icon { -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.05), 1px 0 rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.3), -1px 0 rgba(0, 0, 0, 0.1); }
 +
 +/* Drapshadow for large icons */
 +.icon-dropshadow { -gtk-icon-shadow: 0 1px 12px rgba(0, 0, 0, 0.05), 0 -1px rgba(0, 0, 0, 0.05), 1px 0 rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.3), -1px 0 rgba(0, 0, 0, 0.1); }
 +
 +/********* Emoji * */
 +popover.emoji-picker > contents { padding: 0; }
 +
 +.emoji-searchbar { padding: 6px; border-spacing: 6px; border-bottom: 1px solid #877b6e; }
 +
 +.emoji-toolbar { padding: 6px; border-spacing: 6px; border-top: 1px solid #877b6e; }
 +
 +button.emoji-section { border-color: transparent; border-width: 3px; border-style: none none solid; border-radius: 0; padding: 3px 0 0; min-width: 32px; min-height: 28px; /* reset props inherited from the button style */ background: none; box-shadow: none; text-shadow: none; }
 +
 +button.emoji-section:hover { border-color: #877b6e; }
 +
 +button.emoji-section:checked { border-color: #1b6acb; }
 +
 +popover.emoji-picker emoji { font-size: x-large; padding: 6px; border-radius: 6px; }
 +
 +popover.emoji-picker emoji:focus, popover.emoji-picker emoji:hover { background: #1b6acb; }
 +
 +emoji-completion-row > box { border-spacing: 10px; padding: 2px 10px; }
 +
 +emoji-completion-row:focus, emoji-completion-row:hover { background-color: #1b6acb; color: #ffffff; }
 +
 +emoji-completion-row emoji:focus, emoji-completion-row emoji:hover { background-color: #e6e3e0; }
 +
 +popover.entry-completion > contents { padding: 0; }
 +
 +statusbar { padding: 6px 10px 6px 10px; }
 +
 +menubutton > button > box { border-spacing: 6px; }
 +
 +menubutton arrow { min-height: 16px; min-width: 16px; }
 +
 +menubutton arrow.none { -gtk-icon-source: -gtk-icontheme("open-menu-symbolic"); }
 +
 +menubutton arrow.down { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +menubutton arrow.up { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +menubutton arrow.left { -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); }
 +
 +menubutton arrow.right { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
index 7f0bf2b9d28257b00a14133adcaa7cc88cecedbd,0000000000000000000000000000000000000000..85278cdbe61d016b850a5139d78d088b636decd5
mode 100644,000000..100644
--- /dev/null
@@@ -1,1880 -1,0 +1,1882 @@@
 +/*************************** Check and Radio buttons * */
 +/*************** Base States * */
 +.background { color: #2e3436; background-color: #f6f5f4; }
 +
 +.background:backdrop { text-shadow: none; -gtk-icon-shadow: none; }
 +
 +dnd { color: #2e3436; }
 +
 +.normal-icons { -gtk-icon-size: 16px; }
 +
 +.large-icons { -gtk-icon-size: 32px; }
 +
 +image:disabled { -gtk-icon-filter: opacity(0.5); }
 +
 +.view, iconview, textview > text { color: black; background-color: #ffffff; }
 +
 +.view:disabled, iconview:disabled, textview > text:disabled { color: #929595; background-color: #faf9f8; }
 +
 +.view:selected:focus, iconview:selected:focus, .view:selected, iconview:selected, textview > text:selected:focus, textview > text:selected { border-radius: 3px; }
 +
++textview > text { background-color: transparent; }
++
 +textview > text > selection { background-color: rgba(141, 141, 141, 0.5); }
 +
 +textview > text > selection:focus-within { background-color: rgba(53, 132, 228, 0.3); }
 +
 +textview:drop(active) { caret-color: #2ec27e; }
 +
 +textview > border { background-color: #fbfafa; }
 +
 +iconview { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +iconview { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +iconview:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +iconview:drop(active) { box-shadow: none; }
 +
 +iconview > dndtarget:drop(active) { border-style: solid; border-width: 1px; border-color: #185fb4; }
 +
 +rubberband, .content-view > rubberband, columnview.view > rubberband, treeview.view > rubberband, gridview > rubberband, flowbox > rubberband { border: 1px solid #1b6acb; background-color: rgba(27, 106, 203, 0.2); }
 +
 +flowbox > flowboxchild { padding: 3px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +flowbox > flowboxchild { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +flowbox > flowboxchild:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +flowbox > flowboxchild:selected { outline-color: rgba(255, 255, 255, 0.8); }
 +
 +gridview > child { padding: 3px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +gridview > child { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +gridview > child:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +gridview > child:selected { outline-color: rgba(255, 255, 255, 0.8); }
 +
 +gridview > child box { border-spacing: 8px; margin: 12px; }
 +
 +coverflow cover { color: black; background-color: #ffffff; border: 1px solid black; }
 +
 +label { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +label { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +label:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +label > selection { background-color: rgba(141, 141, 141, 0.5); color: #ffffff; }
 +
 +label > selection:focus-within { background-color: rgba(53, 132, 228, 0.3); }
 +
 +label:disabled { color: #929595; }
 +
 +button label:disabled { color: inherit; }
 +
 +label.error { color: #cc0000; }
 +
 +label.error:disabled { color: rgba(204, 0, 0, 0.5); }
 +
 +.dim-label, .titlebar:not(headerbar) .subtitle, headerbar .subtitle, spinbutton.vertical > text > text > placeholder, spinbutton:not(.vertical) > text > placeholder, entry > text > placeholder, label.separator { opacity: 0.55; text-shadow: none; }
 +
 +window.assistant .sidebar { padding: 5px; border-top: 1px solid #cdc7c2; }
 +
 +window.assistant.csd .sidebar { border-top-style: none; }
 +
 +window.assistant .sidebar > label { padding: 6px 12px; }
 +
 +window.assistant .sidebar > label.highlight { background-color: #e8e6e3; border-radius: 5px; }
 +
 +window.aboutdialog image.large-icons { -gtk-icon-size: 128px; }
 +
 +.osd .scale-popup, .app-notification, .osd popover.background > arrow, .osd popover.background > contents, popover.background.touch-selection > arrow, popover.background.touch-selection > contents, popover.background.magnifier > arrow, popover.background.magnifier > contents, .osd { color: #eeeeec; border: none; background-color: rgba(53, 53, 53, 0.7); background-clip: padding-box; -gtk-icon-shadow: 0 1px black; }
 +
 +/********************* Spinner Animation * */
 +@keyframes spin { to { transform: rotate(1turn); } }
 +
 +spinner { background: none; opacity: 0; -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); }
 +
 +spinner:checked { opacity: 1; animation: spin 1s linear infinite; }
 +
 +spinner:checked:disabled { opacity: 0.5; }
 +
 +/********************** General Typography * */
 +.large-title { font-weight: 300; font-size: 24pt; }
 +
 +.title-1 { font-weight: 800; font-size: 20pt; }
 +
 +.title-2 { font-weight: 800; font-size: 15pt; }
 +
 +.title-3 { font-weight: 700; font-size: 15pt; }
 +
 +.title-4 { font-weight: 700; font-size: 13pt; }
 +
 +.heading { font-weight: 700; font-size: 11pt; }
 +
 +.body { font-weight: 400; font-size: 11pt; }
 +
 +.caption-heading { font-weight: 700; font-size: 9pt; }
 +
 +.caption { font-weight: 400; font-size: 9pt; }
 +
 +/**************** Text Entries * */
 +spinbutton.vertical > text, spinbutton:not(.vertical), entry { min-height: 32px; padding-left: 8px; padding-right: 8px; border: 1px solid; border-radius: 5px; border-spacing: 6px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: black; border-color: #cdc7c2; background-color: #ffffff; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text, spinbutton:not(.vertical), entry { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text:focus-within, spinbutton:focus-within:not(.vertical), entry:focus-within { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text > image.left, spinbutton:not(.vertical) > image.left, entry > image.left { margin-right: 6px; }
 +
 +spinbutton.vertical > text > image.right, spinbutton:not(.vertical) > image.right, entry > image.right { margin-left: 6px; }
 +
 +spinbutton.vertical > text > text > block-cursor, spinbutton:not(.vertical) > text > block-cursor, entry > text > block-cursor { color: #ffffff; background-color: black; }
 +
 +spinbutton.vertical > text.flat, spinbutton.flat:not(.vertical), entry.flat:focus-within, entry.flat:backdrop, entry.flat:disabled, entry.flat { min-height: 0; padding: 2px; background-color: transparent; border-color: transparent; border-radius: 0; }
 +
 +spinbutton.vertical > text:focus-within > placeholder, spinbutton:focus-within:not(.vertical) > placeholder, entry:focus-within > placeholder { opacity: 0; /* We hide placeholders on focus */ }
 +
 +spinbutton.vertical > text:disabled, spinbutton:disabled:not(.vertical), entry:disabled { color: #929595; border-color: #cdc7c2; background-color: #faf9f8; }
 +
 +spinbutton.vertical > text > text > selection, spinbutton:not(.vertical) > text > selection, entry > text > selection { background-color: rgba(141, 141, 141, 0.5); color: transparent; }
 +
 +spinbutton.vertical > text > text > selection:focus-within, spinbutton:not(.vertical) > text > selection:focus-within, entry > text > selection:focus-within { background-color: rgba(53, 132, 228, 0.3); color: #2e3436; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { color: #cc0000; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text.error:focus-within, spinbutton.error:focus-within:not(.vertical), entry.error:focus-within { outline-color: rgba(204, 0, 0, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text.error > selection, spinbutton.error:not(.vertical) > selection, entry.error > selection { background-color: #cc0000; }
 +
 +spinbutton.vertical > text.warning, spinbutton.warning:not(.vertical), entry.warning { color: #f57900; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +spinbutton.vertical > text.warning, spinbutton.warning:not(.vertical), entry.warning { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +spinbutton.vertical > text.warning:focus-within, spinbutton.warning:focus-within:not(.vertical), entry.warning:focus-within { outline-color: rgba(245, 121, 0, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +spinbutton.vertical > text.warning > selection, spinbutton.warning:not(.vertical) > selection, entry.warning > selection { background-color: #f57900; }
 +
 +spinbutton.vertical > text > image, spinbutton:not(.vertical) > image, entry > image { color: #585d5e; }
 +
 +spinbutton.vertical > text > image:hover, spinbutton:not(.vertical) > image:hover, entry > image:hover { color: #2e3436; }
 +
 +spinbutton.vertical > text > image:active, spinbutton:not(.vertical) > image:active, entry > image:active { color: #3584e4; }
 +
 +spinbutton.vertical > text.password image.caps-lock-indicator, spinbutton.password:not(.vertical) image.caps-lock-indicator, entry.password image.caps-lock-indicator { color: #a7aaaa; }
 +
 +spinbutton.vertical > text:drop(active), spinbutton:drop(active):not(.vertical), entry:drop(active):focus-within, entry:drop(active) { border-color: #2ec27e; box-shadow: inset 0 0 0 1px #2ec27e; }
 +
 +.osd spinbutton.vertical > text, .osd spinbutton:not(.vertical), .osd entry { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.osd spinbutton.vertical > text:focus-within, .osd spinbutton:focus-within:not(.vertical), .osd entry:focus-within { color: white; border-color: #3584e4; background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > text:disabled, .osd spinbutton:disabled:not(.vertical), .osd entry:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(71, 71, 71, 0.5); background-clip: padding-box; }
 +
 +spinbutton.vertical > text > progress, spinbutton:not(.vertical) > progress, entry > progress { margin-bottom: 2px; }
 +
 +spinbutton.vertical > text progress > trough > progress, spinbutton:not(.vertical) progress > trough > progress, entry progress > trough > progress { background-color: transparent; background-image: none; border-radius: 0; border-width: 0 0 2px; border-color: #3584e4; border-style: solid; box-shadow: none; }
 +
 +spinbutton.vertical.linked:not(.vertical) > text:drop(active) + text, spinbutton.vertical.linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + text, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + spinbutton:not(.vertical), .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + spinbutton:not(.vertical), spinbutton.vertical.linked:not(.vertical) > text:drop(active) + button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + menubutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + menubutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + dropdown > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + dropdown > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + colorbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + colorbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + fontbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + fontbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + filechooserbutton > button, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + filechooserbutton > button, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + combobox > box > button.combo, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + combobox > box > button.combo, spinbutton.vertical.linked:not(.vertical) > text:drop(active) + entry, .linked:not(.vertical) > spinbutton:drop(active):not(.vertical) + entry, .linked:not(.vertical) > entry:drop(active) + button, .linked:not(.vertical) > entry:drop(active) + menubutton > button, .linked:not(.vertical) > entry:drop(active) + dropdown > button, .linked:not(.vertical) > entry:drop(active) + colorbutton > button, .linked:not(.vertical) > entry:drop(active) + fontbutton > button, .linked:not(.vertical) > entry:drop(active) + filechooserbutton > button, .linked:not(.vertical) > entry:drop(active) + combobox > box > button.combo, spinbutton.vertical.linked:not(.vertical) > entry:drop(active) + text, .linked:not(.vertical) > entry:drop(active) + spinbutton:not(.vertical), .linked:not(.vertical) > entry:drop(active) + entry { border-left-color: #2ec27e; }
 +
 +spinbutton.vertical.linked > text:not(:disabled) + entry:not(:disabled), .linked.vertical > spinbutton:not(:disabled):not(.vertical) + entry:not(:disabled), spinbutton.vertical.linked > text:not(:disabled) + text:not(:disabled), spinbutton.vertical.linked > spinbutton:not(:disabled):not(.vertical) + text:not(:disabled), spinbutton.vertical.linked > text:not(:disabled) + spinbutton:not(:disabled):not(.vertical), .linked.vertical > spinbutton:not(:disabled):not(.vertical) + spinbutton:not(:disabled):not(.vertical), .linked.vertical > entry:not(:disabled) + entry:not(:disabled), spinbutton.vertical.linked > entry:not(:disabled) + text:not(:disabled), .linked.vertical > entry:not(:disabled) + spinbutton:not(:disabled):not(.vertical) { border-top-color: #f0eeed; }
 +
 +spinbutton.vertical.linked > text:disabled + text:disabled, spinbutton.vertical.linked > spinbutton:disabled:not(.vertical) + text:disabled, spinbutton.vertical.linked > text:disabled + spinbutton:disabled:not(.vertical), .linked.vertical > spinbutton:disabled:not(.vertical) + spinbutton:disabled:not(.vertical), spinbutton.vertical.linked > text:disabled + entry:disabled, .linked.vertical > spinbutton:disabled:not(.vertical) + entry:disabled, spinbutton.vertical.linked > entry:disabled + text:disabled, .linked.vertical > entry:disabled + spinbutton:disabled:not(.vertical), .linked.vertical > entry:disabled + entry:disabled { border-top-color: #f0eeed; }
 +
 +spinbutton.vertical.linked > text + text:drop(active):not(:only-child), spinbutton.vertical.linked > spinbutton:not(.vertical) + text:drop(active):not(:only-child), spinbutton.vertical.linked > text + spinbutton:drop(active):not(:only-child):not(.vertical), .linked.vertical > spinbutton:not(.vertical) + spinbutton:drop(active):not(:only-child):not(.vertical), spinbutton.vertical.linked > text + entry:drop(active):not(:only-child), .linked.vertical > spinbutton:not(.vertical) + entry:drop(active):not(:only-child), spinbutton.vertical.linked > entry + text:drop(active):not(:only-child), .linked.vertical > entry + spinbutton:drop(active):not(:only-child):not(.vertical), .linked.vertical > entry + entry:drop(active):not(:only-child) { border-top-color: #2ec27e; }
 +
 +spinbutton.vertical.linked > text:drop(active):not(:only-child) + text, spinbutton.vertical.linked > spinbutton:drop(active):not(:only-child):not(.vertical) + text, spinbutton.vertical.linked > text:drop(active):not(:only-child) + spinbutton:not(.vertical), .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + spinbutton:not(.vertical), spinbutton.vertical.linked > text:drop(active):not(:only-child) + entry, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + entry, spinbutton.vertical.linked > text:drop(active):not(:only-child) + button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + menubutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + menubutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + dropdown > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + dropdown > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + colorbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + colorbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + fontbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + fontbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + filechooserbutton > button, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + filechooserbutton > button, spinbutton.vertical.linked > text:drop(active):not(:only-child) + combobox > box > button.combo, .linked.vertical > spinbutton:drop(active):not(:only-child):not(.vertical) + combobox > box > button.combo, spinbutton.vertical.linked > entry:drop(active):not(:only-child) + text, .linked.vertical > entry:drop(active):not(:only-child) + spinbutton:not(.vertical), .linked.vertical > entry:drop(active):not(:only-child) + entry, .linked.vertical > entry:drop(active):not(:only-child) + button, .linked.vertical > entry:drop(active):not(:only-child) + menubutton > button, .linked.vertical > entry:drop(active):not(:only-child) + dropdown > button, .linked.vertical > entry:drop(active):not(:only-child) + colorbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + fontbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + filechooserbutton > button, .linked.vertical > entry:drop(active):not(:only-child) + combobox > box > button.combo { border-top-color: #2ec27e; }
 +
 +spinbutton.vertical > text.error, spinbutton.error:not(.vertical), entry.error { color: #cc0000; }
 +
 +treeview entry:focus-within:dir(rtl), treeview entry:focus-within:dir(ltr) { background-color: #ffffff; transition-property: color, background; }
 +
 +treeview entry.flat, treeview entry { border-radius: 0; background-image: none; background-color: #ffffff; }
 +
 +treeview entry.flat:focus-within, treeview entry:focus-within { border-color: #3584e4; }
 +
 +/******************* Editable Labels * */
 +editablelabel > stack > text { color: black; border-color: #cdc7c2; background-color: #ffffff; }
 +
 +/*********** Buttons * */
 +@keyframes needs_attention { from { background-image: radial-gradient(farthest-side, #3584e4 0%, rgba(53, 132, 228, 0) 0%); }
 +  to { background-image: radial-gradient(farthest-side, #3584e4 95%, rgba(53, 132, 228, 0)); } }
 +
 +notebook > header > tabs > arrow, windowcontrols button, button { min-height: 24px; min-width: 16px; padding: 4px 9px; border: 1px solid; border-radius: 5px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: #2e3436; outline-color: rgba(53, 132, 228, 0.5); border-color: #cdc7c2; background-image: linear-gradient(to top, #f6f5f4 2px, #fbfafa); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +notebook > header > tabs > arrow, windowcontrols button, button { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +notebook > header > tabs > arrow:focus:focus-visible, button:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +notebook > header > tabs > arrow:hover, button:hover { color: #2e3436; border-color: #cdc7c2; background-image: linear-gradient(to top, #d6d1cd, #e8e6e3 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); -gtk-icon-filter: brightness(1.2); }
 +
 +notebook > header > tabs > arrow.keyboard-activating, notebook > header > tabs > arrow:active, notebook > header > tabs > arrow:checked, button.keyboard-activating, button:active, button:checked { color: #2e3436; border-color: #cdc7c2; background-image: image(#dad6d2); box-shadow: none; transition-duration: 50ms; }
 +
 +notebook > header > tabs > arrow:checked:hover, button:checked:hover { color: #2e3436; border-color: #cdc7c2; background-image: image(#d1ccc7); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:checked:active, button:checked:active { color: #2e3436; border-color: #cdc7c2; background-image: image(#c8c2bc); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop, button.flat:backdrop, button:backdrop { color: #929595; border-color: #d5d0cc; background-image: image(#f6f5f4); box-shadow: none; transition: 200ms ease-out; }
 +
 +notebook > header > tabs > arrow:backdrop:not(:disabled), button.flat:backdrop:not(:disabled), button:backdrop:not(:disabled) { -gtk-icon-filter: none; }
 +
 +notebook > header > tabs > arrow:backdrop:active, notebook > header > tabs > arrow:backdrop:checked, button.flat:backdrop:active, button.flat:backdrop:checked, button:backdrop:active, button:backdrop:checked { color: #929595; border-color: #d5d0cc; background-image: image(#e9e9e3); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop:disabled, button.flat:backdrop:disabled, button:backdrop:disabled { color: #d4cfca; border-color: #d5d0cc; background-image: image(#faf9f8); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:backdrop:disabled:active, notebook > header > tabs > arrow:backdrop:disabled:checked, button.flat:backdrop:disabled:active, button.flat:backdrop:disabled:checked, button:backdrop:disabled:active, button:backdrop:disabled:checked { color: #d4cfca; border-color: #d5d0cc; background-image: image(#e9e9e3); box-shadow: none; }
 +
 +notebook > header > tabs > arrow:disabled, button:disabled { color: #929595; border-color: #d5d0cc; background-image: image(#faf9f8); -gtk-icon-filter: opacity(0.5); }
 +
 +notebook > header > tabs > arrow:disabled:active, notebook > header > tabs > arrow:disabled:checked, button:disabled:active, button:disabled:checked { color: #929595; border-color: #d5d0cc; background-image: image(#e9e9e3); box-shadow: none; }
 +
 +button.sidebar-button, notebook > header > tabs > arrow, windowcontrols button, .toolbar > button, .toolbar > :not(.linked) > button, .toolbar :not(.linked) > menubutton > button, .toolbar :not(.linked) > scalebutton > button, .toolbar :not(.linked) > dropdown > button, .toolbar :not(.linked) > colorbutton > button, .toolbar :not(.linked) > fontbutton > button, .toolbar :not(.linked) > appchooserbutton > button, .toolbar :not(.linked) > combobox > box > button, notebook > header > tabs > arrow.flat, button.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; transition: none; }
 +
 +button.sidebar-button:hover, notebook > header > tabs > arrow:hover, windowcontrols button:hover, .toolbar > button:hover, .toolbar > :not(.linked) > button:hover, .toolbar :not(.linked) > menubutton > button:hover, .toolbar :not(.linked) > scalebutton > button:hover, .toolbar :not(.linked) > dropdown > button:hover, .toolbar :not(.linked) > colorbutton > button:hover, .toolbar :not(.linked) > fontbutton > button:hover, .toolbar :not(.linked) > appchooserbutton > button:hover, .toolbar :not(.linked) > combobox > box > button:hover, button.flat:hover { border-color: transparent; background-image: none; box-shadow: none; background-color: #dad6d2; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-duration: 500ms; }
 +
 +button.keyboard-activating.sidebar-button, notebook > header > tabs > arrow.keyboard-activating, windowcontrols button.keyboard-activating, .toolbar > button.keyboard-activating, .toolbar > :not(.linked) > button.keyboard-activating, .toolbar :not(.linked) > menubutton > button.keyboard-activating, .toolbar :not(.linked) > scalebutton > button.keyboard-activating, .toolbar :not(.linked) > dropdown > button.keyboard-activating, .toolbar :not(.linked) > colorbutton > button.keyboard-activating, .toolbar :not(.linked) > fontbutton > button.keyboard-activating, .toolbar :not(.linked) > appchooserbutton > button.keyboard-activating, .toolbar :not(.linked) > combobox > box > button.keyboard-activating, button.sidebar-button:active, notebook > header > tabs > arrow:active, windowcontrols button:active, .toolbar > button:active, .toolbar > :not(.linked) > button:active, .toolbar :not(.linked) > menubutton > button:active, .toolbar :not(.linked) > scalebutton > button:active, .toolbar :not(.linked) > dropdown > button:active, .toolbar :not(.linked) > colorbutton > button:active, .toolbar :not(.linked) > fontbutton > button:active, .toolbar :not(.linked) > appchooserbutton > button:active, .toolbar :not(.linked) > combobox > box > button:active, button.sidebar-button:checked, notebook > header > tabs > arrow:checked, windowcontrols button:checked, .toolbar > button:checked, .toolbar > :not(.linked) > button:checked, .toolbar :not(.linked) > menubutton > button:checked, .toolbar :not(.linked) > scalebutton > button:checked, .toolbar :not(.linked) > dropdown > button:checked, .toolbar :not(.linked) > colorbutton > button:checked, .toolbar :not(.linked) > fontbutton > button:checked, .toolbar :not(.linked) > appchooserbutton > button:checked, .toolbar :not(.linked) > combobox > box > button:checked, button.flat.keyboard-activating, button.flat:active, button.flat:checked { border-color: transparent; background-image: none; box-shadow: none; background-color: #cdc7c2; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +button.sidebar-button:backdrop, notebook > header > tabs > arrow:backdrop, windowcontrols button:backdrop, .toolbar > button:backdrop, .toolbar > :not(.linked) > button:backdrop, .toolbar :not(.linked) > menubutton > button:backdrop, .toolbar :not(.linked) > scalebutton > button:backdrop, .toolbar :not(.linked) > dropdown > button:backdrop, .toolbar :not(.linked) > colorbutton > button:backdrop, .toolbar :not(.linked) > fontbutton > button:backdrop, .toolbar :not(.linked) > appchooserbutton > button:backdrop, .toolbar :not(.linked) > combobox > box > button:backdrop, button.sidebar-button:disabled, notebook > header > tabs > arrow:disabled, windowcontrols button:disabled, .toolbar > button:disabled, .toolbar > :not(.linked) > button:disabled, .toolbar :not(.linked) > menubutton > button:disabled, .toolbar :not(.linked) > scalebutton > button:disabled, .toolbar :not(.linked) > dropdown > button:disabled, .toolbar :not(.linked) > colorbutton > button:disabled, .toolbar :not(.linked) > fontbutton > button:disabled, .toolbar :not(.linked) > appchooserbutton > button:disabled, .toolbar :not(.linked) > combobox > box > button:disabled, button.flat:backdrop, button.flat:disabled, button.flat:backdrop:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; }
 +
 +notebook > header > tabs > arrow.image-button, button.image-button { min-width: 24px; padding-left: 5px; padding-right: 5px; }
 +
 +notebook > header > tabs > arrow.text-button, button.text-button { padding-left: 16px; padding-right: 16px; }
 +
 +notebook > header > tabs > arrow.text-button.image-button, button.text-button.image-button { padding-left: 8px; padding-right: 8px; }
 +
 +notebook > header > tabs > arrow.text-button.image-button label, button.text-button.image-button label { padding-left: 8px; padding-right: 8px; }
 +
 +notebook > header > tabs > arrow.arrow-button, button.arrow-button { padding-left: 10px; padding-right: 10px; }
 +
 +notebook > header > tabs > arrow.arrow-button > box, windowcontrols button.arrow-button > box, button.arrow-button > box { border-spacing: 4px; }
 +
 +dropdown:drop(active) button.combo, combobox:drop(active) button.combo, notebook > header > tabs > arrow:drop(active), button:drop(active) { color: #2ec27e; border-color: #2ec27e; box-shadow: inset 0 0 0 1px #2ec27e; }
 +
 +row:selected button { border-color: #185fb4; }
 +
 +row:selected button.sidebar-button:not(:active):not(:checked):not(:hover):not(disabled), row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled) { color: #ffffff; border-color: transparent; }
 +
 +row:selected button.sidebar-button:not(:active):not(:checked):not(:hover):not(disabled):backdrop, row:selected button.flat:not(:active):not(:checked):not(:hover):not(disabled):backdrop { color: #fcfcfc; }
 +
 +button.osd { min-width: 26px; min-height: 32px; color: #eeeeec; border-radius: 5px; color: #eeeeec; outline-color: rgba(53, 132, 228, 0.5); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; border: none; box-shadow: none; }
 +
 +button.osd.image-button { min-width: 30px; }
 +
 +button.osd.image-button:only-child { margin: 4px; border-radius: 50%; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); }
 +
 +button.osd:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 27, 27, 0.7)); background-clip: padding-box; border: none; box-shadow: none; }
 +
 +button.osd:active, button.osd:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; border: none; box-shadow: none; }
 +
 +.app-notification button, popover.background.touch-selection button, popover.background.magnifier button, .osd button { color: #eeeeec; outline-color: rgba(53, 132, 228, 0.5); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button:hover, popover.background.touch-selection button:hover, popover.background.magnifier button:hover, .osd button:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 27, 27, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button:active, popover.background.touch-selection button:active, popover.background.magnifier button:active, .app-notification button:checked, popover.background.touch-selection button:checked, popover.background.magnifier button:checked, .osd button:active:backdrop, .osd button:active, .osd button:checked:backdrop, .osd button:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.app-notification button:disabled, popover.background.touch-selection button:disabled, popover.background.magnifier button:disabled, .osd button:disabled:backdrop, .osd button:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; }
 +
 +.app-notification button.flat, popover.background.touch-selection button.flat, popover.background.magnifier button.flat, .osd button.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.app-notification button.flat:hover, popover.background.touch-selection button.flat:hover, popover.background.magnifier button.flat:hover, .osd button.flat:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 27, 27, 0.7)); background-clip: padding-box; }
 +
 +.app-notification button.flat:disabled, popover.background.touch-selection button.flat:disabled, popover.background.magnifier button.flat:disabled, .osd button.flat:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; background-image: none; border-color: transparent; box-shadow: none; }
 +
 +.app-notification button.flat:active, popover.background.touch-selection button.flat:active, popover.background.magnifier button.flat:active, .app-notification button.flat:checked, popover.background.touch-selection button.flat:checked, popover.background.magnifier button.flat:checked, .osd button.flat:active, .osd button.flat:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +button.suggested-action { color: white; outline-color: rgba(255, 255, 255, 0.8); border-color: #15539e; background-image: linear-gradient(to top, #2c7fe3 2px, #3584e4); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +button.suggested-action { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +button.suggested-action:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +button.suggested-action.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #3584e4; }
 +
 +button.suggested-action:hover { color: white; border-color: #185fb4; background-image: linear-gradient(to top, #185cb0, #1c6fd4 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +button.suggested-action:active, button.suggested-action:checked { color: white; border-color: #185fb4; background-image: image(#1961b9); box-shadow: none; }
 +
 +button.suggested-action.flat:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: rgba(53, 132, 228, 0.8); }
 +
 +button.suggested-action:disabled { color: #929595; border-color: #d5d0cc; background-image: image(#faf9f8); }
 +
 +button.suggested-action:disabled:active, button.suggested-action:disabled:checked { color: #acccf4; border-color: #185fb4; background-image: image(#2f80e3); box-shadow: none; }
 +
 +.osd button.suggested-action { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.8); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 132, 228, 0.5)); background-clip: padding-box; }
 +
 +.osd button.suggested-action:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 132, 228, 0.7)); background-clip: padding-box; }
 +
 +.osd button.suggested-action:active:backdrop, .osd button.suggested-action:active, .osd button.suggested-action:checked:backdrop, .osd button.suggested-action:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(#3584e4); background-clip: padding-box; box-shadow: none; }
 +
 +.osd button.suggested-action:disabled:backdrop, .osd button.suggested-action:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; }
 +
 +button.destructive-action { color: white; outline-color: rgba(255, 255, 255, 0.8); border-color: #851015; background-image: linear-gradient(to top, #d71a23 2px, #e01b24); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +button.destructive-action { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +button.destructive-action:focus:focus-visible { outline-color: rgba(255, 255, 255, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +button.destructive-action.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #e01b24; }
 +
 +button.destructive-action:hover { color: white; border-color: #9c1319; background-image: linear-gradient(to top, #971218, #bc171e 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +button.destructive-action:active, button.destructive-action:checked { color: white; border-color: #9c1319; background-image: image(#a0131a); box-shadow: none; }
 +
 +button.destructive-action.flat:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: rgba(224, 27, 36, 0.8); }
 +
 +button.destructive-action:disabled { color: #929595; border-color: #d5d0cc; background-image: image(#faf9f8); }
 +
 +button.destructive-action:disabled:active, button.destructive-action:disabled:checked { color: #f1a5a8; border-color: #9c1319; background-image: image(#dc1d27); box-shadow: none; }
 +
 +.osd button.destructive-action { color: #eeeeec; outline-color: rgba(255, 255, 255, 0.8); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(224, 27, 36, 0.5)); background-clip: padding-box; }
 +
 +.osd button.destructive-action:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(224, 27, 36, 0.7)); background-clip: padding-box; }
 +
 +.osd button.destructive-action:active:backdrop, .osd button.destructive-action:active, .osd button.destructive-action:checked:backdrop, .osd button.destructive-action:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(#e01b24); background-clip: padding-box; box-shadow: none; }
 +
 +.osd button.destructive-action:disabled:backdrop, .osd button.destructive-action:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; }
 +
 +stackswitcher > button > label { padding: 0 6px; margin: 0 -6px; }
 +
 +stackswitcher > button > image { padding: 3px 6px; margin: -3px -6px; }
 +
 +button.font separator { background-color: transparent; }
 +
 +button.font > box { border-spacing: 6px; }
 +
 +button.font > box > box > label { font-weight: bold; }
 +
 +menubutton.circular button, button.circular { min-width: 32px; min-height: 32px; padding: 0; border-radius: 9999px; }
 +
 +menubutton.circular button label, button.circular label { padding: 0; }
 +
 +stacksidebar row.needs-attention > label, stackswitcher > button.needs-attention > label, stackswitcher > button.needs-attention > image { animation: needs_attention 150ms ease-in; background-image: radial-gradient(farthest-side, #3584e4 96%, rgba(53, 132, 228, 0)); background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; background-position: right 3px, right 4px; }
 +
 +stacksidebar row.needs-attention > label:backdrop, stackswitcher > button.needs-attention > label:backdrop, stackswitcher > button.needs-attention > image:backdrop { background-size: 6px 6px, 0 0; }
 +
 +stacksidebar row.needs-attention > label:dir(rtl), stackswitcher > button.needs-attention > label:dir(rtl), stackswitcher > button.needs-attention > image:dir(rtl) { background-position: left 3px, left 4px; }
 +
 +.linked:not(.vertical) > filechooserbutton > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(rtl):not(:last-child) > box > button.combo, .linked:not(.vertical) > filechooserbutton > combobox:dir(ltr):not(:first-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(ltr):not(:first-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(ltr):not(:first-child) > box > button.combo, dropdown.linked button:nth-child(2):dir(ltr), combobox.linked button:nth-child(2):dir(ltr), .linked:not(.vertical) > menubutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > dropdown:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > colorbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > fontbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > filechooserbutton:dir(rtl):not(:last-child) > button, .linked:not(.vertical) > menubutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > dropdown:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > colorbutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > fontbutton:dir(ltr):not(:first-child) > button, .linked:not(.vertical) > filechooserbutton:dir(ltr):not(:first-child) > button, spinbutton.vertical.linked:not(.vertical) > text:dir(rtl):not(:last-child), .linked:not(.vertical) > spinbutton:dir(rtl):not(:last-child):not(.vertical), .linked:not(.vertical) > entry:dir(rtl):not(:last-child), .linked:not(.vertical) > button:dir(rtl):not(:last-child), spinbutton.vertical.linked:not(.vertical) > text:dir(ltr):not(:first-child), .linked:not(.vertical) > spinbutton:dir(ltr):not(:first-child):not(.vertical), .linked:not(.vertical) > entry:dir(ltr):not(:first-child), .linked:not(.vertical) > button:dir(ltr):not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
 +
 +.linked:not(.vertical) > filechooserbutton > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(rtl):not(:first-child) > box > button.combo, .linked:not(.vertical) > filechooserbutton > combobox:dir(ltr):not(:last-child) > box > button.combo, .linked:not(.vertical) > appchooserbutton > combobox:dir(ltr):not(:last-child) > box > button.combo, .linked:not(.vertical) > combobox:dir(ltr):not(:last-child) > box > button.combo, dropdown.linked button:nth-child(2):dir(rtl), combobox.linked button:nth-child(2):dir(rtl), .linked:not(.vertical) > menubutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > dropdown:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > colorbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > fontbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > filechooserbutton:dir(rtl):not(:first-child) > button, .linked:not(.vertical) > menubutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > dropdown:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > colorbutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > fontbutton:dir(ltr):not(:last-child) > button, .linked:not(.vertical) > filechooserbutton:dir(ltr):not(:last-child) > button, spinbutton.vertical.linked:not(.vertical) > text:dir(rtl):not(:first-child), .linked:not(.vertical) > spinbutton:dir(rtl):not(:first-child):not(.vertical), .linked:not(.vertical) > entry:dir(rtl):not(:first-child), .linked:not(.vertical) > button:dir(rtl):not(:first-child), spinbutton.vertical.linked:not(.vertical) > text:dir(ltr):not(:last-child), .linked:not(.vertical) > spinbutton:dir(ltr):not(:last-child):not(.vertical), .linked:not(.vertical) > entry:dir(ltr):not(:last-child), .linked:not(.vertical) > button:dir(ltr):not(:last-child) { border-right-style: none; border-top-right-radius: 0; border-bottom-right-radius: 0; }
 +
 +.linked.vertical > filechooserbutton > combobox:not(:first-child) > box > button.combo, .linked.vertical > appchooserbutton > combobox:not(:first-child) > box > button.combo, .linked.vertical > combobox:not(:first-child) > box > button.combo, .linked.vertical > menubutton:not(:first-child) > button, .linked.vertical > dropdown:not(:first-child) > button, .linked.vertical > colorbutton:not(:first-child) > button, .linked.vertical > fontbutton:not(:first-child) > button, .linked.vertical > filechooserbutton:not(:first-child) > button, spinbutton.vertical.linked > text:not(:first-child), .linked.vertical > spinbutton:not(:first-child):not(.vertical), .linked.vertical > entry:not(:first-child), .linked.vertical > button:not(:first-child) { border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +.linked.vertical > filechooserbutton > combobox:not(:last-child) > box > button.combo, .linked.vertical > appchooserbutton > combobox:not(:last-child) > box > button.combo, .linked.vertical > combobox:not(:last-child) > box > button.combo, .linked.vertical > menubutton:not(:last-child) > button, .linked.vertical > dropdown:not(:last-child) > button, .linked.vertical > colorbutton:not(:last-child) > button, .linked.vertical > fontbutton:not(:last-child) > button, .linked.vertical > filechooserbutton:not(:last-child) > button, spinbutton.vertical.linked > text:not(:last-child), .linked.vertical > spinbutton:not(:last-child):not(.vertical), .linked.vertical > entry:not(:last-child), .linked.vertical > button:not(:last-child) { border-bottom-style: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
 +
 +.scale-popup button:hover, button.link, button.link:hover, button.link:active, button.link:checked, popover.menu box.circular-buttons button.circular.image-button.model, list > row button.image-button:not(.flat), modelbutton.flat { background-color: transparent; background-image: none; border-color: transparent; box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); text-shadow: none; -gtk-icon-shadow: none; }
 +
 +/* menu buttons */
 +modelbutton.flat { min-height: 26px; padding-left: 5px; padding-right: 5px; border-radius: 5px; }
 +
 +modelbutton.flat:hover { background-color: #e8e6e3; }
 +
 +modelbutton.flat:disabled { color: #929595; }
 +
 +modelbutton.flat arrow { background: none; min-width: 16px; min-height: 16px; opacity: 0.3; }
 +
 +modelbutton.flat arrow:hover { background: none; }
 +
 +modelbutton.flat arrow.left { -gtk-icon-source: -gtk-icontheme("go-previous-symbolic"); }
 +
 +modelbutton.flat arrow.right { -gtk-icon-source: -gtk-icontheme("go-next-symbolic"); }
 +
 +/* oldstyle toolbar buttons */
 +.toolbar > button, .toolbar > :not(.linked) > button, .toolbar :not(.linked) > menubutton > button, .toolbar :not(.linked) > scalebutton > button, .toolbar :not(.linked) > dropdown > button, .toolbar :not(.linked) > colorbutton > button, .toolbar :not(.linked) > fontbutton > button, .toolbar :not(.linked) > appchooserbutton > button, .toolbar :not(.linked) > combobox > box > button { margin: 1px; }
 +
 +button.color { padding: 4px; }
 +
 +button.color > colorswatch:only-child { box-shadow: 0 1px rgba(0, 0, 0, 0.1); }
 +
 +button.color > colorswatch:only-child, button.color > colorswatch:only-child > overlay { border-radius: 0; }
 +
 +.osd button.color > colorswatch:only-child { box-shadow: none; }
 +
 +.osd button.color:disabled colorswatch:only-child, .osd button.color:active colorswatch:only-child, .osd button.color:checked colorswatch:only-child, button.color:disabled colorswatch:only-child, button.color:active colorswatch:only-child, button.color:checked colorswatch:only-child { box-shadow: none; }
 +
 +/* list buttons */
 +/* tone down as per new designs, see issue #1473 */
 +popover.menu box.circular-buttons button.circular.image-button.model, list > row button.image-button:not(.flat) { border: 1px solid rgba(205, 199, 194, 0.5); }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:hover, list > row button.image-button:not(.flat):hover { color: #2e3436; border-color: #cdc7c2; background-image: linear-gradient(to top, #d6d1cd, #e8e6e3 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:active, popover.menu box.circular-buttons button.circular.image-button.model:checked, list > row button.image-button:not(.flat):active, list > row button.image-button:not(.flat):checked { color: #2e3436; border-color: #cdc7c2; background-image: image(#dad6d2); box-shadow: none; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model, list > row button.image-button.suggested-action:not(.flat) { color: white; outline-color: rgba(255, 255, 255, 0.8); border-color: #15539e; background-image: linear-gradient(to top, #2c7fe3 2px, #3584e4); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model, list > row button.image-button.suggested-action:not(.flat) { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +popover.menu box.circular-buttons button.suggested-action.circular.image-button.model:focus:focus-visible, list > row button.image-button.suggested-action:not(.flat):focus:focus-visible { outline-color: rgba(255, 255, 255, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model, list > row button.image-button.destructive-action:not(.flat) { color: white; outline-color: rgba(255, 255, 255, 0.8); border-color: #851015; background-image: linear-gradient(to top, #d71a23 2px, #e01b24); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model, list > row button.image-button.destructive-action:not(.flat) { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +popover.menu box.circular-buttons button.destructive-action.circular.image-button.model:focus:focus-visible, list > row button.image-button.destructive-action:not(.flat):focus:focus-visible { outline-color: rgba(255, 255, 255, 0.8); outline-width: 2px; outline-offset: -2px; }
 +
 +/********* Links * */
 +button.link, link { color: #1b6acb; text-decoration: underline; }
 +
 +button.link:visited, link:visited { color: #15539e; }
 +
 +*:selected button.link:visited, *:selected link:visited { color: #a1bad8; }
 +
 +button.link:hover, link:hover { color: #3584e4; }
 +
 +*:selected button.link:hover, *:selected link:hover { color: #ebf3fc; }
 +
 +button.link:active, link:active { color: #1b6acb; }
 +
 +*:selected button.link:active, *:selected link:active { color: #d1e1f5; }
 +
 +button.link:disabled, link:disabled { color: rgba(115, 115, 115, 0.8); }
 +
 +button.link:selected, *:selected button.link, link:selected, *:selected link { color: #d1e1f5; }
 +
 +link { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +link { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +link:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +button.link, button.link:hover, button.link:active, button.link:checked { text-shadow: none; }
 +
 +button.link > label { text-decoration: underline; }
 +
 +/***************** GtkSpinButton * */
 +spinbutton { font-feature-settings: "tnum"; }
 +
 +spinbutton:not(.vertical) { padding: 0; border-spacing: 0; /* :not here just to bump specificity above that of the list button styling */ }
 +
 +.osd spinbutton:not(.vertical) > text, spinbutton:not(.vertical) > text { min-width: 28px; margin: 0; background: none; background-color: transparent; border: none; border-radius: 0; box-shadow: none; padding: 6px; }
 +
 +.osd spinbutton:not(.vertical) > text:backdrop:disabled, spinbutton:not(.vertical) > text:backdrop:disabled { background-color: transparent; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat), spinbutton:not(.vertical) > button.image-button.down:not(.flat) { min-height: 16px; margin: 0; padding-bottom: 0; padding-top: 0; color: #43484a; background-image: none; border-style: none none none solid; border-color: rgba(205, 199, 194, 0.3); border-radius: 0; box-shadow: none; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl), spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl) { border-style: none solid none none; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):hover, spinbutton:not(.vertical) > button.image-button.down:not(.flat):hover { color: #2e3436; background-color: #ebe8e6; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):disabled, spinbutton:not(.vertical) > button.image-button.down:not(.flat):disabled { color: rgba(146, 149, 149, 0.3); background-color: transparent; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):active, spinbutton:not(.vertical) > button.image-button.down:not(.flat):active { background-color: rgba(0, 0, 0, 0.1); box-shadow: inset 0 2px 3px -1px rgba(0, 0, 0, 0.2); }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(ltr):last-child, spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(ltr):last-child { border-radius: 0 5px 5px 0; }
 +
 +spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl):first-child, spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl):first-child { border-radius: 5px 0 0 5px; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat), .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat) { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #eeeeec; border-style: none none none solid; border-color: rgba(0, 0, 0, 0.4); border-radius: 0; box-shadow: none; -gtk-icon-shadow: 0 1px black; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl), .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl) { border-style: none solid none none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):hover, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):hover { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #eeeeec; border-color: rgba(0, 0, 0, 0.5); background-color: rgba(27, 27, 27, 0.7); -gtk-icon-shadow: 0 1px black; box-shadow: none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):disabled, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; color: #919190; border-color: rgba(0, 0, 0, 0.5); -gtk-icon-shadow: none; box-shadow: none; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(ltr):last-child, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(ltr):last-child { border-radius: 0 5px 5px 0; }
 +
 +.osd spinbutton:not(.vertical) > button.image-button.up:not(.flat):dir(rtl):first-child, .osd spinbutton:not(.vertical) > button.image-button.down:not(.flat):dir(rtl):first-child { border-radius: 5px 0 0 5px; }
 +
 +spinbutton.vertical:disabled { color: #929595; }
 +
 +spinbutton.vertical:drop(active) { border-color: transparent; box-shadow: none; }
 +
 +spinbutton.vertical > text { min-height: 32px; min-width: 32px; padding: 0; border-radius: 0; }
 +
 +spinbutton.vertical > text > selection { background-color: rgba(141, 141, 141, 0.5); color: transparent; }
 +
 +spinbutton.vertical > text > selection:focus-within { background-color: rgba(53, 132, 228, 0.3); color: #ffffff; }
 +
 +spinbutton.vertical > text > block-cursor { color: #ffffff; background-color: black; }
 +
 +spinbutton.vertical > button { min-height: 32px; min-width: 32px; padding: 0; }
 +
 +spinbutton.vertical > button.up { border-bottom-style: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
 +
 +spinbutton.vertical > button.down { border-top-style: none; border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +.osd spinbutton.vertical > button:first-child { color: #eeeeec; outline-color: rgba(53, 132, 228, 0.5); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > button:first-child:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 27, 27, 0.7)); background-clip: padding-box; }
 +
 +.osd spinbutton.vertical > button:first-child:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.osd spinbutton.vertical > button:first-child:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; }
 +
 +treeview spinbutton:not(.vertical) { min-height: 0; border-style: none; border-radius: 0; }
 +
 +treeview spinbutton:not(.vertical) > text { min-height: 0; padding: 1px 2px; }
 +
 +/************** ComboBoxes * */
 +dropdown > popover.menu.background > contents { padding: 0; }
 +
 +dropdown > button > box { border-spacing: 6px; }
 +
 +dropdown > button > box > stack > row.activatable:hover { background: none; box-shadow: none; }
 +
 +dropdown arrow, combobox arrow { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); min-height: 16px; min-width: 16px; }
 +
 +dropdown > popover.menu > contents modelbutton, combobox > popover.menu > contents modelbutton { padding-left: 9px; padding-right: 9px; }
 +
 +dropdown:drop(active), combobox:drop(active) { box-shadow: none; }
 +
 +dropdown popover, combobox popover { margin-top: 6px; padding: 0; }
 +
 +dropdown popover listview, combobox popover listview { margin: 8px 0; }
 +
 +dropdown popover listview > row.activatable, combobox popover listview > row.activatable { padding: 8px; }
 +
 +dropdown popover listview > row.activatable:selected, dropdown popover listview > row.activatable:selected:hover, combobox popover listview > row.activatable:selected, combobox popover listview > row.activatable:selected:hover { outline-color: rgba(255, 255, 255, 0.8); color: black; background-color: #e8e6e3; box-shadow: none; }
 +
 +dropdown popover .dropdown-searchbar, combobox popover .dropdown-searchbar { padding: 6px; border-bottom: 1px solid #cdc7c2; }
 +
 +/************ Toolbars * */
 +searchbar > revealer > box, .toolbar { padding: 4px; border-spacing: 4px; background-color: #f6f5f4; }
 +
 +.osd .toolbar { background-color: transparent; }
 +
 +.toolbar.osd { padding: 13px; border: none; border-radius: 5px; background-color: rgba(53, 53, 53, 0.7); }
 +
 +.toolbar.osd.left, .toolbar.osd.right, .toolbar.osd.top, .toolbar.osd.bottom { border-radius: 0; }
 +
 +.toolbar.horizontal > separator { margin: 4px 0; }
 +
 +.toolbar.vertical > separator { margin: 0 4px; }
 +
 +searchbar > revealer > box { padding: 6px; border-spacing: 6px; border-width: 0 0 1px; }
 +
 +searchbar > revealer > box { border-style: solid; border-color: #cdc7c2; background-color: #eae7e5; }
 +
 +searchbar > revealer > box:backdrop { border-color: #d5d0cc; background-color: #eae8e6; box-shadow: none; transition: 200ms ease-out; }
 +
 +/************** GtkInfoBar * */
 +infobar > revealer > box { padding: 8px; border-spacing: 12px; }
 +
 +infobar.action:hover > revealer > box { background-color: #f4ebe1; }
 +
 +infobar.info > revealer > box, infobar.question > revealer > box, infobar.warning > revealer > box, infobar.error > revealer > box { border-bottom: 1px solid #d8d4d0; background-color: #f1e6d9; }
 +
 +infobar .close, searchbar .close { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; min-width: 16px; min-height: 16px; padding: 4px; border-radius: 50%; }
 +
 +infobar .close:hover, searchbar .close:hover { color: #2e3436; border-color: #cdc7c2; background-image: linear-gradient(to top, #d6d1cd, #e8e6e3 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +/***************** Title buttons * */
 +windowcontrols { border-spacing: 6px; }
 +
 +windowcontrols.start:not(.empty):dir(ltr), windowcontrols.end:not(.empty):dir(rtl) { margin-right: 7px; }
 +
 +windowcontrols.start:not(.empty):dir(rtl), windowcontrols.end:not(.empty):dir(ltr) { margin-left: 7px; }
 +
 +windowcontrols button { border-radius: 9999px; padding: 6px; margin: 0 2px; min-width: 0; min-height: 0; }
 +
 +windowcontrols button:hover { border-color: transparent; background-image: none; box-shadow: none; background-color: #d1ccc7; }
 +
 +windowcontrols button:active, windowcontrols button:checked { border-color: transparent; background-image: none; box-shadow: none; background-color: #bab3ab; }
 +
 +/*************** Header bars * */
 +.titlebar:not(headerbar), headerbar { padding: 0 6px; min-height: 46px; border-width: 0 0 1px; border-style: solid; border-color: #bfb8b1; border-radius: 0; background: #dfdcd8 linear-gradient(to top, #dad6d2, #e1dedb); /* Darken switchbuttons for headerbars. issue #1588 */ }
 +
 +.titlebar:backdrop:not(headerbar), headerbar:backdrop { border-color: #d5d0cc; background-color: #f6f5f4; background-image: none; transition: 200ms ease-out; }
 +
 +.titlebar:not(headerbar) .title, headerbar .title { padding-left: 12px; padding-right: 12px; font-weight: bold; }
 +
 +.titlebar:not(headerbar) .subtitle, headerbar .subtitle { font-size: smaller; padding-left: 12px; padding-right: 12px; }
 +
 +.titlebar:not(headerbar) stackswitcher > button:checked, .titlebar:not(headerbar) button.toggle:checked, headerbar stackswitcher > button:checked, headerbar button.toggle:checked { background: image(#cfcac4); border-color: #c6bfb9; border-top-color: #bab3ab; }
 +
 +.titlebar:not(headerbar) stackswitcher > button:checked:backdrop, .titlebar:not(headerbar) button.toggle:checked:backdrop, headerbar stackswitcher > button:checked:backdrop, headerbar button.toggle:checked:backdrop { color: #929595; border-color: #d5d0cc; background-image: image(#e9e9e3); box-shadow: none; }
 +
 +.tiled .titlebar:not(headerbar), .tiled-top .titlebar:not(headerbar), .tiled-left .titlebar:not(headerbar), .tiled-right .titlebar:not(headerbar), .tiled-bottom .titlebar:not(headerbar), .maximized .titlebar:not(headerbar), .fullscreen .titlebar:not(headerbar), .tiled headerbar, .tiled-top headerbar, .tiled-left headerbar, .tiled-right headerbar, .tiled-bottom headerbar, .maximized headerbar, .fullscreen headerbar { border-radius: 0; }
 +
 +.default-decoration.titlebar:not(headerbar), headerbar.default-decoration { min-height: 28px; padding: 4px; }
 +
 +.default-decoration.titlebar:not(headerbar) windowcontrols button, .default-decoration.titlebar:not(headerbar) windowcontrols menubutton, headerbar.default-decoration windowcontrols button, headerbar.default-decoration windowcontrols menubutton { min-height: 26px; min-width: 26px; margin: 0; padding: 0; }
 +
 +.default-decoration.titlebar:not(headerbar) windowcontrols menubutton button, headerbar.default-decoration windowcontrols menubutton button { min-height: 20px; min-width: 20px; margin: 0; padding: 4px; }
 +
 +.solid-csd .titlebar:dir(rtl):not(headerbar), .solid-csd .titlebar:dir(ltr):not(headerbar), .solid-csd headerbar:backdrop:dir(rtl), .solid-csd headerbar:backdrop:dir(ltr), .solid-csd headerbar:dir(rtl), .solid-csd headerbar:dir(ltr) { margin-left: -1px; margin-right: -1px; margin-top: -1px; border-radius: 0; box-shadow: none; }
 +
 +headerbar > windowhandle > box, headerbar > windowhandle > box > box.start, headerbar > windowhandle > box > box.end { border-spacing: 6px; }
 +
 +headerbar entry, headerbar spinbutton, headerbar separator:not(.sidebar), headerbar button, headerbar menubutton { margin-top: 6px; margin-bottom: 6px; }
 +
 +headerbar menubutton > button { margin-top: 0px; margin-bottom: 0px; }
 +
 +headerbar switch { margin-top: 10px; margin-bottom: 10px; }
 +
 +window.csd > .titlebar:not(headerbar) { padding: 0; background-color: transparent; background-image: none; border-style: none; border-color: transparent; }
 +
 +.titlebar:not(headerbar) separator { background-color: #cdc7c2; }
 +
 +window.devel headerbar.titlebar { background: #f6f5f4 cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, linear-gradient(to right, transparent 65%, rgba(53, 132, 228, 0.2)), linear-gradient(to top, #d8d4d0, #dfdcd8 3px, #edebe9); }
 +
 +window.devel headerbar.titlebar:backdrop { background: #f6f5f4 cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, image(#f6f5f4); /* background-color would flash */ }
 +
 +/************ Pathbars * */
 +pathbar > button.text-button, pathbar > button.image-button, pathbar > button { padding-left: 4px; padding-right: 4px; }
 +
 +pathbar > button.text-button.image-button label { padding-left: 0; padding-right: 0; }
 +
 +pathbar > button.text-button.image-button label:last-child, pathbar > button label:last-child { padding-right: 8px; }
 +
 +pathbar > button.text-button.image-button label:first-child, pathbar > button label:first-child { padding-left: 8px; }
 +
 +pathbar > button image { padding-left: 4px; padding-right: 4px; }
 +
 +pathbar > button.slider-button { padding-left: 0; padding-right: 0; }
 +
 +/************** Tree Views * */
 +columnview.view, treeview.view { border-left-color: #d7d2ce; border-top-color: #d7d2ce; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +columnview.view, treeview.view { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +columnview.view:focus:focus-visible, treeview.view:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected { border-radius: 0; outline-color: rgba(255, 255, 255, 0.8); }
 +
 +columnview.view:disabled, treeview.view:disabled { color: #929595; }
 +
 +columnview.view:disabled:selected, treeview.view:disabled:selected { color: #86b5ef; }
 +
 +columnview.view:disabled:selected:backdrop, treeview.view:disabled:selected:backdrop { color: #71a8eb; }
 +
 +columnview.view.separator, treeview.view.separator { min-height: 2px; color: #d7d2ce; }
 +
 +columnview.view:backdrop, treeview.view:backdrop { border-left-color: #ddd9d6; border-top: #ddd9d6; }
 +
 +columnview.view:drop(active), treeview.view:drop(active) { box-shadow: none; }
 +
 +columnview.view > dndtarget:drop(active), treeview.view > dndtarget:drop(active) { border-style: solid none; border-width: 1px; border-color: #185fb4; }
 +
 +columnview.view > dndtarget.after:drop(active), treeview.view > dndtarget.after:drop(active) { border-top-style: none; }
 +
 +columnview.view > dndtarget.before:drop(active), treeview.view > dndtarget.before:drop(active) { border-bottom-style: none; }
 +
 +columnview.view.expander, treeview.view.expander { min-width: 16px; min-height: 16px; -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); color: #4d4d4d; }
 +
 +columnview.view.expander:dir(rtl), treeview.view.expander:dir(rtl) { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); }
 +
 +columnview.view.expander:hover, treeview.view.expander:hover { color: black; }
 +
 +columnview.view.expander:selected, treeview.view.expander:selected { color: #c2daf7; }
 +
 +columnview.view.expander:selected:hover, treeview.view.expander:selected:hover { color: #ffffff; }
 +
 +columnview.view.expander:checked, treeview.view.expander:checked { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +columnview.view.progressbar, treeview.view.progressbar { color: #ffffff; background-color: #3584e4; background-image: image(#3584e4); box-shadow: none; }
 +
 +columnview.view.progressbar:selected:focus, columnview.view.progressbar:selected, treeview.view.progressbar:selected:focus, treeview.view.progressbar:selected { color: #3584e4; background-image: image(#ffffff); }
 +
 +columnview.view.progressbar:selected:focus:backdrop, columnview.view.progressbar:selected:backdrop, treeview.view.progressbar:selected:focus:backdrop, treeview.view.progressbar:selected:backdrop { color: #3584e4; background-color: #fcfcfc; }
 +
 +columnview.view.trough, treeview.view.trough { background-color: rgba(46, 52, 54, 0.1); }
 +
 +columnview.view.trough:selected:focus, columnview.view.trough:selected, treeview.view.trough:selected:focus, treeview.view.trough:selected { background-color: rgba(255, 255, 255, 0.3); }
 +
 +columnview.view > header > button, treeview.view > header > button { color: #979a9b; background-color: #ffffff; font-weight: bold; text-shadow: none; box-shadow: none; }
 +
 +columnview.view > header > button:hover, treeview.view > header > button:hover { color: #636769; box-shadow: none; transition: none; }
 +
 +columnview.view > header > button:active, treeview.view > header > button:active { color: #2e3436; transition: none; }
 +
 +columnview.view > header > button sort-indicator, treeview.view > header > button sort-indicator { min-height: 16px; min-width: 16px; }
 +
 +columnview.view > header > button sort-indicator.ascending, treeview.view > header > button sort-indicator.ascending { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +columnview.view > header > button sort-indicator.descending, treeview.view > header > button sort-indicator.descending { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +columnview.view button.dnd:active, columnview.view button.dnd:selected, columnview.view button.dnd:hover, columnview.view button.dnd, columnview.view header.button.dnd:active, columnview.view header.button.dnd:selected, columnview.view header.button.dnd:hover, columnview.view header.button.dnd, treeview.view button.dnd:active, treeview.view button.dnd:selected, treeview.view button.dnd:hover, treeview.view button.dnd, treeview.view header.button.dnd:active, treeview.view header.button.dnd:selected, treeview.view header.button.dnd:hover, treeview.view header.button.dnd { padding: 0 6px; color: #ffffff; background-image: none; background-color: #3584e4; border-style: none; border-radius: 0; box-shadow: inset 0 0 0 1px #ffffff; text-shadow: none; transition: none; }
 +
 +columnview.view acceleditor > label, treeview.view acceleditor > label { background-color: #3584e4; }
 +
 +columnview.view > header > button, treeview.view > header > button, columnview.view > header > button:hover, treeview.view > header > button:hover, columnview.view > header > button:active, treeview.view > header > button:active { padding: 0 6px; background-image: none; border-style: none none solid solid; border-color: #d7d2ce; border-radius: 0; text-shadow: none; }
 +
 +columnview.view > header > button:disabled, treeview.view > header > button:disabled { border-color: #f6f5f4; background-image: none; }
 +
 +columnview.view > header > button:last-child, treeview.view > header > button:last-child { border-right-style: none; }
 +
 +/*************** Popovers   * */
 +popover.background { background-color: transparent; font: initial; }
 +
 +popover.background > arrow, popover.background > contents { background-color: #ffffff; background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.23); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }
 +
 +popover.background:backdrop { background-color: transparent; }
 +
 +popover.background > contents { padding: 8px; border-radius: 9px; }
 +
 +popover.background > contents > list, popover.background > contents > .view, popover.background > contents > iconview, popover.background > contents > .toolbar { border-style: none; background-color: transparent; }
 +
 +popover.background > contents separator { background-color: #d9d5d1; margin: 3px; }
 +
 +popover.background > contents list separator { margin: 0; }
 +
 +.osd popover.background, popover.background.touch-selection, popover.background.magnifier { background-color: transparent; }
 +
 +.osd popover.background > arrow, .osd popover.background > contents, popover.background.touch-selection > arrow, popover.background.touch-selection > contents, popover.background.magnifier > arrow, popover.background.magnifier > contents { border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: none; }
 +
 +magnifier { background-color: #ffffff; }
 +
 +/********************** Popover Base Menus * */
 +popover.menu { padding: 0; }
 +
 +popover.menu box.inline-buttons { padding: 0 12px; }
 +
 +popover.menu box.inline-buttons button.image-button.model { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; min-height: 30px; min-width: 30px; padding: 0; border: none; outline: none; transition: none; }
 +
 +popover.menu box.inline-buttons button.image-button.model:selected { background: image(#e8e6e3); }
 +
 +popover.menu box.circular-buttons { padding: 12px 12px 6px; }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model { padding: 11px; }
 +
 +popover.menu box.circular-buttons button.circular.image-button.model:focus { background-color: #e8e6e3; border-color: #e8e6e3; }
 +
 +popover.menu > arrow, popover.menu.background > contents { background-color: #ffffff; padding: 5px; }
 +
 +popover.menu.background separator { margin: 6px 0; }
 +
 +popover.menu accelerator { color: alpha(currentColor,0.55); }
 +
 +popover.menu accelerator:dir(ltr) { margin-left: 12px; }
 +
 +popover.menu accelerator:dir(rtl) { margin-right: 12px; }
 +
 +popover.menu check, popover.menu radio { transform: scale(0.8); border-width: 1.2px; border-color: transparent; box-shadow: none; background-image: image(transparent); color: black; }
 +
 +popover.menu check:hover, popover.menu radio:hover { transform: scale(0.8); border-width: 1.2px; color: black; box-shadow: none; background-image: image(transparent); }
 +
 +popover.menu check:active, popover.menu radio:active { transform: scale(0.8); border-width: 1.2px; color: black; box-shadow: none; background-image: image(transparent); }
 +
 +popover.menu radio { border-color: #cdc7c2; }
 +
 +popover.menu radio:active { border-color: rgba(205, 199, 194, 0.5); }
 +
 +popover.menu arrow.left, popover.menu radio.left, popover.menu check.left { margin-left: -2px; margin-right: 6px; }
 +
 +popover.menu arrow.right, popover.menu radio.right, popover.menu check.right { margin-left: 6px; margin-right: -2px; }
 +
 +popover.menu modelbutton { min-height: 30px; min-width: 40px; padding: 0 12px; border-radius: 5px; }
 +
 +popover.menu modelbutton:selected { color: black; background-color: #e8e6e3; }
 +
 +popover.menu modelbutton:selected:active { background-color: #d6d1cd; }
 +
 +popover.menu label.title { font-weight: bold; padding: 4px 32px; }
 +
 +menubar { padding: 0px; box-shadow: inset 0 -1px rgba(0, 0, 0, 0.1); }
 +
 +menubar > item { min-height: 16px; padding: 4px 8px; }
 +
 +menubar > item:selected { box-shadow: inset 0 -3px #3584e4; color: #1b6acb; }
 +
 +menubar > item:disabled { color: #929595; box-shadow: none; }
 +
 +menubar > item popover.menu.background > contents { padding: 5px; }
 +
 +menubar > item popover.menu popover.menu { padding: 0 0 4px 0; }
 +
 +menubar > item popover.menu.background popover.menu.background > contents { margin: 0; border-radius: 9px; }
 +
 +/************* Notebooks * */
 +notebook { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +notebook > header > tabs > tab:checked { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +notebook:focus:focus-visible > header > tabs > tab:checked { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +notebook > header { padding: 1px; border-color: #cdc7c2; border-width: 1px; background-color: #e1dedb; }
 +
 +notebook > header > tabs { margin: -1px; }
 +
 +notebook > header.top { border-bottom-style: solid; }
 +
 +notebook > header.top > tabs { margin-bottom: -2px; }
 +
 +notebook > header.top > tabs > tab:hover { box-shadow: inset 0 -4px #cdc7c2; }
 +
 +notebook > header.top > tabs > tab:checked { box-shadow: inset 0 -4px #3584e4; }
 +
 +notebook > header.bottom { border-top-style: solid; }
 +
 +notebook > header.bottom > tabs { margin-top: -2px; }
 +
 +notebook > header.bottom > tabs > tab:hover { box-shadow: inset 0 4px #cdc7c2; }
 +
 +notebook > header.bottom > tabs > tab:checked { box-shadow: inset 0 4px #3584e4; }
 +
 +notebook > header.left { border-right-style: solid; }
 +
 +notebook > header.left > tabs { margin-right: -2px; }
 +
 +notebook > header.left > tabs > tab:hover { box-shadow: inset -4px 0 #cdc7c2; }
 +
 +notebook > header.left > tabs > tab:checked { box-shadow: inset -4px 0 #3584e4; }
 +
 +notebook > header.right { border-left-style: solid; }
 +
 +notebook > header.right > tabs { margin-left: -2px; }
 +
 +notebook > header.right > tabs > tab:hover { box-shadow: inset 4px 0 #cdc7c2; }
 +
 +notebook > header.right > tabs > tab:checked { box-shadow: inset 4px 0 #3584e4; }
 +
 +notebook > header.top > tabs > arrow { border-top-style: none; }
 +
 +notebook > header.bottom > tabs > arrow { border-bottom-style: none; }
 +
 +notebook > header.top > tabs > arrow, notebook > header.bottom > tabs > arrow { margin-left: -5px; margin-right: -5px; padding-left: 4px; padding-right: 4px; }
 +
 +notebook > header.top > tabs > arrow.down, notebook > header.bottom > tabs > arrow.down { -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); }
 +
 +notebook > header.top > tabs > arrow.up, notebook > header.bottom > tabs > arrow.up { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
 +
 +notebook > header.left > tabs > arrow { border-left-style: none; }
 +
 +notebook > header.right > tabs > arrow { border-right-style: none; }
 +
 +notebook > header.left > tabs > arrow, notebook > header.right > tabs > arrow { margin-top: -5px; margin-bottom: -5px; padding-top: 4px; padding-bottom: 4px; }
 +
 +notebook > header.left > tabs > arrow.down, notebook > header.right > tabs > arrow.down { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +notebook > header.left > tabs > arrow.up, notebook > header.right > tabs > arrow.up { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +notebook > header > tabs > arrow { min-height: 16px; min-width: 16px; border-radius: 0; }
 +
 +notebook > header > tabs > arrow:hover:not(:active):not(:backdrop) { background-clip: padding-box; background-image: none; background-color: rgba(255, 255, 255, 0.3); border-color: transparent; box-shadow: none; }
 +
 +notebook > header > tabs > arrow:disabled { border-color: transparent; background-color: transparent; background-image: none; box-shadow: none; }
 +
 +notebook > header > tabs > tab { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); min-height: 30px; min-width: 30px; padding: 3px 12px; color: #2e3436; font-weight: normal; border-width: 1px; border-color: transparent; }
 +
 +notebook > header > tabs > tab:hover { color: #2e3436; background-color: #d8d4d0; }
 +
 +notebook > header > tabs > tab.reorderable-page:hover { border-color: rgba(205, 199, 194, 0.3); background-color: rgba(246, 245, 244, 0.2); }
 +
 +notebook > header > tabs > tab:not(:checked) { outline-color: transparent; }
 +
 +notebook > header > tabs > tab:checked { color: #2e3436; }
 +
 +notebook > header > tabs > tab.reorderable-page:checked { border-color: rgba(205, 199, 194, 0.5); background-color: rgba(246, 245, 244, 0.5); }
 +
 +notebook > header > tabs > tab.reorderable-page:checked:hover { background-color: rgba(246, 245, 244, 0.7); }
 +
 +notebook > header > tabs > tab button.flat { color: alpha(currentColor,0.3); padding: 0; margin-top: 4px; margin-bottom: 4px; min-width: 20px; min-height: 20px; }
 +
 +notebook > header > tabs > tab button.flat:hover { color: currentColor; }
 +
 +notebook > header > tabs > tab button.flat:last-child { margin-left: 4px; margin-right: -4px; }
 +
 +notebook > header > tabs > tab button.flat:first-child { margin-left: -4px; margin-right: 4px; }
 +
 +notebook > header.top > tabs, notebook > header.bottom > tabs { padding-left: 4px; padding-right: 4px; }
 +
 +notebook > header.top > tabs:not(:only-child), notebook > header.bottom > tabs:not(:only-child) { margin-left: 3px; margin-right: 3px; }
 +
 +notebook > header.top > tabs:not(:only-child):first-child, notebook > header.bottom > tabs:not(:only-child):first-child { margin-left: -1px; }
 +
 +notebook > header.top > tabs:not(:only-child):last-child, notebook > header.bottom > tabs:not(:only-child):last-child { margin-right: -1px; }
 +
 +notebook > header.top > tabs > tab, notebook > header.bottom > tabs > tab { margin-left: 4px; margin-right: 4px; }
 +
 +notebook > header.top > tabs > tab.reorderable-page, notebook > header.bottom > tabs > tab.reorderable-page { border-style: none solid; }
 +
 +notebook > header.left > tabs, notebook > header.right > tabs { padding-top: 4px; padding-bottom: 4px; }
 +
 +notebook > header.left > tabs:not(:only-child), notebook > header.right > tabs:not(:only-child) { margin-top: 3px; margin-bottom: 3px; }
 +
 +notebook > header.left > tabs:not(:only-child):first-child, notebook > header.right > tabs:not(:only-child):first-child { margin-top: -1px; }
 +
 +notebook > header.left > tabs:not(:only-child):last-child, notebook > header.right > tabs:not(:only-child):last-child { margin-bottom: -1px; }
 +
 +notebook > header.left > tabs > tab, notebook > header.right > tabs > tab { margin-top: 4px; margin-bottom: 4px; }
 +
 +notebook > header.left > tabs > tab.reorderable-page, notebook > header.right > tabs > tab.reorderable-page { border-style: solid none; }
 +
 +notebook > header.top > tabs > tab { padding-bottom: 4px; }
 +
 +notebook > header.bottom > tabs > tab { padding-top: 4px; }
 +
 +notebook > stack:not(:only-child) { background-color: #ffffff; }
 +
 +/************** Scrollbars * */
 +scrollbar { background-color: #cecece; transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scrollbar.top { border-bottom: 1px solid #cdc7c2; }
 +
 +scrollbar.bottom { border-top: 1px solid #cdc7c2; }
 +
 +scrollbar.left { border-right: 1px solid #cdc7c2; }
 +
 +scrollbar.right { border-left: 1px solid #cdc7c2; }
 +
 +scrollbar > range > trough > slider { min-width: 8px; min-height: 8px; margin: -1px; border: 4px solid transparent; border-radius: 10px; background-clip: padding-box; background-color: #7e8182; transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scrollbar > range > trough > slider:hover { background-color: #565b5c; }
 +
 +scrollbar > range > trough > slider:hover:active { background-color: #1b6acb; }
 +
 +scrollbar > range > trough > slider:disabled { background-color: transparent; }
 +
 +scrollbar > range.fine-tune > trough > slider { transition: none; min-width: 6px; min-height: 6px; }
 +
 +scrollbar > range.fine-tune.horizontal > trough > slider { border-width: 5px 4px; }
 +
 +scrollbar > range.fine-tune.vertical > trough > slider { border-width: 4px 5px; }
 +
 +scrollbar.overlay-indicator:not(.dragging):not(.hovering) { border-color: transparent; opacity: 0.4; background-color: transparent; }
 +
 +scrollbar.overlay-indicator:not(.dragging):not(.hovering) > range > trough > slider { margin: 0; min-width: 3px; min-height: 3px; background-color: #2e3436; border: 1px solid white; }
 +
 +scrollbar.overlay-indicator.horizontal:not(.dragging):not(.hovering) > range > trough > slider { margin: 0 2px; min-width: 40px; }
 +
 +scrollbar.overlay-indicator.vertical:not(.dragging):not(.hovering) > range > trough > slider { margin: 2px 0; min-height: 40px; }
 +
 +scrollbar.overlay-indicator.dragging, scrollbar.overlay-indicator.hovering { opacity: 0.8; }
 +
 +scrollbar.horizontal > range > trough > slider { min-width: 40px; }
 +
 +scrollbar.vertical > range > trough > slider { min-height: 40px; }
 +
 +treeview ~ scrollbar.vertical { border-top: 1px solid #cdc7c2; margin-top: -1px; }
 +
 +/********** Switch * */
 +switch { font-weight: bold; font-size: smaller; border: 1px solid #cdc7c2; border-radius: 14px; color: #2e3436; background-color: #e1dedb; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; /* only show i / o for the accessible theme */ }
 +
 +switch { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +switch:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: 0; }
 +
 +headerbar switch { background-color: #cecac5; }
 +
 +switch:checked { color: #ffffff; border-color: #185fb4; background-color: #3584e4; }
 +
 +switch:disabled { color: #929595; border-color: #cdc7c2; background-color: #faf9f8; text-shadow: none; }
 +
 +switch > slider { color: #2e3436; outline-color: rgba(53, 132, 228, 0.5); border-color: #cdc7c2; background-image: linear-gradient(to top, #f6f5f4 2px, #fbfafa); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); margin: -1px; min-width: 24px; min-height: 24px; border: 1px solid; border-color: #cdc7c2; border-radius: 50%; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +switch > image { color: transparent; }
 +
 +switch:hover > slider { color: #2e3436; border-color: #cdc7c2; background-image: linear-gradient(to top, #d6d1cd, #e8e6e3 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +switch:checked > slider { border: 1px solid #185fb4; }
 +
 +switch:disabled > slider { color: #929595; border-color: #d5d0cc; background-image: image(#faf9f8); }
 +
 +row:selected switch { outline-color: rgba(255, 255, 255, 0.8); box-shadow: none; border-color: #185fb4; }
 +
 +row:selected switch > slider:checked, row:selected switch > slider { border-color: #185fb4; }
 +
 +/************************* Check and Radio items * */
 +.view.content-view.check:not(list), iconview.content-view.check:not(list), .content-view .tile check:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:hover:not(list), iconview.content-view.check:hover:not(list), .content-view .tile check:hover:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:active:not(list), iconview.content-view.check:active:not(list), .content-view .tile check:active:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:backdrop:not(list), iconview.content-view.check:backdrop:not(list), .content-view .tile check:backdrop:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: transparent; background-color: #8d8d8d; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: none; -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:not(list), iconview.content-view.check:checked:not(list), .content-view .tile check:checked:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:hover:not(list), iconview.content-view.check:checked:hover:not(list), .content-view .tile check:checked:hover:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:checked:active:not(list), iconview.content-view.check:checked:active:not(list), .content-view .tile check:checked:active:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: #eeeeec; background-color: #3584e4; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +.view.content-view.check:backdrop:checked:not(list), iconview.content-view.check:backdrop:checked:not(list), .content-view .tile check:backdrop:checked:not(list) { margin: 4px; min-width: 32px; min-height: 32px; color: rgba(238, 238, 236, 0.8); background-color: #8d8d8d; border-radius: 5px; background-image: none; transition: 200ms; box-shadow: none; border-width: 0; -gtk-icon-source: -gtk-icontheme('object-select-symbolic'); -gtk-icon-shadow: none; }
 +
 +checkbutton { border-spacing: 4px; border-radius: 5px; transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +checkbutton { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +checkbutton:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +checkbutton.text-button { padding: 4px; }
 +
 +check, radio { min-height: 14px; min-width: 14px; border: 1px solid; -gtk-icon-source: none; }
 +
 +check, radio { background-clip: padding-box; background-image: linear-gradient(to bottom, white 20%, white 90%); border-color: #bfb8b1; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:hover, radio:hover { background-image: image(#f2f2f2); }
 +
 +check:active, radio:active { box-shadow: inset 0 1px rgba(0, 0, 0, 0.2); background-image: image(#d9d9d9); }
 +
 +check:disabled, radio:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +check:checked, radio:checked { background-clip: border-box; background-image: linear-gradient(to bottom, #4b92e7 20%, #3584e4 90%); border-color: #1b6acb; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:checked:hover, radio:checked:hover { background-image: linear-gradient(to bottom, #5d9de9 10%, #478fe6 90%); }
 +
 +check:checked:active, radio:checked:active { box-shadow: inset 0 1px rgba(0, 0, 0, 0.2); background-image: image(#1f76e1); }
 +
 +check:checked:disabled, radio:checked:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +check:indeterminate, radio:indeterminate { background-clip: border-box; background-image: linear-gradient(to bottom, #4b92e7 20%, #3584e4 90%); border-color: #1b6acb; box-shadow: 0 1px rgba(0, 0, 0, 0.05); color: #ffffff; }
 +
 +check:indeterminate:hover, radio:indeterminate:hover { background-image: linear-gradient(to bottom, #5d9de9 10%, #478fe6 90%); }
 +
 +check:indeterminate:active, radio:indeterminate:active { box-shadow: inset 0 1px rgba(0, 0, 0, 0.2); background-image: image(#1f76e1); }
 +
 +check:indeterminate:disabled, radio:indeterminate:disabled { box-shadow: none; color: rgba(255, 255, 255, 0.7); }
 +
 +row:selected check, row:selected radio { border-color: #1b6acb; }
 +
 +.osd check, .osd radio { color: #eeeeec; outline-color: rgba(53, 132, 228, 0.5); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; }
 +
 +.osd check:hover, .osd radio:hover { color: #eeeeec; outline-color: rgba(53, 132, 228, 0.5); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; }
 +
 +.osd check:active, .osd radio:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; }
 +
 +.osd check:disabled, .osd radio:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; }
 +
 +check { border-radius: 3px; -gtk-icon-size: 14px; }
 +
 +check:checked { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/check-symbolic.symbolic.png")), -gtk-recolor(url("assets/check@2-symbolic.symbolic.png"))); }
 +
 +check:indeterminate { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/dash-symbolic.symbolic.png")), -gtk-recolor(url("assets/dash@2-symbolic.symbolic.png"))); }
 +
 +treeview.view radio:selected:focus, treeview.view radio:selected, radio { border-radius: 100%; -gtk-icon-size: 14px; }
 +
 +treeview.view radio:checked:selected, radio:checked { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/bullet-symbolic.symbolic.png")), -gtk-recolor(url("assets/bullet@2-symbolic.symbolic.png"))); }
 +
 +treeview.view radio:indeterminate:selected, radio:indeterminate { -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/dash-symbolic.symbolic.png")), -gtk-recolor(url("assets/dash@2-symbolic.symbolic.png"))); }
 +
 +treeview.view check:selected:focus, treeview.view check:selected, treeview.view radio:selected:focus, treeview.view radio:selected { color: #ffffff; border-color: #185fb4; }
 +
 +/************ GtkScale * */
 +progressbar > trough, scale > trough > fill, scale > trough { border: 1px solid #e1dedb; border-radius: 3px; background-color: #e1dedb; }
 +
 +headerbar progressbar > trough, headerbar scale > trough > fill, headerbar scale > trough { background-color: #cecac5; }
 +
 +progressbar > trough:disabled, scale > trough > fill:disabled, scale > trough:disabled { background-color: #faf9f8; border-color: #d5d0cc; }
 +
 +row:selected progressbar > trough, row:selected scale > trough > fill, row:selected scale > trough { outline-color: rgba(255, 255, 255, 0.8); border-color: #185fb4; }
 +
 +.osd progressbar > trough, .osd scale > trough > fill, .osd scale > trough { border-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.5); }
 +
 +.osd progressbar > trough:disabled, .osd scale > trough > fill:disabled, .osd scale > trough:disabled { background-color: rgba(71, 71, 71, 0.5); }
 +
 +progressbar > trough > progress, scale > trough > highlight { border: 1px solid #3584e4; border-radius: 3px; background-color: #3584e4; }
 +
 +progressbar > trough > progress:disabled, scale > trough > highlight:disabled { background-color: transparent; border-color: transparent; }
 +
 +row:selected progressbar > trough > progress, row:selected scale > trough > highlight { border-color: #185fb4; }
 +
 +.osd progressbar > trough > progress, .osd scale > trough > highlight { border-color: rgba(0, 0, 0, 0.7); }
 +
 +.osd progressbar > trough > progress:disabled, .osd scale > trough > highlight:disabled { border-color: transparent; }
 +
 +scale { min-height: 10px; min-width: 10px; padding: 12px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +scale > trough { outline: 0 solid transparent; outline-offset: 16px; }
 +
 +scale:focus:focus-visible > trough { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: 10px; }
 +
 +scale > trough { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
 +
 +scale > trough > fill, scale > trough > highlight { margin: -1px; }
 +
 +scale > trough > slider { min-height: 18px; min-width: 18px; margin: -9px; }
 +
 +scale.fine-tune.horizontal { padding-top: 9px; padding-bottom: 9px; min-height: 16px; }
 +
 +scale.fine-tune.vertical { padding-left: 9px; padding-right: 9px; min-width: 16px; }
 +
 +scale.fine-tune > trough > slider { margin: -6px; }
 +
 +scale.fine-tune > trough > fill, scale.fine-tune > trough > highlight, scale.fine-tune > trough { border-radius: 5px; }
 +
 +scale > trough > fill:disabled { border-color: transparent; background-color: transparent; }
 +
 +.osd scale > trough > fill { background-color: rgba(91, 91, 90, 0.775); }
 +
 +.osd scale > trough > fill:disabled { border-color: transparent; background-color: transparent; }
 +
 +scale > trough > slider { color: #2e3436; outline-color: rgba(53, 132, 228, 0.5); border-color: #cdc7c2; background-image: linear-gradient(to top, #f6f5f4 2px, #fbfafa); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); border-width: 1px; border-style: solid; border-radius: 100%; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: background, border, box-shadow; }
 +
 +scale > trough > slider:hover { color: #2e3436; border-color: #cdc7c2; background-image: linear-gradient(to top, #d6d1cd, #e8e6e3 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +scale > trough > slider:active { border-color: #185fb4; }
 +
 +scale > trough > slider:disabled { color: #929595; border-color: #d5d0cc; background-image: image(#faf9f8); }
 +
 +row:selected scale > trough > slider:disabled, row:selected scale > trough > slider { border-color: #185fb4; }
 +
 +.osd scale > trough > slider { color: #eeeeec; outline-color: rgba(53, 132, 228, 0.5); border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(53, 53, 53, 0.7)); background-clip: padding-box; border-color: rgba(0, 0, 0, 0.7); background-color: #353535; }
 +
 +.osd scale > trough > slider:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(27, 27, 27, 0.7)); background-clip: padding-box; background-color: #353535; }
 +
 +.osd scale > trough > slider:active { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(2, 2, 2, 0.7)); background-clip: padding-box; box-shadow: none; background-color: #353535; }
 +
 +.osd scale > trough > slider:disabled { color: #919190; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(71, 71, 71, 0.5)); background-clip: padding-box; background-color: #353535; }
 +
 +scale > value { color: alpha(currentColor,0.55); font-feature-settings: "tnum"; }
 +
 +scale.horizontal > marks { color: alpha(currentColor,0.55); }
 +
 +scale.horizontal > marks.top { margin-bottom: 6px; }
 +
 +scale.horizontal > marks.bottom { margin-top: 6px; }
 +
 +scale.horizontal > marks indicator { background-color: currentColor; min-height: 6px; min-width: 1px; }
 +
 +scale.horizontal > value.left { margin-right: 9px; }
 +
 +scale.horizontal > value.right { margin-left: 9px; }
 +
 +scale.horizontal.fine-tune > marks.top { margin-top: 3px; }
 +
 +scale.horizontal.fine-tune > marks.bottom { margin-bottom: 3px; }
 +
 +scale.horizontal.fine-tune > marks indicator { min-height: 3px; }
 +
 +scale.vertical > marks { color: alpha(currentColor,0.55); }
 +
 +scale.vertical > marks.top { margin-right: 6px; }
 +
 +scale.vertical > marks.bottom { margin-left: 6px; }
 +
 +scale.vertical > marks indicator { background-color: currentColor; min-height: 1px; min-width: 6px; }
 +
 +scale.vertical > value.top { margin-bottom: 9px; }
 +
 +scale.vertical > value.bottom { margin-top: 9px; }
 +
 +scale.vertical.fine-tune > marks.top { margin-left: 3px; }
 +
 +scale.vertical.fine-tune > marks.bottom { margin-right: 3px; }
 +
 +scale.vertical.fine-tune > marks indicator { min-height: 3px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above.png"), url("assets/slider-horz-scale-has-marks-above@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-hover.png"), url("assets/slider-horz-scale-has-marks-above-hover@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-active.png"), url("assets/slider-horz-scale-has-marks-above-active@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-before:not(.marks-after) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-insensitive.png"), url("assets/slider-horz-scale-has-marks-above-insensitive@2.png")); min-height: 26px; min-width: 22px; margin-top: -14px; background-position: top; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -7px -10px; margin-top: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-below.png"), url("assets/slider-horz-scale-has-marks-below@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-below-hover.png"), url("assets/slider-horz-scale-has-marks-below-hover@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-below-active.png"), url("assets/slider-horz-scale-has-marks-below-active@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.horizontal.marks-after:not(.marks-before) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-horz-scale-has-marks-below-insensitive.png"), url("assets/slider-horz-scale-has-marks-below-insensitive@2.png")); min-height: 26px; min-width: 22px; margin-bottom: -14px; background-position: bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.horizontal.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -7px -10px; margin-bottom: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-above.png"), url("assets/slider-vert-scale-has-marks-above@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-above-hover.png"), url("assets/slider-vert-scale-has-marks-above-hover@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-above-active.png"), url("assets/slider-vert-scale-has-marks-above-active@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-before:not(.marks-after) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-above-insensitive.png"), url("assets/slider-vert-scale-has-marks-above-insensitive@2.png")); min-height: 22px; min-width: 26px; margin-left: -14px; background-position: left bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-before.fine-tune:not(.marks-after) > trough > slider { margin: -10px -7px; margin-left: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-below.png"), url("assets/slider-vert-scale-has-marks-below@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:hover { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-below-hover.png"), url("assets/slider-vert-scale-has-marks-below-hover@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:active { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-below-active.png"), url("assets/slider-vert-scale-has-marks-below-active@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.vertical.marks-after:not(.marks-before) > trough > slider:disabled { margin: -10px; border-style: none; border-radius: 0; background-color: transparent; background-image: -gtk-scaled(url("assets/slider-vert-scale-has-marks-below-insensitive.png"), url("assets/slider-vert-scale-has-marks-below-insensitive@2.png")); min-height: 22px; min-width: 26px; margin-right: -14px; background-position: right bottom; background-repeat: no-repeat; box-shadow: none; }
 +
 +scale.vertical.marks-after.fine-tune:not(.marks-before) > trough > slider { margin: -10px -7px; margin-right: -11px; }
 +
 +scale.color { min-height: 0; min-width: 0; }
 +
 +scale.color > trough { background-image: image(#cdc7c2); background-repeat: no-repeat; }
 +
 +scale.color.horizontal { padding: 0 0 15px 0; }
 +
 +scale.color.horizontal > trough { padding-bottom: 4px; background-position: 0 -3px; border-top-left-radius: 0; border-top-right-radius: 0; }
 +
 +scale.color.horizontal > trough > slider:dir(ltr):hover, scale.color.horizontal > trough > slider:dir(ltr):backdrop, scale.color.horizontal > trough > slider:dir(ltr):disabled, scale.color.horizontal > trough > slider:dir(ltr):backdrop:disabled, scale.color.horizontal > trough > slider:dir(ltr), scale.color.horizontal > trough > slider:dir(rtl):hover, scale.color.horizontal > trough > slider:dir(rtl):backdrop, scale.color.horizontal > trough > slider:dir(rtl):disabled, scale.color.horizontal > trough > slider:dir(rtl):backdrop:disabled, scale.color.horizontal > trough > slider:dir(rtl) { margin-bottom: -15px; margin-top: 6px; }
 +
 +scale.color.vertical:dir(ltr) { padding: 0 0 0 15px; }
 +
 +scale.color.vertical:dir(ltr) > trough { padding-left: 4px; background-position: 3px 0; border-bottom-right-radius: 0; border-top-right-radius: 0; }
 +
 +scale.color.vertical:dir(ltr) > trough > slider:hover, scale.color.vertical:dir(ltr) > trough > slider:backdrop, scale.color.vertical:dir(ltr) > trough > slider:disabled, scale.color.vertical:dir(ltr) > trough > slider:backdrop:disabled, scale.color.vertical:dir(ltr) > trough > slider { margin-left: -15px; margin-right: 6px; }
 +
 +scale.color.vertical:dir(rtl) { padding: 0 15px 0 0; }
 +
 +scale.color.vertical:dir(rtl) > trough { padding-right: 4px; background-position: -3px 0; border-bottom-left-radius: 0; border-top-left-radius: 0; }
 +
 +scale.color.vertical:dir(rtl) > trough > slider:hover, scale.color.vertical:dir(rtl) > trough > slider:backdrop, scale.color.vertical:dir(rtl) > trough > slider:disabled, scale.color.vertical:dir(rtl) > trough > slider:backdrop:disabled, scale.color.vertical:dir(rtl) > trough > slider { margin-right: -15px; margin-left: 6px; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr), scale.color.fine-tune.horizontal:dir(rtl) { padding: 0 0 12px 0; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr) > trough, scale.color.fine-tune.horizontal:dir(rtl) > trough { padding-bottom: 7px; background-position: 0 -6px; }
 +
 +scale.color.fine-tune.horizontal:dir(ltr) > trough > slider, scale.color.fine-tune.horizontal:dir(rtl) > trough > slider { margin-bottom: -15px; margin-top: 6px; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) { padding: 0 0 0 12px; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) > trough { padding-left: 7px; background-position: 6px 0; }
 +
 +scale.color.fine-tune.vertical:dir(ltr) > trough > slider { margin-left: -15px; margin-right: 6px; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) { padding: 0 12px 0 0; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) > trough { padding-right: 7px; background-position: -6px 0; }
 +
 +scale.color.fine-tune.vertical:dir(rtl) > trough > slider { margin-right: -15px; margin-left: 6px; }
 +
 +/***************** Progress bars * */
 +progressbar { font-size: smaller; color: rgba(46, 52, 54, 0.4); font-feature-settings: "tnum"; }
 +
 +progressbar.horizontal > trough { min-width: 150px; }
 +
 +progressbar.horizontal > trough, progressbar.horizontal > trough > progress { min-height: 2px; }
 +
 +progressbar.vertical > trough { min-height: 80px; }
 +
 +progressbar.vertical > trough, progressbar.vertical > trough > progress { min-width: 2px; }
 +
 +progressbar.horizontal > trough > progress { margin: 0 -1px; }
 +
 +progressbar.vertical > trough > progress { margin: -1px 0; }
 +
 +progressbar > trough > progress { /* share most of scales' */ /* override insensitive that is specific to progress */ border-radius: 1.5px; }
 +
 +progressbar > trough > progress:disabled { background-color: #929595; border-color: #929595; }
 +
 +progressbar > trough > progress.left { border-top-left-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +progressbar > trough > progress.right { border-top-right-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +progressbar > trough > progress.top { border-top-right-radius: 5px; border-top-left-radius: 5px; }
 +
 +progressbar > trough > progress.bottom { border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +progressbar.osd { min-width: 3px; min-height: 3px; background-color: transparent; }
 +
 +progressbar.osd > trough { border-style: none; border-radius: 0; background-color: transparent; box-shadow: none; }
 +
 +progressbar.osd > trough > progress { border-style: none; border-radius: 0; }
 +
 +progressbar > trough.empty > progress { all: unset; }
 +
 +/************* Level Bar * */
 +levelbar.horizontal trough > block { min-height: 9px; border-radius: 5px; }
 +
 +levelbar.horizontal trough > block:dir(rtl) { border-radius: 0 5px 5px 0; }
 +
 +levelbar.horizontal trough > block:dir(ltr) { border-radius: 5px 0 0 5px; }
 +
 +levelbar.horizontal trough > block.empty, levelbar.horizontal trough > block.full { border-radius: 5px; }
 +
 +levelbar.horizontal.discrete trough > block { min-height: 2px; margin: 1px; min-width: 24px; border-radius: 0; }
 +
 +levelbar.horizontal.discrete trough > block:first-child { border-radius: 2px 0 0 2px; }
 +
 +levelbar.horizontal.discrete trough > block:last-child { border-radius: 0 2px 2px 0; }
 +
 +levelbar.vertical trough > block { min-width: 9px; border-radius: 5px; }
 +
 +levelbar.vertical.discrete > trough > block { min-width: 2px; margin: 1px 0; min-height: 32px; }
 +
 +levelbar > trough { padding: 0; }
 +
 +levelbar > trough > block { border: 1px solid; }
 +
 +levelbar > trough > block.low { border-color: #f57900; background-color: #f57900; }
 +
 +levelbar > trough > block.high, levelbar > trough > block:not(.empty) { border-color: #3584e4; background-color: #3584e4; }
 +
 +levelbar > trough > block.full { border-color: #33d17a; background-color: #33d17a; }
 +
 +levelbar > trough > block.empty { background-color: #ebe8e6; border-color: #ebe8e6; }
 +
 +/**************** Print dialog * */
 +window.dialog.print drawing { color: #2e3436; background: none; border: none; padding: 0; }
 +
 +window.dialog.print drawing paper { background: white; color: #2e3436; border: 1px solid #cdc7c2; }
 +
 +window.dialog.print .dialog-action-box { margin: 12px; }
 +
 +/********** Frames * */
 +frame, .frame { border: 1px solid #cdc7c2; }
 +
 +frame { border-radius: 8px; }
 +
 +frame > label { margin: 4px; }
 +
 +actionbar > revealer > box { padding: 6px; border-top: 1px solid #cdc7c2; }
 +
 +actionbar > revealer > box, actionbar > revealer > box > box.start, actionbar > revealer > box > box.end { border-spacing: 6px; }
 +
 +scrolledwindow > overshoot.top { background-image: radial-gradient(farthest-side at top, #b6aea5 85%, rgba(182, 174, 165, 0)), radial-gradient(farthest-side at top, rgba(46, 52, 54, 0.07), rgba(46, 52, 54, 0)); background-size: 100% 3%, 100% 50%; background-repeat: no-repeat; background-position: top; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.bottom { background-image: radial-gradient(farthest-side at bottom, #b6aea5 85%, rgba(182, 174, 165, 0)), radial-gradient(farthest-side at bottom, rgba(46, 52, 54, 0.07), rgba(46, 52, 54, 0)); background-size: 100% 3%, 100% 50%; background-repeat: no-repeat; background-position: bottom; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.left { background-image: radial-gradient(farthest-side at left, #b6aea5 85%, rgba(182, 174, 165, 0)), radial-gradient(farthest-side at left, rgba(46, 52, 54, 0.07), rgba(46, 52, 54, 0)); background-size: 3% 100%, 50% 100%; background-repeat: no-repeat; background-position: left; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > overshoot.right { background-image: radial-gradient(farthest-side at right, #b6aea5 85%, rgba(182, 174, 165, 0)), radial-gradient(farthest-side at right, rgba(46, 52, 54, 0.07), rgba(46, 52, 54, 0)); background-size: 3% 100%, 50% 100%; background-repeat: no-repeat; background-position: right; background-color: transparent; border: none; box-shadow: none; }
 +
 +scrolledwindow > junction { background: #cdc7c2, linear-gradient(to bottom, transparent 1px, #cecece 1px), linear-gradient(to right, transparent 1px, #cecece 1px); }
 +
 +scrolledwindow > junction:dir(rtl) { background: #cdc7c2, linear-gradient(to bottom, transparent 1px, #cecece 1px), linear-gradient(to left, transparent 1px, #cecece 1px); }
 +
 +separator { background: #d8d4d0; min-width: 1px; min-height: 1px; }
 +
 +/********* Lists * */
 +listview, list { color: black; background-color: #ffffff; border-color: #cdc7c2; }
 +
 +listview:backdrop, list:backdrop { color: #323232; background-color: #fcfcfc; border-color: #d5d0cc; }
 +
 +listview > row, list > row { padding: 2px; }
 +
 +listview > row.expander, list > row.expander { padding: 0px; }
 +
 +listview > row.expander .row-header, list > row.expander .row-header { padding: 2px; }
 +
 +listview.horizontal row.separator, listview.separators.horizontal > row:not(.separator), list.horizontal row.separator, list.separators.horizontal > row:not(.separator) { border-left: 1px solid #d7d2ce; }
 +
 +listview:not(.horizontal) row.separator, listview.separators:not(.horizontal) > row:not(.separator), list:not(.horizontal) row.separator, list.separators:not(.horizontal) > row:not(.separator) { border-bottom: 1px solid #d7d2ce; }
 +
 +row { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +row:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +row.activatable.has-open-popup, row.activatable:hover { background-color: rgba(46, 52, 54, 0.05); }
 +
 +row.activatable:active { box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.2); }
 +
 +row.activatable:selected:active { box-shadow: inset 0 2px 3px -1px rgba(0, 0, 0, 0.5); }
 +
 +row.activatable.has-open-popup:selected, row.activatable:selected:hover { background-color: #347cd3; }
 +
 +row:selected { outline-color: rgba(255, 255, 255, 0.8); }
 +
 +columnview > listview > row { padding: 0; }
 +
 +columnview > listview > row > cell { padding: 8px 6px; }
 +
 +columnview > listview > row > cell:not(:first-child) { border-left: 1px solid transparent; }
 +
 +columnview.column-separators > listview > row > cell { border-left-color: #d7d2ce; }
 +
 +columnview.data-table > listview > row > cell { padding-top: 2px; padding-bottom: 2px; }
 +
 +treeexpander { border-spacing: 4px; }
 +
 +/******************************************************** Data Tables                                          * treeview like tables with individual focusable cells * https://gitlab.gnome.org/GNOME/gtk/-/issues/2929     * */
 +columnview row:not(:selected) cell editablelabel:not(.editing):focus-within { outline: 2px solid rgba(53, 132, 228, 0.5); }
 +
 +columnview row:not(:selected) cell editablelabel.editing:focus-within { outline: 2px solid #3584e4; }
 +
 +columnview row:not(:selected) cell editablelabel.editing text selection { background-color: rgba(141, 141, 141, 0.5); color: transparent; }
 +
 +columnview row:not(:selected) cell editablelabel.editing text selection:focus-within { background-color: rgba(53, 132, 228, 0.3); color: #2e3436; }
 +
 +/******************************************************* Rich Lists                                          * Large list usually containing lots of widgets       * https://gitlab.gnome.org/GNOME/gtk/-/issues/3073    * */
 +.rich-list { /* rich lists usually containing other widgets than just labels/text */ }
 +
 +.rich-list > row { padding: 8px 12px; min-height: 32px; /* should be tall even when only containing a label */ }
 +
 +.rich-list > row > box { border-spacing: 12px; }
 +
 +/********************* App Notifications * */
 +.app-notification { padding: 10px; border-spacing: 10px; border-radius: 0 0 5px 5px; background-color: rgba(53, 53, 53, 0.7); background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.2), transparent 2px); background-clip: padding-box; }
 +
 +.app-notification border { border: none; }
 +
 +/************* Expanders * */
 +expander { min-width: 16px; min-height: 16px; -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
 +
 +expander:dir(rtl) { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); }
 +
 +expander:disabled { color: #929595; }
 +
 +expander:checked { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +expander-widget { transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +expander-widget > box > title { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +expander-widget:focus:focus-visible > box > title { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +expander-widget > box > title { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); border-radius: 5px; }
 +
 +expander-widget > box > title:hover > expander { color: #748489; }
 +
 +.navigation-sidebar:not(decoration):not(window):drop(active):focus, .navigation-sidebar:not(decoration):not(window):drop(active), placessidebar:not(decoration):not(window):drop(active):focus, placessidebar:not(decoration):not(window):drop(active), stackswitcher:not(decoration):not(window):drop(active):focus, stackswitcher:not(decoration):not(window):drop(active), expander-widget:not(decoration):not(window):drop(active):focus, expander-widget:not(decoration):not(window):drop(active) { box-shadow: none; }
 +
 +/************ Calendar * */
 +calendar { color: black; border: 1px solid #cdc7c2; font-feature-settings: "tnum"; }
 +
 +calendar > header { border-bottom: 1px solid #cdc7c2; }
 +
 +calendar > header > button { border: none; box-shadow: none; background: none; border-radius: 0; }
 +
 +calendar > header > button:backdrop { background: none; }
 +
 +calendar > grid > label.today { box-shadow: inset 0px -2px #cdc7c2; }
 +
 +calendar > grid > label.today:selected { box-shadow: none; }
 +
 +calendar > grid > label:focus { outline-color: rgba(53, 132, 228, 0.5); outline-offset: -2px; outline-width: 2px; outline-style: solid; }
 +
 +calendar > grid > label.day-number { padding: 4px; }
 +
 +calendar > grid > label.day-number:selected { border-radius: 3px; }
 +
 +calendar > grid > label.day-number.other-month { color: alpha(currentColor,0.3); }
 +
 +/*********** Dialogs * */
 +window.dialog.message .titlebar { min-height: 20px; background-image: none; background-color: #f6f5f4; border-style: none; border-top-left-radius: 7px; border-top-right-radius: 7px; }
 +
 +window.dialog.message box.dialog-vbox.vertical { border-spacing: 10px; }
 +
 +window.dialog.message label.title { font-weight: 800; font-size: 15pt; }
 +
 +window.dialog.message.csd.background { border-bottom-left-radius: 9px; border-bottom-right-radius: 9px; }
 +
 +window.dialog.message.csd .dialog-action-area button { padding: 10px 14px; border-radius: 0; border-left-style: solid; border-right-style: none; border-bottom-style: none; }
 +
 +window.dialog.message.csd .dialog-action-area button:first-child { border-left-style: none; border-bottom-left-radius: 7px; }
 +
 +window.dialog.message.csd .dialog-action-area button:last-child { border-bottom-right-radius: 7px; }
 +
 +filechooser .dialog-action-box { border-top: 1px solid #cdc7c2; }
 +
 +filechooser #pathbarbox { border-bottom: 1px solid #f6f5f4; }
 +
 +filechooserbutton > button > box { border-spacing: 6px; }
 +
 +filechooserbutton:drop(active) { box-shadow: none; border-color: transparent; }
 +
 +/*********** Sidebar * */
 +.sidebar { background-color: #fbfafa; }
 +
 +.sidebar:not(separator):dir(ltr), .sidebar.left:not(separator), .sidebar.left:not(separator):dir(rtl) { border-right: 1px solid #cdc7c2; border-left-style: none; }
 +
 +.sidebar:not(separator):dir(rtl), .sidebar.right:not(separator) { border-left: 1px solid #cdc7c2; border-right-style: none; }
 +
 +.sidebar listview.view, .sidebar list { background-color: transparent; }
 +
 +paned .sidebar.left, paned .sidebar.right, paned .sidebar.left:dir(rtl), paned .sidebar:dir(rtl), paned .sidebar:dir(ltr), paned .sidebar { border-style: none; }
 +
 +stacksidebar list.separators:not(.horizontal) > row:not(.separator) { border-bottom: none; }
 +
 +stacksidebar row { padding: 10px 4px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +stacksidebar row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +stacksidebar row:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +stacksidebar row > label { padding-left: 6px; padding-right: 6px; }
 +
 +stacksidebar row.needs-attention > label { background-size: 6px 6px, 0 0; }
 +
 +stacksidebar row:selected { background-color: #e8e6e3; border-radius: 5px; color: #2e3436; }
 +
 +stacksidebar row:selected:hover:dir(ltr), stacksidebar row:selected:hover:dir(rtl) { background-color: #ddd9d5; }
 +
 +stacksidebar row.activatable:active, stacksidebar row.activatable:selected:active { box-shadow: none; }
 +
 +separator.sidebar { background-color: #cdc7c2; }
 +
 +/********************** Navigation Sidebar * */
 +.navigation-sidebar { padding: 5px 0; }
 +
 +.navigation-sidebar > separator { margin: 5px; }
 +
 +.navigation-sidebar > row { min-height: 36px; padding: 0 8px; border-radius: 5px; margin: 0 5px 2px; transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +.navigation-sidebar > row { outline: 0 solid transparent; outline-offset: 4px; }
 +
 +.navigation-sidebar > row:focus-visible:focus-within { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: -2px; }
 +
 +.navigation-sidebar > row:hover { background-color: #ddd9d5; }
 +
 +.navigation-sidebar > row:selected { background-color: #e8e6e3; color: inherit; }
 +
 +.navigation-sidebar > row:selected:hover { background-color: #ddd9d5; }
 +
 +.navigation-sidebar > row:disabled { color: #929595; }
 +
 +/**************** File chooser * */
 +row image.sidebar-icon { opacity: 0.7; }
 +
 +/* this should be more generic, only using .navigation-sidebar https://gitlab.gnome.org/GNOME/gtk/-/issues/2929 */
 +placessidebar .navigation-sidebar > row { padding: 0; }
 +
 +placessidebar .navigation-sidebar > row > revealer { padding: 0 14px; }
 +
 +placessidebar .navigation-sidebar > row image.sidebar-icon:dir(ltr) { padding-right: 8px; }
 +
 +placessidebar .navigation-sidebar > row image.sidebar-icon:dir(rtl) { padding-left: 8px; }
 +
 +placessidebar .navigation-sidebar > row label.sidebar-label:dir(ltr) { padding-right: 2px; }
 +
 +placessidebar .navigation-sidebar > row label.sidebar-label:dir(rtl) { padding-left: 2px; }
 +
 +button.sidebar-button { min-height: 26px; min-width: 26px; margin-top: 3px; margin-bottom: 3px; padding: 0; border-radius: 100%; }
 +
 +placessidebar .navigation-sidebar > row:selected:active { box-shadow: none; }
 +
 +placessidebar .navigation-sidebar > row.sidebar-placeholder-row { padding: 0 8px; min-height: 2px; background-image: image(#2ec27e); background-clip: content-box; }
 +
 +placessidebar .navigation-sidebar > row.sidebar-new-bookmark-row { color: #3584e4; }
 +
 +placessidebar .navigation-sidebar > row:drop(active):not(:disabled) { color: #2ec27e; box-shadow: inset 0 1px #2ec27e, inset 0 -1px #2ec27e; }
 +
 +placessidebar .navigation-sidebar > row:drop(active):not(:disabled):selected { color: #ffffff; background-color: #2ec27e; }
 +
 +placesview .server-list-button > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(0turn); }
 +
 +placesview .server-list-button:checked > image { transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); -gtk-icon-transform: rotate(-0.5turn); }
 +
 +placesview > actionbar > revealer > box > box { border-spacing: 6px; }
 +
 +/********* Paned * */
 +paned > separator { min-width: 1px; min-height: 1px; -gtk-icon-source: none; border-style: none; background-color: transparent; background-image: image(#cdc7c2); background-size: 1px 1px; }
 +
 +paned > separator:selected { background-image: image(#3584e4); }
 +
 +paned > separator.wide { min-width: 5px; min-height: 5px; background-color: #f6f5f4; background-image: image(#cdc7c2), image(#cdc7c2); background-size: 1px 1px, 1px 1px; }
 +
 +paned.horizontal > separator { background-repeat: repeat-y; }
 +
 +paned.horizontal > separator:dir(ltr) { margin: 0 -8px 0 0; padding: 0 8px 0 0; background-position: left; }
 +
 +paned.horizontal > separator:dir(rtl) { margin: 0 0 0 -8px; padding: 0 0 0 8px; background-position: right; }
 +
 +paned.horizontal > separator.wide { margin: 0; padding: 0; background-repeat: repeat-y, repeat-y; background-position: left, right; }
 +
 +paned.vertical > separator { margin: 0 0 -8px 0; padding: 0 0 8px 0; background-repeat: repeat-x; background-position: top; }
 +
 +paned.vertical > separator.wide { margin: 0; padding: 0; background-repeat: repeat-x, repeat-x; background-position: bottom, top; }
 +
 +/************** GtkVideo * */
 +video { background: black; }
 +
 +video image.osd { min-width: 64px; min-height: 64px; border-radius: 32px; }
 +
 +/************ Tooltips * */
 +tooltip { padding: 6px 10px; border-radius: 8px; box-shadow: none; }
 +
 +tooltip.background { background-color: rgba(0, 0, 0, 0.8); background-clip: padding-box; border: 1px solid rgba(255, 255, 255, 0.1); color: white; }
 +
 +tooltip > box { border-spacing: 6px; }
 +
 +/***************** Color Chooser * */
 +colorswatch { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +colorswatch { outline: 0 solid transparent; outline-offset: 6px; }
 +
 +colorswatch:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 4px; outline-offset: -2px; }
 +
 +colorswatch:drop(active), colorswatch { border-style: none; }
 +
 +colorswatch.top { border-top-left-radius: 5.5px; border-top-right-radius: 5.5px; }
 +
 +colorswatch.top > overlay { border-top-left-radius: 5px; border-top-right-radius: 5px; }
 +
 +colorswatch.bottom { border-bottom-left-radius: 5.5px; border-bottom-right-radius: 5.5px; }
 +
 +colorswatch.bottom > overlay { border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +colorswatch.left, colorswatch:first-child:not(.top) { border-top-left-radius: 5.5px; border-bottom-left-radius: 5.5px; }
 +
 +colorswatch.left > overlay, colorswatch:first-child:not(.top) > overlay { border-top-left-radius: 5px; border-bottom-left-radius: 5px; }
 +
 +colorswatch.right, colorswatch:last-child:not(.bottom) { border-top-right-radius: 5.5px; border-bottom-right-radius: 5.5px; }
 +
 +colorswatch.right > overlay, colorswatch:last-child:not(.bottom) > overlay { border-top-right-radius: 5px; border-bottom-right-radius: 5px; }
 +
 +colorswatch.dark > overlay { color: white; }
 +
 +colorswatch.dark.activatable:hover > overlay { border-color: rgba(0, 0, 0, 0.8); }
 +
 +colorswatch.light > overlay { color: black; }
 +
 +colorswatch.light.activatable:hover > overlay { border-color: rgba(0, 0, 0, 0.5); }
 +
 +colorswatch:drop(active) { box-shadow: none; }
 +
 +colorswatch.light:drop(active) > overlay { border-color: #2ec27e; box-shadow: inset 0 0 0 2px #27a56b, inset 0 0 0 1px #2ec27e; }
 +
 +colorswatch.dark:drop(active) > overlay { border-color: #2ec27e; box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.3), inset 0 0 0 1px #2ec27e; }
 +
 +colorswatch > overlay { border: 1px solid rgba(0, 0, 0, 0.3); }
 +
 +colorswatch.activatable:hover > overlay { box-shadow: inset 0 1px rgba(255, 255, 255, 0.4), inset 0 -1px rgba(0, 0, 0, 0.2); }
 +
 +colorswatch#add-color-button { border-radius: 5px 0 0 5px; }
 +
 +colorswatch#add-color-button:only-child { border-radius: 5px; }
 +
 +colorswatch#add-color-button > overlay { color: #2e3436; outline-color: rgba(53, 132, 228, 0.5); border-color: #cdc7c2; background-image: linear-gradient(to top, #f6f5f4 2px, #fbfafa); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +colorswatch#add-color-button.activatable:hover > overlay { color: #2e3436; border-color: #cdc7c2; background-image: linear-gradient(to top, #d6d1cd, #e8e6e3 1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07); }
 +
 +colorswatch:disabled { opacity: 0.5; }
 +
 +colorswatch:disabled > overlay { border-color: rgba(0, 0, 0, 0.6); box-shadow: none; }
 +
 +row:selected colorswatch { box-shadow: 0 0 0 2px #ffffff; }
 +
 +colorswatch#editor-color-sample { border-radius: 4px; }
 +
 +colorswatch#editor-color-sample > overlay { border-radius: 4.5px; }
 +
 +plane { transition: outline-width 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94), outline-offset 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); transition-property: outline, outline-width, outline-offset, outline-color; transition-duration: 300ms; animation-timing-function: ease-in-out; }
 +
 +plane { outline: 0 solid transparent; outline-offset: 6px; }
 +
 +plane:focus:focus-visible { outline-color: rgba(53, 132, 228, 0.5); outline-width: 2px; outline-offset: 2px; }
 +
 +colorchooser .popover.osd { border-radius: 5px; }
 +
 +/******** Misc * */
 +.content-view { background-color: #e6e3e0; }
 +
 +.content-view:hover { -gtk-icon-filter: brightness(1.2); }
 +
 +.content-view .tile { margin: 2px; background-color: transparent; border-radius: 0; padding: 0; }
 +
 +.content-view .tile:active, .content-view .tile:selected { background-color: transparent; }
 +
 +.content-view .tile:disabled { background-color: transparent; }
 +
 +.osd .scale-popup button.flat { border-style: none; border-radius: 5px; }
 +
 +.scale-popup button:hover { background-color: rgba(46, 52, 54, 0.1); border-radius: 5px; }
 +
 +/********************** Window Decorations * */
 +window { border-width: 0px; }
 +
 +window.csd { box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(0, 0, 0, 0.23); margin: 0px; border-radius: 8px 8px 0 0; }
 +
 +window.csd:backdrop { box-shadow: 0 3px 9px 1px transparent, 0 2px 6px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.18); transition: 200ms ease-out; }
 +
 +window.csd.popup { border-radius: 5px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13); }
 +
 +window.csd.dialog.message { border-radius: 8px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13); }
 +
 +window.solid-csd { margin: 0; padding: 4px; border: solid 1px #cdc7c2; border-radius: 0; box-shadow: inset 0 0 0 4px #cdc7c2, inset 0 0 0 3px white, inset 0 1px rgba(255, 255, 255, 0.8); }
 +
 +window.solid-csd:backdrop { box-shadow: inset 0 0 0 4px #cdc7c2, inset 0 0 0 3px #f6f5f4, inset 0 1px rgba(255, 255, 255, 0.8); }
 +
 +window.maximized, window.fullscreen { border-radius: 0; box-shadow: none; }
 +
 +window.tiled, window.tiled-top, window.tiled-left, window.tiled-right, window.tiled-bottom { border-radius: 0; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.23), 0 0 0 20px transparent; }
 +
 +window.tiled:backdrop, window.tiled-top:backdrop, window.tiled-left:backdrop, window.tiled-right:backdrop, window.tiled-bottom:backdrop { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.18), 0 0 0 20px transparent; }
 +
 +window.popup { box-shadow: none; }
 +
 +window.ssd { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.23); }
 +
 +tooltip.csd { border-radius: 5px; box-shadow: none; }
 +
 +.view:selected:focus, .view:selected, textview > text:selected:focus, textview > text:selected, iconview:selected:focus, iconview:selected, flowbox > flowboxchild:selected, gridview > child:selected, modelbutton.flat:selected, columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar > grid > label.day-number:selected { background-color: #3584e4; }
 +
 +label:selected, .view:selected:focus, .view:selected, textview > text:selected:focus, textview > text:selected, iconview:selected:focus, iconview:selected, flowbox > flowboxchild:selected, gridview > child:selected, modelbutton.flat:selected, columnview.view:selected:focus, columnview.view:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar > grid > label.day-number:selected { color: #ffffff; }
 +
 +label:disabled > selection, label:disabled:selected, .view:disabled:selected, textview > text:disabled:selected:focus, textview > text:disabled:selected, iconview:disabled:selected:focus, iconview:disabled:selected, flowbox > flowboxchild:disabled:selected, gridview > child:disabled:selected, modelbutton.flat:disabled:selected, columnview.view:disabled:selected, treeview.view:disabled:selected, row:disabled:selected, calendar > grid > label.day-number:disabled:selected { color: #9ac2f2; }
 +
 +.monospace { font-family: monospace; }
 +
 +/********************** Touch Copy & Paste * */
 +cursor-handle { background-color: transparent; background-image: none; box-shadow: none; border-style: none; min-width: 20px; min-height: 24px; padding-left: 20px; padding-right: 20px; padding-top: 24px; padding-bottom: 24px; }
 +
 +cursor-handle.top:dir(ltr), cursor-handle.bottom:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-start.png"), url("assets/text-select-start@2.png")); }
 +
 +cursor-handle.bottom:dir(ltr), cursor-handle.top:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-end.png"), url("assets/text-select-end@2.png")); }
 +
 +cursor-handle.insertion-cursor:dir(ltr), cursor-handle.insertion-cursor:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above.png"), url("assets/slider-horz-scale-has-marks-above@2.png")); }
 +
 +cursor-handle.top:hover:dir(ltr), cursor-handle.bottom:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-start-hover.png"), url("assets/text-select-start-hover@2.png")); }
 +
 +cursor-handle.bottom:hover:dir(ltr), cursor-handle.top:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-end-hover.png"), url("assets/text-select-end-hover@2.png")); }
 +
 +cursor-handle.insertion-cursor:hover:dir(ltr), cursor-handle.insertion-cursor:hover:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-hover.png"), url("assets/slider-horz-scale-has-marks-above-hover@2.png")); }
 +
 +cursor-handle.top:active:dir(ltr), cursor-handle.bottom:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-start-active.png"), url("assets/text-select-start-active@2.png")); }
 +
 +cursor-handle.bottom:active:dir(ltr), cursor-handle.top:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/text-select-end-active.png"), url("assets/text-select-end-active@2.png")); }
 +
 +cursor-handle.insertion-cursor:active:dir(ltr), cursor-handle.insertion-cursor:active:dir(rtl) { -gtk-icon-source: -gtk-scaled(url("assets/slider-horz-scale-has-marks-above-active.png"), url("assets/slider-horz-scale-has-marks-above-active@2.png")); }
 +
 +shortcuts-section { margin: 20px; }
 +
 +.shortcuts-search-results { margin: 20px; border-spacing: 24px; }
 +
 +shortcut { border-spacing: 6px; }
 +
 +shortcut > .keycap { min-width: 20px; min-height: 25px; margin-top: 2px; padding-bottom: 3px; padding-left: 6px; padding-right: 6px; color: #2e3436; background-color: #ffffff; border: 1px solid; border-color: #e1dedb; border-radius: 5px; box-shadow: inset 0 -3px #f8f7f6; font-size: smaller; }
 +
 +:not(decoration):not(window):drop(active):focus, :not(decoration):not(window):drop(active) { border-color: #2ec27e; box-shadow: inset 0 0 0 1px #2ec27e; caret-color: #2ec27e; }
 +
 +stackswitcher > button.text-button { min-width: 100px; }
 +
 +stackswitcher.circular { border-spacing: 12px; }
 +
 +stackswitcher.circular > button.circular, stackswitcher.circular > button.text-button.circular { min-width: 32px; min-height: 32px; padding: 0; }
 +
 +/************* App Icons * */
 +/* Outline for low res icons */
 +.lowres-icon { -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.05), 1px 0 rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.3), -1px 0 rgba(0, 0, 0, 0.1); }
 +
 +/* Drapshadow for large icons */
 +.icon-dropshadow { -gtk-icon-shadow: 0 1px 12px rgba(0, 0, 0, 0.05), 0 -1px rgba(0, 0, 0, 0.05), 1px 0 rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.3), -1px 0 rgba(0, 0, 0, 0.1); }
 +
 +/********* Emoji * */
 +popover.emoji-picker > contents { padding: 0; }
 +
 +.emoji-searchbar { padding: 6px; border-spacing: 6px; border-bottom: 1px solid #cdc7c2; }
 +
 +.emoji-toolbar { padding: 6px; border-spacing: 6px; border-top: 1px solid #cdc7c2; }
 +
 +button.emoji-section { border-color: transparent; border-width: 3px; border-style: none none solid; border-radius: 0; padding: 3px 0 0; min-width: 32px; min-height: 28px; /* reset props inherited from the button style */ background: none; box-shadow: none; text-shadow: none; }
 +
 +button.emoji-section:hover { border-color: #cdc7c2; }
 +
 +button.emoji-section:checked { border-color: #3584e4; }
 +
 +popover.emoji-picker emoji { font-size: x-large; padding: 6px; border-radius: 6px; }
 +
 +popover.emoji-picker emoji:focus, popover.emoji-picker emoji:hover { background: #3584e4; }
 +
 +emoji-completion-row > box { border-spacing: 10px; padding: 2px 10px; }
 +
 +emoji-completion-row:focus, emoji-completion-row:hover { background-color: #3584e4; color: #ffffff; }
 +
 +emoji-completion-row emoji:focus, emoji-completion-row emoji:hover { background-color: #e8e6e3; }
 +
 +popover.entry-completion > contents { padding: 0; }
 +
 +statusbar { padding: 6px 10px 6px 10px; }
 +
 +menubutton > button > box { border-spacing: 6px; }
 +
 +menubutton arrow { min-height: 16px; min-width: 16px; }
 +
 +menubutton arrow.none { -gtk-icon-source: -gtk-icontheme("open-menu-symbolic"); }
 +
 +menubutton arrow.down { -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); }
 +
 +menubutton arrow.up { -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); }
 +
 +menubutton arrow.left { -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); }
 +
 +menubutton arrow.right { -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); }
 +
 +/* GTK NAMED COLORS ---------------- use responsibly! */
 +/*
 +widget text/foreground color */
 +@define-color theme_fg_color #2e3436;
 +/*
 +text color for entries, views and content in general */
 +@define-color theme_text_color black;
 +/*
 +widget base background color */
 +@define-color theme_bg_color #f6f5f4;
 +/*
 +text widgets and the like base background color */
 +@define-color theme_base_color #ffffff;
 +/*
 +base background color of selections */
 +@define-color theme_selected_bg_color #3584e4;
 +/*
 +text/foreground color of selections */
 +@define-color theme_selected_fg_color #ffffff;
 +/*
 +base background color of insensitive widgets */
 +@define-color insensitive_bg_color #faf9f8;
 +/*
 +text foreground color of insensitive widgets */
 +@define-color insensitive_fg_color #929595;
 +/*
 +insensitive text widgets and the like base background color */
 +@define-color insensitive_base_color #ffffff;
 +/*
 +widget text/foreground color on backdrop windows */
 +@define-color theme_unfocused_fg_color #929595;
 +/*
 +text color for entries, views and content in general on backdrop windows */
 +@define-color theme_unfocused_text_color black;
 +/*
 +widget base background color on backdrop windows */
 +@define-color theme_unfocused_bg_color #f6f5f4;
 +/*
 +text widgets and the like base background color on backdrop windows */
 +@define-color theme_unfocused_base_color #fcfcfc;
 +/*
 +base background color of selections on backdrop windows */
 +@define-color theme_unfocused_selected_bg_color #3584e4;
 +/*
 +text/foreground color of selections on backdrop windows */
 +@define-color theme_unfocused_selected_fg_color #ffffff;
 +/*
 +insensitive color on backdrop windows*/
 +@define-color unfocused_insensitive_color #d4cfca;
 +/*
 +widgets main borders color */
 +@define-color borders #cdc7c2;
 +/*
 +widgets main borders color on backdrop windows */
 +@define-color unfocused_borders #d5d0cc;
 +/*
 +these are pretty self explicative */
 +@define-color warning_color #f57900;
 +@define-color error_color #cc0000;
 +@define-color success_color #33d17a;
 +/*
 +these colors are exported for the window manager and shouldn't be used in applications,
 +read if you used those and something break with a version upgrade you're on your own... */
 +@define-color wm_title shade(#2e3436, 1.8);
 +@define-color wm_unfocused_title #929595;
 +@define-color wm_highlight rgba(255, 255, 255, 0.8);
 +@define-color wm_borders_edge rgba(255, 255, 255, 0.8);
 +@define-color wm_bg_a shade(#f6f5f4, 1.2);
 +@define-color wm_bg_b #f6f5f4;
 +@define-color wm_shadow alpha(black, 0.35);
 +@define-color wm_border alpha(black, 0.18);
 +@define-color wm_button_hover_color_a shade(#f6f5f4, 1.3);
 +@define-color wm_button_hover_color_b #f6f5f4;
 +@define-color wm_button_active_color_a shade(#f6f5f4, 0.85);
 +@define-color wm_button_active_color_b shade(#f6f5f4, 0.89);
 +@define-color wm_button_active_color_c shade(#f6f5f4, 0.9);
 +/* content view background such as thumbnails view in Photos or Boxes */
 +@define-color content_view_bg #ffffff;
 +/* Very contrasty background for text views (@theme_text_color foreground) */
 +@define-color text_view_bg #ffffff;
index 728a8d44c592c83b177af8627a8b13b19ec4b9fe,0000000000000000000000000000000000000000..30d403cf6449049c0963797c43c20de12be09410
mode 100644,000000..100644
--- /dev/null
@@@ -1,241 -1,0 +1,251 @@@
- ``dependencies`` = ``dict(s, dict(s, s)``
 +.. SPDX-FileCopyrightText: 2021 GNOME Foundation
 +..
 +.. SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
 +
 +=====================
 +Project configuration
 +=====================
 +
 +Projects using gi-docgen should provide their own configuration file to describe
 +how to generate their API reference.
 +
 +The configuration file format uses `ToML <https://toml.io/en/>`__ to provide key
 +and value pairs that will be used by gi-docgen and, optionally, by the templates
 +themselves.
 +
 +Project configuration takes precendence over gi-docgen's defaults, but can be
 +overridden by command line options, where applicable.
 +
 +Standard sections and keys
 +--------------------------
 +
 +The ``library`` section
 +~~~~~~~~~~~~~~~~~~~~~~~
 +
 +The ``library`` section is used to define the library configuration values
 +that gi-docgen will pass to the templates, as well as configuration switches
 +that control the files generated by gi-docgen.
 +
 +The following keys are used, if found:
 +
 +``version`` = ``s``
 +  The version of the library. This is the actual version of the shared
 +  library, as opposed to the version of the API as represented by the
 +  namespace.
 +
 +``authors`` = ``s``
 +  The name of the authors of the library, as a string.
 +
 +``license`` = ``s``
 +  The license of the documentation, as an `SPDX identifier <https://spdx.org/licenses/>`__.
 +
 +``website_url`` = ``s``
 +  The website for the library.
 +
 +``browse_url`` = ``s``
 +  The website that can be used to browse the source code of the library.
 +
 +``logo_url`` = ``s``
 +  The location of a logo image. This can be a local file, or a URL.
 +
 +``description`` = ``s``
 +  A short description of the library.
 +
-   with the following keys: ``name``, ``description``, and ``docs_url``.
++``dependencies`` = ``dict(s, dict(s, s))``
 +  A dictionary of dependencies; each entry in the dictionary has a key in the
 +  form of ``{namespace}-{version}``, and values in the form of a dictionary
++  with the following keys: ``name``, ``description``, and ``docs_url``. Each
++  entry in the this dictionary can only describe a namespace included in the
++  introspection data; any other namespace listed here will be ignored. See
++  the ``related`` configuration below.
++
++``related`` = ``dict(s, dict(s, s))``
++  A dictionary of related namespaces; each entry in the dictionary has a key
++  in the form of ``{namespace}-{version}``, and values in the form of a
++  dictionary with the following keys: ``name``, ``description``, and
++  ``docs_url``. Each entry in this dictionary can describe a namespace that
++  is related to the project.
 +
 +``devhelp`` = ``b``
 +  Whether gi-docgen should generate a DevHelp file for the namespace.
 +
 +``search_index`` = ``b``
 +  Whether gi-docgen should generate a search index file for the namespace.
 +
 +``docs_url`` = ``s``
 +  The website that will provide this documentation.
 +
 +The ``theme`` section
 +~~~~~~~~~~~~~~~~~~~~~
 +
 +The ``theme`` section is used to define the theme being used by gi-docgen when
 +generating the API reference of a project.
 +
 +The following keys are used, if found:
 +
 +``templates_dir`` = ``s``
 +  The directory that contains the templates to be used by gi-docgen. The
 +  default directory is inside the gi-docgen module directory. This key
 +  can be overridden by the ``--templates-dir`` command line argument.
 +
 +``name`` = ``s``
 +  The name of the template to use. The name is a sub-directory of the
 +  ``template_dir`` directory, and will be used to load the template's
 +  configuration file. This key can be overridden by the ``--theme-name``
 +  command line argument.
 +
 +``show_index_summary`` = ``b``
 +  A boolean value that controls whether to show the summary of each
 +  symbol in the namespace index.
 +
 +``show_class_hierarchy`` = ``b``
 +  A boolean value that controls whether to generate a class graph
 +  with the ancestors of a type, as well as the implemented interfaces.
 +  Requires the ``dot`` utility from `GraphViz <https://graphviz.org/>`__
 +  installed in the ``PATH``.
 +
 +The ``source-location`` section
 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 +
 +The ``source-location`` section is used to define the location of the source
 +code repository of a project to allow gi-docgen to create links from the API
 +reference to the definition of symbols and the source of the documentation
 +stanzas.
 +
 +The following keys are used, if found:
 +
 +``base_url`` = ``s``
 +  The base URL for accessing a file in the source code repository.
 +
 +``file_format`` = ``s``
 +  The format string used to point to a file, and a line in that file;
 +  the string can contain the token ``{filename}``, which will be replaced
 +  with the basename of the file; and the token ``{line}``, which will be
 +  replaced with the line in the file. The default value for this key
 +  is: ``{filename}#L{line}``.
 +
 +The ``extra`` section
 +~~~~~~~~~~~~~~~~~~~~~
 +
 +The ``extra`` section is used to define additional content used when
 +generating the API reference of a project.
 +
 +The following keys are used, if found:
 +
 +``content_files`` = ``list(s)``
 +  A list of tuples. The first element of the tuple is a Markdown
 +  file name, relative to the directories specified by the ``--content-dir``
 +  command line arguments; the second element of the tuple is the
 +  title used for the link to the content file. When generating the
 +  API reference, gi-docgen will transform the Markdown file into
 +  an HTML one, using the same pre-processing filters applied to the
 +  documentation blocks found in the introspection data. The
 +  generated HTML files will be placed in the root directory of
 +  the namespace.
 +
 +``content_images`` = ``list(s)``
 +  A list of files, relative to the directories specified by the
 +  ``--content-dir`` command line arguments. The files will be copied
 +  in the root directory of the namespace.
 +
 +``urlmap_file`` = ``s``
 +  Path of a JavaScript file that defines the mapping from namespaces
 +  to url prefixes for resolving links to external symbols, as a
 +  JavaScript map with the name `baseURLs`:
 +
 +::
 +
 +    baseURLs = [
 +      [ 'Pango', 'https://gnome.pages.gitlab.gnome.org/pango/Pango/' ],
 +      [ 'PangoCairo', 'https://gnome.pages.gitlab.gnome.org/pango/PangoCairo/' ],
 +    ]
 +
 +
 +Symbol overrides
 +----------------
 +
 +Visibility
 +~~~~~~~~~~
 +
 +It is possible to override the visibility of types, properties, and symbols in
 +the introspection data from within the project configuration file.
 +
 +The following example will hide the type ``Protected``:
 +
 +::
 +
 +    [[object]]
 +    name = "Protected"
 +    hidden = true
 +
 +The type will be skipped when generating the API reference and the search index.
 +This annotation applies to all possible top-level types:
 +
 + - aliases
 + - bitfields
 + - callbacks
 + - classes
 + - domains
 + - enums
 + - functions
 + - function macros
 + - interfaces
 + - records
 + - unions
 +
 +The ``object`` key is always an array of dictionaries; each element in the array
 +can have a ``name`` key, used to match the object name exactly; or a ``pattern``
 +key, which uses a regular expression to match the object name.
 +
 +Each object can contain the following keys:
 +
 + - ``name``: the name of the symbol to match exactly
 + - ``pattern``: a regular expression to match the symbol name
 + - ``hidden``: whether the symbol should be hidden from the documentation
 + - ``check_ignore``: whether the symbol should be skipped when checking the
 +   documentation
 +
 +Each element can also have the following sections:
 +
 + - ``property``
 + - ``signal``
 + - ``constructor``
 + - ``method``
 + - ``function``
 +
 +Each one of these sections can contain array of objects.
 +
 +The following example will hide the ``backend`` property on the ``Printer`` type:
 +
 +::
 +
 +    [[object]]
 +    name = "Printer"
 +
 +      [[object.property]]
 +      name = "backend"
 +      hidden = true
 +
 +The following example will hide the ``private-changed`` signal on the
 +``StyleProvider`` type:
 +
 +::
 +
 +    [[object]]
 +    name = "StyleProvider"
 +
 +      [[object.signal]]
 +      name = "private-changed"
 +      hidden = true
 +
 +The following example will skip the ``quark`` function on the ``ParserError``
 +type when checking the documentation:
 +
 +::
 +
 +    [[object]]
 +    name = "ParserError"
 +
 +      [[object.function]]
 +      name = "quark"
 +      check_ignore = true
index 58fdec8ab50c10266c747d93a87180befb438120,0000000000000000000000000000000000000000..1e003163853a9be718a775fc68916d116c9685ce
mode 100644,000000..100644
--- /dev/null
@@@ -1,301 -1,0 +1,319 @@@
 +# SPDX-FileCopyrightText: 2021 GNOME Foundation <https://gnome.org>
 +# SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
 +
 +import os
 +import re
 +import toml
 +
 +from urllib.parse import urljoin
 +
 +from . import log, utils
 +
 +
 +class GIDocConfig:
 +    """Load and represent the configuration for gidocgen"""
 +    def __init__(self, config_file=None):
 +        self._config_file = config_file
 +
 +        self._config = {}
 +        if self._config_file is not None:
 +            try:
 +                log.debug(f"Reading configuration file: {self._config_file}")
 +                self._config = toml.load(self._config_file)
 +            except toml.TomlDecodeError as err:
 +                log.error(f"Invalid configuration file: {self._config_file}: {err}")
 +
 +    @property
 +    def library(self):
 +        return self._config.get('library', {})
 +
 +    @property
 +    def extra(self):
 +        return self._config.get('extra', {})
 +
 +    @property
 +    def theme(self):
 +        return self._config.get('theme', {})
 +
 +    def get_templates_dir(self, default=None):
 +        return self.theme.get('templates_dir', default)
 +
 +    def get_theme_name(self, default=None):
 +        return self.theme.get('name', default)
 +
 +    def get_library_name(self, default=None):
 +        return self.library.get('name', default)
 +
 +    def get_website_url(self, default=None):
 +        return self.library.get('website_url', default)
 +
 +    def get_logo_url(self, default=None):
 +        return self.library.get('logo_url', default)
 +
 +    def get_description(self, default=None):
 +        return self.library.get('description', default)
 +
 +    @property
 +    def urlmap_file(self):
 +        return self.extra.get('urlmap_file')
 +
 +    @property
 +    def version(self):
 +        return self.library.get('version', 'Unknown')
 +
 +    @property
 +    def authors(self):
 +        return self.library.get('authors', 'Unknown authors')
 +
 +    @property
 +    def license(self):
 +        return self.library.get('license', 'All rights reserved')
 +
 +    @property
 +    def website_url(self):
 +        return self.library.get('website_url', '')
 +
 +    @property
 +    def docs_url(self):
 +        return self.library.get('docs_url', '')
 +
 +    @property
 +    def browse_url(self):
 +        return self.library.get('browse_url', '')
 +
 +    @property
 +    def logo_url(self):
 +        return self.library.get('logo_url', '')
 +
 +    @property
 +    def description(self):
 +        return self.library.get('description', '')
 +
 +    @property
 +    def dependencies(self):
 +        library = self._config.get('library', None)
 +        if library is None:
 +            return {}
 +
 +        retval = {}
 +        dependencies = self._config.get('dependencies', {})
 +        for gir_name, dep in dependencies.items():
 +            res = {}
 +            res['name'] = dep.get('name', 'Unknown')
 +            res['description'] = dep.get('description', 'No description provided')
 +            res['docs_url'] = dep.get('docs_url', '#')
 +            retval[gir_name] = res
 +            log.debug(f"Found dependency {gir_name}: {res}")
 +
 +        return retval
 +
++    @property
++    def related(self):
++        library = self._config.get('library', None)
++        if library is None:
++            return {}
++
++        retval = {}
++        dependencies = self._config.get('related', {})
++        for gir_name, dep in dependencies.items():
++            res = {}
++            res['name'] = dep.get('name', 'Unknown')
++            res['description'] = dep.get('description', 'No description provided')
++            res['docs_url'] = dep.get('docs_url', '#')
++            retval[gir_name] = res
++            log.debug(f"Found related library {gir_name}: {res}")
++
++        return retval
++
 +    @property
 +    def devhelp(self):
 +        return self.library.get('devhelp', False)
 +
 +    @property
 +    def search_index(self):
 +        return self.library.get('search_index', False)
 +
 +    @property
 +    def content_files(self):
 +        return self.extra.get('content_files', [])
 +
 +    @property
 +    def content_images(self):
 +        return self.extra.get('content_images', [])
 +
 +    @property
 +    def source_location_url(self):
 +        source_location = self._config.get('source-location', {})
 +        return source_location.get('base_url', '')
 +
 +    @property
 +    def file_format(self):
 +        source_location = self._config.get('source-location', {})
 +        return source_location.get('file_format', '{filename}#L{line}')
 +
 +    @property
 +    def theme_name(self):
 +        return self.theme.get('name', '')
 +
 +    @property
 +    def show_index_summary(self):
 +        return self.theme.get('show_index_summary', False)
 +
 +    @property
 +    def show_class_hierarchy(self):
 +        if utils.find_program('dot') is None:
 +            return False
 +        return self.theme.get('show_class_hierarchy', False)
 +
 +    def source_link(self, *args):
 +        (filename, line) = args[0]
 +        base_url = self.source_location_url
 +        file_format = self.file_format
 +        endpoint = file_format.replace('{filename}', filename)
 +        endpoint = endpoint.replace('{line}', str(line))
 +        return urljoin(base_url, endpoint)
 +
 +    @property
 +    def objects(self):
 +        return self._config.get('object', {})
 +
 +    def match_object(self, name, match_key, category=None, key=None):
 +        def obj_matches(obj, name):
 +            n = obj.get('name')
 +            p = obj.get('pattern')
 +            if n is not None and n == name:
 +                return True
 +            elif p is not None and re.match(p, name):
 +                return True
 +            return False
 +        for obj in self.objects:
 +            if obj_matches(obj, name):
 +                if category is None:
 +                    return obj.get(match_key, False)
 +                else:
 +                    assert key is not None
 +                obj_category = obj.get(category)
 +                if obj_category is None:
 +                    return False
 +                for c in obj_category:
 +                    if obj_matches(c, key):
 +                        return c.get(match_key, False)
 +        return False
 +
 +    def is_hidden(self, name, category=None, key=None):
 +        return self.match_object(name, 'hidden', category, key)
 +
 +    def is_skipped(self, name, category=None, key=None):
 +        if self.is_hidden(name, category, key):
 +            return True
 +        return self.match_object(name, 'check_ignore', category, key)
 +
 +
 +class GITemplateConfig:
 +    """Load and represent the template configuration"""
 +    def __init__(self, templates_dir, template_name):
 +        self._templates_dir = templates_dir
 +        self._template_name = template_name
 +        self._config_file = os.path.join(templates_dir, template_name, f"{template_name}.toml")
 +
 +        self._config = {}
 +        try:
 +            log.debug(f"Reading template configuration file: {self._config_file}")
 +            self._config = toml.load(self._config_file)
 +        except toml.TomlDecodeError as err:
 +            log.error(f"Invalid template configuration file: {self._config_file}: {err}")
 +
 +    @property
 +    def name(self):
 +        metadata = self._config.get('metadata', {})
 +        return metadata.get('name', self._template_name)
 +
 +    @property
 +    def css(self):
 +        css = self._config.get('css', {})
 +        return css.get('style', None)
 +
 +    @property
 +    def extra_files(self):
 +        extra = self._config.get('extra_files', {})
 +        return extra.get('files', [])
 +
 +    @property
 +    def templates(self):
 +        return self._config.get('templates', {})
 +
 +    @property
 +    def class_template(self):
 +        return self.templates.get('class', 'class.html')
 +
 +    @property
 +    def method_template(self):
 +        return self.templates.get('method', 'method.html')
 +
 +    @property
 +    def class_method_template(self):
 +        return self.templates.get('class_method', 'class_method.html')
 +
 +    @property
 +    def vfunc_template(self):
 +        return self.templates.get('vfunc', 'vfunc.html')
 +
 +    @property
 +    def property_template(self):
 +        return self.templates.get('property', 'property.html')
 +
 +    @property
 +    def signal_template(self):
 +        return self.templates.get('signal', 'signal.html')
 +
 +    @property
 +    def type_func_template(self):
 +        return self.templates.get('type_func', 'type_func.html')
 +
 +    @property
 +    def ctor_template(self):
 +        return self.templates.get('ctor', 'type_func.html')
 +
 +    @property
 +    def func_template(self):
 +        return self.templates.get('function', 'function.html')
 +
 +    @property
 +    def constant_template(self):
 +        return self.templates.get('constant', 'constant.html')
 +
 +    @property
 +    def interface_template(self):
 +        return self.templates.get('interface', 'interface.html')
 +
 +    @property
 +    def namespace_template(self):
 +        return self.templates.get('namespace', 'namespace.html')
 +
 +    @property
 +    def content_template(self):
 +        return self.templates.get('content', 'content.html')
 +
 +    @property
 +    def enum_template(self):
 +        return self.templates.get('enum', 'enum.html')
 +
 +    @property
 +    def flags_template(self):
 +        return self.templates.get('flags', 'flags.html')
 +
 +    @property
 +    def error_template(self):
 +        return self.templates.get('error', 'error.html')
 +
 +    @property
 +    def record_template(self):
 +        return self.templates.get('record', 'record.html')
 +
 +    @property
 +    def union_template(self):
 +        return self.templates.get('union', 'union.html')
 +
 +    @property
 +    def alias_template(self):
 +        return self.templates.get('alias', 'alias.html')
index b1e3ae6ebe435083332b76e2434aadafac929371,0000000000000000000000000000000000000000..68049ee0dd8112bde9aba164ebf6c79cb353ea53
mode 100644,000000..100644
--- /dev/null
@@@ -1,4 -1,0 +1,4 @@@
- version = "2021.9"
 +# SPDX-FileCopyrightText: 2020 GNOME Foundation <https://gnome.org>
 +# SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
 +
++version = "2022.2"
index d90be3387c847f640743717f00b642cb5868ed75,0000000000000000000000000000000000000000..3bab8dd39c7058b8948b7d4baaa60472e707b9f0
mode 100644,000000..100644
--- /dev/null
@@@ -1,3117 -1,0 +1,3117 @@@
-                 keyword.set("link", f"constant.{t.name}.html")
 +# SPDX-FileCopyrightText: 2021 GNOME Foundation
 +# SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
 +
 +import argparse
 +import concurrent.futures
 +import jinja2
 +import markdown
 +import os
 +import shutil
 +import sys
 +
 +import xml.etree.ElementTree as etree
 +
 +from markupsafe import Markup
 +
 +from . import config, gir, log, utils
 +from . import gdgenindices
 +
 +
 +HELP_MSG = "Generates the reference"
 +
 +MISSING_DESCRIPTION = "No description available."
 +
 +STRING_TYPES = {
 +    'utf8': 'The value is a NUL terminated UTF-8 string.',
 +    'filename': 'The value is a file system path, using the OS encoding.',
 +}
 +
 +STRING_ELEMENT_TYPES = {
 +    'utf8': 'Each element is a NUL terminated UTF-8 string.',
 +    'filename': 'Each element is a file system path, using the OS encoding.',
 +}
 +
 +ARG_TRANSFER_MODES = {
 +    'none': 'The data is owned by the caller of the function.',
 +    'container': 'The called function takes ownership of the data container, but not the data inside it.',
 +    'full': 'The called function takes ownership of the data, and is responsible for freeing it.',
 +}
 +
 +METHOD_ARG_TRANSFER_MODES = {
 +    'none': 'The data is owned by the caller of the function.',
 +    'container': 'The instance takes ownership of the data container, but not the data inside it.',
 +    'full': 'The instance takes ownership of the data, and is responsible for freeing it.',
 +}
 +
 +RETVAL_TRANSFER_MODES = {
 +    'none': 'The data is owned by the called function.',
 +    'container': 'The caller of the function takes ownership of the data container, but not the data inside it.',
 +    'full': 'The caller of the function takes ownership of the data, and is responsible for freeing it.',
 +    'floating': 'The returned data has a floating reference.',
 +}
 +
 +METHOD_RETVAL_TRANSFER_MODES = {
 +    'none': 'The data is owned by the instance.',
 +    'container': 'The caller of the method takes ownership of the data container, but not the data inside it.',
 +    'full': 'The caller of the method takes ownership of the data, and is responsible for freeing it.',
 +    'floating': 'The returned data has a floating reference.',
 +}
 +
 +DIRECTION_MODES = {
 +    'in': '-',
 +    'inout': 'The argument will be modified by the function.',
 +    'out': 'The argument will be set by the function.',
 +}
 +
 +SCOPE_MODES = {
 +    'none': '-',
 +    'call': 'The callback arguments are valid during the call.',
 +    'notified': 'The callback arguments are valid until the notify function is called.',
 +    'async': 'The callback arguments are valid until the asynchronous call is completed.',
 +}
 +
 +SIGNAL_WHEN = {
 +    'first': "The default handler is called before the handlers added via `g_signal_connect()`.",
 +    'last': "The default handler is called after the handlers added via `g_signal_connect()`.",
 +    'cleanup': "The default handler is called after the handlers added via `g_signal_connect_after()`.",
 +}
 +
 +FRAGMENT = {
 +    "aliases": "alias",
 +    "bitfields": "flags",
 +    "callbacks": "callback",
 +    "classes": "class",
 +    "constants": "const",
 +    "domains": "error",
 +    "enums": "enum",
 +    "functions": "func",
 +    "function_macros": "func",
 +    "interfaces": "iface",
 +    "structs": "struct",
 +    "unions": "union",
 +}
 +
 +
 +def type_name_to_cname(fqtn, is_pointer=False):
 +    res = []
 +    try:
 +        ns, name = fqtn.split('.', 1)
 +        res.append(ns)
 +        res.append(name)
 +    except ValueError:
 +        res.append(fqtn.replace('.', ''))
 +    if is_pointer:
 +        res.append('*')
 +    return "".join(res)
 +
 +
 +def gen_index_func(func, namespace, md=None):
 +    """Generates a dictionary with the callable metadata required by an index template"""
 +    name = func.name
 +    if getattr(func, "identifier"):
 +        identifier = func.identifier
 +    else:
 +        identifier = None
 +    if func.doc is not None:
 +        summary = utils.preprocess_docs(func.doc.content, namespace, summary=True, md=md)
 +    else:
 +        summary = MISSING_DESCRIPTION
 +    if func.available_since is not None:
 +        available_since = func.available_since
 +    else:
 +        available_since = None
 +    if func.deprecated:
 +        (version, msg) = func.deprecated_since
 +        deprecated_since = version
 +    else:
 +        deprecated_since = None
 +    return {
 +        "name": name,
 +        "identifier": identifier,
 +        "summary": summary,
 +        "available_since": available_since,
 +        "deprecated_since": deprecated_since,
 +    }
 +
 +
 +def gen_index_property(prop, namespace, md=None):
 +    name = prop.name
 +    if prop.doc is not None:
 +        summary = utils.preprocess_docs(prop.doc.content, namespace, summary=True, md=md)
 +    else:
 +        summary = MISSING_DESCRIPTION
 +    if prop.available_since is not None:
 +        available_since = prop.available_since
 +    else:
 +        available_since = None
 +    if prop.deprecated:
 +        (version, msg) = prop.deprecated_since
 +        deprecated_since = version
 +    else:
 +        deprecated_since = None
 +    return {
 +        "name": name,
 +        "summary": summary,
 +        "available_since": available_since,
 +        "deprecated_since": deprecated_since,
 +    }
 +
 +
 +def gen_index_signal(signal, namespace, md=None):
 +    name = signal.name
 +    if signal.doc is not None:
 +        summary = utils.preprocess_docs(signal.doc.content, namespace, summary=True, md=md)
 +    else:
 +        summary = MISSING_DESCRIPTION
 +    if signal.available_since is not None:
 +        available_since = signal.available_since
 +    else:
 +        available_since = None
 +    if signal.deprecated:
 +        (version, msg) = signal.deprecated_since
 +        deprecated_since = version
 +    else:
 +        deprecated_since = None
 +    return {
 +        "name": name,
 +        "summary": summary,
 +        "available_since": available_since,
 +        "deprecated_since": deprecated_since,
 +    }
 +
 +
 +def gen_index_ancestor(ancestor_type, namespace, config, md=None):
 +    ancestor_name = ancestor_type.name
 +    if '.' in ancestor_name:
 +        ns, ancestor_name = ancestor_name.split('.')
 +    else:
 +        ns = ancestor_type.namespace or namespace.name
 +    res = namespace.repository.find_class(ancestor_name, ns)
 +    if res is not None:
 +        ancestor_ns = res[0].name
 +        ancestor_ctype = res[1].base_ctype
 +        ancestor = res[1]
 +    else:
 +        ancestor_ns = ancestor_type.namespace or namespace.name
 +        ancestor_ctype = ancestor_type.base_ctype
 +        ancestor = None
 +    n_methods = 0
 +    methods = []
 +    n_properties = 0
 +    properties = []
 +    n_signals = 0
 +    signals = []
 +    # We don't use real Template objects, here, because it can be
 +    # extremely expensive, unless we add a cache somewhere
 +    if ancestor is not None:
 +        # Set a hard-limit on the number of methods; base types can
 +        # add *a lot* of them; two dozens feel like a good compromise
 +        for m in ancestor.methods:
 +            is_hidden = config.is_hidden(ancestor_name, "method", m.name)
 +            if not is_hidden:
 +                n_methods += 1
 +        if n_methods > 0 and n_methods < 24:
 +            for m in ancestor.methods:
 +                if not config.is_hidden(ancestor_name, "method", m.name):
 +                    methods.append(gen_index_func(m, namespace, md))
 +        for p in ancestor.properties.values():
 +            if not config.is_hidden(ancestor_name, "property", p.name):
 +                n_properties += 1
 +                properties.append(gen_index_property(p, namespace, md))
 +        for s in ancestor.signals.values():
 +            if not config.is_hidden(ancestor_name, "signal", s.name):
 +                n_signals += 1
 +                signals.append(gen_index_signal(s, namespace, md))
 +    return {
 +        "namespace": ancestor_ns,
 +        "name": ancestor_name,
 +        "fqtn": f"{ancestor_ns}.{ancestor_name}",
 +        "type_cname": ancestor_ctype,
 +        "properties": properties,
 +        "n_properties": n_properties,
 +        "signals": signals,
 +        "n_signals": n_signals,
 +        "methods": methods,
 +        "n_methods": n_methods,
 +    }
 +
 +
 +def gen_index_implements(iface_type, namespace, config, md=None):
 +    iface_name = iface_type.name
 +    if '.' in iface_name:
 +        ns, iface_name = iface_name.split('.')
 +    else:
 +        ns = iface_type.namespace or namespace.name
 +    res = namespace.repository.find_interface(iface_name, ns)
 +    if res is not None:
 +        iface_ns = res[0].name
 +        iface_ctype = res[1].base_ctype
 +        iface = res[1]
 +    else:
 +        iface_ns = iface_type.namespace or namespace.name
 +        iface_ctype = iface_type.base_ctype
 +        iface = None
 +    n_methods = 0
 +    methods = []
 +    n_properties = 0
 +    properties = []
 +    n_signals = 0
 +    signals = []
 +    if iface is not None:
 +        # Set a hard-limit on the number of methods; base types can
 +        # add *a lot* of them; two dozens feel like a good compromise
 +        for m in iface.methods:
 +            is_hidden = config.is_hidden(iface_name, "method", m.name)
 +            if not is_hidden:
 +                n_methods += 1
 +        if n_methods > 0 and n_methods < 24:
 +            for m in iface.methods:
 +                if not config.is_hidden(iface_name, "method", m.name):
 +                    methods.append(gen_index_func(m, namespace, md))
 +        for p in iface.properties.values():
 +            if not config.is_hidden(iface_name, "property", p.name):
 +                n_properties += 1
 +                properties.append(gen_index_property(p, namespace, md))
 +        for s in iface.signals.values():
 +            if not config.is_hidden(iface.name, "signal", s.name):
 +                n_signals += 1
 +                signals.append(gen_index_signal(s, namespace, md))
 +    return {
 +        "namespace": iface_ns,
 +        "name": iface_name,
 +        "fqtn": f"{iface_ns}.{iface_name}",
 +        "type_cname": iface_ctype,
 +        "properties": properties,
 +        "n_properties": n_properties,
 +        "signals": signals,
 +        "n_signals": n_signals,
 +        "methods": methods,
 +        "n_methods": n_methods,
 +    }
 +
 +
 +def gen_type_link(repository, namespace, name, ctype=None):
 +    res = repository.find_type(name, ns=namespace)
 +    if res is None:
 +        if ctype is not None:
 +            return f"<code>{ctype}</code>"
 +        elif name in ['utf8', 'filename']:
 +            return "<code>char*</code>"
 +        else:
 +            return f"<code>{name}</code>"
 +
 +    ns, t = res
 +    if t.is_fundamental:
 +        return f"<code>{t.ctype}</code>"
 +
 +    if isinstance(t, gir.Alias):
 +        link = f"alias.{name}.html"
 +    elif isinstance(t, gir.BitField):
 +        link = f"flags.{name}.html"
 +    elif isinstance(t, gir.Callback):
 +        link = f"callback.{name}.html"
 +    elif isinstance(t, gir.Class):
 +        link = f"class.{name}.html"
 +    elif isinstance(t, gir.ErrorDomain):
 +        link = f"error.{name}.html"
 +    elif isinstance(t, gir.Enumeration):
 +        link = f"enum.{name}.html"
 +    elif isinstance(t, gir.Interface):
 +        link = f"iface.{name}.html"
 +    elif isinstance(t, gir.Record):
 +        link = f"struct.{name}.html"
 +    elif isinstance(t, gir.Union):
 +        link = f"union.{name}.html"
 +    else:
 +        return f"<code>{t.ctype}</code>"
 +
 +    text = f"<code>{t.ctype}</code>"
 +    if ns.name == repository.namespace.name:
 +        href = f'href="{link}"'
 +        css_class = ""
 +        data_link = ""
 +        data_ns = ""
 +    else:
 +        href = 'href="javascript:void(0)"'
 +        css_class = ' class="external"'
 +        data_link = f' data-link="{link}"'
 +        data_ns = f' data-namespace="{ns.name}"'
 +
 +    return f"<a {href}{data_link}{data_ns}{css_class}>{text}</a>"
 +
 +
 +class TemplateConstant:
 +    def __init__(self, namespace, const):
 +        self.value = const.value
 +        self.identifier = const.ctype
 +        self.type_cname = const.target.ctype
 +        self.namespace = namespace.name
 +        self.name = const.name
 +        self.fqtn = f"{namespace.name}.{const.name}"
 +
 +        if const.doc is not None:
 +            self.summary = utils.preprocess_docs(const.doc.content, namespace, summary=True)
 +            self.description = utils.preprocess_docs(const.doc.content, namespace)
 +            filename = const.doc.filename
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            line = const.doc.line
 +            const.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.stability = const.stability
 +        self.attributes = const.attributes
 +        self.available_since = const.available_since
 +        if const.deprecated:
 +            (version, msg) = const.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        self.introspectable = const.introspectable
 +        self.hierarchy_svg = None
 +
 +    @property
 +    def c_decl(self):
 +        return utils.code_highlight(f"#define {self.identifier} {self.value}")
 +
 +
 +class TemplateProperty:
 +    def __init__(self, namespace, type_, prop):
 +        self.name = prop.name
 +        self.is_fundamental = prop.target.is_fundamental
 +        self.is_array = isinstance(prop.target, gir.ArrayType)
 +        self.is_list = isinstance(prop.target, gir.ListType)
 +        self.is_list_model = prop.target.name in ['Gio.ListModel', 'GListModel']
 +        self.readable = prop.readable
 +        self.writable = prop.writable
 +        self.construct = prop.construct
 +        self.construct_only = prop.construct_only
 +        if self.is_fundamental:
 +            self.type_name = prop.target.name
 +            self.type_cname = prop.target.ctype
 +        elif self.is_array or self.is_list:
 +            value_type = prop.target.value_type
 +            if value_type.name in ['utf8', 'filename']:
 +                self.type_name = "string[]"
 +                self.type_cname = "char*"
 +            elif value_type.ctype is not None:
 +                self.type_name = value_type.name
 +                self.type_cname = value_type.ctype
 +            else:
 +                self.type_name = value_type.name
 +                self.type_cname = type_name_to_cname(value_type.name, True)
 +        else:
 +            self.type_name = prop.target.name
 +            self.type_cname = prop.target.ctype
 +        if prop.doc is not None:
 +            self.summary = utils.preprocess_docs(prop.doc.content, namespace, summary=True)
 +            self.description = utils.preprocess_docs(prop.doc.content, namespace)
 +            filename = prop.doc.filename
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            line = prop.doc.line
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.stability = prop.stability
 +        self.available_since = prop.available_since
 +        if prop.deprecated:
 +            (version, msg) = prop.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        self.introspectable = prop.introspectable
 +
 +        def transform_set_attribute(namespace, prop, setter_func):
 +            if setter_func is None:
 +                log.warning(f"Missing value in the set attribute for {prop.name}")
 +                return None
 +            t = namespace.find_symbol(setter_func)
 +            if t is None:
 +                log.warning(f"Invalid Property.set attribute for {prop.name}: {setter_func}")
 +                return setter_func
 +            if not (isinstance(t, gir.Class) or isinstance(t, gir.Interface)):
 +                log.warning(f"Invalid setter function {setter_func} for property {namespace.name}.{t.name}:{prop.name}")
 +                return setter_func
 +            func_name = setter_func.replace(namespace.symbol_prefix[0] + '_', '')
 +            func_name = func_name.replace(t.symbol_prefix + '_', '')
 +            href = f"method.{t.name}.{func_name}.html"
 +            return Markup(f"<a href=\"{href}\"><code>{setter_func}</code></a>")
 +
 +        def transform_get_attribute(namespace, prop, getter_func):
 +            if getter_func is None:
 +                log.warning(f"Missing value in the get attribute for {prop.name}")
 +                return None
 +            t = namespace.find_symbol(getter_func)
 +            if t is None:
 +                log.warning(f"Invalid Property.get attribute for {prop.name}: {getter_func}")
 +                return getter_func
 +            if not (isinstance(t, gir.Class) or isinstance(t, gir.Interface)):
 +                log.warning(f"Invalid getter function {getter_func} for property {namespace.name}.{t.name}:{prop.name}")
 +                return getter_func
 +            func_name = getter_func.replace(namespace.symbol_prefix[0] + '_', '')
 +            func_name = func_name.replace(t.symbol_prefix + '_', '')
 +            href = f"method.{t.name}.{func_name}.html"
 +            return Markup(f"<a href=\"{href}\"><code>{getter_func}</code></a>")
 +
 +        def transform_default_attribute(namespace, prop, default_value):
 +            if default_value is None:
 +                log.warning(f"Missing value in the default attribute for {prop.name}")
 +                return None
 +            return Markup(f"<code>{default_value}</code>")
 +
 +        ATTRIBUTE_NAMES = {
 +            "org.gtk.Property.set": {
 +                "label": "Setter method",
 +                "transform": transform_set_attribute,
 +            },
 +            "org.gtk.Property.get": {
 +                "label": "Getter method",
 +                "transform": transform_get_attribute,
 +            },
 +            "org.gtk.Property.default": {
 +                "label": "Default value",
 +                "transform": transform_default_attribute,
 +            },
 +        }
 +
 +        self.attributes = {}
 +        for name in (prop.attributes or {}):
 +            value = prop.attributes[name]
 +            if name in ATTRIBUTE_NAMES:
 +                label = ATTRIBUTE_NAMES[name].get("label")
 +                transform = ATTRIBUTE_NAMES[name].get("transform")
 +                if transform is not None:
 +                    self.attributes[label] = transform(namespace, prop, value)
 +            else:
 +                self.attributes[name] = value
 +
 +        def gen_method_link(ns, t, method):
 +            for m in t.methods:
 +                if m.name == method:
 +                    href = f"method.{t.name}.{m.name}.html"
 +                    return Markup(f'<a href="{href}"><code>{m.identifier}()</code></a>')
 +            return None
 +
 +        if prop.setter is not None:
 +            link = gen_method_link(namespace, type_, prop.setter)
 +            if link is not None:
 +                self.attributes["Setter method"] = link
 +        if prop.getter is not None:
 +            link = gen_method_link(namespace, type_, prop.getter)
 +            if link is not None:
 +                self.attributes["Getter method"] = link
 +
 +        if self.is_fundamental:
 +            self.link = f"<code>{self.type_cname}</code>"
 +        elif self.is_array or self.is_list:
 +            self.link = f"<code>{self.type_cname}</code>"
 +        elif prop.target.name is not None:
 +            name = prop.target.name
 +            if '.' in name:
 +                ns, name = name.split('.')
 +            else:
 +                ns = namespace.name
 +            self.link = gen_type_link(namespace.repository, ns, name, self.type_cname)
 +
 +    @property
 +    def c_decl(self):
 +        flags = []
 +        if self.readable:
 +            flags += ['read']
 +        if self.writable:
 +            flags += ['write']
 +        if self.construct:
 +            flags += ['construct']
 +        if self.construct_only:
 +            flags += ['construct-only']
 +        flags = ", ".join(flags)
 +        return f"property {self.name}: {self.type_name} [ {flags} ]"
 +
 +
 +class TemplateArgument:
 +    def __init__(self, namespace, call, argument):
 +        self.name = argument.name
 +        self.type_name = argument.target.name
 +        self.is_array = isinstance(argument.target, gir.ArrayType)
 +        self.is_list = isinstance(argument.target, gir.ListType)
 +        self.is_map = isinstance(argument.target, gir.MapType)
 +        self.is_varargs = isinstance(argument.target, gir.VarArgs)
 +        self.is_macro = isinstance(call, gir.FunctionMacro)
 +        self.is_list_model = self.type_name in ['Gio.ListModel', 'GListModel']
 +        self.is_fundamental = argument.target.is_fundamental
 +        if isinstance(call, gir.FunctionMacro):
 +            self.type_cname = '-'
 +        elif self.is_array or self.is_list:
 +            if argument.target.ctype is None:
 +                if argument.target.value_type.name in ['utf8', 'filename']:
 +                    self.type_cname = 'char**'
 +                elif argument.target.value_type.ctype is not None:
 +                    self.type_cname = argument.target.value_type.ctype + '*'
 +                else:
 +                    self.type_cname = 'gpointer'
 +            else:
 +                self.type_cname = argument.target.ctype
 +        elif self.type_name in ['utf8', 'filename']:
 +            if argument.target.ctype is None:
 +                self.type_cname = 'char*'
 +            else:
 +                self.type_cname = argument.target.ctype
 +        elif self.is_fundamental:
 +            if argument.target.ctype is None:
 +                self.type_cname = type_name_to_cname(argument.target.name, False)
 +            else:
 +                self.type_cname = argument.target.ctype
 +        else:
 +            self.type_cname = argument.target.ctype
 +            if self.type_cname is None:
 +                self.type_cname = type_name_to_cname(argument.target.name, True)
 +        self.transfer = argument.transfer or 'none'
 +        if isinstance(call, gir.Method):
 +            self.transfer_note = METHOD_ARG_TRANSFER_MODES[argument.transfer or 'none']
 +        else:
 +            self.transfer_note = ARG_TRANSFER_MODES[argument.transfer or 'none']
 +        self.direction = argument.direction or 'in'
 +        self.direction_note = DIRECTION_MODES[argument.direction]
 +        self.optional = argument.optional
 +        self.nullable = argument.nullable
 +        self.scope = SCOPE_MODES[argument.scope or 'none']
 +        self.introspectable = argument.introspectable
 +        if argument.closure != -1:
 +            self.closure = call.parameters[argument.closure]
 +        else:
 +            self.closure = None
 +        if self.is_array:
 +            self.value_type = argument.target.value_type.name
 +            self.value_type_cname = argument.target.value_type.ctype
 +            self.fixed_size = argument.target.fixed_size
 +            self.zero_terminated = argument.target.zero_terminated
 +            self.len_arg = argument.target.length != -1 and call.parameters[argument.target.length].name
 +        if self.is_list:
 +            self.value_type = argument.target.value_type.name
 +            self.value_type_cname = argument.target.value_type.ctype
 +        if self.is_list_model:
 +            self.value_type = argument.attributes.get('element-type', 'GObject')
 +        if self.type_name in ['utf8', 'filename']:
 +            self.string_note = STRING_TYPES[self.type_name]
 +        elif self.is_array or self.is_list:
 +            if self.value_type in ['utf8', 'filename']:
 +                self.string_note = STRING_ELEMENT_TYPES[self.value_type]
 +        if argument.doc is not None:
 +            self.summary = utils.preprocess_docs(argument.doc.content, namespace, summary=True)
 +            self.description = utils.preprocess_docs(argument.doc.content, namespace)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +        if self.is_array:
 +            name = self.value_type
 +        elif self.is_list:
 +            name = self.value_type
 +        elif self.type_name is not None:
 +            name = self.type_name
 +        else:
 +            name = None
 +        if name is not None:
 +            if self.is_fundamental:
 +                self.link = f"<code>{self.type_cname}</code>"
 +            elif self.is_array:
 +                self.link = f"<code>{self.value_type_cname}</code>"
 +            elif self.is_list:
 +                self.link = f"<code>{self.value_type_cname}</code>"
 +            elif self.is_list_model:
 +                self.link = f"<code>{self.value_type}</code>"
 +            else:
 +                if '.' in name:
 +                    ns, name = name.split('.')
 +                else:
 +                    ns = namespace.name
 +                self.link = gen_type_link(namespace.repository, ns, name, self.type_cname)
 +
 +    @property
 +    def is_pointer(self):
 +        if self.type_cname is None:
 +            return False
 +        if self.direction in ['out', 'inout'] and self.is_fundamental and self.type_cname.count('*') == 1:
 +            return False
 +        if self.is_fundamental and self.type_cname in ['gpointer', 'gconstpointer']:
 +            return True
 +        return '*' in self.type_cname
 +
 +    @property
 +    def c_decl(self):
 +        if self.is_varargs:
 +            return "..."
 +        elif self.is_macro:
 +            return f"{self.name}"
 +        else:
 +            return f"{self.type_cname} {self.name}"
 +
 +
 +class TemplateReturnValue:
 +    def __init__(self, namespace, call, retval):
 +        self.name = retval.name
 +        self.type_name = retval.target.name
 +        self.type_cname = retval.target.ctype
 +        self.is_fundamental = retval.target.is_fundamental
 +        if self.type_cname is None:
 +            self.type_cname = type_name_to_cname(retval.target.name, True)
 +        self.is_array = isinstance(retval.target, gir.ArrayType)
 +        self.is_list = isinstance(retval.target, gir.ListType)
 +        self.is_list_model = self.type_name in ['Gio.ListModel', 'GListModel']
 +        self.transfer = retval.transfer or 'none'
 +        if isinstance(call, gir.Method):
 +            self.transfer_note = METHOD_RETVAL_TRANSFER_MODES[retval.transfer or 'none']
 +        else:
 +            self.transfer_note = RETVAL_TRANSFER_MODES[retval.transfer or 'none']
 +        self.nullable = retval.nullable
 +        if self.is_array:
 +            self.value_type = retval.target.value_type.name
 +            self.value_type_cname = retval.target.value_type.ctype
 +            self.fixed_size = retval.target.fixed_size
 +            self.zero_terminated = retval.target.zero_terminated
 +            self.len_arg = retval.target.length != -1 and call.parameters[retval.target.length].name
 +        if self.is_list:
 +            self.value_type = retval.target.value_type.name
 +            self.value_type_cname = retval.target.value_type.ctype
 +        if self.is_list_model:
 +            self.value_type = retval.attributes.get('element-type', 'GObject')
 +        if self.type_name in ['utf8', 'filename']:
 +            self.string_note = STRING_TYPES[self.type_name]
 +        elif self.is_array or self.is_list:
 +            if self.value_type in ['utf8', 'filename']:
 +                self.string_note = STRING_ELEMENT_TYPES[self.value_type]
 +        if retval.doc is not None:
 +            self.summary = utils.preprocess_docs(retval.doc.content, namespace, summary=True)
 +            self.description = utils.preprocess_docs(retval.doc.content, namespace)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +        self.introspectable = retval.introspectable
 +        if self.is_array:
 +            name = self.value_type
 +        elif self.is_list:
 +            name = self.value_type
 +        elif self.is_list_model:
 +            name = self.value_type
 +        elif self.type_name is not None:
 +            name = self.type_name
 +        else:
 +            name = None
 +        if name is not None:
 +            if self.is_fundamental:
 +                self.link = f"<code>{self.type_cname}</code>"
 +            elif self.is_array:
 +                self.link = f"<code>{self.value_type_cname}</code>"
 +            elif self.is_list:
 +                self.link = f"<code>{self.value_type_cname}</code>"
 +            elif self.is_list_model:
 +                self.link = f"<code>{self.value_type}</code>"
 +            else:
 +                if '.' in name:
 +                    ns, name = name.split('.')
 +                else:
 +                    ns = namespace.name
 +                self.link = gen_type_link(namespace.repository, ns, name, self.type_cname)
 +
 +    @property
 +    def is_pointer(self):
 +        if self.type_cname is None:
 +            return False
 +        elif self.is_fundamental and self.type_cname in ['gpointer', 'gconstpointer']:
 +            return True
 +        else:
 +            return '*' in self.type_cname
 +
 +
 +class TemplateSignal:
 +    def __init__(self, namespace, type_, signal):
 +        self.name = signal.name
 +        self.type_cname = type_.base_ctype
 +        self.identifier = signal.name.replace("-", "_")
 +
 +        if signal.doc is not None:
 +            self.summary = utils.preprocess_docs(signal.doc.content, namespace, summary=True)
 +            self.description = utils.preprocess_docs(signal.doc.content, namespace)
 +            filename = signal.doc.filename
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            line = signal.doc.line
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.is_detailed = signal.detailed
 +        self.is_action = signal.action
 +        self.no_recurse = signal.no_recurse
 +        self.no_hooks = signal.no_hooks
 +        if signal.when:
 +            self.when = utils.preprocess_docs(SIGNAL_WHEN[signal.when], namespace)
 +
 +        self.arguments = []
 +        for arg in signal.parameters:
 +            self.arguments.append(TemplateArgument(namespace, signal, arg))
 +
 +        self.return_value = None
 +        if not isinstance(signal.return_value.target, gir.VoidType):
 +            self.return_value = TemplateReturnValue(namespace, signal, signal.return_value)
 +
 +        self.stability = signal.stability
 +        self.attributes = signal.attributes
 +        self.available_since = signal.available_since
 +        if signal.deprecated:
 +            (version, msg) = signal.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        self.introspectable = signal.introspectable
 +
 +    @property
 +    def c_decl(self):
 +        res = []
 +        if self.return_value is None:
 +            res += ["void"]
 +        else:
 +            res += [f"{self.return_value.type_cname}"]
 +        res += [f"{self.identifier} ("]
 +        res += [f"  {self.type_cname}* self,"]
 +        for arg in self.arguments:
 +            res += [f"  {arg.c_decl},"]
 +        res += ["  gpointer user_data"]
 +        res += [")"]
 +        return utils.code_highlight("\n".join(res))
 +
 +
 +class TemplateMethod:
 +    def __init__(self, namespace, type_, method):
 +        self.name = method.name
 +        self.identifier = method.identifier
 +
 +        if method.doc is not None:
 +            self.summary = utils.preprocess_docs(method.doc.content, namespace, summary=True)
 +            self.description = utils.preprocess_docs(method.doc.content, namespace)
 +            filename = method.doc.filename
 +            line = method.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.throws = method.throws
 +
 +        self.instance_parameter = TemplateArgument(namespace, method, method.instance_param)
 +
 +        self.arguments = []
 +        for arg in method.parameters:
 +            self.arguments.append(TemplateArgument(namespace, method, arg))
 +
 +        self.return_value = None
 +        if not isinstance(method.return_value.target, gir.VoidType):
 +            self.return_value = TemplateReturnValue(namespace, method, method.return_value)
 +
 +        self.stability = method.stability
 +        self.available_since = method.available_since
 +        if method.deprecated:
 +            (version, msg) = method.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        if method.source_position is not None:
 +            filename, line = method.source_position
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.source_location = (filename, line)
 +
 +        self.introspectable = method.introspectable
 +
 +        self.shadows = method.shadows
 +        if method.shadows:
 +            for m in type_.methods:
 +                if m.name == method.shadows:
 +                    self.shadows_symbol = m.identifier
 +                    break
 +        self.shadowed_by = method.shadowed_by
 +        if method.shadowed_by:
 +            for m in type_.methods:
 +                if m.name == method.shadowed_by:
 +                    self.shadowed_by_symbol = m.identifier
 +                    break
 +
 +        def transform_property_attribute(namespace, type_, method, value):
 +            if value in type_.properties:
 +                text = f"{namespace.name}.{type_.name}:{value}"
 +                href = f"property.{type_.name}.{value}.html"
 +                return Markup(f"<a href=\"{href}\"><code>{text}</code></a>")
 +            log.warning(f"Property {value} linked to method {method.name} not found in {namespace.name}.{type_.name}")
 +            return value
 +
 +        def transform_signal_attribute(namespace, type_, method, value):
 +            if value in type_.signals:
 +                text = f"{namespace.name}.{type_.name}::{value}"
 +                href = f"signal.{type_.name}.{value}.html"
 +                return Markup(f"<a href=\"{href}\"><code>{text}</code></a>")
 +            log.warning(f"Signal {value} linked to method {method.name} not found in {namespace.name}.{type_.name}")
 +            return value
 +
 +        ATTRIBUTE_NAMES = {
 +            "org.gtk.Method.set_property": {
 +                "label": "Sets property",
 +                "transform": transform_property_attribute,
 +            },
 +            "org.gtk.Method.get_property": {
 +                "label": "Gets property",
 +                "transform": transform_property_attribute,
 +            },
 +            "org.gtk.Method.signal": {
 +                "label": "Emits signal",
 +                "transform": transform_signal_attribute,
 +            }
 +        }
 +
 +        self.attributes = {}
 +        for name in (method.attributes or {}):
 +            value = method.attributes[name]
 +            if name in ATTRIBUTE_NAMES:
 +                label = ATTRIBUTE_NAMES[name].get("label")
 +                transform = ATTRIBUTE_NAMES[name].get("transform")
 +                if transform is not None:
 +                    self.attributes[label] = transform(namespace, type_, method, value)
 +            else:
 +                self.attributes[name] = value
 +
 +        def gen_property_link(namespace, t, prop_name):
 +            if prop_name not in t.properties:
 +                return None
 +            prop = t.properties[prop_name]
 +            text = f"{namespace.name}.{t.name}:{prop.name}"
 +            href = f"property.{t.name}.{prop.name}.html"
 +            return Markup(f'<a href="{href}"><code>{text}</code></a>')
 +
 +        if isinstance(method, gir.Method):
 +            if method.set_property is not None:
 +                link = gen_property_link(namespace, type_, method.set_property)
 +                if link is not None:
 +                    self.attributes["Sets property"] = link
 +            if method.get_property is not None:
 +                link = gen_property_link(namespace, type_, method.get_property)
 +                if link is not None:
 +                    self.attributes["Gets property"] = link
 +
 +    @property
 +    def c_decl(self):
 +        res = []
 +        if self.return_value is None:
 +            res += ["void"]
 +        else:
 +            res += [f"{self.return_value.type_cname}"]
 +        if self.identifier is not None:
 +            res += [f"{self.identifier} ("]
 +        else:
 +            res += [f"{self.name} ("]
 +        n_args = len(self.arguments)
 +        if n_args == 0:
 +            res += [f"  {self.instance_parameter.type_cname} {self.instance_parameter.name}"]
 +        else:
 +            res += [f"  {self.instance_parameter.type_cname} {self.instance_parameter.name},"]
 +            for (idx, arg) in enumerate(self.arguments):
 +                if idx == n_args - 1 and not self.throws:
 +                    res += [f"  {arg.c_decl}"]
 +                else:
 +                    res += [f"  {arg.c_decl},"]
 +        if self.throws:
 +            res += ["  GError** error"]
 +        res += [")"]
 +        return utils.code_highlight("\n".join(res))
 +
 +
 +class TemplateClassMethod:
 +    def __init__(self, namespace, cls, method):
 +        self.name = method.name
 +        self.identifier = method.identifier
 +        self.class_type_cname = namespace.identifier_prefix[0] + cls.type_struct
 +
 +        self.throws = method.throws
 +
 +        if method.doc is not None:
 +            self.summary = utils.preprocess_docs(method.doc.content, namespace, summary=True)
 +            self.description = utils.preprocess_docs(method.doc.content, namespace)
 +            filename = method.doc.filename
 +            line = method.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.instance_parameter = TemplateArgument(namespace, method, method.instance_param)
 +
 +        self.arguments = []
 +        for arg in method.parameters:
 +            self.arguments.append(TemplateArgument(namespace, method, arg))
 +
 +        self.return_value = None
 +        if not isinstance(method.return_value.target, gir.VoidType):
 +            self.return_value = TemplateReturnValue(namespace, method, method.return_value)
 +
 +        self.stability = method.stability
 +        self.attributes = method.attributes
 +        self.available_since = method.available_since
 +        if method.deprecated:
 +            (version, msg) = method.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        if method.source_position is not None:
 +            filename, line = method.source_position
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.source_location = (filename, line)
 +
 +        self.introspectable = method.introspectable
 +
 +    @property
 +    def c_decl(self):
 +        res = []
 +        if self.return_value is None:
 +            res += ["void"]
 +        else:
 +            res += [f"{self.return_value.type_cname}"]
 +        res += [f"{self.identifier} ("]
 +        n_args = len(self.arguments)
 +        if n_args == 0:
 +            res += [f"  {self.instance_parameter.type_cname} {self.instance_parameter.name}"]
 +        else:
 +            res += [f"  {self.instance_parameter.type_cname} {self.instance_parameter.name},"]
 +            for (idx, arg) in enumerate(self.arguments):
 +                if idx == n_args - 1 and not self.throws:
 +                    res += [f"  {arg.c_decl}"]
 +                else:
 +                    res += [f"  {arg.c_decl},"]
 +        if self.throws:
 +            res += ["  GError** error"]
 +        res += [")"]
 +        return utils.code_highlight("\n".join(res))
 +
 +
 +class TemplateFunction:
 +    def __init__(self, namespace, func):
 +        self.identifier = func.identifier
 +        self.name = func.name
 +        self.namespace = namespace.name
 +
 +        self.is_macro = isinstance(func, gir.FunctionMacro)
 +
 +        self.throws = func.throws
 +
 +        if func.doc is not None:
 +            self.summary = utils.preprocess_docs(func.doc.content, namespace, summary=True)
 +            self.description = utils.preprocess_docs(func.doc.content, namespace)
 +            filename = func.doc.filename
 +            line = func.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.arguments = []
 +        for arg in func.parameters:
 +            self.arguments.append(TemplateArgument(namespace, func, arg))
 +
 +        self.return_value = None
 +        if not isinstance(func.return_value.target, gir.VoidType):
 +            self.return_value = TemplateReturnValue(namespace, func, func.return_value)
 +
 +        self.stability = func.stability
 +        self.attributes = func.attributes
 +        self.available_since = func.available_since
 +        if func.deprecated:
 +            (version, msg) = func.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        if func.source_position is not None:
 +            filename, line = func.source_position
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.source_location = (filename, line)
 +
 +        self.introspectable = func.introspectable
 +
 +        self.shadows = func.shadows
 +        if func.shadows:
 +            f = namespace.find_function(func.shadows)
 +            if f is not None:
 +                self.shadows_symbol = f.identifier
 +        self.shadowed_by = func.shadowed_by
 +        if func.shadowed_by:
 +            f = namespace.find_function(func.shadowed_by)
 +            if f is not None:
 +                self.shadowed_by_symbol = f.identifier
 +
 +    @property
 +    def c_decl(self):
 +        res = []
 +        if self.is_macro:
 +            res += [f"#define {self.identifier} ("]
 +        else:
 +            if self.return_value is None:
 +                res += ["void"]
 +            else:
 +                res += [f"{self.return_value.type_cname}"]
 +            res += [f"{self.identifier} ("]
 +        n_args = len(self.arguments)
 +        if n_args == 0:
 +            res += ["  void"]
 +        else:
 +            for (idx, arg) in enumerate(self.arguments):
 +                if idx == n_args - 1 and not self.throws:
 +                    res += [f"  {arg.c_decl}"]
 +                else:
 +                    res += [f"  {arg.c_decl},"]
 +        if self.throws:
 +            res += ["  GError** error"]
 +        res += [")"]
 +        return utils.code_highlight("\n".join(res))
 +
 +
 +class TemplateCallback:
 +    def __init__(self, namespace, cb, field=False):
 +        self.name = cb.name
 +        self.type_cname = cb.ctype
 +        self.identifier = cb.name.replace("-", "_")
 +        self.field = field
 +
 +        if cb.doc is not None:
 +            self.summary = utils.preprocess_docs(cb.doc.content, namespace, summary=True)
 +            self.description = utils.preprocess_docs(cb.doc.content, namespace)
 +            filename = cb.doc.filename
 +            line = cb.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.arguments = []
 +        for arg in cb.parameters:
 +            self.arguments.append(TemplateArgument(namespace, cb, arg))
 +
 +        self.return_value = None
 +        if not isinstance(cb.return_value.target, gir.VoidType):
 +            self.return_value = TemplateReturnValue(namespace, cb, cb.return_value)
 +
 +        self.throws = cb.throws
 +
 +        self.stability = cb.stability
 +        self.attributes = cb.attributes
 +        self.available_since = cb.available_since
 +        if cb.deprecated:
 +            (version, msg) = cb.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        self.introspectable = cb.introspectable
 +
 +    @property
 +    def c_decl(self):
 +        res = []
 +        if self.field:
 +            arg_indent = "    "
 +        else:
 +            arg_indent = "  "
 +        if self.return_value is None:
 +            retval = "void"
 +        else:
 +            retval = f"{self.return_value.type_cname}"
 +        if self.field:
 +            res += [f"{retval} (* {self.identifier}) ("]
 +        else:
 +            res += [retval]
 +            res += [f"(* {self.type_cname}) ("]
 +        n_args = len(self.arguments)
 +        if n_args == 0:
 +            res += ["void"]
 +        else:
 +            for (idx, arg) in enumerate(self.arguments):
 +                if idx == n_args - 1 and not self.throws:
 +                    res += [f"{arg_indent}{arg.type_cname} {arg.name}"]
 +                else:
 +                    res += [f"{arg_indent}{arg.type_cname} {arg.name},"]
 +        if self.throws:
 +            res += [f"{arg_indent}GError** error"]
 +        if self.field:
 +            res += ["  )"]
 +        else:
 +            res += [")"]
 +        if self.field:
 +            return "\n".join(res)
 +        else:
 +            return utils.code_highlight("\n".join(res))
 +
 +
 +class TemplateField:
 +    def __init__(self, namespace, field):
 +        self.name = field.name
 +        if field.target is not None:
 +            if isinstance(field.target, gir.Callback):
 +                self.is_callback = True
 +                self.type_name: field.target.name
 +                self.type_cname = TemplateCallback(namespace, field.target, field=True).c_decl
 +            else:
 +                self.is_callback = False
 +                self.type_name = field.target.name
 +                self.type_cname = field.target.ctype
 +        else:
 +            self.is_callback = False
 +            self.type_name = 'none'
 +            self.type_cname = 'gpointer'
 +        self.private = field.private
 +        self.bits = field.bits
 +        if field.doc is not None:
 +            self.description = utils.preprocess_docs(field.doc.content, namespace)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +        self.introspectable = field.introspectable
 +
 +
 +class TemplateInterface:
 +    def __init__(self, namespace, interface, config):
 +        if isinstance(interface, gir.Interface):
 +            if '.' in interface.name:
 +                self.namespace, self.name = interface.name.split('.')
 +                self.fqtn = interface.name
 +            else:
 +                self.namespace = interface.namespace
 +                self.name = interface.name
 +                self.fqtn = f"{self.namespace}.{self.name}"
 +        elif isinstance(interface, gir.Type):
 +            if '.' in interface.name:
 +                self.namespace, self.name = interface.name.split('.')
 +            else:
 +                self.namespace = interface.namespace or namespace.name
 +                self.name = interface.name
 +            self.fqtn = f"{self.namespace}.{self.name}"
 +            self.requires = "GObject.Object"
 +            self.link_prefix = "iface"
 +            self.description = MISSING_DESCRIPTION
 +            return
 +
 +        md = markdown.Markdown(extensions=utils.MD_EXTENSIONS,
 +                               extension_configs=utils.MD_EXTENSIONS_CONF)
 +
 +        requires = interface.prerequisite
 +        if requires is None:
 +            self.requires_namespace = "GObject"
 +            self.requires_name = "Object"
 +            self.requires_ctype = "GObject"
 +        elif '.' in requires.name:
 +            self.requires_namespace, self.requires_name = requires.name.split('.')
 +            self.requires_ctype = requires.ctype
 +        else:
 +            self.requires_namespace = requires.namespace or namespace.name
 +            self.requires_name = requires.name
 +            self.requires_ctype = requires.ctype
 +
 +        self.requires_fqtn = f"{self.requires_namespace}.{self.requires_name}"
 +        log.debug(f"Preqrequisite for {self.fqtn}: {self.requires_fqtn}")
 +
 +        self.symbol_prefix = f"{namespace.symbol_prefix[0]}_{interface.symbol_prefix}"
 +        self.type_cname = interface.base_ctype
 +
 +        self.link_prefix = "iface"
 +
 +        if interface.doc is not None:
 +            self.summary = utils.preprocess_docs(interface.doc.content, namespace, summary=True, md=md)
 +            self.description = utils.preprocess_docs(interface.doc.content, namespace, md=md)
 +            self.description_toc = md.toc_tokens is not None and md.toc_tokens.copy() or None
 +            filename = interface.doc.filename
 +            line = interface.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.stability = interface.stability
 +        self.attributes = interface.attributes
 +        self.available_since = interface.available_since
 +        if interface.deprecated:
 +            (version, msg) = interface.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        self.introspectable = interface.introspectable
 +
 +        self.class_name = interface.type_struct
 +
 +        self.class_struct = namespace.find_record(interface.type_struct)
 +        if self.class_struct is not None:
 +            self.class_fields = []
 +            self.class_methods = []
 +
 +            for field in self.class_struct.fields:
 +                if not field.private:
 +                    self.class_fields.append(TemplateField(namespace, field))
 +
 +            for method in self.class_struct.methods:
 +                self.class_methods.append(gen_index_func(method, namespace, md))
 +
 +        if len(interface.properties) != 0:
 +            self.properties = []
 +            for pname, prop in interface.properties.items():
 +                if not config.is_hidden(interface.name, "property", pname):
 +                    self.properties.append(gen_index_property(prop, namespace, md))
 +
 +        if len(interface.signals) != 0:
 +            self.signals = []
 +            for sname, signal in interface.signals.items():
 +                if not config.is_hidden(interface.name, "signal", sname):
 +                    self.signals.append(gen_index_signal(signal, namespace, md))
 +
 +        if len(interface.methods) != 0:
 +            self.methods = []
 +            for method in interface.methods:
 +                if not config.is_hidden(interface.name, "method", method.name):
 +                    self.methods.append(gen_index_func(method, namespace, md))
 +
 +        if len(interface.virtual_methods) != 0:
 +            self.virtual_methods = []
 +            for vfunc in interface.virtual_methods:
 +                self.virtual_methods.append(gen_index_func(vfunc, namespace, md))
 +
 +        if len(interface.functions) != 0:
 +            self.type_funcs = []
 +            for func in interface.functions:
 +                if not config.is_hidden(interface.name, "function", func.name):
 +                    self.type_funcs.append(gen_index_func(func, namespace, md))
 +
 +        if len(interface.implementations) != 0:
 +            self.implementations = []
 +            for impl in interface.implementations:
 +                self.implementations.append({
 +                    'name': impl.name,
 +                    'ctype': impl.ctype,
 +                })
 +
 +    @property
 +    def c_decl(self):
 +        return f"interface {self.fqtn} : {self.requires_fqtn}"
 +
 +
 +class TemplateClass:
 +    def __init__(self, namespace, cls, config, recurse=True):
 +        self.symbol_prefix = f"{namespace.symbol_prefix[0]}_{cls.symbol_prefix}"
 +        self.type_cname = cls.base_ctype
 +        self.link_prefix = "class"
 +        self.fundamental = cls.fundamental
 +        self.abstract = cls.abstract
 +
 +        md = markdown.Markdown(extensions=utils.MD_EXTENSIONS,
 +                               extension_configs=utils.MD_EXTENSIONS_CONF)
 +
 +        if '.' in cls.name:
 +            self.namespace = cls.name.split('.')[0]
 +            self.name = cls.name.split('.')[1]
 +            self.fqtn = cls.name
 +        else:
 +            self.namespace = namespace.name
 +            self.name = cls.name
 +            self.fqtn = f"{namespace.name}.{self.name}"
 +
 +        if cls.parent is None or cls.fundamental:
 +            self.parent_fqtn = 'GObject.TypeInstance'
 +            self.parent_cname = 'GTypeInstance*'
 +            self.parent_name = 'TypeInstance'
 +            self.parent_namespace = 'GObject'
 +        elif '.' in cls.parent.name:
 +            self.parent_fqtn = cls.parent.name
 +            self.parent_cname = cls.parent.ctype
 +            self.parent_namespace = self.parent_fqtn.split('.')[0]
 +            self.parent_name = self.parent_fqtn.split('.')[1]
 +        else:
 +            self.parent_cname = cls.parent.ctype
 +            self.parent_name = cls.parent.name
 +            self.parent_namespace = cls.parent.namespace or namespace.name
 +            self.parent_fqtn = f"{self.parent_namespace}.{self.parent_name}"
 +
 +        self.ancestors = []
 +        if recurse:
 +            for ancestor_type in cls.ancestors:
 +                self.ancestors.append(gen_index_ancestor(ancestor_type, namespace, config, md))
 +
 +        if cls.descendants:
 +            self.descendants = []
 +            for descendant in cls.descendants:
 +                self.descendants.append({
 +                    'name': descendant.name,
 +                    'ctype': descendant.ctype,
 +                })
 +
 +        self.class_name = cls.type_struct
 +
 +        self.instance_struct = None
 +        if len(cls.fields) != 0:
 +            self.instance_struct = self.class_name
 +
 +        if cls.type_struct is not None:
 +            self.class_struct = namespace.find_record(cls.type_struct)
 +        else:
 +            self.class_struct = None
 +
 +        # "Final", in the absence of an actual flag or annotation,
 +        # is determined through an heuristic; if either the instance
 +        # or the class structures are missing or disguised, then the
 +        # type cannot be derived
 +        if self.instance_struct is None or self.class_struct is None or self.class_struct.disguised:
 +            self.final = True
 +        else:
 +            self.final = False
 +
 +        if cls.doc is not None:
 +            self.summary = utils.preprocess_docs(cls.doc.content, namespace, summary=True, md=md)
 +            self.description = utils.preprocess_docs(cls.doc.content, namespace, md=md)
 +            self.description_toc = md.toc_tokens is not None and md.toc_tokens.copy() or None
 +            filename = cls.doc.filename
 +            line = cls.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.stability = cls.stability
 +        self.attributes = cls.attributes
 +        self.available_since = cls.available_since
 +        if cls.deprecated:
 +            (version, msg) = cls.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace, md=md),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        self.introspectable = cls.introspectable
 +
 +        self.fields = []
 +        for field in cls.fields:
 +            if not field.private:
 +                self.fields.append(TemplateField(namespace, field))
 +
 +        self.properties = []
 +        if len(cls.properties) != 0:
 +            for pname, prop in cls.properties.items():
 +                if not config.is_hidden(cls.name, "property", pname):
 +                    self.properties.append(gen_index_property(prop, namespace, md))
 +
 +        self.signals = []
 +        if len(cls.signals) != 0:
 +            for sname, signal in cls.signals.items():
 +                if not config.is_hidden(cls.name, "signal", sname):
 +                    self.signals.append(gen_index_signal(signal, namespace, md))
 +
 +        self.ctors = []
 +        if len(cls.constructors) != 0:
 +            for ctor in cls.constructors:
 +                if not config.is_hidden(cls.name, "constructor", ctor.name):
 +                    self.ctors.append(gen_index_func(ctor, namespace, md))
 +
 +        self.methods = []
 +        if len(cls.methods) != 0:
 +            for method in cls.methods:
 +                if not config.is_hidden(cls.name, "method", method.name):
 +                    self.methods.append(gen_index_func(method, namespace, md))
 +
 +        if self.class_struct is not None:
 +            self.class_ctype = self.class_struct.ctype
 +            self.class_fields = []
 +            self.class_methods = []
 +
 +            for field in self.class_struct.fields:
 +                if not field.private:
 +                    self.class_fields.append(TemplateField(namespace, field))
 +
 +            for method in self.class_struct.methods:
 +                self.class_methods.append(gen_index_func(method, namespace, md))
 +
 +        self.interfaces = []
 +        if len(cls.implements) != 0:
 +            for iface_type in cls.implements:
 +                self.interfaces.append(gen_index_implements(iface_type, namespace, config, md))
 +
 +        self.virtual_methods = []
 +        if len(cls.virtual_methods) != 0:
 +            for vfunc in cls.virtual_methods:
 +                self.virtual_methods.append(gen_index_func(vfunc, namespace, md))
 +
 +        self.type_funcs = []
 +        if len(cls.functions) != 0:
 +            for func in cls.functions:
 +                if not config.is_hidden(cls.name, "function", func.name):
 +                    self.type_funcs.append(gen_index_func(func, namespace, md))
 +
 +    @property
 +    def show_methods(self):
 +        if len(self.methods) > 0:
 +            return True
 +        for ancestor in self.ancestors:
 +            if ancestor["n_methods"] > 0:
 +                return True
 +        for iface in self.interfaces:
 +            if iface["n_methods"] > 0:
 +                return True
 +        return False
 +
 +    @property
 +    def show_properties(self):
 +        if len(self.properties) > 0:
 +            return True
 +        for ancestor in self.ancestors:
 +            if ancestor["n_properties"] > 0:
 +                return True
 +        for iface in self.interfaces:
 +            if iface["n_properties"] > 0:
 +                return True
 +        return False
 +
 +    @property
 +    def show_signals(self):
 +        if len(self.signals) > 0:
 +            return True
 +        for ancestor in self.ancestors:
 +            if ancestor["n_signals"] > 0:
 +                return True
 +        for iface in self.interfaces:
 +            if iface["n_signals"] > 0:
 +                return True
 +        return False
 +
 +    @property
 +    def c_decl(self):
 +        if self.abstract:
 +            res = [f"abstract class {self.fqtn} : {self.parent_fqtn} {{"]
 +        elif self.final:
 +            res = [f"final class {self.fqtn} : {self.parent_fqtn} {{"]
 +        else:
 +            res = [f"class {self.fqtn} : {self.parent_fqtn} {{"]
 +        n_fields = len(self.fields)
 +        if n_fields > 0:
 +            for (idx, field) in enumerate(self.fields):
 +                if idx < n_fields - 1:
 +                    res += [f"  {field.name}: {field.type_cname},"]
 +                else:
 +                    res += [f"  {field.name}: {field.type_cname}"]
 +        else:
 +            res += ["  /* No available fields */"]
 +        res += ["}"]
 +        return "\n".join(res)
 +
 +    @property
 +    def dot(self):
 +
 +        def fmt_attrs(attrs):
 +            return ','.join(f'{k}="{v}"' for k, v in attrs.items())
 +
 +        def add_link(attrs, other, fragment):
 +            if other['namespace'] == self.namespace:
 +                attrs['href'] = f"{fragment}.{other['name']}.html"
 +                attrs['class'] = 'link'
 +            else:
 +                attrs['tooltip'] = other['fqtn']
 +
 +        ancestors = []
 +        implements = []
 +        res = ["graph hierarchy {"]
 +        res.append("  bgcolor=\"transparent\";")
 +        node_attrs = {
 +            'shape': 'box',
 +            'style': 'rounded',
 +            'border': 0
 +        }
 +        this_attrs = {
 +            'label': self.type_cname,
 +            'tooltip': self.type_cname
 +        }
 +        this_attrs.update(node_attrs)
 +        res.append(f"  this [{fmt_attrs(this_attrs)}];")
 +        for idx, ancestor in enumerate(self.ancestors):
 +            node_id = f"ancestor_{idx}"
 +            ancestor_attrs = {
 +                'label': ancestor['type_cname']
 +            }
 +            ancestor_attrs.update(node_attrs)
 +            add_link(ancestor_attrs, ancestor, 'class')
 +            res.append(f"  {node_id} [{fmt_attrs(ancestor_attrs)}];")
 +            ancestors.append(node_id)
 +        ancestors.reverse()
 +        for idx, iface in enumerate(getattr(self, "interfaces", [])):
 +            node_id = f"implements_{idx}"
 +            iface_attrs = {
 +                'label': iface['type_cname'],
 +                'fontname': 'sans-serif',
 +                'shape': 'box',
 +            }
 +            add_link(iface_attrs, iface, 'iface')
 +            res.append(f"  {node_id} [{fmt_attrs(iface_attrs)}];")
 +            implements.append(node_id)
 +        if len(ancestors) > 0:
 +            res.append("  " + " -- ".join(ancestors) + " -- this;")
 +        for node in implements:
 +            res.append(f"  this -- {node} [style=dotted];")
 +        res.append("}")
 +        return "\n".join(res)
 +
 +
 +class TemplateRecord:
 +    def __init__(self, namespace, record, config):
 +        self.symbol_prefix = f"{namespace.symbol_prefix[0]}_{record.symbol_prefix}"
 +        self.type_cname = record.ctype
 +        self.link_prefix = "struct"
 +
 +        self.name = record.name
 +        self.namespace = record.name or namespace.name
 +        self.fqtn = f"{self.namespace}.{self.name}"
 +
 +        md = markdown.Markdown(extensions=utils.MD_EXTENSIONS,
 +                               extension_configs=utils.MD_EXTENSIONS_CONF)
 +
 +        if record.doc is not None:
 +            self.summary = utils.preprocess_docs(record.doc.content, namespace, summary=True, md=md)
 +            self.description = utils.preprocess_docs(record.doc.content, namespace, md=md)
 +            self.description_toc = md.toc_tokens is not None and md.toc_tokens.copy() or None
 +            filename = record.doc.filename
 +            line = record.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.stability = record.stability
 +        self.attributes = record.attributes
 +        self.available_since = record.available_since
 +        if record.deprecated:
 +            (version, msg) = record.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace, md=md),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        self.introspectable = record.introspectable
 +
 +        self.fields = []
 +        for field in record.fields:
 +            if not field.private:
 +                self.fields.append(TemplateField(namespace, field))
 +
 +        if len(record.constructors) != 0:
 +            self.ctors = []
 +            for ctor in record.constructors:
 +                if not config.is_hidden(record.name, "constructor", ctor.name):
 +                    self.ctors.append(gen_index_func(ctor, namespace, md))
 +
 +        if len(record.methods) != 0:
 +            self.methods = []
 +            for method in record.methods:
 +                if not config.is_hidden(record.name, "method", method.name):
 +                    self.methods.append(gen_index_func(method, namespace, md))
 +
 +        if len(record.functions) != 0:
 +            self.type_funcs = []
 +            for func in record.functions:
 +                if not config.is_hidden(record.name, "function", func.name):
 +                    self.type_funcs.append(gen_index_func(func, namespace, md))
 +
 +    @property
 +    def c_decl(self):
 +        res = [f"struct {self.type_cname} {{"]
 +        n_fields = len(self.fields)
 +        if n_fields > 0:
 +            for field in self.fields:
 +                if field.is_callback:
 +                    res += [f"  {field.type_cname};"]
 +                elif field.bits > 0:
 +                    res += [f"  {field.type_cname} {field.name} : {field.bits};"]
 +                else:
 +                    res += [f"  {field.type_cname} {field.name};"]
 +        else:
 +            res += ["  /* No available fields */"]
 +        res += ["}"]
 +        return utils.code_highlight("\n".join(res))
 +
 +
 +class TemplateUnion:
 +    def __init__(self, namespace, union, config):
 +        self.symbol_prefix = f"{namespace.symbol_prefix[0]}_{union.symbol_prefix}"
 +        self.type_cname = union.ctype
 +        self.link_prefix = "union"
 +        self.name = union.name
 +        self.namespace = union.namespace or namespace.name
 +        self.fqtn = f"{self.namespace}.{self.name}"
 +
 +        md = markdown.Markdown(extensions=utils.MD_EXTENSIONS,
 +                               extension_configs=utils.MD_EXTENSIONS_CONF)
 +
 +        if union.doc is not None:
 +            self.summary = utils.preprocess_docs(union.doc.content, namespace, summary=True, md=md)
 +            self.description = utils.preprocess_docs(union.doc.content, namespace, md=md)
 +            self.description_toc = md.toc_tokens is not None and md.toc_tokens.copy() or None
 +            filename = union.doc.filename
 +            line = union.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.stability = union.stability
 +        self.attributes = union.attributes
 +        self.available_since = union.available_since
 +        if union.deprecated:
 +            (version, msg) = union.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace, md=md),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        self.introspectable = union.introspectable
 +
 +        self.fields = []
 +        for field in union.fields:
 +            if not field.private:
 +                self.fields.append(TemplateField(namespace, field))
 +
 +        if len(union.constructors) != 0:
 +            self.ctors = []
 +            for ctor in union.constructors:
 +                if not config.is_hidden(union.name, "constructor", ctor.name):
 +                    self.ctors.append(gen_index_func(ctor, namespace, md))
 +
 +        if len(union.methods) != 0:
 +            self.methods = []
 +            for method in union.methods:
 +                if not config.is_hidden(union.name, "method", method.name):
 +                    self.methods.append(gen_index_func(method, namespace, md))
 +
 +        if len(union.functions) != 0:
 +            self.type_funcs = []
 +            for func in union.functions:
 +                if not config.is_hidden(union.name, "function", func.name):
 +                    self.type_funcs.append(gen_index_func(func, namespace, md))
 +
 +    @property
 +    def c_decl(self):
 +        res = [f"union {self.type_cname} {{"]
 +        n_fields = len(self.fields)
 +        if n_fields > 0:
 +            for field in self.fields:
 +                if field.is_callback:
 +                    res += [f"  {field.type_cname};"]
 +                else:
 +                    res += [f"  {field.type_cname} {field.name};"]
 +        else:
 +            res += ["  /* No available fields */"]
 +        res += ["}"]
 +        return utils.code_highlight("\n".join(res))
 +
 +
 +class TemplateAlias:
 +    def __init__(self, namespace, alias):
 +        self.type_cname = alias.base_ctype
 +        self.target_ctype = alias.target.ctype
 +        self.link_prefix = "alias"
 +
 +        self.namespace = alias.namespace or namespace.name
 +        self.name = alias.name
 +        self.fqtn = f"{self.namespace}.{self.name}"
 +
 +        md = markdown.Markdown(extensions=utils.MD_EXTENSIONS,
 +                               extension_configs=utils.MD_EXTENSIONS_CONF)
 +
 +        if alias.doc is not None:
 +            self.summary = utils.preprocess_docs(alias.doc.content, namespace, summary=True, md=md)
 +            self.description = utils.preprocess_docs(alias.doc.content, namespace, md=md)
 +            filename = alias.doc.filename
 +            line = alias.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.stability = alias.stability
 +        self.attributes = alias.attributes
 +        self.available_since = alias.available_since
 +        if alias.deprecated:
 +            (version, msg) = alias.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        self.introspectable = alias.introspectable
 +
 +    @property
 +    def c_decl(self):
 +        return f"typedef {self.target_ctype} {self.type_cname}"
 +
 +
 +class TemplateMember:
 +    def __init__(self, namespace, enum, member):
 +        self.name = member.identifier
 +        self.girname = member.name
 +        self.nick = member.nick
 +        self.value = member.value
 +        if member.doc is not None:
 +            self.description = utils.preprocess_docs(member.doc.content, namespace)
 +            filename = member.doc.filename
 +            line = member.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +
 +class TemplateEnum:
 +    def __init__(self, namespace, enum, config):
 +        self.symbol_prefix = None
 +        self.type_cname = enum.ctype
 +        self.bitfield = False
 +        self.error = False
 +        self.domain = None
 +
 +        self.namespace = namespace.name
 +        self.name = enum.name
 +        self.fqtn = f"{namespace.name}.{enum.name}"
 +
 +        md = markdown.Markdown(extensions=utils.MD_EXTENSIONS,
 +                               extension_configs=utils.MD_EXTENSIONS_CONF)
 +
 +        if enum.doc is not None:
 +            self.summary = utils.preprocess_docs(enum.doc.content, namespace, summary=True, md=md)
 +            self.description = utils.preprocess_docs(enum.doc.content, namespace, md=md)
 +            filename = enum.doc.filename
 +            line = enum.doc.line
 +            if filename.startswith('../'):
 +                filename = filename.replace('../', '')
 +            self.docs_location = (filename, line)
 +        else:
 +            self.description = MISSING_DESCRIPTION
 +
 +        self.stability = enum.stability
 +        self.attributes = enum.attributes
 +        self.available_since = enum.available_since
 +        if enum.deprecated:
 +            (version, msg) = enum.deprecated_since
 +            self.deprecated_since = {
 +                "version": version,
 +                "message": utils.preprocess_docs(msg, namespace, md=md),
 +            }
 +        else:
 +            self.deprecated_since = None
 +
 +        self.introspectable = enum.introspectable
 +
 +        if isinstance(enum, gir.BitField):
 +            self.link_prefix = "flags"
 +            self.bitfield = True
 +        elif isinstance(enum, gir.ErrorDomain):
 +            self.link_prefix = "error"
 +            self.error = True
 +            self.domain = enum.domain
 +        else:
 +            self.link_prefix = "enum"
 +
 +        if len(enum.members) != 0:
 +            self.members = []
 +            for member in enum.members:
 +                self.members.append(TemplateMember(namespace, enum, member))
 +
 +        if len(enum.functions) != 0:
 +            self.type_funcs = []
 +            for func in enum.functions:
 +                if not config.is_hidden(enum.name, "function", func.name):
 +                    self.type_funcs.append(gen_index_func(func, namespace, md))
 +
 +    @property
 +    def c_decl(self):
 +        if self.error:
 +            return f"error-domain {self.fqtn}"
 +        elif self.bitfield:
 +            return f"flags {self.fqtn}"
 +        else:
 +            return f"enum {self.fqtn}"
 +
 +
 +class TemplateNamespace:
 +    def __init__(self, namespace):
 +        self.name = namespace.name
 +        self.version = namespace.version
 +        self.symbol_prefix = namespace.symbol_prefix[0]
 +        self.identifier_prefix = namespace.identifier_prefix[0]
 +
 +
 +def _gen_classes(config, theme_config, output_dir, jinja_env, repository, all_classes):
 +    namespace = repository.namespace
 +
 +    class_tmpl = jinja_env.get_template(theme_config.class_template)
 +    method_tmpl = jinja_env.get_template(theme_config.method_template)
 +    property_tmpl = jinja_env.get_template(theme_config.property_template)
 +    signal_tmpl = jinja_env.get_template(theme_config.signal_template)
 +    class_method_tmpl = jinja_env.get_template(theme_config.class_method_template)
 +    ctor_tmpl = jinja_env.get_template(theme_config.ctor_template)
 +    type_func_tmpl = jinja_env.get_template(theme_config.type_func_template)
 +    vfunc_tmpl = jinja_env.get_template(theme_config.vfunc_template)
 +
 +    template_classes = []
 +
 +    for cls in all_classes:
 +        if config.is_hidden(cls.name):
 +            log.debug(f"Skipping hidden class {cls.name}")
 +            continue
 +        class_file = os.path.join(output_dir, f"class.{cls.name}.html")
 +        log.info(f"Creating class file for {namespace.name}.{cls.name}: {class_file}")
 +
 +        tmpl = TemplateClass(namespace, cls, config)
 +        template_classes.append(tmpl)
 +
 +        if config.show_class_hierarchy:
 +            tmpl.hierarchy_svg = utils.render_dot(tmpl.dot, output_format="svg")
 +
 +        with open(class_file, "w") as out:
 +            content = class_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'class': tmpl,
 +            })
 +
 +            out.write(content)
 +
 +        for ctor in cls.constructors:
 +            if config.is_hidden(cls.name, "constructor", ctor.name):
 +                log.debug(f"Skipping hidden constructor {cls.name}.{ctor.name}")
 +                continue
 +            c = TemplateFunction(namespace, ctor)
 +            ctor_file = os.path.join(output_dir, f"ctor.{cls.name}.{ctor.name}.html")
 +            log.debug(f"Creating ctor file for {namespace.name}.{cls.name}.{ctor.name}: {ctor_file}")
 +
 +            with open(ctor_file, "w") as out:
 +                out.write(ctor_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'type_func': c,
 +                }))
 +
 +        for method in cls.methods:
 +            if config.is_hidden(cls.name, "method", method.name):
 +                log.debug(f"Skipping hidden method {cls.name}.{method.name}")
 +                continue
 +            m = TemplateMethod(namespace, cls, method)
 +            method_file = os.path.join(output_dir, f"method.{cls.name}.{method.name}.html")
 +            log.debug(f"Creating method file for {namespace.name}.{cls.name}.{method.name}: {method_file}")
 +
 +            with open(method_file, "w") as out:
 +                out.write(method_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'method': m,
 +                }))
 +
 +        for prop in cls.properties.values():
 +            if config.is_hidden(cls.name, 'property', prop.name):
 +                log.debug(f"Skipping hidden property {cls.name}.{prop.name}")
 +                continue
 +            p = TemplateProperty(namespace, cls, prop)
 +            prop_file = os.path.join(output_dir, f"property.{cls.name}.{prop.name}.html")
 +            log.debug(f"Creating property file for {namespace.name}.{cls.name}.{prop.name}: {prop_file}")
 +
 +            with open(prop_file, "w") as out:
 +                out.write(property_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'property': p,
 +                }))
 +
 +        for signal in cls.signals.values():
 +            if config.is_hidden(cls.name, 'signal', signal.name):
 +                log.debug(f"Skipping hidden signal {cls.name}.{signal.name}")
 +                continue
 +            s = TemplateSignal(namespace, cls, signal)
 +            signal_file = os.path.join(output_dir, f"signal.{cls.name}.{signal.name}.html")
 +            log.debug(f"Creating signal file for {namespace.name}.{cls.name}.{signal.name}: {signal_file}")
 +
 +            with open(signal_file, "w") as out:
 +                out.write(signal_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'signal': s,
 +                }))
 +
 +        if cls.type_struct is not None:
 +            class_struct = namespace.find_record(cls.type_struct)
 +            for cls_method in class_struct.methods:
 +                c = TemplateClassMethod(namespace, cls, cls_method)
 +                cls_method_file = os.path.join(output_dir, f"class_method.{cls.name}.{cls_method.name}.html")
 +                log.debug(f"Creating class method file for {namespace.name}.{cls.name}.{cls_method.name}: {cls_method_file}")
 +
 +                with open(cls_method_file, "w") as out:
 +                    out.write(class_method_tmpl.render({
 +                        'CONFIG': config,
 +                        'namespace': namespace,
 +                        'class': tmpl,
 +                        'class_method': c,
 +                    }))
 +
 +        for vfunc in cls.virtual_methods:
 +            f = TemplateMethod(namespace, cls, vfunc)
 +            vfunc_file = os.path.join(output_dir, f"vfunc.{cls.name}.{vfunc.name}.html")
 +            log.debug(f"Creating vfunc file for {namespace.name}.{cls.name}.{vfunc.name}: {vfunc_file}")
 +
 +            with open(vfunc_file, "w") as out:
 +                out.write(vfunc_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'vfunc': f,
 +                }))
 +
 +        for type_func in cls.functions:
 +            if config.is_hidden(cls.name, "function", type_func.name):
 +                log.debug(f"Skipping hidden type function {cls.name}.{type_func.name}")
 +                continue
 +            f = TemplateFunction(namespace, type_func)
 +            type_func_file = os.path.join(output_dir, f"type_func.{cls.name}.{type_func.name}.html")
 +            log.debug(f"Creating type func file for {namespace.name}.{cls.name}.{type_func.name}: {type_func_file}")
 +
 +            with open(type_func_file, "w") as out:
 +                out.write(type_func_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'type_func': f,
 +                }))
 +
 +    return template_classes
 +
 +
 +def _gen_interfaces(config, theme_config, output_dir, jinja_env, repository, all_interfaces):
 +    namespace = repository.namespace
 +
 +    iface_tmpl = jinja_env.get_template(theme_config.interface_template)
 +    method_tmpl = jinja_env.get_template(theme_config.method_template)
 +    property_tmpl = jinja_env.get_template(theme_config.property_template)
 +    signal_tmpl = jinja_env.get_template(theme_config.signal_template)
 +    class_method_tmpl = jinja_env.get_template(theme_config.class_method_template)
 +    type_func_tmpl = jinja_env.get_template(theme_config.type_func_template)
 +    vfunc_tmpl = jinja_env.get_template(theme_config.vfunc_template)
 +
 +    template_interfaces = []
 +
 +    for iface in all_interfaces:
 +        if config.is_hidden(iface.name):
 +            log.debug(f"Skipping hidden interface {iface.name}")
 +            continue
 +        iface_file = os.path.join(output_dir, f"iface.{iface.name}.html")
 +        log.info(f"Creating interface file for {namespace.name}.{iface.name}: {iface_file}")
 +
 +        tmpl = TemplateInterface(namespace, iface, config)
 +        template_interfaces.append(tmpl)
 +
 +        with open(iface_file, "w") as out:
 +            out.write(iface_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'interface': tmpl,
 +            }))
 +
 +        for method in iface.methods:
 +            if config.is_hidden(iface.name, "method", method.name):
 +                log.debug(f"Skipping hidden method {iface.name}.{method.name}")
 +                continue
 +            m = TemplateMethod(namespace, iface, method)
 +            method_file = os.path.join(output_dir, f"method.{iface.name}.{method.name}.html")
 +            log.debug(f"Creating method file for {namespace.name}.{iface.name}.{method.name}: {method_file}")
 +
 +            with open(method_file, "w") as out:
 +                out.write(method_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'method': m,
 +                }))
 +
 +        for prop in iface.properties.values():
 +            if config.is_hidden(iface.name, 'property', prop.name):
 +                log.debug(f"Skipping hidden property {iface.name}.{prop.name}")
 +                continue
 +            p = TemplateProperty(namespace, iface, prop)
 +            prop_file = os.path.join(output_dir, f"property.{iface.name}.{prop.name}.html")
 +            log.debug(f"Creating property file for {namespace.name}.{iface.name}.{prop.name}: {prop_file}")
 +
 +            with open(prop_file, "w") as out:
 +                out.write(property_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'property': p,
 +                }))
 +
 +        for signal in iface.signals.values():
 +            if config.is_hidden(iface.name, 'signal', signal.name):
 +                log.debug(f"Skipping hidden property {iface.name}.{signal.name}")
 +                continue
 +            s = TemplateSignal(namespace, iface, signal)
 +            signal_file = os.path.join(output_dir, f"signal.{iface.name}.{signal.name}.html")
 +            log.debug(f"Creating signal file for {namespace.name}.{iface.name}.{signal.name}: {signal_file}")
 +
 +            with open(signal_file, "w") as out:
 +                out.write(signal_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'signal': s,
 +                }))
 +
 +        for vfunc in iface.virtual_methods:
 +            v = TemplateMethod(namespace, iface, vfunc)
 +            vfunc_file = os.path.join(output_dir, f"vfunc.{iface.name}.{vfunc.name}.html")
 +            log.debug(f"Creating vfunc file for {namespace.name}.{iface.name}.{vfunc.name}: {vfunc_file}")
 +
 +            with open(vfunc_file, "w") as out:
 +                out.write(vfunc_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'vfunc': v,
 +                }))
 +
 +        if iface.type_struct is not None:
 +            iface_struct = namespace.find_record(iface.type_struct)
 +            for cls_method in iface_struct.methods:
 +                m = TemplateClassMethod(namespace, iface, cls_method)
 +                cls_method_file = os.path.join(output_dir, f"class_method.{iface.name}.{cls_method.name}.html")
 +                log.debug(f"Creating class method file for {namespace.name}.{iface.name}.{cls_method.name}: {cls_method_file}")
 +
 +                with open(cls_method_file, "w") as out:
 +                    out.write(class_method_tmpl.render({
 +                        'CONFIG': config,
 +                        'namespace': namespace,
 +                        'class': tmpl,
 +                        'class_method': m,
 +                    }))
 +
 +        for type_func in iface.functions:
 +            if config.is_hidden(iface.name, "function", type_func.name):
 +                log.debug(f"Skipping hidden type function {iface.name}.{type_func.name}")
 +                continue
 +            f = TemplateFunction(namespace, type_func)
 +            type_func_file = os.path.join(output_dir, f"type_func.{iface.name}.{type_func.name}.html")
 +            log.debug(f"Creating type func file for {namespace.name}.{iface.name}.{type_func.name}: {type_func_file}")
 +
 +            with open(type_func_file, "w") as out:
 +                out.write(type_func_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'type_func': f,
 +                }))
 +
 +    return template_interfaces
 +
 +
 +def _gen_enums(config, theme_config, output_dir, jinja_env, repository, all_enums):
 +    namespace = repository.namespace
 +
 +    enum_tmpl = jinja_env.get_template(theme_config.enum_template)
 +    type_func_tmpl = jinja_env.get_template(theme_config.type_func_template)
 +
 +    template_enums = []
 +
 +    for enum in all_enums:
 +        if config.is_hidden(enum.name):
 +            log.debug(f"Skipping hidden enum {enum.name}")
 +            continue
 +        enum_file = os.path.join(output_dir, f"enum.{enum.name}.html")
 +        log.info(f"Creating enum file for {namespace.name}.{enum.name}: {enum_file}")
 +
 +        tmpl = TemplateEnum(namespace, enum, config)
 +        template_enums.append(tmpl)
 +
 +        with open(enum_file, "w") as out:
 +            out.write(enum_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'enum': tmpl,
 +            }))
 +
 +        for type_func in enum.functions:
 +            f = TemplateFunction(namespace, type_func)
 +            type_func_file = os.path.join(output_dir, f"type_func.{enum.name}.{type_func.name}.html")
 +            log.debug(f"Creating type func file for {namespace.name}.{enum.name}.{type_func.name}: {type_func_file}")
 +
 +            with open(type_func_file, "w") as out:
 +                out.write(type_func_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'type_func': f,
 +                }))
 +
 +    return template_enums
 +
 +
 +def _gen_bitfields(config, theme_config, output_dir, jinja_env, repository, all_enums):
 +    namespace = repository.namespace
 +
 +    enum_tmpl = jinja_env.get_template(theme_config.flags_template)
 +    type_func_tmpl = jinja_env.get_template(theme_config.type_func_template)
 +
 +    template_bitfields = []
 +
 +    for enum in all_enums:
 +        if config.is_hidden(enum.name):
 +            log.debug(f"Skipping hidden bitfield {enum.name}")
 +            continue
 +        enum_file = os.path.join(output_dir, f"flags.{enum.name}.html")
 +        log.info(f"Creating enum file for {namespace.name}.{enum.name}: {enum_file}")
 +
 +        tmpl = TemplateEnum(namespace, enum, config)
 +        template_bitfields.append(tmpl)
 +
 +        with open(enum_file, "w") as out:
 +            out.write(enum_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'enum': tmpl,
 +            }))
 +
 +        for type_func in enum.functions:
 +            f = TemplateFunction(namespace, type_func)
 +            type_func_file = os.path.join(output_dir, f"type_func.{enum.name}.{type_func.name}.html")
 +            log.debug(f"Creating type func file for {namespace.name}.{enum.name}.{type_func.name}: {type_func_file}")
 +
 +            with open(type_func_file, "w") as out:
 +                out.write(type_func_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'type_func': f,
 +                }))
 +
 +    return template_bitfields
 +
 +
 +def _gen_domains(config, theme_config, output_dir, jinja_env, repository, all_enums):
 +    namespace = repository.namespace
 +
 +    enum_tmpl = jinja_env.get_template(theme_config.error_template)
 +    type_func_tmpl = jinja_env.get_template(theme_config.type_func_template)
 +
 +    template_domains = []
 +
 +    for enum in all_enums:
 +        if config.is_hidden(enum.name):
 +            log.debug(f"Skipping hidden domain {enum.name}")
 +            continue
 +        enum_file = os.path.join(output_dir, f"error.{enum.name}.html")
 +        log.info(f"Creating enum file for {namespace.name}.{enum.name}: {enum_file}")
 +
 +        tmpl = TemplateEnum(namespace, enum, config)
 +        template_domains.append(tmpl)
 +
 +        with open(enum_file, "w") as out:
 +            out.write(enum_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'enum': tmpl,
 +            }))
 +
 +        for type_func in enum.functions:
 +            f = TemplateFunction(namespace, type_func)
 +            type_func_file = os.path.join(output_dir, f"type_func.{enum.name}.{type_func.name}.html")
 +            log.debug(f"Creating type func file for {namespace.name}.{enum.name}.{type_func.name}: {type_func_file}")
 +
 +            with open(type_func_file, "w") as out:
 +                out.write(type_func_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'type_func': f,
 +                }))
 +
 +    return template_domains
 +
 +
 +def _gen_constants(config, theme_config, output_dir, jinja_env, repository, all_constants):
 +    namespace = repository.namespace
 +
 +    const_tmpl = jinja_env.get_template(theme_config.constant_template)
 +
 +    template_constants = []
 +
 +    for const in all_constants:
 +        if config.is_hidden(const.name):
 +            log.debug(f"Skipping hidden constant {const.name}")
 +            continue
 +        const_file = os.path.join(output_dir, f"const.{const.name}.html")
 +        log.info(f"Creating constant file for {namespace.name}.{const.name}: {const_file}")
 +
 +        tmpl = TemplateConstant(namespace, const)
 +        template_constants.append(tmpl)
 +
 +        with open(const_file, "w") as out:
 +            out.write(const_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'constant': tmpl,
 +            }))
 +
 +    return template_constants
 +
 +
 +def _gen_aliases(config, theme_config, output_dir, jinja_env, repository, all_aliases):
 +    namespace = repository.namespace
 +
 +    alias_tmpl = jinja_env.get_template(theme_config.alias_template)
 +
 +    template_aliases = []
 +
 +    for alias in all_aliases:
 +        if config.is_hidden(alias.name):
 +            log.debug(f"Skipping hidden alias {alias.name}")
 +            continue
 +        alias_file = os.path.join(output_dir, f"alias.{alias.name}.html")
 +        log.info(f"Creating alias file for {namespace.name}.{alias.name}: {alias_file}")
 +
 +        tmpl = TemplateAlias(namespace, alias)
 +        template_aliases.append(tmpl)
 +
 +        with open(alias_file, "w") as out:
 +            content = alias_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'struct': tmpl,
 +            })
 +
 +            out.write(content)
 +
 +    return template_aliases
 +
 +
 +def _gen_records(config, theme_config, output_dir, jinja_env, repository, all_records):
 +    namespace = repository.namespace
 +
 +    record_tmpl = jinja_env.get_template(theme_config.record_template)
 +    method_tmpl = jinja_env.get_template(theme_config.method_template)
 +    type_func_tmpl = jinja_env.get_template(theme_config.type_func_template)
 +
 +    template_records = []
 +
 +    for record in all_records:
 +        if config.is_hidden(record.name):
 +            log.debug(f"Skipping hidden record {record.name}")
 +            continue
 +        record_file = os.path.join(output_dir, f"struct.{record.name}.html")
 +        log.info(f"Creating record file for {namespace.name}.{record.name}: {record_file}")
 +
 +        tmpl = TemplateRecord(namespace, record, config)
 +        template_records.append(tmpl)
 +
 +        with open(record_file, "w") as out:
 +            content = record_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'struct': tmpl,
 +            })
 +
 +            out.write(content)
 +
 +        for ctor in record.constructors:
 +            if config.is_hidden(record.name, "constructor", ctor.name):
 +                log.debug(f"Skipping hidden constructor {record.name}.{ctor.name}")
 +                continue
 +            c = TemplateFunction(namespace, ctor)
 +            ctor_file = os.path.join(output_dir, f"ctor.{record.name}.{ctor.name}.html")
 +            log.debug(f"Creating ctor file for {namespace.name}.{record.name}.{ctor.name}: {ctor_file}")
 +
 +            with open(ctor_file, "w") as out:
 +                out.write(type_func_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'type_func': c,
 +                }))
 +
 +        for method in record.methods:
 +            if config.is_hidden(record.name, "method", method.name):
 +                log.debug(f"Skipping hidden method {record.name}.{method.name}")
 +                continue
 +            m = TemplateMethod(namespace, record, method)
 +            method_file = os.path.join(output_dir, f"method.{record.name}.{method.name}.html")
 +            log.debug(f"Creating method file for {namespace.name}.{record.name}.{method.name}: {method_file}")
 +
 +            with open(method_file, "w") as out:
 +                out.write(method_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'method': m,
 +                }))
 +
 +        for type_func in record.functions:
 +            if config.is_hidden(record.name, "method", type_func.name):
 +                log.debug(f"Skipping hidden type function {record.name}.{type_func.name}")
 +                continue
 +            f = TemplateFunction(namespace, type_func)
 +            type_func_file = os.path.join(output_dir, f"type_func.{record.name}.{type_func.name}.html")
 +            log.debug(f"Creating type func file for {namespace.name}.{record.name}.{type_func.name}: {type_func_file}")
 +
 +            with open(type_func_file, "w") as out:
 +                out.write(type_func_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'type_func': f,
 +                }))
 +
 +    return template_records
 +
 +
 +def _gen_unions(config, theme_config, output_dir, jinja_env, repository, all_unions):
 +    namespace = repository.namespace
 +
 +    union_tmpl = jinja_env.get_template(theme_config.union_template)
 +    method_tmpl = jinja_env.get_template(theme_config.method_template)
 +    type_func_tmpl = jinja_env.get_template(theme_config.type_func_template)
 +
 +    template_unions = []
 +
 +    for union in all_unions:
 +        if config.is_hidden(union.name):
 +            log.debug(f"Skipping hidden union {union.name}")
 +            continue
 +        union_file = os.path.join(output_dir, f"union.{union.name}.html")
 +        log.info(f"Creating union file for {namespace.name}.{union.name}: {union_file}")
 +
 +        tmpl = TemplateUnion(namespace, union, config)
 +        template_unions.append(tmpl)
 +
 +        with open(union_file, "w") as out:
 +            content = union_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'struct': tmpl,
 +            })
 +
 +            out.write(content)
 +
 +        for ctor in union.constructors:
 +            if config.is_hidden(union.name, "constructor", ctor.name):
 +                log.debug(f"Skipping hidden constructor {union.name}.{ctor.name}")
 +                continue
 +            c = TemplateFunction(namespace, ctor)
 +            ctor_file = os.path.join(output_dir, f"ctor.{union.name}.{ctor.name}.html")
 +            log.debug(f"Creating ctor file for {namespace.name}.{union.name}.{ctor.name}: {ctor_file}")
 +
 +            with open(ctor_file, "w") as out:
 +                out.write(type_func_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'type_func': c,
 +                }))
 +
 +        for method in union.methods:
 +            if config.is_hidden(union.name, "method", method.name):
 +                log.debug(f"Skipping hidden method {union.name}.{method.name}")
 +                continue
 +            m = TemplateMethod(namespace, union, method)
 +            method_file = os.path.join(output_dir, f"method.{union.name}.{method.name}.html")
 +            log.debug(f"Creating method file for {namespace.name}.{union.name}.{method.name}: {method_file}")
 +
 +            with open(method_file, "w") as out:
 +                out.write(method_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'method': m,
 +                }))
 +
 +        for type_func in union.functions:
 +            if config.is_hidden(union.name, "function", type_func.name):
 +                log.debug(f"Skipping hidden type function {union.name}.{type_func.name}")
 +                continue
 +            f = TemplateFunction(namespace, type_func)
 +            type_func_file = os.path.join(output_dir, f"type_func.{union.name}.{type_func.name}.html")
 +            log.debug(f"Creating type func file for {namespace.name}.{union.name}.{type_func.name}: {type_func_file}")
 +
 +            with open(type_func_file, "w") as out:
 +                out.write(type_func_tmpl.render({
 +                    'CONFIG': config,
 +                    'namespace': namespace,
 +                    'class': tmpl,
 +                    'type_func': f,
 +                }))
 +
 +    return template_unions
 +
 +
 +def _gen_functions(config, theme_config, output_dir, jinja_env, repository, all_functions):
 +    namespace = repository.namespace
 +
 +    func_tmpl = jinja_env.get_template(theme_config.func_template)
 +
 +    template_functions = []
 +
 +    for func in all_functions:
 +        if config.is_hidden(func.name):
 +            log.debug(f"Skipping hidden function {func.name}")
 +            continue
 +        func_file = os.path.join(output_dir, f"func.{func.name}.html")
 +        log.info(f"Creating function file for {namespace.name}.{func.name}: {func_file}")
 +
 +        tmpl = TemplateFunction(namespace, func)
 +        template_functions.append(tmpl)
 +
 +        with open(func_file, "w") as out:
 +            content = func_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'func': tmpl,
 +            })
 +
 +            out.write(content)
 +
 +    return template_functions
 +
 +
 +def _gen_callbacks(config, theme_config, output_dir, jinja_env, repository, all_callbacks):
 +    namespace = repository.namespace
 +
 +    func_tmpl = jinja_env.get_template(theme_config.func_template)
 +
 +    template_callbacks = []
 +
 +    for func in all_callbacks:
 +        if config.is_hidden(func.name):
 +            log.debug(f"Skipping hidden callback {func.name}")
 +            continue
 +        func_file = os.path.join(output_dir, f"callback.{func.name}.html")
 +        log.info(f"Creating callback file for {namespace.name}.{func.name}: {func_file}")
 +
 +        tmpl = TemplateCallback(namespace, func)
 +        template_callbacks.append(tmpl)
 +
 +        with open(func_file, "w") as out:
 +            content = func_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'func': tmpl,
 +            })
 +
 +            out.write(content)
 +
 +    return template_callbacks
 +
 +
 +def _gen_function_macros(config, theme_config, output_dir, jinja_env, repository, all_functions):
 +    namespace = repository.namespace
 +
 +    func_tmpl = jinja_env.get_template(theme_config.func_template)
 +
 +    template_functions = []
 +
 +    for func in all_functions:
 +        if config.is_hidden(func.name):
 +            log.debug(f"Skipping hidden macro {func.name}")
 +            continue
 +        func_file = os.path.join(output_dir, f"func.{func.name}.html")
 +        log.info(f"Creating function macro file for {namespace.name}.{func.name}: {func_file}")
 +
 +        tmpl = TemplateFunction(namespace, func)
 +        template_functions.append(tmpl)
 +
 +        with open(func_file, "w") as out:
 +            content = func_tmpl.render({
 +                'CONFIG': config,
 +                'namespace': namespace,
 +                'func': tmpl,
 +            })
 +
 +            out.write(content)
 +
 +    return template_functions
 +
 +
 +def gen_content_files(config, theme_config, content_dirs, output_dir, jinja_env, namespace):
 +    content_files = []
 +
 +    content_tmpl = jinja_env.get_template(theme_config.content_template)
 +    md = markdown.Markdown(extensions=utils.MD_EXTENSIONS, extension_configs=utils.MD_EXTENSIONS_CONF)
 +
 +    for file_name in config.content_files:
 +        src_file = utils.find_extra_content_file(content_dirs, file_name)
 +
 +        src_data = ""
 +        with open(src_file, encoding='utf-8') as infile:
 +            source = []
 +            for line in infile:
 +                source.append(line)
 +            src_data = "".join(source)
 +
 +        dst_data = utils.preprocess_docs(src_data, namespace, md=md)
 +        title = "\n".join(md.Meta.get("title", ["Unknown document"]))
 +
 +        content_file = file_name.replace(".md", ".html")
 +        dst_file = os.path.join(output_dir, content_file)
 +
 +        content = {
 +            "abs_input_file": src_file,
 +            "abs_output_file": dst_file,
 +            "source_file": file_name,
 +            "output_file": content_file,
 +            "meta": md.Meta,
 +            "title": title,
 +            "toc": md.toc_tokens,
 +            "data": dst_data,
 +        }
 +
 +        log.info(f"Generating content file {file_name}: {dst_file}")
 +        with open(dst_file, "w", encoding='utf-8') as outfile:
 +            outfile.write(content_tmpl.render({
 +                "CONFIG": config,
 +                "namespace": namespace,
 +                "content": content,
 +            }))
 +
 +        content_files.append({
 +            "title": title,
 +            "href": content_file,
 +        })
 +
 +        md.reset()
 +
 +    return content_files
 +
 +
 +def gen_content_images(config, content_dirs, output_dir):
 +    content_images = []
 +
 +    for image_file in config.content_images:
 +        infile = utils.find_extra_content_file(content_dirs, image_file)
 +        outfile = os.path.join(output_dir, os.path.basename(image_file))
 +        log.debug(f"Adding extra content image: {infile} -> {outfile}")
 +        content_images += [(infile, outfile)]
 +
 +    return content_images
 +
 +
 +def gen_types_hierarchy(config, theme_config, output_dir, jinja_env, repository):
 +    # All GObject sub-types
 +    objects_tree = repository.get_class_hierarchy(root="GObject.Object")
 +
 +    # All GTypeInstance sub-types
 +    typed_tree = repository.get_class_hierarchy()
 +
 +    res = ["<h1>Classes Hierarchy</h1>"]
 +
 +    def dump_tree(node, out):
 +        for k in node:
 +            if '.' in k:
 +                out.append(f'<li class="type"><code>{k}</code>')
 +            else:
 +                out.append(f'<li class="type"><a href="class.{k}.html"><code>{k}</code></a>')
 +            if len(node[k]) != 0:
 +                out.append('<ul class="type">')
 +                dump_tree(node[k], out)
 +                out.append("</ul>")
 +            out.append("</li>")
 +
 +    if len(objects_tree) != 0:
 +        res += ["<div class=\"docblock\">"]
 +        res += ["<ul class=\"type root\">"]
 +        res += [" <li class=\"type\"><code>GObject</code></li><ul class=\"type\">"]
 +        dump_tree(objects_tree, res)
 +        res += [" </ul></li>"]
 +        res += ["</ul>"]
 +        res += ["</div>"]
 +
 +    if len(typed_tree) != 0:
 +        res += ["<div class=\"docblock\">"]
 +        res += ["<ul class=\"type root\">"]
 +        res += [" <li class=\"type\"><code>GTypeInstance</code></li><ul class=\"type\">"]
 +        dump_tree(typed_tree, res)
 +        res += [" </ul></li>"]
 +        res += ["</ul>"]
 +        res += ["</div>"]
 +
 +    content = {
 +        "output_file": "classes_hierarchy.html",
 +        "meta": {
 +            "keywords": "types, hierarchy, classes",
 +        },
 +        "title": "Classes Hierarchy",
 +        "data": Markup("\n".join(res)),
 +    }
 +
 +    content_tmpl = jinja_env.get_template(theme_config.content_template)
 +
 +    namespace = repository.namespace
 +
 +    dst_file = os.path.join(output_dir, content["output_file"])
 +    log.info(f"Generating type hierarchy file: {dst_file}")
 +    with open(dst_file, "w") as outfile:
 +        outfile.write(content_tmpl.render({
 +            "CONFIG": config,
 +            "namespace": namespace,
 +            "content": content,
 +        }))
 +
 +    return {
 +        "title": content["title"],
 +        "href": content["output_file"],
 +    }
 +
 +
 +def gen_opensearch(config, repository, namespace, symbols, content_files):
 +    desc = etree.Element('OpenSearchDescription')
 +    desc.set("xmlns", "http://a9.com/-/spec/opensearch/1.1/")
 +    desc.set("xmlns:moz", "http://www.mozilla.org/2006/browser/search/")
 +    sub = etree.SubElement(desc, 'ShortName')
 +    sub.text = f"{namespace.name}"
 +    sub = etree.SubElement(desc, 'Description')
 +    sub.text = f"{namespace.name}-{namespace.version} Reference Manual"
 +    sub = etree.SubElement(desc, 'InputEncoding')
 +    sub.text = "UTF-8"
 +    if config.logo_url:
 +        sub = etree.SubElement(desc, 'Image')
 +        sub.text = config.logo_url
 +    sub = etree.SubElement(desc, 'Url', type="text/html")
 +    sub.set("type", "text/html")
 +    sub.set("template", f"{config.docs_url}/?q={{searchTerms}}")
 +    sub = etree.SubElement(desc, 'moz:SearchForm')
 +    sub.text = f"{config.docs_url}"
 +
 +    return etree.ElementTree(desc)
 +
 +
 +def gen_devhelp(config, repository, namespace, symbols, content_files):
 +    book = etree.Element('book')
 +    book.set("xmlns", "http://www.devhelp.net/book")
 +    book.set("title", f"{namespace.name}-{namespace.version} Reference Manual")
 +    book.set("link", "index.html")
 +    book.set("author", f"{config.authors}")
 +    book.set("name", f"{namespace.name}")
 +    book.set("version", "2")
 +    book.set("language", "c")
 +
 +    chapters = etree.SubElement(book, 'chapters')
 +
 +    for f in content_files:
 +        sub = etree.SubElement(chapters, 'sub')
 +        sub.set("name", f["title"])
 +        sub.set("link", f["href"])
 +
 +    for section, types in symbols.items():
 +        if len(types) == 0:
 +            continue
 +
 +        sub = etree.SubElement(chapters, "sub")
 +        sub.set("name", section.replace("_", " ").capitalize())
 +        sub.set("link", f"index.html#{section}")
 +
 +        for t in types:
 +            sub_section = etree.SubElement(sub, "sub")
 +            sub_section.set("name", t.name)
 +            sub_section.set("link", f"{FRAGMENT[section]}.{t.name}.html")
 +
 +    functions = etree.SubElement(book, "functions")
 +    for section, types in symbols.items():
 +        if len(types) == 0:
 +            continue
 +
 +        for t in types:
 +            if section in ["functions", "function_macros"]:
 +                keyword = etree.SubElement(functions, "keyword")
 +                if section == "functions":
 +                    keyword.set("type", "function")
 +                else:
 +                    keyword.set("type", "macro")
 +                keyword.set("name", t.identifier)
 +                keyword.set("link", f"func.{t.name}.html")
 +                if t.available_since is not None:
 +                    keyword.set("since", t.available_since)
 +                if t.deprecated_since is not None and t.deprecated_since["version"] is not None:
 +                    keyword.set("deprecated", t.deprecated_since["version"])
 +                continue
 +
 +            if section == "constants":
 +                keyword = etree.SubElement(functions, "keyword")
 +                keyword.set("type", "constant")
 +                keyword.set("name", t.identifier)
++                keyword.set("link", f"const.{t.name}.html")
 +                if t.available_since is not None:
 +                    keyword.set("since", t.available_since)
 +                if t.deprecated_since is not None and t.deprecated_since["version"] is not None:
 +                    keyword.set("deprecated", t.deprecated_since["version"])
 +                continue
 +
 +            if section in ["aliases", "bitfields", "classes", "domains", "enums", "interfaces", "structs", "unions"]:
 +                # Skip anonymous types; e.g. GValue's anonymous union
 +                if t.type_cname is None:
 +                    continue
 +                keyword = etree.SubElement(functions, "keyword")
 +                if section == "aliases":
 +                    keyword.set("type", "typedef")
 +                elif section in ["bitfields", "domains", "enums"]:
 +                    keyword.set("type", "enum")
 +                elif section == "unions":
 +                    keyword.set("type", "union")
 +                else:
 +                    keyword.set("type", "struct")
 +                keyword.set("name", t.type_cname)
 +                keyword.set("link", f"{FRAGMENT[section]}.{t.name}.html")
 +                if t.available_since is not None:
 +                    keyword.set("since", t.available_since)
 +                if t.deprecated_since is not None and t.deprecated_since["version"] is not None:
 +                    keyword.set("deprecated", t.deprecated_since["version"])
 +
 +            for m in getattr(t, "members", []):
 +                keyword = etree.SubElement(functions, "keyword")
 +                keyword.set("type", "constant")
 +                keyword.set("name", m.name)
 +                keyword.set("link", f"{FRAGMENT[section]}.{t.name}.html")
 +
 +            for f in getattr(t, "fields", []):
 +                keyword = etree.SubElement(functions, "keyword")
 +                keyword.set("type", "member")
 +                keyword.set("name", f"{t.type_cname}.{f.name}")
 +                keyword.set("link", f"{FRAGMENT[section]}.{t.name}.html")
 +
 +            class_struct = getattr(t, "class_struct", None)
 +            if class_struct is not None:
 +                for f in getattr(class_struct, "fields", []):
 +                    keyword = etree.SubElement(functions, "keyword")
 +                    keyword.set("type", "member")
 +                    keyword.set("name", f"{t.class_name}.{f.name}")
 +                    if section == "class":
 +                        keyword.set("link", f"class.{t.name}.html#class-struct")
 +                    elif section == "interface":
 +                        keyword.set("link", f"iface.{t.name}.html#interface-struct")
 +                    else:
 +                        keyword.set("link", f"{FRAGMENT[section]}.{t.name}.html")
 +
 +            for m in getattr(t, "methods", []):
 +                keyword = etree.SubElement(functions, "keyword")
 +                keyword.set("type", "function")
 +                keyword.set("name", m['identifier'])
 +                keyword.set("link", f"method.{t.name}.{m['name']}.html")
 +                if m["available_since"] is not None:
 +                    keyword.set("since", m["available_since"])
 +                if m["deprecated_since"] is not None:
 +                    keyword.set("deprecated", m["deprecated_since"])
 +
 +            for c in getattr(t, "ctors", []):
 +                keyword = etree.SubElement(functions, "keyword")
 +                keyword.set("type", "function")
 +                keyword.set("name", c['identifier'])
 +                keyword.set("link", f"ctor.{t.name}.{c['name']}.html")
 +                if c["available_since"] is not None:
 +                    keyword.set("since", c["available_since"])
 +                if c["deprecated_since"] is not None:
 +                    keyword.set("deprecated", c["deprecated_since"])
 +
 +            for f in getattr(t, "type_funcs", []):
 +                keyword = etree.SubElement(functions, "keyword")
 +                keyword.set("type", "function")
 +                keyword.set("name", f['identifier'])
 +                keyword.set("link", f"type_func.{t.name}.{f['name']}.html")
 +                if f["available_since"] is not None:
 +                    keyword.set("since", f["available_since"])
 +                if f["deprecated_since"] is not None:
 +                    keyword.set("deprecated", f["deprecated_since"])
 +
 +            for m in getattr(t, "class_methods", []):
 +                keyword = etree.SubElement(functions, "keyword")
 +                keyword.set("type", "function")
 +                keyword.set("name", m['identifier'])
 +                keyword.set("link", f"class_method.{t.name}.{m['name']}.html")
 +                if m["available_since"] is not None:
 +                    keyword.set("since", m["available_since"])
 +                if m["deprecated_since"] is not None:
 +                    keyword.set("deprecated", m["deprecated_since"])
 +
 +            for p in getattr(t, "properties", []):
 +                keyword = etree.SubElement(functions, "keyword")
 +                keyword.set("type", "property")
 +                keyword.set("name", f"The {t.type_cname}:{p['name']} property")
 +                keyword.set("link", f"property.{t.name}.{p['name']}.html")
 +                if p["available_since"] is not None:
 +                    keyword.set("since", p["available_since"])
 +                if p["deprecated_since"] is not None:
 +                    keyword.set("deprecated", p["deprecated_since"])
 +
 +            for s in getattr(t, "signals", []):
 +                keyword = etree.SubElement(functions, "keyword")
 +                keyword.set("type", "signal")
 +                keyword.set("name", f"The {t.type_cname}::{s['name']} signal")
 +                keyword.set("link", f"signal.{t.name}.{s['name']}.html")
 +                if s["available_since"] is not None:
 +                    keyword.set("since", s["available_since"])
 +                if s["deprecated_since"] is not None:
 +                    keyword.set("deprecated", s["deprecated_since"])
 +
 +    return etree.ElementTree(book)
 +
 +
 +def gen_reference(config, options, repository, templates_dir, theme_config, content_dirs, output_dir):
 +    theme_dir = os.path.join(templates_dir, theme_config.name.lower())
 +    log.debug(f"Loading jinja templates from {theme_dir}")
 +
 +    fs_loader = jinja2.FileSystemLoader(theme_dir)
 +    jinja_env = jinja2.Environment(loader=fs_loader, autoescape=jinja2.select_autoescape(['html']))
 +
 +    namespace = repository.namespace
 +
 +    symbols = {
 +        "aliases": sorted(namespace.get_aliases(), key=lambda alias: alias.name.lower()),
 +        "bitfields": sorted(namespace.get_bitfields(), key=lambda bitfield: bitfield.name.lower()),
 +        "callbacks": sorted(namespace.get_callbacks(), key=lambda callback: callback.name.lower()),
 +        "classes": sorted(namespace.get_classes(), key=lambda cls: cls.name.lower()),
 +        "constants": sorted(namespace.get_constants(), key=lambda const: const.name.lower()),
 +        "domains": sorted(namespace.get_error_domains(), key=lambda domain: domain.name.lower()),
 +        "enums": sorted(namespace.get_enumerations(), key=lambda enum: enum.name.lower()),
 +        "functions": sorted(namespace.get_functions(), key=lambda func: func.name.lower()),
 +        "function_macros": sorted(namespace.get_effective_function_macros(), key=lambda func: func.name.lower()),
 +        "interfaces": sorted(namespace.get_interfaces(), key=lambda interface: interface.name.lower()),
 +        "structs": sorted(namespace.get_effective_records(), key=lambda record: record.name.lower()),
 +        "unions": sorted(namespace.get_unions(), key=lambda union: union.name.lower()),
 +    }
 +
 +    all_indices = {
 +        "aliases": _gen_aliases,
 +        "bitfields": _gen_bitfields,
 +        "callbacks": _gen_callbacks,
 +        "classes": _gen_classes,
 +        "constants": _gen_constants,
 +        "domains": _gen_domains,
 +        "enums": _gen_enums,
 +        "functions": _gen_functions,
 +        "function_macros": _gen_function_macros,
 +        "interfaces": _gen_interfaces,
 +        "structs": _gen_records,
 +        "unions": _gen_unions,
 +    }
 +
 +    if options.no_namespace_dir:
 +        ns_dir = output_dir
 +    else:
 +        ns_dir = os.path.join(output_dir, f"{namespace.name}-{namespace.version}")
 +
 +    log.debug(f"Creating output path for the namespace: {ns_dir}")
 +    os.makedirs(ns_dir, exist_ok=True)
 +
 +    content_files = gen_content_files(config, theme_config, content_dirs, ns_dir, jinja_env, namespace)
 +    content_images = gen_content_images(config, content_dirs, ns_dir)
 +    content_files.append(gen_types_hierarchy(config, theme_config, ns_dir, jinja_env, repository))
 +
 +    if options.sections == [] or options.sections == ["all"]:
 +        gen_indices = list(all_indices.keys())
 +    elif options.sections == ["none"]:
 +        gen_indices = []
 +    else:
 +        gen_indices = options.sections
 +
 +    log.info(f"Generating references for: {gen_indices}")
 +
 +    template_symbols = {}
 +
 +    # Each section is isolated, so we run it into a thread pool
 +    with concurrent.futures.ThreadPoolExecutor() as executor:
 +        futures_to_section = {}
 +        for section in gen_indices:
 +            s = symbols.get(section, [])
 +            if s is None:
 +                log.debug(f"No symbols for section {section}")
 +                continue
 +
 +            generator = all_indices.get(section, None)
 +            if generator is None:
 +                log.debug(f"No generator for section {section}")
 +                continue
 +
 +            f = executor.submit(generator, config, theme_config, ns_dir, jinja_env, repository, s)
 +            futures_to_section[f] = section
 +
 +        for future in concurrent.futures.as_completed(futures_to_section):
 +            section = futures_to_section[future]
 +            try:
 +                res = future.result()
 +            except Exception as e:
 +                if log.log_fatal_warnings:
 +                    import traceback
 +                    traceback.print_exc()
 +                log.warning(f"Section {section} raised {e}")
 +            else:
 +                template_symbols[section] = res
 +
 +    # The concurrent processing introduces non-determinism. Ensure iteration order is reproducible
 +    # by sorting by key. This has virtually no overhead since the values are not copied.
 +    template_symbols = dict(sorted(template_symbols.items()))
 +
 +    ns_tmpl = jinja_env.get_template(theme_config.namespace_template)
 +    ns_file = os.path.join(ns_dir, "index.html")
 +    log.info(f"Creating namespace index file for {namespace.name}-{namespace.version}: {ns_file}")
 +    with open(ns_file, "w") as out:
 +        out.write(ns_tmpl.render({
 +            "CONFIG": config,
 +            "repository": repository,
 +            "namespace": namespace,
 +            "symbols": template_symbols,
 +            "content_files": content_files,
 +        }))
 +
 +    if config.devhelp:
 +        # Devhelp expects the book file to have the same basename as the directory it is in.
 +        devhelp_file = os.path.join(ns_dir, f"{os.path.basename(ns_dir)}.devhelp2")
 +        log.info(f"Creating DevHelp file for {namespace.name}-{namespace.version}: {devhelp_file}")
 +        res = gen_devhelp(config, repository, namespace, template_symbols, content_files)
 +        res.write(devhelp_file, encoding="UTF-8")
 +
 +    if config.search_index:
 +        if config.docs_url:
 +            opensearch_file = os.path.join(ns_dir, "opensearch.xml")
 +            log.info(f"Creating OpenSearch file for {namespace.name}-{namespace.version}: {opensearch_file}")
 +            res = gen_opensearch(config, repository, namespace, template_symbols, content_files)
 +            res.write(opensearch_file, encoding="UTF-8")
 +        gdgenindices.gen_indices(config, repository, content_dirs, ns_dir)
 +
 +    copy_files = []
 +    if theme_config.css is not None:
 +        style_src = os.path.join(theme_dir, theme_config.css)
 +        style_dst = os.path.join(ns_dir, theme_config.css)
 +        copy_files.append((style_src, style_dst))
 +
 +    for extra_file in theme_config.extra_files:
 +        src = os.path.join(theme_dir, extra_file)
 +        dst = os.path.join(ns_dir, extra_file)
 +        copy_files.append((src, dst))
 +
 +    if config.urlmap_file is not None:
 +        src = utils.find_extra_content_file(content_dirs, config.urlmap_file)
 +        dst = os.path.join(ns_dir, os.path.basename(config.urlmap_file))
 +        copy_files.append((src, dst))
 +
 +    copy_files.extend(content_images)
 +
 +    def copy_worker(src, dst):
 +        log.info(f"Copying file {src}: {dst}")
 +        dst_dir = os.path.dirname(dst)
 +        os.makedirs(dst_dir, exist_ok=True)
 +        shutil.copy(src, dst)
 +
 +    with concurrent.futures.ThreadPoolExecutor() as executor:
 +        for (src, dst) in copy_files:
 +            executor.submit(copy_worker, src, dst)
 +
 +
 +def add_args(parser):
 +    parser.add_argument("--add-include-path", action="append", dest="include_paths", default=[],
 +                        help="include paths for other GIR files")
 +    parser.add_argument("-C", "--config", metavar="FILE", help="the configuration file")
 +    parser.add_argument("--dry-run", action="store_true", help="parses the GIR file without generating files")
 +    parser.add_argument("--templates-dir", default=None, help="the base directory with the theme templates")
 +    parser.add_argument("--content-dir", action="append", dest="content_dirs", default=[],
 +                        help="the base directories with the extra content")
 +    parser.add_argument("--theme-name", default="basic", help="the theme to use")
 +    parser.add_argument("--output-dir", default=None, help="the output directory for the index files")
 +    parser.add_argument("--no-namespace-dir", action="store_true",
 +                        help="do not create a namespace directory under the output directory")
 +    parser.add_argument("--section", action="append", dest="sections", default=[], help="the sections to generate, or 'all'")
 +    parser.add_argument("infile", metavar="GIRFILE", type=argparse.FileType('r', encoding='UTF-8'),
 +                        default=sys.stdin, help="the GIR file to parse")
 +
 +
 +def run(options):
 +    log.info(f"Loading config file: {options.config}")
 +
 +    conf = config.GIDocConfig(options.config)
 +
 +    output_dir = options.output_dir or os.getcwd()
 +
 +    content_dirs = options.content_dirs
 +    if content_dirs == []:
 +        content_dirs = [os.getcwd()]
 +
 +    if options.templates_dir is not None:
 +        templates_dir = options.templates_dir
 +    else:
 +        templates_dir = conf.get_templates_dir()
 +        if templates_dir is None:
 +            templates_dir = os.path.join(os.path.dirname(__file__), 'templates')
 +
 +    theme_name = conf.get_theme_name(default=options.theme_name)
 +    theme_conf = config.GITemplateConfig(templates_dir, theme_name)
 +
 +    log.debug(f"Templates directory: {templates_dir}")
 +    log.info(f"Theme name: {theme_conf.name}")
 +    log.info(f"Output directory: {output_dir}")
 +
 +    paths = []
 +    paths.extend(options.include_paths)
 +    paths.extend(utils.default_search_paths())
 +    log.debug(f"Search paths: {paths}")
 +
 +    log.info("Parsing GIR file")
 +    parser = gir.GirParser(search_paths=paths)
 +    parser.parse(options.infile)
 +
 +    if not options.dry_run:
 +        log.checkpoint()
 +        gen_reference(conf, options, parser.get_repository(), templates_dir, theme_conf, content_dirs, output_dir)
 +
 +    return 0
index 518151a98d90d9ba0cb5f62a7c23b6b90c8fab0c,0000000000000000000000000000000000000000..d039f8b12a11c922e77968a3d980b3d1479aedb1
mode 100644,000000..100644
--- /dev/null
@@@ -1,172 -1,0 +1,200 @@@
-   {% if CONFIG.dependencies|length > 0 %}
 +<!--
 +SPDX-FileCopyrightText: 2021 GNOME Foundation
 +
 +SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
 +-->
 +
 +{% extends "base.html" %}
 +
 +{% block title %}{{ namespace.name }} &ndash; {{ namespace.version }}{% endblock %}
 +
 +{% block meta_other %}
 +  <meta property="og:title" content="{{ namespace.name }}-{{ namespace.version }}"/>
 +  <meta property="og:description" content="Reference for {{ namespace.name }}-{{ namespace.version }}"/>
 +  <meta name="twitter:title" content="{{ namespace.name }}-{{ namespace.version }}"/>
 +  <meta name="twitter:description" content="Reference for {{ namespace.name }}-{{ namespace.version }}"/>
 +{% endblock %}
 +
 +{% block sidebar %}
 +<div class="section">
 +  <h5>Sections</h5>
 +  <div class="links">
 +  {% macro section_link(elements, section_id, section_title) -%}
 +  {% if elements|length > 0 %}
 +    <a href="#{{ section_id }}">{{ section_title }}</a>
 +  {% endif %}
 +  {%- endmacro %}
 +
 +  {{ section_link(symbols.classes, "classes", "Classes") }}
 +  {{ section_link(symbols.interfaces, "interfaces", "Interfaces") }}
 +  {{ section_link(symbols.structs, "structs", "Structs") }}
 +  {{ section_link(symbols.unions, "unions", "Unions") }}
 +  {{ section_link(symbols.aliases, "aliases", "Aliases") }}
 +  {{ section_link(symbols.enums, "enums", "Enumerations") }}
 +  {{ section_link(symbols.bitfields, "bitfields", "Bitfields") }}
 +  {{ section_link(symbols.domains, "domains", "Error Domains") }}
 +  {{ section_link(symbols.callbacks, "callbacks", "Callbacks") }}
 +  {{ section_link(symbols.functions, "functions", "Functions") }}
 +  {{ section_link(symbols.function_macros, "function_macros", "Function Macros") }}
 +  {{ section_link(symbols.constants, "constants", "Constants") }}
 +  </div>
 +</div>
 +{% if CONFIG.dependencies|length > 0 %}
 +<div class="section">
 +  <h5>Dependencies</h5>
 +  <div class="links">
 +  {% for gir_name, dep in CONFIG.dependencies.items() %}
 +    <a href="{{ dep.docs_url }}" class="external">{{ dep.name }}</a>
 +  {% endfor %}
 +  </div>
 +</div>
 +{% endif %}
 +{% endblock %}
 +
 +{% block content %}
 +<section id="main" class="content">
 +  <header>
 +    <h3>Namespace</h3>
 +    <h1>{{ namespace.name }} &ndash; {{ namespace.version }}</h1>
 +
 +    <div class="description">
 +      <p>{{ CONFIG.description|escape }}</p>
 +    </div>
 +
 +    <div class="meta info">
 +      <table>
 +        <tr><td><em>Version</em></td><td>{{ CONFIG.version }}</td></tr>
 +        <tr><td><em>Authors</em></td><td>{{ CONFIG.authors }}</td></tr>
 +        <tr><td><em>License</em></td><td>{{ CONFIG.license }}</td></tr>
 +        <tr><td><em>Website</em></td><td><a href="{{ CONFIG.website_url }}" class="external">{{ CONFIG.website_url }}</a></td></tr>
 +        <tr><td><em>Source</em></td><td><a href="{{ CONFIG.browse_url }}" class="external">{{ CONFIG.browse_url }}</a></td></tr>
 +      </table>
 +    </div>
 +
 +    <div class="meta build toggle-wrapper">
 +      <h4>Build</h4>
 +
 +      <div class="docblock">
 +      <table>
 +        <tr><td>C headers</td><td><code>{{ repository.c_includes|join(', ') }}</code></td></tr>
 +        <tr><td>pkg-config files</td><td><code>{{ repository.packages|join(', ') }}</code></td></tr>
 +      </table>
 +      </div>
 +    </div>
 +  </header>
 +
-         {% for gir_name, dep in CONFIG.dependencies.items() %}
++  {% if repository.includes %}
 +  <section>
 +    <div class="toggle-wrapper">
 +      <h4 id="dependencies" style="display:flex;">
 +        Dependencies
 +        <a href="#dependencies" class="anchor"></a>
 +      </h4>
 +
 +      <div class="docblock">
 +        <table>
-             <td><strong>{{ dep.name }}</strong></td>
-             <td>{{ dep.description }}</td>
++        {% for ns_name, repo in repository.includes.items() %}
++          {% for _, lib in CONFIG.dependencies.items() if lib.name == repo.namespace.name %}
 +          <tr>
-             <td><a href="{{ dep.docs_url }}" class="external">Browse documentation</a></td>
++            <td><strong>{{ repo.namespace.name }}</strong>&mdash;{{ repo.namespace.version }}</td>
++            <td>{{ lib.description }}</td>
 +          </tr>
 +          <tr>
 +            <td></td>
++            <td><a href="{{ lib.docs_url }}" class="external">Browse documentation</a></td>
++          </tr>
++          {% endfor %}
++        {% endfor %}
++        </table>
++      </div>
++    </div>
++  </section>
++  {% endif %}
++
++  {% if CONFIG.related|length > 0 %}
++  <section>
++    <div class="toggle-wrapper">
++      <h4 id="related" style="display:flex;">
++        Related libraries
++        <a href="#related" class="anchor"></a>
++      </h4>
++
++      <div class="docblock">
++        <table>
++        {% for gir_name, lib in CONFIG.related.items() %}
++          <tr>
++            <td><strong>{{ lib.name }}</strong></td>
++            <td>{{ lib.description }}</td>
++          </tr>
++          <tr>
++            <td></td>
++            <td><a href="{{ lib.docs_url }}" class="external">Browse documentation</a></td>
 +          </tr>
 +        {% endfor %}
 +        </table>
 +      </div>
 +    </div>
 +  </section>
 +  {% endif %}
 +
 +  {% if content_files|length > 0 %}
 +  <section>
 +    <div class="toggle-wrapper">
 +      <h4 id="extra" style="display:flex;">
 +        Additional documentation
 +        <a href="#extra" class="anchor"></a>
 +      </h4>
 +
 +      <div class="docblock">
 +        <ul>
 +        {% for file in content_files %}
 +          <li><a href="{{ file.href }}">{{ file.title }}</a></li>
 +        {% endfor %}
 +        </ul>
 +      </div>
 +    </div>
 +  </section>
 +  {% endif %}
 +
 +  {% macro section_block(elements, section_id, section_title, section_fragment) -%}
 +  {% if elements|length > 0 %}
 +  <section>
 +    <div class="toggle-wrapper default-hide">
 +      <h4 id="{{ section_id }}" class="section-header" style="display:flex;">
 +        {{ section_title }}
 +        <a href="#{{ section_id }}" class="anchor"></a>
 +      </h4>
 +
 +      <div class="docblock">
 +        <table style="display:block;">
 +          <tbody>
 +          {% for element in elements %}
 +          <tr class="section-item">
 +            <td><a title="{{ element.name }}" class="symbol" href="{{ section_fragment }}.{{ element.name }}.html">{{ element.name }}</a></td>
 +            {% if CONFIG.show_index_summary %}
 +            <td class="docblock-summary">{{ element.summary }}</td>
 +            {% endif %}
 +          </tr>
 +          {% endfor %}
 +          </tbody>
 +        </table>
 +      </div>
 +    </div>
 +  </section>
 +  {% endif %}
 +  {%- endmacro %}
 +
 +  {{ section_block(symbols.classes, "classes", "Classes", "class") }}
 +  {{ section_block(symbols.interfaces, "interfaces", "Interfaces", "iface") }}
 +  {{ section_block(symbols.structs, "structs", "Structs", "struct") }}
 +  {{ section_block(symbols.unions, "unions", "Unions", "union") }}
 +  {{ section_block(symbols.aliases, "aliases", "Aliases", "alias") }}
 +  {{ section_block(symbols.enums, "enums", "Enumerations", "enum") }}
 +  {{ section_block(symbols.bitfields, "bitfields", "Bitfields", "flags") }}
 +  {{ section_block(symbols.domains, "domains", "Error Domains", "error") }}
 +  {{ section_block(symbols.callbacks, "callbacks", "Callbacks", "callback") }}
 +  {{ section_block(symbols.functions, "functions", "Functions", "func") }}
 +  {{ section_block(symbols.function_macros, "function_macros", "Function Macros", "func") }}
 +  {{ section_block(symbols.constants, "constants", "Constants", "const") }}
 +</section>
 +{% endblock %}
index 62c4de2187f81ea96aaa9cb7ddf17957d6934165,0000000000000000000000000000000000000000..7df553624d74fbf96f9ee5630e2d96362bb3fab4
mode 100644,000000..100644
--- /dev/null
@@@ -1,72 -1,0 +1,72 @@@
-   version: '2021.9',
 +# SPDX-FileCopyrightText: 2021 GNOME Foundation
 +#
 +# SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
 +
 +project('gi-docgen',
++  version: '2022.2',
 +  meson_version: '>= 0.55.0',
 +)
 +
 +py = import('python').find_installation('python3',
 +  modules: [
 +    'jinja2',
 +    'markdown',
 +    'markupsafe',
 +    'pygments',
 +    'toml',
 +    'typogrify',
 +  ],
 +)
 +
 +configure_file(
 +  input: 'gi-docgen.py',
 +  output: 'gi-docgen',
 +  copy: true,
 +  install: not meson.is_subproject(),
 +  install_dir: get_option('bindir'),
 +)
 +
 +# When using gi-docgen as a sub-project
 +dummy_dep = declare_dependency()
 +meson.override_find_program('gi-docgen', find_program('gi-docgen.py'))
 +
 +pkgconf = configuration_data()
 +pkgconf.set('VERSION', meson.project_version())
 +configure_file(
 +  input: 'gi-docgen.pc.in',
 +  output: 'gi-docgen.pc',
 +  configuration: pkgconf,
 +  install: not meson.is_subproject(),
 +  install_dir: get_option('datadir') / 'pkgconfig',
 +)
 +
 +if not meson.is_subproject()
 +  install_subdir('gidocgen', install_dir: py.get_install_dir())
 +endif
 +
 +# Development tests should not be run when in a subproject
 +if get_option('development_tests') and not meson.is_subproject()
 +  flake8 = find_program('flake8', required: false)
 +  if flake8.found()
 +    test('flake8',
 +      flake8,
 +      args: [
 +        '--show-source',
 +        meson.current_source_dir() / 'gidocgen',
 +      ],
 +    )
 +  endif
 +
 +#  mypy = find_program('mypy', required: false)
 +#  if mypy.found()
 +#    test('mypy',
 +#      mypy,
 +#      args: [
 +#        '--ignore-missing-imports',
 +#        '--disallow-incomplete-defs',
 +#        meson.current_source_dir() / 'gidocgen',
 +#      ],
 +#      should_fail: true,
 +#    )
 +#  endif
 +endif
index 9a38aa6f6188b31cf261a096dbe72e5b119f194b,0000000000000000000000000000000000000000..e38ae79ad5eb6bf6b0d42ae1a887fb356a154d9e
mode 100644,000000..100644
--- /dev/null
@@@ -1,77 -1,0 +1,77 @@@
- from distutils.command.build_py import build_py as _build_py
 +# SPDX-FileCopyrightText: 2021 GNOME Foundation
 +# SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
 +
 +import sys
 +
 +if sys.version_info < (3, 6, 0):
 +    raise SystemExit('ERROR: GI-DocGen requires Python 3.6.0')
 +
 +from gidocgen.core import version
 +
++from setuptools.command.build_py import build_py as _build_py
 +from setuptools import setup
 +
 +
 +class BuildCommand(_build_py):
 +
 +    def generate_pkgconfig_file(self):
 +        lines = []
 +        with open('gi-docgen.pc.in', 'r') as f:
 +            for line in f.readlines():
 +                new_line = line.strip().replace('@VERSION@', version)
 +                lines.append(new_line)
 +        with open('gi-docgen.pc', 'w') as f:
 +            f.write('\n'.join(lines))
 +
 +    def run(self):
 +        self.generate_pkgconfig_file()
 +        return super().run()
 +
 +
 +def readme_md():
 +    '''Return the contents of the README.md file'''
 +    return open('README.md').read()
 +
 +
 +entries = {
 +    'console_scripts': ['gi-docgen=gidocgen.gidocmain:main'],
 +}
 +
 +packages = [
 +    'gidocgen',
 +    'gidocgen.gir',
 +]
 +
 +package_data = {
 +    'gidocgen': [
 +        "templates/basic/basic.toml",
 +        "templates/basic/*.css",
 +        "templates/basic/*.html",
 +        "templates/basic/*.js",
 +        "templates/basic/*.png",
 +        "templates/basic/*.woff2",
 +        "templates/basic/*.woff",
 +    ],
 +}
 +
 +data_files = [
 +    ('share/pkgconfig', ['gi-docgen.pc']),
 +    ('share/man/man1', ['docs/gi-docgen.1']),
 +]
 +
 +if __name__ == '__main__':
 +    setup(
 +        cmdclass={
 +            'build_py': BuildCommand,
 +        },
 +        name='gi-docgen',
 +        version=version,
 +        license='GPL-3.0-or-later AND Apache-2.0 AND CC0-1.0',
 +        long_description=readme_md(),
 +        long_description_content_type='text/markdown',
 +        include_package_data=True,
 +        packages=packages,
 +        package_data=package_data,
 +        entry_points=entries,
 +        data_files=data_files,
 +    )