/* Spacing system: generated by hh/dev/spacing-css.py from its table. Do not edit by hand: change the table there
   and run it. Loads after styles.css. Every rule starts with the same list of stacks, so they all weigh the same
   and their order decides: a later pair overrides the default above it. A hidden element never counts as a
   neighbour. The values are the --space-* tokens in tokens.css; docs/DESIGN-SYSTEM.md has the table in words. */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > * { --flow: var(--space-4); --overhang: 0px; margin-block: 0; }
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > * + * { margin-top: calc(var(--flow) + var(--overhang)); }
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :where([hidden]:first-child) + *, :is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :where([hidden]:first-child) + :where([hidden]) + * { margin-top: 0; }
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.tf, .tf-grid) { --overhang: var(--field-label-overhang); }
/* an empty container (a list not filled yet, a status line with nothing to say) takes no room and no gap;
   live regions stay, so what is put in them later is still announced */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :empty:not(input, textarea, select, img, svg, canvas, iframe, hr, [role=status], [role=alert], [aria-live]) { display: none; }
/* closer: a label or heading and what it heads */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(label:not(.chk, .lib-check), .srow-label, legend, h3:not(.dialog-title), h4, .sp-h, .lib-sub-s, .grp-label):not([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(label:not(.chk, .lib-check), .srow-label, legend, h3:not(.dialog-title), h4, .sp-h, .lib-sub-s, .grp-label):not([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(label:not(.chk, .lib-check), .srow-label, legend, h3:not(.dialog-title), h4, .sp-h, .lib-sub-s, .grp-label):not([hidden]) + :where([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(label:not(.chk, .lib-check), .srow-label, legend, h3:not(.dialog-title), h4, .sp-h, .lib-sub-s, .grp-label):not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(label:not(.chk, .lib-check), .srow-label, legend, h3:not(.dialog-title), h4, .sp-h, .lib-sub-s, .grp-label):not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + * { --flow: var(--space-2); }
/* a dialog's headline keeps 16 */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .dialog-title:not([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .dialog-title:not([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .dialog-title:not([hidden]) + :where([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .dialog-title:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .dialog-title:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + * { --flow: var(--space-4); }
/* help text and the controls around it */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.hint, .dialog-text, .empty):not([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.hint, .dialog-text, .empty):not([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.hint, .dialog-text, .empty):not([hidden]) + :where([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.hint, .dialog-text, .empty):not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.hint, .dialog-text, .empty):not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + * { --flow: var(--space-3); }
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :is(.hint, .dialog-text, .empty),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :is(.hint, .dialog-text, .empty),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .dialog-text, .empty),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .dialog-text, .empty),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .dialog-text, .empty) { --flow: var(--space-3); }
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(label:not(.chk, .lib-check), .srow-label, legend, h3:not(.dialog-title), h4, .sp-h, .lib-sub-s, .grp-label):not([hidden]) + :is(.hint, .dialog-text, .empty),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(label:not(.chk, .lib-check), .srow-label, legend, h3:not(.dialog-title), h4, .sp-h, .lib-sub-s, .grp-label):not([hidden]) + :where([hidden]) + :is(.hint, .dialog-text, .empty),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(label:not(.chk, .lib-check), .srow-label, legend, h3:not(.dialog-title), h4, .sp-h, .lib-sub-s, .grp-label):not([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .dialog-text, .empty),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(label:not(.chk, .lib-check), .srow-label, legend, h3:not(.dialog-title), h4, .sp-h, .lib-sub-s, .grp-label):not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .dialog-text, .empty),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(label:not(.chk, .lib-check), .srow-label, legend, h3:not(.dialog-title), h4, .sp-h, .lib-sub-s, .grp-label):not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .dialog-text, .empty) { --flow: var(--space-2); }
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .dialog-title:not([hidden]) + :is(.hint, .dialog-text),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .dialog-title:not([hidden]) + :where([hidden]) + :is(.hint, .dialog-text),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .dialog-title:not([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .dialog-text),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .dialog-title:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .dialog-text),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .dialog-title:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .dialog-text) { --flow: var(--space-4); }
/* supporting text belongs to its field or checkbox */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.tf, .tf-grid, .chk):not([hidden]) + :is(.hint, .tf-help),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.tf, .tf-grid, .chk):not([hidden]) + :where([hidden]) + :is(.hint, .tf-help),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.tf, .tf-grid, .chk):not([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .tf-help),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.tf, .tf-grid, .chk):not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .tf-help),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > :is(.tf, .tf-grid, .chk):not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.hint, .tf-help) { --flow: var(--space-1); }
/* buttons stacked */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .btn:not([hidden]) + .btn,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .btn:not([hidden]) + :where([hidden]) + .btn,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .btn:not([hidden]) + :where([hidden]) + :where([hidden]) + .btn,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .btn:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + .btn,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .btn:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + .btn { --flow: var(--space-2); }
/* checkboxes in a run: each is a 40px row, so the run reads as one list */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .chk:not([hidden]) + .chk,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .chk:not([hidden]) + :where([hidden]) + .chk,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .chk:not([hidden]) + :where([hidden]) + :where([hidden]) + .chk,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .chk:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + .chk,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > .chk:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + .chk { --flow: 0px; }
/* farther: a new section */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :is(.srow, label.sub, .sup-fs),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :is(.srow, label.sub, .sup-fs),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :where([hidden]) + :is(.srow, label.sub, .sup-fs),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.srow, label.sub, .sup-fs),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.srow, label.sub, .sup-fs) { --flow: var(--space-6); }
/* a dialog's actions */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + div.dialog-actions,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + div.dialog-actions,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :where([hidden]) + div.dialog-actions,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + div.dialog-actions,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack) > *:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + div.dialog-actions { --flow: var(--space-6); }
/* a sheet's own top level: its head, then content */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > .settings-head:not([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > .settings-head:not([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > .settings-head:not([hidden]) + :where([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > .settings-head:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + *,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > .settings-head:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + * { --flow: var(--space-4); }
/* drawers in a run touch: the rule between them is the separator */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > :is(.acc, .setgrp):not([hidden]) + :is(.acc, .setgrp),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > :is(.acc, .setgrp):not([hidden]) + :where([hidden]) + :is(.acc, .setgrp),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > :is(.acc, .setgrp):not([hidden]) + :where([hidden]) + :where([hidden]) + :is(.acc, .setgrp),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > :is(.acc, .setgrp):not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.acc, .setgrp),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > :is(.acc, .setgrp):not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :is(.acc, .setgrp) { --flow: 0px; }
/* the version line, then the copyright line under it */
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > *:not([hidden]) + .settings-foot:not(.copy),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > *:not([hidden]) + :where([hidden]) + .settings-foot:not(.copy),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > *:not([hidden]) + :where([hidden]) + :where([hidden]) + .settings-foot:not(.copy),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > *:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + .settings-foot:not(.copy),
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > *:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + .settings-foot:not(.copy) { --flow: var(--space-6); }
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > .settings-foot:not([hidden]) + .settings-foot,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > .settings-foot:not([hidden]) + :where([hidden]) + .settings-foot,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > .settings-foot:not([hidden]) + :where([hidden]) + :where([hidden]) + .settings-foot,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > .settings-foot:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + .settings-foot,
:is(.settings, .srow, .settings:not(.help) .acc-body, .settings .sub-acc-body, .grp-body, .dialog-box, .sup-fs, .stack).settings > .settings-foot:not([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + :where([hidden]) + .settings-foot { --flow: var(--space-1); }
