/* Automatic theme source: start. */
/* Solarized: https://github.com/altercation/vim-colors-solarized (MIT). */
:root {
  color-scheme: dark;

  --base03: #002b36;
  --base02: #073642;
  --base01: #586e75;
  --base00: #657b83;
  --base0: #839496;
  --base1: #93a1a1;
  --base2: #eee8d5;
  --base3: #fdf6e3;
  --yellow: #b58900;
  --orange: #cb4b16;
  --red: #dc322f;
  --magenta: #d33682;
  --violet: #6c71c4;
  --blue: #268bd2;
  --cyan: #2aa198;
  --green: #859900;
}

/* Selenized: https://github.com/jan-warchol/selenized (MIT). */
body:has(#theme-selenized-dark:checked) {
  color-scheme: dark;

  --base03: #103c48;
  --base02: #184956;
  --base01: #72898f;
  --base00: #adbcbc;
  --base0: #adbcbc;
  --base1: #cad8d9;
  --base2: #2d5b69;
  --base3: #cad8d9;
  --yellow: #dbb32d;
  --orange: #ed8649;
  --red: #fa5750;
  --magenta: #f275be;
  --violet: #af88eb;
  --blue: #4695f7;
  --cyan: #41c7b9;
  --green: #75b938;
}

body:has(#theme-selenized-black:checked) {
  color-scheme: dark;

  --base03: #181818;
  --base02: #252525;
  --base01: #777777;
  --base00: #b9b9b9;
  --base0: #b9b9b9;
  --base1: #dedede;
  --base2: #3b3b3b;
  --base3: #dedede;
  --yellow: #dbb32d;
  --orange: #e67f43;
  --red: #ed4a46;
  --magenta: #eb6eb7;
  --violet: #a580e2;
  --blue: #368aeb;
  --cyan: #3fc5b7;
  --green: #70b433;
}

body:has(#theme-selenized-light:checked) {
  --base03: #3a4d53;
  --base02: #53676d;
  --base01: #909995;
  --base00: #53676d;
  --base0: #909995;
  --base1: #d5cdb6;
  --base2: #ece3cc;
  --base3: #fbf3db;
  --yellow: #ad8900;
  --orange: #c25d1e;
  --red: #d2212d;
  --magenta: #ca4898;
  --violet: #8762c6;
  --blue: #0072d4;
  --cyan: #009c8f;
  --green: #489100;
}

body:has(#theme-selenized-white:checked) {
  --base03: #282828;
  --base02: #474747;
  --base01: #878787;
  --base00: #474747;
  --base0: #878787;
  --base1: #cdcdcd;
  --base2: #ebebeb;
  --base3: #ffffff;
  --yellow: #c49700;
  --orange: #d04a00;
  --red: #d6000c;
  --magenta: #dd0f9d;
  --violet: #7f51d6;
  --blue: #0064e4;
  --cyan: #00ad9c;
  --green: #1d9700;
}

/* OKSolar: https://meat.io/oksolar (CC0-1.0). */
body:has(#theme-oksolar-dark:checked),
body:has(#theme-oksolar-light:checked) {
  --base03: #002d38;
  --base02: #093946;
  --base01: #5b7279;
  --base00: #657377;
  --base0: #98a8a8;
  --base1: #8faaab;
  --base2: #f1e9d2;
  --base3: #fbf7ef;
  --yellow: #ac8300;
  --orange: #d56500;
  --red: #f23749;
  --magenta: #dd459d;
  --violet: #7d80d1;
  --blue: #2b90d8;
  --cyan: #259d94;
  --green: #819500;
}

/* Gruvbox Material: https://github.com/sainnhe/gruvbox-material (MIT). */
body:has(#theme-gruvbox-material-hard-dark:checked),
body:has(#theme-gruvbox-mix-hard-dark:checked),
body:has(#theme-gruvbox-original-hard-dark:checked) {
  color-scheme: dark;

  --base03: #1d2021;
  --base02: #282828;
  --base01: #504945;
  --base2: #3c3836;
}

body:has(#theme-gruvbox-material-medium-dark:checked),
body:has(#theme-gruvbox-mix-medium-dark:checked),
body:has(#theme-gruvbox-original-medium-dark:checked) {
  color-scheme: dark;

  --base03: #282828;
  --base02: #32302f;
  --base01: #5a524c;
  --base2: #45403d;
}

body:has(#theme-gruvbox-material-soft-dark:checked),
body:has(#theme-gruvbox-mix-soft-dark:checked),
body:has(#theme-gruvbox-original-soft-dark:checked) {
  color-scheme: dark;

  --base03: #32302f;
  --base02: #3c3836;
  --base01: #665c54;
  --base2: #504945;
}

body:has(#theme-gruvbox-material-hard-light:checked),
body:has(#theme-gruvbox-mix-hard-light:checked),
body:has(#theme-gruvbox-original-hard-light:checked) {
  --base1: #ebdbb2;
  --base2: #f5edca;
  --base3: #f9f5d7;
}

body:has(#theme-gruvbox-material-medium-light:checked),
body:has(#theme-gruvbox-mix-medium-light:checked),
body:has(#theme-gruvbox-original-medium-light:checked) {
  --base1: #ddccab;
  --base2: #f4e8be;
  --base3: #fbf1c7;
}

body:has(#theme-gruvbox-material-soft-light:checked),
body:has(#theme-gruvbox-mix-soft-light:checked),
body:has(#theme-gruvbox-original-soft-light:checked) {
  --base1: #d5c4a1;
  --base2: #eddeb5;
  --base3: #f2e5bc;
}

body:has(#theme-gruvbox-material-hard-dark:checked),
body:has(#theme-gruvbox-material-medium-dark:checked),
body:has(#theme-gruvbox-material-soft-dark:checked) {
  --base00: #928374;
  --base0: #ddc7a1;
  --base1: #d4be98;
  --base3: #ddc7a1;
  --yellow: #d8a657;
  --orange: #e78a4e;
  --red: #ea6962;
  --magenta: #d3869b;
  --violet: #d3869b;
  --blue: #7daea3;
  --cyan: #89b482;
  --green: #a9b665;
}

body:has(#theme-gruvbox-material-hard-light:checked),
body:has(#theme-gruvbox-material-medium-light:checked),
body:has(#theme-gruvbox-material-soft-light:checked) {
  --base03: #4f3829;
  --base02: #7c6f64;
  --base01: #928374;
  --base00: #654735;
  --base0: #928374;
  --yellow: #b47109;
  --orange: #c35e0a;
  --red: #c14a4a;
  --magenta: #945e80;
  --violet: #945e80;
  --blue: #45707a;
  --cyan: #4c7a5d;
  --green: #6c782e;
}

body:has(#theme-gruvbox-mix-hard-dark:checked),
body:has(#theme-gruvbox-mix-medium-dark:checked),
body:has(#theme-gruvbox-mix-soft-dark:checked) {
  --base00: #928374;
  --base0: #e2cca9;
  --base1: #e2cca9;
  --base3: #e2cca9;
  --yellow: #e9b143;
  --orange: #f28534;
  --red: #f2594b;
  --magenta: #d3869b;
  --violet: #d3869b;
  --blue: #80aa9e;
  --cyan: #8bba7f;
  --green: #b0b846;
}

body:has(#theme-gruvbox-mix-hard-light:checked),
body:has(#theme-gruvbox-mix-medium-light:checked),
body:has(#theme-gruvbox-mix-soft-light:checked) {
  --base03: #514036;
  --base02: #7c6f64;
  --base01: #928374;
  --base00: #514036;
  --base0: #928374;
  --yellow: #b4730e;
  --orange: #b94c07;
  --red: #af2528;
  --magenta: #924f79;
  --violet: #924f79;
  --blue: #266b79;
  --cyan: #477a5b;
  --green: #72761e;
}

body:has(#theme-gruvbox-original-hard-dark:checked),
body:has(#theme-gruvbox-original-medium-dark:checked),
body:has(#theme-gruvbox-original-soft-dark:checked) {
  --base00: #928374;
  --base0: #ebdbb2;
  --base1: #ebdbb2;
  --base3: #ebdbb2;
  --yellow: #fabd2f;
  --orange: #fe8019;
  --red: #fb4934;
  --magenta: #d3869b;
  --violet: #d3869b;
  --blue: #83a598;
  --cyan: #8ec07c;
  --green: #b8bb26;
}

body:has(#theme-gruvbox-original-hard-light:checked),
body:has(#theme-gruvbox-original-medium-light:checked),
body:has(#theme-gruvbox-original-soft-light:checked) {
  --base03: #3c3836;
  --base02: #7c6f64;
  --base01: #928374;
  --base00: #3c3836;
  --base0: #928374;
  --yellow: #b57614;
  --orange: #af3a03;
  --red: #9d0006;
  --magenta: #8f3f71;
  --violet: #8f3f71;
  --blue: #076678;
  --cyan: #427b58;
  --green: #79740e;
}

/* Tomorrow: https://github.com/chriskempson/tomorrow-theme (MIT). */
body:has(#theme-tomorrow:checked) {
  --base03: #1d1f21;
  --base02: #373b41;
  --base01: #8e908c;
  --base00: #4d4d4c;
  --base0: #8e908c;
  --base1: #c5c8c6;
  --base2: #efefef;
  --base3: #ffffff;
  --yellow: #eab700;
  --orange: #f5871f;
  --red: #c82829;
  --magenta: #8959a8;
  --violet: #8959a8;
  --blue: #4271ae;
  --cyan: #3e999f;
  --green: #718c00;
}

body:has(#theme-tomorrow-night:checked) {
  --base03: #1d1f21;
  --base02: #282a2e;
  --base01: #969896;
  --base00: #b4b7b4;
  --base0: #c5c8c6;
  --base1: #e0e0e0;
  --base2: #373b41;
  --base3: #ffffff;
  --yellow: #f0c674;
  --orange: #de935f;
  --red: #cc6666;
  --magenta: #b294bb;
  --violet: #b294bb;
  --blue: #81a2be;
  --cyan: #8abeb7;
  --green: #b5bd68;
}

body:has(#theme-tomorrow-eighties:checked) {
  --base03: #2d2d2d;
  --base02: #393939;
  --base01: #999999;
  --base00: #cccccc;
  --base0: #cccccc;
  --base1: #e0e0e0;
  --base2: #515151;
  --base3: #ffffff;
  --yellow: #ffcc66;
  --orange: #f99157;
  --red: #f2777a;
  --magenta: #cc99cc;
  --violet: #cc99cc;
  --blue: #6699cc;
  --cyan: #66cccc;
  --green: #99cc99;
}

body:has(#theme-tomorrow-blue:checked) {
  --base03: #002451;
  --base02: #00346e;
  --base01: #7285b7;
  --base00: #ffffff;
  --base0: #ffffff;
  --base1: #ffffff;
  --base2: #003f8e;
  --base3: #ffffff;
  --yellow: #ffeead;
  --orange: #ffc58f;
  --red: #ff9da4;
  --magenta: #ebbbff;
  --violet: #ebbbff;
  --blue: #bbdaff;
  --cyan: #99ffff;
  --green: #d1f1a9;
}

body:has(#theme-tomorrow-bright:checked) {
  --base03: #000000;
  --base02: #2a2a2a;
  --base01: #969896;
  --base00: #eaeaea;
  --base0: #eaeaea;
  --base1: #ffffff;
  --base2: #424242;
  --base3: #ffffff;
  --yellow: #e7c547;
  --orange: #e78c45;
  --red: #d54e53;
  --magenta: #c397d8;
  --violet: #c397d8;
  --blue: #7aa6da;
  --cyan: #70c0b1;
  --green: #b9ca4a;
}

/* Nord: https://github.com/nordtheme/vim (MIT). */
body:has(#theme-nord:checked) {
  --base03: #2e3440;
  --base02: #3b4252;
  --base01: #4c566a;
  --base00: #d8dee9;
  --base0: #d8dee9;
  --base1: #e5e9f0;
  --base2: #434c5e;
  --base3: #eceff4;
  --yellow: #ebcb8b;
  --orange: #d08770;
  --red: #bf616a;
  --magenta: #b48ead;
  --violet: #b48ead;
  --blue: #81a1c1;
  --cyan: #88c0d0;
  --green: #a3be8c;
}

/* Everforest: https://github.com/sainnhe/everforest (MIT). */
body:has(#theme-everforest-hard-dark:checked) {
  --base03: #272e33;
  --base02: #2e383c;
  --base01: #7a8478;
  --base00: #9da9a0;
  --base0: #d3c6aa;
  --base1: #d3c6aa;
  --base2: #414b50;
  --base3: #d3c6aa;
  --yellow: #dbbc7f;
  --orange: #e69875;
  --red: #e67e80;
  --magenta: #d699b6;
  --violet: #d699b6;
  --blue: #7fbbb3;
  --cyan: #83c092;
  --green: #a7c080;
}

body:has(#theme-everforest-dark:checked) {
  --base03: #2d353b;
  --base02: #343f44;
  --base01: #7a8478;
  --base00: #9da9a0;
  --base0: #d3c6aa;
  --base1: #d3c6aa;
  --base2: #475258;
  --base3: #d3c6aa;
  --yellow: #dbbc7f;
  --orange: #e69875;
  --red: #e67e80;
  --magenta: #d699b6;
  --violet: #d699b6;
  --blue: #7fbbb3;
  --cyan: #83c092;
  --green: #a7c080;
}

body:has(#theme-everforest-soft-dark:checked) {
  --base03: #333c43;
  --base02: #3a464c;
  --base01: #7a8478;
  --base00: #9da9a0;
  --base0: #d3c6aa;
  --base1: #d3c6aa;
  --base2: #4d5960;
  --base3: #d3c6aa;
  --yellow: #dbbc7f;
  --orange: #e69875;
  --red: #e67e80;
  --magenta: #d699b6;
  --violet: #d699b6;
  --blue: #7fbbb3;
  --cyan: #83c092;
  --green: #a7c080;
}

body:has(#theme-everforest-hard-light:checked) {
  --base03: #5c6a72;
  --base02: #708089;
  --base01: #829181;
  --base00: #5c6a72;
  --base0: #939f91;
  --base1: #bec5b2;
  --base2: #f8f5e4;
  --base3: #fffbef;
  --yellow: #dfa000;
  --orange: #f57d26;
  --red: #f85552;
  --magenta: #df69ba;
  --violet: #df69ba;
  --blue: #3a94c5;
  --cyan: #35a77c;
  --green: #8da101;
}

body:has(#theme-everforest-light:checked) {
  --base03: #5c6a72;
  --base02: #708089;
  --base01: #829181;
  --base00: #5c6a72;
  --base0: #939f91;
  --base1: #bdc3af;
  --base2: #f4f0d9;
  --base3: #fdf6e3;
  --yellow: #dfa000;
  --orange: #f57d26;
  --red: #f85552;
  --magenta: #df69ba;
  --violet: #df69ba;
  --blue: #3a94c5;
  --cyan: #35a77c;
  --green: #8da101;
}

body:has(#theme-everforest-soft-light:checked) {
  --base03: #5c6a72;
  --base02: #708089;
  --base01: #829181;
  --base00: #5c6a72;
  --base0: #939f91;
  --base1: #b9c0ab;
  --base2: #eae4ca;
  --base3: #f3ead3;
  --yellow: #dfa000;
  --orange: #f57d26;
  --red: #f85552;
  --magenta: #df69ba;
  --violet: #df69ba;
  --blue: #3a94c5;
  --cyan: #35a77c;
  --green: #8da101;
}

/* Edge: https://github.com/sainnhe/edge (MIT). */
body:has(#theme-edge-dark:checked) {
  color-scheme: dark;

  --base03: #2c2e34;
  --base02: #33353f;
  --base01: #535c6a;
  --base00: #758094;
  --base0: #c5cdd9;
  --base1: #758094;
  --base2: #3b3e48;
  --base3: #c5cdd9;
  --yellow: #deb974;
  --orange: #deb974;
  --red: #ec7279;
  --magenta: #d38aea;
  --violet: #d38aea;
  --blue: #6cb6eb;
  --cyan: #5dbbc1;
  --green: #a0c980;
}

body:has(#theme-edge-aura:checked) {
  color-scheme: dark;

  --base03: #2b2d37;
  --base02: #333644;
  --base01: #535c6a;
  --base00: #758094;
  --base0: #c5cdd9;
  --base1: #758094;
  --base2: #3a3e4e;
  --base3: #c5cdd9;
  --yellow: #deb974;
  --orange: #deb974;
  --red: #ec7279;
  --magenta: #d38aea;
  --violet: #d38aea;
  --blue: #6cb6eb;
  --cyan: #5dbbc1;
  --green: #a0c980;
}

body:has(#theme-edge-neon:checked) {
  color-scheme: dark;

  --base03: #2b2d3a;
  --base02: #333648;
  --base01: #535c6a;
  --base00: #758094;
  --base0: #c5cdd9;
  --base1: #758094;
  --base2: #393e53;
  --base3: #c5cdd9;
  --yellow: #deb974;
  --orange: #deb974;
  --red: #ec7279;
  --magenta: #d38aea;
  --violet: #d38aea;
  --blue: #6cb6eb;
  --cyan: #5dbbc1;
  --green: #a0c980;
}

body:has(#theme-edge-aura-dim:checked) {
  color-scheme: dark;

  --base03: #2b2d37;
  --base02: #333644;
  --base01: #4f5868;
  --base00: #677287;
  --base0: #97a4b5;
  --base1: #677287;
  --base2: #3a3e4e;
  --base3: #97a4b5;
  --yellow: #deb974;
  --orange: #deb974;
  --red: #ec7279;
  --magenta: #d38aea;
  --violet: #d38aea;
  --blue: #6cb6eb;
  --cyan: #5dbbc1;
  --green: #a0c980;
}

body:has(#theme-edge-light:checked) {
  --base03: #4b505b;
  --base02: #8790a0;
  --base01: #bac3cb;
  --base00: #4b505b;
  --base0: #8790a0;
  --base1: #dde2e7;
  --base2: #eef1f4;
  --base3: #fafafa;
  --yellow: #be7e05;
  --orange: #be7e05;
  --red: #d05858;
  --magenta: #b05ccc;
  --violet: #b05ccc;
  --blue: #5079be;
  --cyan: #3a8b84;
  --green: #608e32;
}

/* Sonokai: https://github.com/sainnhe/sonokai (MIT). */
body:has(#theme-sonokai:checked) {
  color-scheme: dark;

  --base03: #2c2e34;
  --base02: #33353f;
  --base01: #595f6f;
  --base00: #7f8490;
  --base0: #e2e2e3;
  --base1: #7f8490;
  --base2: #3b3e48;
  --base3: #e2e2e3;
  --yellow: #e7c664;
  --orange: #f39660;
  --red: #fc5d7c;
  --magenta: #b39df3;
  --violet: #b39df3;
  --blue: #76cce0;
  --cyan: #76cce0;
  --green: #9ed072;
}

body:has(#theme-sonokai-atlantis:checked) {
  color-scheme: dark;

  --base03: #2a2f38;
  --base02: #333846;
  --base01: #5a6477;
  --base00: #828a9a;
  --base0: #e1e3e4;
  --base1: #828a9a;
  --base2: #3d4455;
  --base3: #e1e3e4;
  --yellow: #eacb64;
  --orange: #f69c5e;
  --red: #ff6578;
  --magenta: #ba9cf3;
  --violet: #ba9cf3;
  --blue: #72cce8;
  --cyan: #72cce8;
  --green: #9dd274;
}

body:has(#theme-sonokai-andromeda:checked) {
  color-scheme: dark;

  --base03: #2b2d3a;
  --base02: #333648;
  --base01: #5a5e7a;
  --base00: #7e8294;
  --base0: #e1e3e4;
  --base1: #7e8294;
  --base2: #393e53;
  --base3: #e1e3e4;
  --yellow: #edc763;
  --orange: #f89860;
  --red: #fb617e;
  --magenta: #bb97ee;
  --violet: #bb97ee;
  --blue: #6dcae8;
  --cyan: #6dcae8;
  --green: #9ed06c;
}

body:has(#theme-sonokai-shusia:checked) {
  color-scheme: dark;

  --base03: #2d2a2e;
  --base02: #37343a;
  --base01: #605d68;
  --base00: #848089;
  --base0: #e3e1e4;
  --base1: #848089;
  --base2: #423f46;
  --base3: #e3e1e4;
  --yellow: #e5c463;
  --orange: #ef9062;
  --red: #f85e84;
  --magenta: #ab9df2;
  --violet: #ab9df2;
  --blue: #7accd7;
  --cyan: #7accd7;
  --green: #9ecd6f;
}

body:has(#theme-sonokai-maia:checked) {
  color-scheme: dark;

  --base03: #273136;
  --base02: #313b42;
  --base01: #55626d;
  --base00: #82878b;
  --base0: #e1e2e3;
  --base1: #82878b;
  --base2: #3a444b;
  --base3: #e1e2e3;
  --yellow: #e3d367;
  --orange: #f3a96a;
  --red: #f76c7c;
  --magenta: #baa0f8;
  --violet: #baa0f8;
  --blue: #78cee9;
  --cyan: #78cee9;
  --green: #9cd57b;
}

body:has(#theme-sonokai-espresso:checked) {
  color-scheme: dark;

  --base03: #312c2b;
  --base02: #393230;
  --base01: #6a5e59;
  --base00: #90817b;
  --base0: #e4e3e1;
  --base1: #90817b;
  --base2: #49403c;
  --base3: #e4e3e1;
  --yellow: #f0c66f;
  --orange: #f08d71;
  --red: #f86882;
  --magenta: #9fa0e1;
  --violet: #9fa0e1;
  --blue: #81d0c9;
  --cyan: #81d0c9;
  --green: #a6cd77;
}

/* Spring Night: https://github.com/rhysd/vim-color-spring-night (MIT). */
body:has(#theme-spring-night:checked) {
  color-scheme: dark;

  --base03: #334152;
  --base02: #3a4b5c;
  --base01: #607080;
  --base00: #788898;
  --base0: #fffeeb;
  --base1: #8d9eb2;
  --base2: #3a4b5c;
  --base3: #fffeeb;
  --yellow: #fedf81;
  --orange: #f0aa8a;
  --red: #fd8489;
  --magenta: #e7d5ff;
  --violet: #e7d5ff;
  --blue: #a8d2eb;
  --cyan: #a8d2eb;
  --green: #a9dd9d;
}

body:has(#theme-spring-night-high-contrast:checked) {
  color-scheme: dark;

  --base03: #132132;
  --base02: #213243;
  --base01: #607080;
  --base00: #788898;
  --base0: #fffeeb;
  --base1: #8d9eb2;
  --base2: #3a4b5c;
  --base3: #fffeeb;
  --yellow: #fedf81;
  --orange: #f0aa8a;
  --red: #fd8489;
  --magenta: #e7d5ff;
  --violet: #e7d5ff;
  --blue: #a8d2eb;
  --cyan: #a8d2eb;
  --green: #a9dd9d;
}

/* Ayu: https://github.com/ayu-theme/ayu-colors (MIT). */
body:has(#theme-ayu-dark:checked) {
  --base03: #0a0e14;
  --base02: #0d1017;
  --base01: #626a73;
  --base00: #b3b1ad;
  --base0: #b3b1ad;
  --base1: #e6e1cf;
  --base2: #11151c;
  --base3: #e6e1cf;
  --yellow: #e6b450;
  --orange: #ff8f40;
  --red: #ff3333;
  --magenta: #d2a6ff;
  --violet: #d2a6ff;
  --blue: #59c2ff;
  --cyan: #95e6cb;
  --green: #aad94c;
}

body:has(#theme-ayu-mirage:checked) {
  --base03: #1f2430;
  --base02: #242936;
  --base01: #5c6773;
  --base00: #cbccc6;
  --base0: #cbccc6;
  --base1: #f3f4f5;
  --base2: #2a3040;
  --base3: #f3f4f5;
  --yellow: #ffd580;
  --orange: #ffa759;
  --red: #ff3333;
  --magenta: #d4bfff;
  --violet: #d4bfff;
  --blue: #73d0ff;
  --cyan: #95e6cb;
  --green: #bae67e;
}

body:has(#theme-ayu-light:checked) {
  --base03: #5c6773;
  --base02: #8a9199;
  --base01: #abb0b6;
  --base00: #5c6773;
  --base0: #8a9199;
  --base1: #f0f0f0;
  --base2: #f3f4f5;
  --base3: #fcfcfc;
  --yellow: #a37acc;
  --orange: #fa8d3e;
  --red: #f51818;
  --magenta: #a37acc;
  --violet: #a37acc;
  --blue: #399ee6;
  --cyan: #4cbf99;
  --green: #86b300;
}

/* Catppuccin: https://github.com/catppuccin/nvim (MIT). */
body:has(#theme-catppuccin-latte:checked) {
  --base03: #4c4f69;
  --base02: #5c5f77;
  --base01: #8c8fa1;
  --base00: #4c4f69;
  --base0: #6c6f85;
  --base1: #bcc0cc;
  --base2: #e6e9ef;
  --base3: #eff1f5;
  --yellow: #df8e1d;
  --orange: #fe640b;
  --red: #d20f39;
  --magenta: #ea76cb;
  --violet: #8839ef;
  --blue: #1e66f5;
  --cyan: #179299;
  --green: #40a02b;
}

body:has(#theme-catppuccin-frappe:checked) {
  --base03: #303446;
  --base02: #414559;
  --base01: #838ba7;
  --base00: #a5adce;
  --base0: #c6d0f5;
  --base1: #b5bfe2;
  --base2: #292c3c;
  --base3: #c6d0f5;
  --yellow: #e5c890;
  --orange: #ef9f76;
  --red: #e78284;
  --magenta: #f4b8e4;
  --violet: #ca9ee6;
  --blue: #8caaee;
  --cyan: #81c8be;
  --green: #a6d189;
}

body:has(#theme-catppuccin-macchiato:checked) {
  --base03: #24273a;
  --base02: #363a4f;
  --base01: #8087a2;
  --base00: #a5adcb;
  --base0: #cad3f5;
  --base1: #b8c0e0;
  --base2: #1e2030;
  --base3: #cad3f5;
  --yellow: #eed49f;
  --orange: #f5a97f;
  --red: #ed8796;
  --magenta: #f5bde6;
  --violet: #c6a0f6;
  --blue: #8aadf4;
  --cyan: #8bd5ca;
  --green: #a6da95;
}

body:has(#theme-catppuccin-mocha:checked) {
  --base03: #1e1e2e;
  --base02: #313244;
  --base01: #7f849c;
  --base00: #a6adc8;
  --base0: #cdd6f4;
  --base1: #bac2de;
  --base2: #181825;
  --base3: #cdd6f4;
  --yellow: #f9e2af;
  --orange: #fab387;
  --red: #f38ba8;
  --magenta: #f5c2e7;
  --violet: #cba6f7;
  --blue: #89b4fa;
  --cyan: #94e2d5;
  --green: #a6e3a1;
}

/* Rose Pine: https://github.com/rose-pine/neovim (MIT). */
body:has(#theme-rose-pine:checked) {
  --base03: #191724;
  --base02: #1f1d2e;
  --base01: #6e6a86;
  --base00: #908caa;
  --base0: #e0def4;
  --base1: #908caa;
  --base2: #26233a;
  --base3: #e0def4;
  --yellow: #f6c177;
  --orange: #ebbcba;
  --red: #eb6f92;
  --magenta: #c4a7e7;
  --violet: #c4a7e7;
  --blue: #31748f;
  --cyan: #9ccfd8;
  --green: #9ccfd8;
}

body:has(#theme-rose-pine-moon:checked) {
  --base03: #232136;
  --base02: #2a273f;
  --base01: #6e6a86;
  --base00: #908caa;
  --base0: #e0def4;
  --base1: #908caa;
  --base2: #393552;
  --base3: #e0def4;
  --yellow: #f6c177;
  --orange: #ea9a97;
  --red: #eb6f92;
  --magenta: #c4a7e7;
  --violet: #c4a7e7;
  --blue: #3e8fb0;
  --cyan: #9ccfd8;
  --green: #9ccfd8;
}

body:has(#theme-rose-pine-dawn:checked) {
  --base03: #464261;
  --base02: #797593;
  --base01: #9893a5;
  --base00: #464261;
  --base0: #797593;
  --base1: #f2e9e1;
  --base2: #fffaf3;
  --base3: #faf4ed;
  --yellow: #ea9d34;
  --orange: #d7827e;
  --red: #b4637a;
  --magenta: #907aa9;
  --violet: #907aa9;
  --blue: #286983;
  --cyan: #56949f;
  --green: #56949f;
}

/*
 * Theme role mapping
 * ------------------
 * Palette values above retain their upstream values.  The mappings below
 * follow each editor theme's Normal, panel/menu, Visual, Title, and standard
 * syntax highlight groups.  Arachnopress classes consume only the stable
 * --theme-* and --syntax-* roles defined here.
 */

/* Solarized Vim roles: Normal, Comment, Statement, PreProc, Type, Special. */
body:has(#theme-solarized-dark:checked) {
  --theme-normal-bg: var(--base03);
  --theme-panel-bg: var(--base02);
  --theme-normal-fg: var(--base0);
  --theme-panel-fg: var(--base0);
  --theme-muted-fg: var(--base01);
  --theme-border: var(--base00);
  --theme-selection-bg: var(--base01);
  --theme-selection-fg: var(--base03);
  --theme-title: var(--orange);
}

body:has(#theme-solarized-light:checked) {
  --theme-normal-bg: var(--base3);
  --theme-panel-bg: var(--base2);
  --theme-normal-fg: var(--base00);
  --theme-panel-fg: var(--base00);
  --theme-muted-fg: var(--base1);
  --theme-border: var(--base0);
  --theme-selection-bg: var(--base1);
  --theme-selection-fg: var(--base3);
  --theme-title: var(--orange);
}

body:has(#theme-solarized-dark:checked),
body:has(#theme-solarized-light:checked) {
  --syntax-normal: var(--base0);
  --syntax-comment: var(--base01);
  --syntax-keyword: var(--green);
  --syntax-type: var(--yellow);
  --syntax-preproc: var(--orange);
  --syntax-string: var(--cyan);
  --syntax-regexp: var(--cyan);
  --syntax-special: var(--red);
  --syntax-function: var(--blue);
  --syntax-number: var(--cyan);
  --syntax-identifier: var(--blue);
  --syntax-builtin: var(--red);
  --syntax-tag: var(--red);
  --syntax-class: var(--yellow);
  --syntax-decorator: var(--violet);
  --syntax-exception: var(--green);
  --syntax-constant: var(--cyan);
  --syntax-operator: var(--green);
  --syntax-error: var(--red);
  --syntax-inserted: var(--green);
  --syntax-deleted: var(--red);
  --syntax-heading: var(--orange);
  --syntax-subheading: var(--blue);
}

body:has(#theme-solarized-light:checked) {
  --syntax-normal: var(--base00);
  --syntax-comment: var(--base1);
}

/* Gruvbox Material generic Vim roles. */
body:has(#theme-gruvbox-material-hard-dark:checked),
body:has(#theme-gruvbox-material-medium-dark:checked),
body:has(#theme-gruvbox-material-soft-dark:checked),
body:has(#theme-gruvbox-mix-hard-dark:checked),
body:has(#theme-gruvbox-mix-medium-dark:checked),
body:has(#theme-gruvbox-mix-soft-dark:checked),
body:has(#theme-gruvbox-original-hard-dark:checked),
body:has(#theme-gruvbox-original-medium-dark:checked),
body:has(#theme-gruvbox-original-soft-dark:checked) {
  --gruvbox-bg0: var(--base03);
  --gruvbox-bg1: var(--base02);
  --gruvbox-bg3: var(--base2);
  --gruvbox-bg5: var(--base01);
  --gruvbox-fg0: var(--base1);
  --gruvbox-fg1: var(--base0);
  --gruvbox-grey1: var(--base00);
}

body:has(#theme-gruvbox-material-hard-light:checked),
body:has(#theme-gruvbox-material-medium-light:checked),
body:has(#theme-gruvbox-material-soft-light:checked),
body:has(#theme-gruvbox-mix-hard-light:checked),
body:has(#theme-gruvbox-mix-medium-light:checked),
body:has(#theme-gruvbox-mix-soft-light:checked),
body:has(#theme-gruvbox-original-hard-light:checked),
body:has(#theme-gruvbox-original-medium-light:checked),
body:has(#theme-gruvbox-original-soft-light:checked) {
  --gruvbox-bg0: var(--base3);
  --gruvbox-bg1: var(--base2);
  --gruvbox-bg3: var(--base2);
  --gruvbox-bg5: var(--base1);
  --gruvbox-fg0: var(--base00);
  --gruvbox-fg1: var(--base03);
  --gruvbox-grey1: var(--base0);
}

body:has(#theme-gruvbox-material-hard-light:checked),
body:has(#theme-gruvbox-mix-hard-light:checked),
body:has(#theme-gruvbox-original-hard-light:checked) {
  --gruvbox-bg3: #f2e5bc;
}

body:has(#theme-gruvbox-material-medium-light:checked),
body:has(#theme-gruvbox-mix-medium-light:checked),
body:has(#theme-gruvbox-original-medium-light:checked) {
  --gruvbox-bg3: #eee0b7;
}

body:has(#theme-gruvbox-material-soft-light:checked),
body:has(#theme-gruvbox-mix-soft-light:checked),
body:has(#theme-gruvbox-original-soft-light:checked) {
  --gruvbox-bg3: #e6d5ae;
}

body:has(#theme-gruvbox-material-hard-dark:checked),
body:has(#theme-gruvbox-material-medium-dark:checked),
body:has(#theme-gruvbox-material-soft-dark:checked),
body:has(#theme-gruvbox-material-hard-light:checked),
body:has(#theme-gruvbox-material-medium-light:checked),
body:has(#theme-gruvbox-material-soft-light:checked),
body:has(#theme-gruvbox-mix-hard-dark:checked),
body:has(#theme-gruvbox-mix-medium-dark:checked),
body:has(#theme-gruvbox-mix-soft-dark:checked),
body:has(#theme-gruvbox-mix-hard-light:checked),
body:has(#theme-gruvbox-mix-medium-light:checked),
body:has(#theme-gruvbox-mix-soft-light:checked),
body:has(#theme-gruvbox-original-hard-dark:checked),
body:has(#theme-gruvbox-original-medium-dark:checked),
body:has(#theme-gruvbox-original-soft-dark:checked),
body:has(#theme-gruvbox-original-hard-light:checked),
body:has(#theme-gruvbox-original-medium-light:checked),
body:has(#theme-gruvbox-original-soft-light:checked) {
  --theme-normal-bg: var(--gruvbox-bg0);
  --theme-panel-bg: var(--gruvbox-bg3);
  --theme-normal-fg: var(--gruvbox-fg0);
  --theme-panel-fg: var(--gruvbox-fg1);
  --theme-muted-fg: var(--gruvbox-grey1);
  --theme-border: var(--gruvbox-bg5);
  --theme-selection-bg: var(--gruvbox-bg3);
  --theme-selection-fg: var(--gruvbox-fg0);
  --theme-title: var(--orange);
  --syntax-normal: var(--gruvbox-fg0);
  --syntax-comment: var(--gruvbox-grey1);
  --syntax-keyword: var(--red);
  --syntax-type: var(--yellow);
  --syntax-preproc: var(--violet);
  --syntax-string: var(--green);
  --syntax-regexp: var(--green);
  --syntax-special: var(--yellow);
  --syntax-function: var(--green);
  --syntax-number: var(--violet);
  --syntax-identifier: var(--blue);
  --syntax-builtin: var(--yellow);
  --syntax-tag: var(--orange);
  --syntax-class: var(--yellow);
  --syntax-decorator: var(--violet);
  --syntax-exception: var(--red);
  --syntax-constant: var(--cyan);
  --syntax-operator: var(--orange);
  --syntax-error: var(--red);
  --syntax-inserted: var(--green);
  --syntax-deleted: var(--red);
  --syntax-heading: var(--orange);
  --syntax-subheading: var(--blue);
}

/* Tomorrow Vim roles use its foreground/background and named accents. */
body:has(#theme-tomorrow:checked) {
  --tomorrow-background: #ffffff;
  --tomorrow-foreground: #4d4d4c;
  --tomorrow-selection: #d6d6d6;
  --tomorrow-line: #efefef;
  --tomorrow-window: #efefef;
}

body:has(#theme-tomorrow-night:checked) {
  --tomorrow-background: #1d1f21;
  --tomorrow-foreground: #c5c8c6;
  --tomorrow-selection: #373b41;
  --tomorrow-line: #282a2e;
  --tomorrow-window: #4d5057;
}

body:has(#theme-tomorrow-eighties:checked) {
  --tomorrow-background: #2d2d2d;
  --tomorrow-foreground: #cccccc;
  --tomorrow-selection: #515151;
  --tomorrow-line: #393939;
  --tomorrow-window: #4d5057;
}

body:has(#theme-tomorrow-blue:checked) {
  --tomorrow-background: #002451;
  --tomorrow-foreground: #ffffff;
  --tomorrow-selection: #003f8e;
  --tomorrow-line: #00346e;
  --tomorrow-window: #4d5057;
}

body:has(#theme-tomorrow-bright:checked) {
  --tomorrow-background: #000000;
  --tomorrow-foreground: #eaeaea;
  --tomorrow-selection: #424242;
  --tomorrow-line: #2a2a2a;
  --tomorrow-window: #4d5057;
}

body:has(#theme-tomorrow:checked),
body:has(#theme-tomorrow-night:checked),
body:has(#theme-tomorrow-eighties:checked),
body:has(#theme-tomorrow-blue:checked),
body:has(#theme-tomorrow-bright:checked) {
  --theme-normal-bg: var(--tomorrow-background);
  --theme-panel-bg: var(--tomorrow-line);
  --theme-normal-fg: var(--tomorrow-foreground);
  --theme-panel-fg: var(--tomorrow-foreground);
  --theme-muted-fg: var(--base01);
  --theme-border: var(--tomorrow-window);
  --theme-selection-bg: var(--tomorrow-selection);
  --theme-selection-fg: var(--tomorrow-foreground);
  --theme-title: var(--base01);
  --syntax-normal: var(--tomorrow-foreground);
  --syntax-comment: var(--base01);
  --syntax-keyword: var(--orange);
  --syntax-type: var(--blue);
  --syntax-preproc: var(--violet);
  --syntax-string: var(--green);
  --syntax-regexp: var(--green);
  --syntax-special: var(--tomorrow-foreground);
  --syntax-function: var(--blue);
  --syntax-number: var(--orange);
  --syntax-identifier: var(--red);
  --syntax-builtin: var(--tomorrow-foreground);
  --syntax-tag: var(--blue);
  --syntax-class: var(--violet);
  --syntax-decorator: var(--violet);
  --syntax-exception: var(--orange);
  --syntax-constant: var(--orange);
  --syntax-operator: var(--cyan);
  --syntax-error: var(--red);
  --syntax-inserted: var(--green);
  --syntax-deleted: var(--red);
  --syntax-heading: var(--base01);
  --syntax-subheading: var(--blue);
}

/* Nord Vim roles use Nord's numbered palette names. */
body:has(#theme-nord:checked) {
  --nord0: #2e3440;
  --nord1: #3b4252;
  --nord2: #434c5e;
  --nord3: #4c566a;
  --nord3_bright: #616e88;
  --nord4: #d8dee9;
  --nord5: #e5e9f0;
  --nord6: #eceff4;
  --nord7: #8fbcbb;
  --nord8: #88c0d0;
  --nord9: #81a1c1;
  --nord10: #5e81ac;
  --nord11: #bf616a;
  --nord12: #d08770;
  --nord13: #ebcb8b;
  --nord14: #a3be8c;
  --nord15: #b48ead;
  --theme-normal-bg: var(--nord0);
  --theme-panel-bg: var(--nord2);
  --theme-normal-fg: var(--nord4);
  --theme-panel-fg: var(--nord4);
  --theme-muted-fg: var(--nord3_bright);
  --theme-border: var(--nord2);
  --theme-selection-bg: var(--nord2);
  --theme-selection-fg: var(--nord4);
  --theme-title: var(--nord4);
  --syntax-normal: var(--nord4);
  --syntax-comment: var(--nord3_bright);
  --syntax-keyword: var(--nord9);
  --syntax-type: var(--nord9);
  --syntax-preproc: var(--nord9);
  --syntax-string: var(--nord14);
  --syntax-regexp: var(--nord14);
  --syntax-special: var(--nord4);
  --syntax-function: var(--nord8);
  --syntax-number: var(--nord15);
  --syntax-identifier: var(--nord4);
  --syntax-builtin: var(--nord9);
  --syntax-tag: var(--nord4);
  --syntax-class: var(--nord9);
  --syntax-decorator: var(--nord12);
  --syntax-exception: var(--nord9);
  --syntax-constant: var(--nord4);
  --syntax-operator: var(--nord9);
  --syntax-error: var(--nord11);
  --syntax-inserted: var(--nord14);
  --syntax-deleted: var(--nord11);
  --syntax-heading: var(--nord4);
  --syntax-subheading: var(--nord8);
}

/* Everforest generic Vim roles. */
body:has(#theme-everforest-hard-dark:checked) {
  --everforest-bg_visual: #4c3743;
  --everforest-bg2: #374145;
  --everforest-bg4: #495156;
}

body:has(#theme-everforest-dark:checked) {
  --everforest-bg_visual: #543a48;
  --everforest-bg2: #3d484d;
  --everforest-bg4: #4f585e;
}

body:has(#theme-everforest-soft-dark:checked) {
  --everforest-bg_visual: #5c3f4f;
  --everforest-bg2: #434f55;
  --everforest-bg4: #555f66;
}

body:has(#theme-everforest-hard-light:checked) {
  --everforest-bg_visual: #f0f2d4;
  --everforest-bg2: #f2efdf;
  --everforest-bg4: #e8e5d5;
}

body:has(#theme-everforest-light:checked) {
  --everforest-bg_visual: #eaedc8;
  --everforest-bg2: #efebd4;
  --everforest-bg4: #e0dcc7;
}

body:has(#theme-everforest-soft-light:checked) {
  --everforest-bg_visual: #e1e4bd;
  --everforest-bg2: #e5dfc5;
  --everforest-bg4: #d8d3ba;
}

body:has(#theme-everforest-hard-dark:checked),
body:has(#theme-everforest-dark:checked),
body:has(#theme-everforest-soft-dark:checked) {
  --everforest-bg0: var(--base03);
  --everforest-fg: var(--base0);
  --everforest-grey1: #859289;
}

body:has(#theme-everforest-hard-light:checked),
body:has(#theme-everforest-light:checked),
body:has(#theme-everforest-soft-light:checked) {
  --everforest-bg0: var(--base3);
  --everforest-fg: var(--base03);
  --everforest-grey1: #939f91;
}

body:has(#theme-everforest-hard-dark:checked),
body:has(#theme-everforest-dark:checked),
body:has(#theme-everforest-soft-dark:checked),
body:has(#theme-everforest-hard-light:checked),
body:has(#theme-everforest-light:checked),
body:has(#theme-everforest-soft-light:checked) {
  --theme-normal-bg: var(--everforest-bg0);
  --theme-panel-bg: var(--everforest-bg2);
  --theme-normal-fg: var(--everforest-fg);
  --theme-panel-fg: var(--everforest-fg);
  --theme-muted-fg: var(--everforest-grey1);
  --theme-border: var(--everforest-bg4);
  --theme-selection-bg: var(--everforest-bg_visual);
  --theme-selection-fg: var(--everforest-fg);
  --theme-title: var(--orange);
  --syntax-normal: var(--everforest-fg);
  --syntax-comment: var(--everforest-grey1);
  --syntax-keyword: var(--red);
  --syntax-type: var(--yellow);
  --syntax-preproc: var(--violet);
  --syntax-string: var(--green);
  --syntax-regexp: var(--green);
  --syntax-special: var(--yellow);
  --syntax-function: var(--green);
  --syntax-number: var(--violet);
  --syntax-identifier: var(--blue);
  --syntax-builtin: var(--yellow);
  --syntax-tag: var(--orange);
  --syntax-class: var(--yellow);
  --syntax-decorator: var(--violet);
  --syntax-exception: var(--red);
  --syntax-constant: var(--cyan);
  --syntax-operator: var(--orange);
  --syntax-error: var(--red);
  --syntax-inserted: var(--green);
  --syntax-deleted: var(--red);
  --syntax-heading: var(--orange);
  --syntax-subheading: var(--blue);
}

/* Edge generic Vim roles. */
body:has(#theme-edge-dark:checked),
body:has(#theme-edge-aura:checked),
body:has(#theme-edge-neon:checked),
body:has(#theme-edge-aura-dim:checked) {
  --edge-bg0: var(--base03);
  --edge-fg: var(--base0);
  --edge-grey: var(--base00);
  --edge-black: #202023;
}

body:has(#theme-edge-dark:checked) {
  --edge-bg2: #363944;
  --edge-bg3: #3b3e48;
}

body:has(#theme-edge-aura:checked),
body:has(#theme-edge-aura-dim:checked) {
  --edge-bg2: #363a49;
  --edge-bg3: #3a3e4e;
}

body:has(#theme-edge-neon:checked) {
  --edge-bg2: #363a4e;
  --edge-bg3: #393e53;
}

body:has(#theme-edge-light:checked) {
  --edge-bg0: var(--base3);
  --edge-bg2: #e8ebf0;
  --edge-bg3: #e8ebf0;
  --edge-fg: var(--base03);
  --edge-grey: var(--base02);
  --edge-black: #dde2e7;
}

body:has(#theme-edge-dark:checked),
body:has(#theme-edge-aura:checked),
body:has(#theme-edge-neon:checked),
body:has(#theme-edge-aura-dim:checked),
body:has(#theme-edge-light:checked) {
  --theme-normal-bg: var(--edge-bg0);
  --theme-panel-bg: var(--edge-bg2);
  --theme-normal-fg: var(--edge-fg);
  --theme-panel-fg: var(--edge-fg);
  --theme-muted-fg: var(--edge-grey);
  --theme-border: var(--edge-black);
  --theme-selection-bg: var(--edge-bg3);
  --theme-selection-fg: var(--edge-fg);
  --theme-title: var(--violet);
  --syntax-normal: var(--edge-fg);
  --syntax-comment: var(--edge-grey);
  --syntax-keyword: var(--violet);
  --syntax-type: var(--red);
  --syntax-preproc: var(--violet);
  --syntax-string: var(--green);
  --syntax-regexp: var(--green);
  --syntax-special: var(--yellow);
  --syntax-function: var(--blue);
  --syntax-number: var(--green);
  --syntax-identifier: var(--cyan);
  --syntax-builtin: var(--yellow);
  --syntax-tag: var(--yellow);
  --syntax-class: var(--red);
  --syntax-decorator: var(--violet);
  --syntax-exception: var(--violet);
  --syntax-constant: var(--yellow);
  --syntax-operator: var(--violet);
  --syntax-error: var(--red);
  --syntax-inserted: var(--green);
  --syntax-deleted: var(--red);
  --syntax-heading: var(--violet);
  --syntax-subheading: var(--blue);
}

/* Sonokai generic Vim roles. */
body:has(#theme-sonokai:checked) {
  --sonokai-black: #181a1c;
  --sonokai-bg2: #363944;
  --sonokai-bg4: #414550;
}

body:has(#theme-sonokai-atlantis:checked) {
  --sonokai-black: #181a1c;
  --sonokai-bg2: #373c4b;
  --sonokai-bg4: #424b5b;
}

body:has(#theme-sonokai-andromeda:checked) {
  --sonokai-black: #181a1c;
  --sonokai-bg2: #363a4e;
  --sonokai-bg4: #3f445b;
}

body:has(#theme-sonokai-shusia:checked) {
  --sonokai-black: #1a181a;
  --sonokai-bg2: #3b383e;
  --sonokai-bg4: #49464e;
}

body:has(#theme-sonokai-maia:checked) {
  --sonokai-black: #1c1e1f;
  --sonokai-bg2: #353f46;
  --sonokai-bg4: #414b53;
}

body:has(#theme-sonokai-espresso:checked) {
  --sonokai-black: #1f1e1c;
  --sonokai-bg2: #413937;
  --sonokai-bg4: #4e433f;
}

body:has(#theme-sonokai:checked),
body:has(#theme-sonokai-atlantis:checked),
body:has(#theme-sonokai-andromeda:checked),
body:has(#theme-sonokai-shusia:checked),
body:has(#theme-sonokai-maia:checked),
body:has(#theme-sonokai-espresso:checked) {
  --sonokai-bg0: var(--base03);
  --sonokai-fg: var(--base0);
  --sonokai-grey: var(--base00);
  --theme-normal-bg: var(--sonokai-bg0);
  --theme-panel-bg: var(--sonokai-bg2);
  --theme-normal-fg: var(--sonokai-fg);
  --theme-panel-fg: var(--sonokai-fg);
  --theme-muted-fg: var(--sonokai-grey);
  --theme-border: var(--sonokai-black);
  --theme-selection-bg: var(--sonokai-bg4);
  --theme-selection-fg: var(--sonokai-fg);
  --theme-title: var(--red);
  --syntax-normal: var(--sonokai-fg);
  --syntax-comment: var(--sonokai-grey);
  --syntax-keyword: var(--red);
  --syntax-type: var(--blue);
  --syntax-preproc: var(--red);
  --syntax-string: var(--yellow);
  --syntax-regexp: var(--yellow);
  --syntax-special: var(--violet);
  --syntax-function: var(--green);
  --syntax-number: var(--violet);
  --syntax-identifier: var(--orange);
  --syntax-builtin: var(--violet);
  --syntax-tag: var(--orange);
  --syntax-class: var(--blue);
  --syntax-decorator: var(--red);
  --syntax-exception: var(--red);
  --syntax-constant: var(--orange);
  --syntax-operator: var(--red);
  --syntax-error: var(--red);
  --syntax-inserted: var(--green);
  --syntax-deleted: var(--red);
  --syntax-heading: var(--red);
  --syntax-subheading: var(--blue);
}

/* Spring Night defines highlight-group colours directly. */
body:has(#theme-spring-night:checked),
body:has(#theme-spring-night-high-contrast:checked) {
  --spring-night-normal: #fffeeb;
  --spring-night-comment: #8d9eb2;
  --spring-night-constant: #fd8489;
  --spring-night-string: #a9dd9d;
  --spring-night-statement: #a8d2eb;
  --spring-night-function: #f0aa8a;
  --spring-night-keyword: #f0eaaa;
  --spring-night-type: #fedf81;
  --spring-night-special-comment: #e7c6b7;
  --spring-night-menu: #e7d5ff;
  --spring-night-visual: #70495d;
  --theme-normal-bg: var(--base03);
  --theme-panel-bg: var(--base02);
  --theme-normal-fg: var(--spring-night-normal);
  --theme-panel-fg: var(--spring-night-normal);
  --theme-muted-fg: var(--spring-night-comment);
  --theme-border: var(--base01);
  --theme-selection-bg: var(--spring-night-visual);
  --theme-selection-fg: var(--spring-night-normal);
  --theme-title: var(--spring-night-type);
  --syntax-normal: var(--spring-night-normal);
  --syntax-comment: var(--spring-night-comment);
  --syntax-keyword: var(--spring-night-keyword);
  --syntax-type: var(--spring-night-type);
  --syntax-preproc: var(--spring-night-function);
  --syntax-string: var(--spring-night-string);
  --syntax-regexp: var(--spring-night-string);
  --syntax-special: var(--spring-night-keyword);
  --syntax-function: var(--spring-night-function);
  --syntax-number: var(--spring-night-constant);
  --syntax-identifier: var(--spring-night-type);
  --syntax-builtin: var(--spring-night-keyword);
  --syntax-tag: var(--spring-night-function);
  --syntax-class: var(--spring-night-type);
  --syntax-decorator: var(--spring-night-special-comment);
  --syntax-exception: var(--spring-night-statement);
  --syntax-constant: var(--spring-night-constant);
  --syntax-operator: var(--spring-night-function);
  --syntax-error: var(--spring-night-constant);
  --syntax-inserted: var(--spring-night-string);
  --syntax-deleted: var(--spring-night-constant);
  --syntax-heading: var(--spring-night-type);
  --syntax-subheading: var(--spring-night-statement);
}

/* Ayu v8 named editor, UI, syntax, VCS, and common roles. */
body:has(#theme-ayu-dark:checked) {
  --ayu-editor-bg: #0d1017;
  --ayu-editor-fg: #bfbdb6;
  --ayu-editor-line: #131721;
  --ayu-editor-selection-active: #409fff4d;
  --ayu-ui-panel-bg: #0f131a;
  --ayu-ui-fg: #565b66;
  --ayu-syntax-tag: #39bae6;
  --ayu-syntax-func: #ffb454;
  --ayu-syntax-entity: #59c2ff;
  --ayu-syntax-string: #aad94c;
  --ayu-syntax-regexp: #95e6cb;
  --ayu-syntax-markup: #f07178;
  --ayu-syntax-keyword: #ff8f40;
  --ayu-syntax-special: #e6b673;
  --ayu-syntax-comment: #acb6bf8c;
  --ayu-syntax-constant: #d2a6ff;
  --ayu-syntax-operator: #f29668;
  --ayu-vcs-added: #7fd962;
  --ayu-vcs-removed: #f26d78;
  --ayu-common-accent: #e6b450;
  --ayu-common-error: #d95757;
}

body:has(#theme-ayu-mirage:checked) {
  --ayu-editor-bg: #242936;
  --ayu-editor-fg: #cccac2;
  --ayu-editor-line: #1a1f29;
  --ayu-editor-selection-active: #409fff40;
  --ayu-ui-panel-bg: #1c212b;
  --ayu-ui-fg: #707a8c;
  --ayu-syntax-tag: #5ccfe6;
  --ayu-syntax-func: #ffd173;
  --ayu-syntax-entity: #73d0ff;
  --ayu-syntax-string: #d5ff80;
  --ayu-syntax-regexp: #95e6cb;
  --ayu-syntax-markup: #f28779;
  --ayu-syntax-keyword: #ffad66;
  --ayu-syntax-special: #ffdfb3;
  --ayu-syntax-comment: #b8cfe680;
  --ayu-syntax-constant: #dfbfff;
  --ayu-syntax-operator: #f29e74;
  --ayu-vcs-added: #87d96c;
  --ayu-vcs-removed: #f27983;
  --ayu-common-accent: #ffcc66;
  --ayu-common-error: #ff6666;
}

body:has(#theme-ayu-light:checked) {
  --ayu-editor-bg: #fcfcfc;
  --ayu-editor-fg: #5c6166;
  --ayu-editor-line: #8a91991a;
  --ayu-editor-selection-active: #035bd626;
  --ayu-ui-panel-bg: #f3f4f5;
  --ayu-ui-fg: #8a9199;
  --ayu-syntax-tag: #55b4d4;
  --ayu-syntax-func: #f2ae49;
  --ayu-syntax-entity: #399ee6;
  --ayu-syntax-string: #86b300;
  --ayu-syntax-regexp: #4cbf99;
  --ayu-syntax-markup: #f07171;
  --ayu-syntax-keyword: #fa8d3e;
  --ayu-syntax-special: #e6ba7e;
  --ayu-syntax-comment: #787b8099;
  --ayu-syntax-constant: #a37acc;
  --ayu-syntax-operator: #ed9366;
  --ayu-vcs-added: #6cbf43;
  --ayu-vcs-removed: #ff7383;
  --ayu-common-accent: #ffaa33;
  --ayu-common-error: #e65050;
}

body:has(#theme-ayu-dark:checked),
body:has(#theme-ayu-mirage:checked),
body:has(#theme-ayu-light:checked) {
  --theme-normal-bg: var(--ayu-editor-bg);
  --theme-panel-bg: var(--ayu-ui-panel-bg);
  --theme-normal-fg: var(--ayu-editor-fg);
  --theme-panel-fg: var(--ayu-editor-fg);
  --theme-muted-fg: var(--ayu-ui-fg);
  --theme-border: var(--ayu-editor-line);
  --theme-selection-bg: var(--ayu-editor-selection-active);
  --theme-selection-fg: var(--ayu-editor-fg);
  --theme-title: var(--ayu-common-accent);
  --syntax-normal: var(--ayu-editor-fg);
  --syntax-comment: var(--ayu-syntax-comment);
  --syntax-keyword: var(--ayu-syntax-keyword);
  --syntax-type: var(--ayu-syntax-entity);
  --syntax-preproc: var(--ayu-syntax-keyword);
  --syntax-string: var(--ayu-syntax-string);
  --syntax-regexp: var(--ayu-syntax-regexp);
  --syntax-special: var(--ayu-syntax-special);
  --syntax-function: var(--ayu-syntax-func);
  --syntax-number: var(--ayu-syntax-constant);
  --syntax-identifier: var(--ayu-editor-fg);
  --syntax-builtin: var(--ayu-syntax-special);
  --syntax-tag: var(--ayu-syntax-tag);
  --syntax-class: var(--ayu-syntax-entity);
  --syntax-decorator: var(--ayu-syntax-func);
  --syntax-exception: var(--ayu-syntax-keyword);
  --syntax-constant: var(--ayu-syntax-constant);
  --syntax-operator: var(--ayu-syntax-operator);
  --syntax-error: var(--ayu-common-error);
  --syntax-inserted: var(--ayu-vcs-added);
  --syntax-deleted: var(--ayu-vcs-removed);
  --syntax-heading: var(--ayu-syntax-markup);
  --syntax-subheading: var(--ayu-syntax-entity);
}

/* Catppuccin Neovim palette names and highlight roles. */
body:has(#theme-catppuccin-latte:checked) {
  --catppuccin-flamingo: #dd7878;
  --catppuccin-pink: #ea76cb;
  --catppuccin-mauve: #8839ef;
  --catppuccin-red: #d20f39;
  --catppuccin-peach: #fe640b;
  --catppuccin-yellow: #df8e1d;
  --catppuccin-green: #40a02b;
  --catppuccin-teal: #179299;
  --catppuccin-sky: #04a5e5;
  --catppuccin-sapphire: #209fb5;
  --catppuccin-blue: #1e66f5;
  --catppuccin-lavender: #7287fd;
  --catppuccin-text: #4c4f69;
  --catppuccin-overlay2: #7c7f93;
  --catppuccin-surface1: #bcc0cc;
  --catppuccin-base: #eff1f5;
  --catppuccin-mantle: #e6e9ef;
  --catppuccin-crust: #dce0e8;
}

body:has(#theme-catppuccin-frappe:checked) {
  --catppuccin-flamingo: #eebebe;
  --catppuccin-pink: #f4b8e4;
  --catppuccin-mauve: #ca9ee6;
  --catppuccin-red: #e78284;
  --catppuccin-peach: #ef9f76;
  --catppuccin-yellow: #e5c890;
  --catppuccin-green: #a6d189;
  --catppuccin-teal: #81c8be;
  --catppuccin-sky: #99d1db;
  --catppuccin-sapphire: #85c1dc;
  --catppuccin-blue: #8caaee;
  --catppuccin-lavender: #babbf1;
  --catppuccin-text: #c6d0f5;
  --catppuccin-overlay2: #949cbb;
  --catppuccin-surface1: #51576d;
  --catppuccin-base: #303446;
  --catppuccin-mantle: #292c3c;
  --catppuccin-crust: #232634;
}

body:has(#theme-catppuccin-macchiato:checked) {
  --catppuccin-flamingo: #f0c6c6;
  --catppuccin-pink: #f5bde6;
  --catppuccin-mauve: #c6a0f6;
  --catppuccin-red: #ed8796;
  --catppuccin-peach: #f5a97f;
  --catppuccin-yellow: #eed49f;
  --catppuccin-green: #a6da95;
  --catppuccin-teal: #8bd5ca;
  --catppuccin-sky: #91d7e3;
  --catppuccin-sapphire: #7dc4e4;
  --catppuccin-blue: #8aadf4;
  --catppuccin-lavender: #b7bdf8;
  --catppuccin-text: #cad3f5;
  --catppuccin-overlay2: #939ab7;
  --catppuccin-surface1: #494d64;
  --catppuccin-base: #24273a;
  --catppuccin-mantle: #1e2030;
  --catppuccin-crust: #181926;
}

body:has(#theme-catppuccin-mocha:checked) {
  --catppuccin-flamingo: #f2cdcd;
  --catppuccin-pink: #f5c2e7;
  --catppuccin-mauve: #cba6f7;
  --catppuccin-red: #f38ba8;
  --catppuccin-peach: #fab387;
  --catppuccin-yellow: #f9e2af;
  --catppuccin-green: #a6e3a1;
  --catppuccin-teal: #94e2d5;
  --catppuccin-sky: #89dceb;
  --catppuccin-sapphire: #74c7ec;
  --catppuccin-blue: #89b4fa;
  --catppuccin-lavender: #b4befe;
  --catppuccin-text: #cdd6f4;
  --catppuccin-overlay2: #9399b2;
  --catppuccin-surface1: #45475a;
  --catppuccin-base: #1e1e2e;
  --catppuccin-mantle: #181825;
  --catppuccin-crust: #11111b;
}

body:has(#theme-catppuccin-latte:checked),
body:has(#theme-catppuccin-frappe:checked),
body:has(#theme-catppuccin-macchiato:checked),
body:has(#theme-catppuccin-mocha:checked) {
  --theme-normal-bg: var(--catppuccin-base);
  --theme-panel-bg: var(--catppuccin-mantle);
  --theme-normal-fg: var(--catppuccin-text);
  --theme-panel-fg: var(--catppuccin-text);
  --theme-muted-fg: var(--catppuccin-overlay2);
  --theme-border: var(--catppuccin-crust);
  --theme-selection-bg: var(--catppuccin-surface1);
  --theme-selection-fg: var(--catppuccin-text);
  --theme-title: var(--catppuccin-blue);
  --syntax-normal: var(--catppuccin-text);
  --syntax-comment: var(--catppuccin-overlay2);
  --syntax-keyword: var(--catppuccin-mauve);
  --syntax-type: var(--catppuccin-yellow);
  --syntax-preproc: var(--catppuccin-pink);
  --syntax-string: var(--catppuccin-green);
  --syntax-regexp: var(--catppuccin-green);
  --syntax-special: var(--catppuccin-pink);
  --syntax-function: var(--catppuccin-blue);
  --syntax-number: var(--catppuccin-peach);
  --syntax-identifier: var(--catppuccin-flamingo);
  --syntax-builtin: var(--catppuccin-pink);
  --syntax-tag: var(--catppuccin-lavender);
  --syntax-class: var(--catppuccin-yellow);
  --syntax-decorator: var(--catppuccin-pink);
  --syntax-exception: var(--catppuccin-mauve);
  --syntax-constant: var(--catppuccin-peach);
  --syntax-operator: var(--catppuccin-sky);
  --syntax-error: var(--catppuccin-red);
  --syntax-inserted: var(--catppuccin-green);
  --syntax-deleted: var(--catppuccin-red);
  --syntax-heading: var(--catppuccin-pink);
  --syntax-subheading: var(--catppuccin-blue);
}

/* Rose Pine Neovim palette names and highlight roles. */
body:has(#theme-rose-pine:checked) {
  --rose-pine-base: #191724;
  --rose-pine-surface: #1f1d2e;
  --rose-pine-muted: #6e6a86;
  --rose-pine-subtle: #908caa;
  --rose-pine-text: #e0def4;
  --rose-pine-love: #eb6f92;
  --rose-pine-gold: #f6c177;
  --rose-pine-rose: #ebbcba;
  --rose-pine-pine: #31748f;
  --rose-pine-foam: #9ccfd8;
  --rose-pine-iris: #c4a7e7;
  --rose-pine-highlight_med: #403d52;
}

body:has(#theme-rose-pine-moon:checked) {
  --rose-pine-base: #232136;
  --rose-pine-surface: #2a273f;
  --rose-pine-muted: #6e6a86;
  --rose-pine-subtle: #908caa;
  --rose-pine-text: #e0def4;
  --rose-pine-love: #eb6f92;
  --rose-pine-gold: #f6c177;
  --rose-pine-rose: #ea9a97;
  --rose-pine-pine: #3e8fb0;
  --rose-pine-foam: #9ccfd8;
  --rose-pine-iris: #c4a7e7;
  --rose-pine-highlight_med: #44415a;
}

body:has(#theme-rose-pine-dawn:checked) {
  --rose-pine-base: #faf4ed;
  --rose-pine-surface: #fffaf3;
  --rose-pine-muted: #9893a5;
  --rose-pine-subtle: #797593;
  --rose-pine-text: #464261;
  --rose-pine-love: #b4637a;
  --rose-pine-gold: #ea9d34;
  --rose-pine-rose: #d7827e;
  --rose-pine-pine: #286983;
  --rose-pine-foam: #56949f;
  --rose-pine-iris: #907aa9;
  --rose-pine-highlight_med: #dfdad9;
}

body:has(#theme-rose-pine:checked),
body:has(#theme-rose-pine-moon:checked),
body:has(#theme-rose-pine-dawn:checked) {
  --theme-normal-bg: var(--rose-pine-base);
  --theme-panel-bg: var(--rose-pine-surface);
  --theme-normal-fg: var(--rose-pine-text);
  --theme-panel-fg: var(--rose-pine-subtle);
  --theme-muted-fg: var(--rose-pine-subtle);
  --theme-border: var(--rose-pine-muted);
  --theme-selection-bg: var(--rose-pine-highlight_med);
  --theme-selection-fg: var(--rose-pine-text);
  --theme-title: var(--rose-pine-foam);
  --syntax-normal: var(--rose-pine-text);
  --syntax-comment: var(--rose-pine-subtle);
  --syntax-keyword: var(--rose-pine-pine);
  --syntax-type: var(--rose-pine-foam);
  --syntax-preproc: var(--rose-pine-iris);
  --syntax-string: var(--rose-pine-gold);
  --syntax-regexp: var(--rose-pine-gold);
  --syntax-special: var(--rose-pine-foam);
  --syntax-function: var(--rose-pine-rose);
  --syntax-number: var(--rose-pine-gold);
  --syntax-identifier: var(--rose-pine-text);
  --syntax-builtin: var(--rose-pine-foam);
  --syntax-tag: var(--rose-pine-foam);
  --syntax-class: var(--rose-pine-foam);
  --syntax-decorator: var(--rose-pine-iris);
  --syntax-exception: var(--rose-pine-pine);
  --syntax-constant: var(--rose-pine-gold);
  --syntax-operator: var(--rose-pine-subtle);
  --syntax-error: var(--rose-pine-love);
  --syntax-inserted: var(--rose-pine-foam);
  --syntax-deleted: var(--rose-pine-love);
  --syntax-heading: var(--rose-pine-iris);
  --syntax-subheading: var(--rose-pine-foam);
}

/* Selenized Vim roles use bg_*, dim_0, fg_*, and bright accents. */
body:has(#theme-selenized-dark:checked) {
  --selenized-bg_0: #103c48;
  --selenized-bg_1: #184956;
  --selenized-bg_2: #2d5b69;
  --selenized-dim_0: #72898f;
  --selenized-fg_0: #adbcbc;
  --selenized-fg_1: #cad8d9;
  --selenized-br_yellow: #ebc13d;
  --selenized-br_blue: #58a3ff;
}

body:has(#theme-selenized-black:checked) {
  --selenized-bg_0: #181818;
  --selenized-bg_1: #252525;
  --selenized-bg_2: #3b3b3b;
  --selenized-dim_0: #777777;
  --selenized-fg_0: #b9b9b9;
  --selenized-fg_1: #dedede;
  --selenized-br_yellow: #efc541;
  --selenized-br_blue: #4f9cfe;
}

body:has(#theme-selenized-light:checked) {
  --selenized-bg_0: #fbf3db;
  --selenized-bg_1: #e9e4d0;
  --selenized-bg_2: #cfcebe;
  --selenized-dim_0: #909995;
  --selenized-fg_0: #53676d;
  --selenized-fg_1: #3a4d53;
  --selenized-br_yellow: #a78300;
  --selenized-br_blue: #006dce;
}

body:has(#theme-selenized-white:checked) {
  --selenized-bg_0: #ffffff;
  --selenized-bg_1: #ebebeb;
  --selenized-bg_2: #cdcdcd;
  --selenized-dim_0: #878787;
  --selenized-fg_0: #474747;
  --selenized-fg_1: #282828;
  --selenized-br_yellow: #af8500;
  --selenized-br_blue: #0054cf;
}

body:has(#theme-selenized-dark:checked),
body:has(#theme-selenized-black:checked),
body:has(#theme-selenized-light:checked),
body:has(#theme-selenized-white:checked) {
  --theme-normal-bg: var(--selenized-bg_0);
  --theme-panel-bg: var(--selenized-bg_1);
  --theme-normal-fg: var(--selenized-fg_0);
  --theme-panel-fg: var(--selenized-dim_0);
  --theme-muted-fg: var(--selenized-dim_0);
  --theme-border: var(--selenized-dim_0);
  --theme-selection-bg: var(--selenized-bg_2);
  --theme-selection-fg: var(--selenized-fg_0);
  --theme-title: var(--selenized-fg_1);
  --syntax-normal: var(--selenized-fg_0);
  --syntax-comment: var(--selenized-dim_0);
  --syntax-keyword: var(--selenized-br_yellow);
  --syntax-type: var(--green);
  --syntax-preproc: var(--orange);
  --syntax-string: var(--cyan);
  --syntax-regexp: var(--cyan);
  --syntax-special: var(--red);
  --syntax-function: var(--selenized-br_blue);
  --syntax-number: var(--cyan);
  --syntax-identifier: var(--selenized-br_blue);
  --syntax-builtin: var(--red);
  --syntax-tag: var(--red);
  --syntax-class: var(--green);
  --syntax-decorator: var(--violet);
  --syntax-exception: var(--selenized-br_yellow);
  --syntax-constant: var(--cyan);
  --syntax-operator: var(--selenized-br_yellow);
  --syntax-error: var(--red);
  --syntax-inserted: var(--green);
  --syntax-deleted: var(--red);
  --syntax-heading: var(--selenized-fg_1);
  --syntax-subheading: var(--selenized-br_blue);
}

/* OKSolar uses the Solarized role map with its own named palette. */
body:has(#theme-oksolar-dark:checked) {
  --theme-normal-bg: var(--base03);
  --theme-panel-bg: var(--base02);
  --theme-normal-fg: var(--base0);
  --theme-panel-fg: var(--base0);
  --theme-muted-fg: var(--base01);
  --theme-border: var(--base00);
  --theme-selection-bg: var(--base01);
  --theme-selection-fg: var(--base03);
  --theme-title: var(--orange);
}

body:has(#theme-oksolar-light:checked) {
  --theme-normal-bg: var(--base3);
  --theme-panel-bg: var(--base2);
  --theme-normal-fg: var(--base00);
  --theme-panel-fg: var(--base00);
  --theme-muted-fg: var(--base1);
  --theme-border: var(--base0);
  --theme-selection-bg: var(--base1);
  --theme-selection-fg: var(--base3);
  --theme-title: var(--orange);
}

body:has(#theme-oksolar-dark:checked),
body:has(#theme-oksolar-light:checked) {
  --syntax-normal: var(--base0);
  --syntax-comment: var(--base01);
  --syntax-keyword: var(--green);
  --syntax-type: var(--yellow);
  --syntax-preproc: var(--orange);
  --syntax-string: var(--cyan);
  --syntax-regexp: var(--cyan);
  --syntax-special: var(--red);
  --syntax-function: var(--blue);
  --syntax-number: var(--cyan);
  --syntax-identifier: var(--blue);
  --syntax-builtin: var(--red);
  --syntax-tag: var(--red);
  --syntax-class: var(--yellow);
  --syntax-decorator: var(--violet);
  --syntax-exception: var(--green);
  --syntax-constant: var(--cyan);
  --syntax-operator: var(--green);
  --syntax-error: var(--red);
  --syntax-inserted: var(--green);
  --syntax-deleted: var(--red);
  --syntax-heading: var(--orange);
  --syntax-subheading: var(--blue);
}

body:has(#theme-oksolar-light:checked) {
  --syntax-normal: var(--base00);
  --syntax-comment: var(--base1);
}

* {
  box-sizing: border-box;
}

html {
  margin: 0;
  min-block-size: 100%;
}

body {
  margin: 0;
  min-block-size: 100%;
  --page-bg: var(--theme-normal-bg);
  --panel-bg: var(--theme-panel-bg);
  --text: var(--theme-normal-fg);
  --strong: var(--theme-normal-fg);
  --heading: var(--theme-title);
  --muted: var(--theme-muted-fg);
  --line: var(--theme-border);
  --code-bg: var(--theme-normal-bg);
  --code-text: var(--theme-normal-fg);
  --code-border: var(--theme-border);
  --code-title-bg: var(--theme-panel-bg);
  --code-title-text: var(--theme-panel-fg);
  --download-hover-border: var(--theme-title);
  --index-selected-bg: var(--theme-selection-bg);
  --index-selected-border: var(--theme-title);
  --index-selected-text: var(--theme-selection-fg);
  --index-subsection-selected-bg: var(--theme-selection-bg);
  --index-subsection-selected-border: var(--theme-border);
  --index-subsection-selected-text: var(--theme-selection-fg);
  --interactive-text: var(--theme-panel-fg);
  --functional-cue: var(--theme-normal-fg);
  --interface-error: var(--syntax-error);
  background: var(--page-bg);
  color: var(--text);
  font-size: 1rem;
  line-height: 1.65;
}

body:has(#theme-solarized-light:checked),
body:has(#theme-selenized-light:checked),
body:has(#theme-selenized-white:checked),
body:has(#theme-oksolar-light:checked),
body:has(#theme-gruvbox-material-hard-light:checked),
body:has(#theme-gruvbox-material-medium-light:checked),
body:has(#theme-gruvbox-material-soft-light:checked),
body:has(#theme-gruvbox-mix-hard-light:checked),
body:has(#theme-gruvbox-mix-medium-light:checked),
body:has(#theme-gruvbox-mix-soft-light:checked),
body:has(#theme-gruvbox-original-hard-light:checked),
body:has(#theme-gruvbox-original-medium-light:checked),
body:has(#theme-gruvbox-original-soft-light:checked),
body:has(#theme-tomorrow:checked),
body:has(#theme-everforest-hard-light:checked),
body:has(#theme-everforest-light:checked),
body:has(#theme-everforest-soft-light:checked),
body:has(#theme-edge-light:checked),
body:has(#theme-ayu-light:checked),
body:has(#theme-catppuccin-latte:checked),
body:has(#theme-rose-pine-dawn:checked) {
  color-scheme: light;
}

/* Automatic theme source: end. */
:root {
  --article-measure: 88ch;
  --header-height: 3.25rem;
  --image-min-height: 12rem;
  --image-max-height: 32rem;
  --font-ui: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", "Liberation Sans", "DejaVu Sans", Arial, sans-serif;
  --font-mono: ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "DejaVu Sans Mono", "Noto Sans Mono", "Courier New", monospace;

  font-family: var(--font-ui);
}

a {
  color: inherit;
}

::selection {
  background: var(--index-selected-bg);
  color: var(--index-selected-text);
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  block-size: var(--header-height);
  border-block-end: 1px solid var(--line);
  background: var(--panel-bg);
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  min-inline-size: 0;
  padding-inline: 1rem;
  color: var(--heading);
  font-size: 1.25rem;
  font-weight: 700;
  text-decoration: none;
}

.brand-title {
  overflow: hidden;
  min-inline-size: 0;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.brand:focus-visible,
.index-pane a:focus-visible,
.article-download-hit:focus-visible,
.theme-button:focus-visible,
.theme-mode input:focus-visible + label,
.theme-close:focus-visible,
.theme-third-party a:focus-visible,
.theme-list input:focus-visible + label,
.contact-button:focus-visible,
.contact-close:focus-visible,
.contact-submit:focus-visible,
.license-button:focus-visible,
.license-close:focus-visible,
.index-pane > #index-order-title:focus-visible ~ .index-head label[for="index-order-title"],
.index-pane > #index-order-created:focus-visible ~ .index-head label[for="index-order-created"],
.index-pane > #index-order-modified:focus-visible ~ .index-head label[for="index-order-modified"] {
  outline: 2px solid var(--strong);
  outline-offset: 2px;
}

.contact-form input:focus-visible,
.contact-form textarea:focus-visible {
  outline: 2px solid var(--functional-cue);
  outline-offset: -2px;
}

.brand-icon {
  flex: 0 0 auto;
  color: var(--brand-icon-colour, var(--heading));
  font-size: 2.55rem;
  font-weight: 400;
  line-height: 1;
}

.brand-icon-image,
.brand-icon-inline {
  display: block;
  flex: 0 0 auto;
  inline-size: 2.55rem;
  block-size: 2.55rem;
  object-fit: contain;
}

.brand-icon-inline > svg {
  display: block;
  inline-size: 100%;
  block-size: 100%;
}

.brand-icon-inline .colour-out {
  fill: var(--page-bg);
}

.brand-icon-inline .colour-in {
  fill: var(--heading);
}

.header-controls {
  --theme-control-height: 1.75rem;
  display: flex;
  align-items: center;
  gap: 0;
  margin-inline-start: auto;
  margin-inline-end: 1rem;
}

.theme-button,
.theme-mode {
  box-sizing: border-box;
  block-size: var(--theme-control-height);
  margin: 0;
  border-radius: 0;
  background: transparent;
  color: var(--interactive-text);
}

.theme-button {
  border: 1px solid var(--line);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  appearance: none;
  cursor: pointer;
  padding: 0 0.55rem;
  font: inherit;
  font-size: 0.8rem;
  font-weight: 700;
  line-height: 1;
}

.theme-button:hover {
  position: relative;
  z-index: 1;
  border-color: var(--strong);
  color: var(--strong);
}

.theme-mode {
  display: inline-flex;
  align-items: stretch;
  gap: 0.1rem;
  min-inline-size: 0;
  min-block-size: 0;
  border: 0;
  padding: 0 0.1rem;
}

.theme-mode legend {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.theme-mode label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-inline-size: 1.45rem;
  cursor: pointer;
  padding: 0 0.25rem;
  color: var(--interactive-text);
  font: 1.5rem/1 var(--font-mono);
}

.theme-mode label:hover {
  color: var(--strong);
}

.theme-mode input:checked + label {
  background: transparent;
  color: var(--heading);
}

.theme-menu {
  inset: calc(var(--header-height) + 0.5rem) 1rem auto auto;
  display: none;
  overflow: auto;
  inline-size: max-content;
  max-inline-size: calc(100vw - 2rem);
  max-block-size: calc(100vh - var(--header-height) - 1rem);
  max-block-size: calc(100svh - var(--header-height) - 1rem);
  max-block-size: calc(100dvh - var(--header-height) - 1rem);
  margin: 0;
  border: 1px solid var(--functional-cue);
  background: var(--panel-bg);
  color: var(--text);
  padding: 0;
  overscroll-behavior: contain;
  scrollbar-color: var(--functional-cue) var(--panel-bg);
}

.theme-menu:popover-open {
  display: block;
}

.contact-popover,
.contact-confirmation,
.license-popover {
  inset: auto auto 1rem 1rem;
  box-sizing: border-box;
  display: none;
  overflow-x: hidden;
  overflow-y: auto;
  max-block-size: min(27rem, calc(100vh - 2rem));
  max-block-size: min(27rem, calc(100svh - 2rem));
  max-block-size: min(27rem, calc(100dvh - 2rem));
  margin: 0;
  border: 1px solid var(--functional-cue);
  background: var(--panel-bg);
  color: var(--text);
  color-scheme: inherit;
  padding: 0;
  overscroll-behavior: contain;
  scrollbar-color: var(--functional-cue) var(--panel-bg);
}

.contact-popover,
.contact-confirmation {
  inline-size: min(28rem, calc(100vw - 2rem));
}

.contact-confirmation {
  position: fixed;
  z-index: 3;
}

.license-popover {
  inline-size: min(39rem, calc(100vw - 2rem));
}

.contact-popover:popover-open,
.license-popover:popover-open {
  display: block;
}

.contact-confirmation:target {
  display: block;
}

.theme-head,
.contact-head,
.license-head {
  position: sticky;
  top: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  border-block-end: 1px solid var(--line);
  background: var(--code-title-bg);
  color: var(--code-title-text);
  padding: 0.45rem 0.7rem;
  font: 0.85rem/1.3 var(--font-mono);
}

.theme-head h2,
.contact-head h2,
.license-head h2 {
  min-inline-size: 0;
  margin: 0;
  color: inherit;
  font: inherit;
  overflow-wrap: anywhere;
}

.theme-close,
.contact-close,
.license-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  min-inline-size: 1.5rem;
  min-block-size: 1.5rem;
  cursor: pointer;
  border: 0;
  background: transparent;
  padding: 0.1rem;
  color: var(--interactive-text);
  font: inherit;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
}

.theme-close:hover,
.contact-close:hover,
.license-close:hover {
  background: var(--page-bg);
  color: var(--strong);
}

.contact-form {
  display: grid;
  gap: 0.7rem;
  padding: 0.75rem;
  font: 0.75rem/1.4 var(--font-mono);
}

.contact-note,
.contact-confirmation > p {
  margin: 0;
  color: var(--muted);
}

.contact-field {
  display: grid;
  gap: 0.25rem;
  color: var(--strong);
  font-weight: 700;
}

.contact-field input,
.contact-field textarea {
  box-sizing: border-box;
  inline-size: 100%;
  border: 1px solid var(--line);
  border-radius: 0;
  background: var(--code-bg);
  padding: 0.45rem 0.5rem;
  color: var(--text);
  font: inherit;
  font-weight: 400;
}

.contact-field textarea {
  min-block-size: 7rem;
  resize: vertical;
}

.contact-submit {
  justify-self: start;
  cursor: pointer;
  border: 1px solid var(--line);
  border-radius: 0;
  background: var(--code-title-bg);
  padding: 0.35rem 0.7rem;
  color: var(--code-title-text);
  font: inherit;
  font-weight: 700;
}

.contact-submit:hover {
  border-color: var(--strong);
}

.contact-confirmation > p {
  padding: 0.75rem;
  font: 0.75rem/1.4 var(--font-mono);
}

.license-popover pre {
  margin: 0.7rem;
  color: var(--text);
  font: 0.68rem/1.42 var(--font-mono);
  overflow-wrap: anywhere;
  tab-size: 4;
  white-space: pre-wrap;
}

.license-third-party {
  margin: 0.7rem;
  color: var(--text);
  font: 0.68rem/1.42 var(--font-mono);
}

.contact-popover::backdrop,
.license-popover::backdrop {
  background: transparent;
}

.theme-list {
  display: grid;
  gap: 0.7rem;
  margin: 0;
  inline-size: max-content;
  max-inline-size: min(28rem, calc(100vw - 2rem));
  padding: 0.75rem;
}

.theme-list fieldset {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0;
  max-inline-size: 100%;
  border: 0;
  padding: 0;
}

.theme-list legend {
  flex: 0 0 100%;
  color: var(--muted);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1.2;
  text-transform: uppercase;
}

.theme-list input,
.theme-mode input,
.index-pane > .index-order-input {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.theme-list label {
  cursor: pointer;
  border: 1px solid var(--line);
  padding: 0.2rem 0.45rem;
  color: var(--interactive-text);
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.3;
  white-space: nowrap;
}

.theme-list label:hover {
  border-color: var(--strong);
  color: var(--strong);
}

.theme-list input:checked + label {
  border-color: var(--index-selected-border);
  background: var(--index-selected-bg);
  color: var(--index-selected-text);
}

.theme-third-party {
  margin: 0;
  border-block-start: 1px solid var(--line);
  padding-block-start: 0.55rem;
  color: var(--interactive-text);
  font: 0.65rem/1.35 var(--font-mono);
  text-align: end;
}

.theme-third-party a {
  color: inherit;
  text-decoration-color: currentColor;
  text-underline-offset: 0.18em;
}

.theme-third-party a:hover {
  color: var(--strong);
  text-decoration-thickness: 0.12em;
}

.shell {
  display: grid;
  grid-template-columns: 16rem minmax(0, 1fr);
  min-block-size: calc(100vh - var(--header-height));
  min-block-size: calc(100svh - var(--header-height));
  min-block-size: calc(100dvh - var(--header-height));
}

.index-pane {
  position: sticky;
  top: var(--header-height);
  display: flex;
  flex-direction: column;
  align-self: start;
  block-size: calc(100vh - var(--header-height));
  block-size: calc(100svh - var(--header-height));
  block-size: calc(100dvh - var(--header-height));
  overflow: hidden;
  border-inline-end: 1px solid var(--line);
  background: var(--panel-bg);
  padding: 1rem;
  padding-block-end: 0.5rem;
  scrollbar-color: var(--functional-cue) var(--panel-bg);
}

.index-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-block-end: 0.75rem;
}

.index-head h2 {
  margin: 0;
  color: var(--muted);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  line-height: 1.2;
  text-transform: uppercase;
}

.index-order {
  display: flex;
  flex-wrap: wrap;
  gap: 0.18rem;
}

.index-order label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-inline-size: 1.5rem;
  min-block-size: 1.5rem;
  cursor: pointer;
  border: 0;
  padding: 0.08rem;
  background: transparent;
  color: var(--interactive-text);
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
  text-transform: uppercase;
}

.index-order label:hover {
  color: var(--strong);
  text-decoration-line: underline;
  text-decoration-thickness: 0.12em;
  text-underline-offset: 0.2em;
}

#index-order-title:checked ~ .index-head label[for="index-order-title"],
#index-order-created:checked ~ .index-head label[for="index-order-created"],
#index-order-modified:checked ~ .index-head label[for="index-order-modified"] {
  color: var(--strong);
  text-decoration-line: underline;
  text-decoration-thickness: 0.12em;
  text-underline-offset: 0.2em;
}

.index-pane .index-list {
  display: none;
  align-content: start;
  grid-auto-rows: max-content;
  gap: 0.28rem;
  flex: 0 1 auto;
  overflow: auto;
  max-block-size: 40%;
  min-block-size: 0;
  margin: 0;
  padding: 0 0.25rem 0 0;
  list-style: none;
  overscroll-behavior: contain;
  scrollbar-color: var(--functional-cue) var(--panel-bg);
  scrollbar-width: thin;
}

.index-pane > #index-order-title:checked ~ .index-list-title,
.index-pane > #index-order-created:checked ~ .index-list-created,
.index-pane > #index-order-modified:checked ~ .index-list-modified {
  display: grid;
}

.index-item {
  min-inline-size: 0;
}

.index-section-lists {
  display: none;
  flex: 1 1 auto;
  flex-direction: column;
  min-block-size: 0;
  margin-block-start: 0.75rem;
  border-block-start: 1px solid var(--line);
  padding-block-start: 0.75rem;
}

.index-subsection-lists {
  display: none;
}

.index-section-list {
  display: none;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 0.06rem;
  overflow: auto;
  min-block-size: 0;
  margin: 0;
  padding: 0 0.25rem 0 0.75rem;
  list-style: none;
  overscroll-behavior: contain;
  scrollbar-color: var(--functional-cue) var(--panel-bg);
  scrollbar-width: thin;
}

.index-section-item {
  min-inline-size: 0;
}

.index-subsection-list {
  display: none;
  flex-direction: column;
  gap: 0.04rem;
  margin: 0;
  padding: 0 0.2rem 0 0.8rem;
  list-style: none;
}

.index-pane a {
  display: block;
  border-inline-start: 3px solid transparent;
  padding: 0.4rem 0.55rem;
  color: var(--interactive-text);
  text-decoration: none;
}

.index-section-item > a {
  display: flex;
  align-items: center;
  min-block-size: 1.5rem;
  border-inline-start-width: 2px;
  padding: 0.13rem 0.45rem;
  color: var(--interactive-text);
  font-size: 0.66rem;
  line-height: 1.25;
}

.index-subsection-list a {
  display: flex;
  align-items: center;
  min-block-size: 1.35rem;
  border-inline-start-width: 2px;
  padding: 0.1rem 0.4rem;
  color: var(--interactive-text);
  font-size: 0.58rem;
  line-height: 1.2;
}

.index-pane a:hover {
  border-inline-start-color: var(--strong);
  background: var(--index-selected-bg);
  color: var(--strong);
}

.index-footer {
  flex: none;
  margin-block-start: auto;
  border-block-start: 1px solid var(--line);
  padding-block-start: 0.5rem;
  color: var(--interactive-text);
  font-size: 0.68rem;
  line-height: 1.35;
  text-align: right;
}

.index-footer p {
  margin: 0.15rem 0;
}

.index-footer a:hover {
  color: var(--strong);
}

.index-footer a,
.contact-button,
.license-button,
.license-third-party a {
  appearance: none;
  -webkit-appearance: none;
  color: inherit;
  border: 0;
  background: transparent;
  padding: 0;
  font: inherit;
  cursor: pointer;
  text-decoration-color: currentColor;
  text-underline-offset: 0.18em;
}

.index-footer-actions {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.55rem;
}

.contact-button,
.license-button {
  display: inline-flex;
  align-items: center;
  min-block-size: 1.5rem;
  text-decoration-line: underline;
}

.license-third-party a {
  display: inline;
  color: var(--interactive-text);
  text-decoration-line: underline;
}

.license-third-party-reference {
  white-space: nowrap;
}

.contact-button:hover,
.license-button:hover,
.license-third-party a:hover {
  color: var(--strong);
  text-decoration-thickness: 0.12em;
}

.article-pane {
  min-inline-size: 0;
  padding: clamp(1.25rem, 4vw, 3rem);
}

.article {
  display: none;
  max-inline-size: 96rem;
  margin-inline: auto;
}

.article-header,
.article > .article-downloads,
.article > section > * {
  max-inline-size: var(--article-measure);
  margin-inline: auto;
}

.article:first-of-type {
  display: block;
}

.article-pane:has(.article:target) .article,
.article-pane:has(.article :target) .article {
  display: none;
}

.article-pane:has(.article:target) .article:target,
.article-pane:has(.article :target) .article:has(:target) {
  display: block;
  scroll-margin-top: calc(var(--header-height) + 1rem);
}

.article[id],
.article h2[id],
.article h3[id] {
  scroll-margin-top: calc(var(--header-height) + 1rem);
}

.article-header {
  border-block-end: 1px solid var(--line);
  margin-block-end: 2rem;
  padding-block-end: 0.6rem;
}

.kicker {
  margin: 0 0 0.4rem;
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1.2;
  text-transform: uppercase;
}

h1,
h2,
h3 {
  color: var(--heading);
  line-height: 1.2;
}

h1 {
  margin: 0;
  font-size: 3rem;
}

h2 {
  margin: 2rem 0 0.6rem;
  font-size: 1.2rem;
}

h3 {
  margin: 1.5rem 0 0.45rem;
  font-size: 1rem;
}

p {
  margin: 0.85rem 0;
}

.article :where(ul, ol, dl) {
  margin-block: 0.85rem;
}

.article :where(ul, ol) {
  padding-inline-start: 1.6rem;
}

.article :where(ul, ol) > li::marker {
  color: var(--heading);
  font-weight: 700;
}

.article li + li {
  margin-block-start: 0.25rem;
}

.article li > :where(ul, ol) {
  margin-block: 0.35rem;
}

.article dt {
  margin-block-start: 0.7rem;
  font-weight: 700;
  overflow-wrap: anywhere;
}

.article dt:first-child {
  margin-block-start: 0;
}

.article dd {
  margin: 0.2rem 0 0.7rem;
  margin-inline-start: 0.75rem;
  border-inline-start: 2px solid var(--line);
  padding-inline-start: 0.75rem;
}

.article :where(p, li, dt, dd) :where(code, kbd, samp) {
  border: 1px solid var(--line);
  border-radius: 3px;
  background: var(--panel-bg);
  padding: 0.05em 0.25em;
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.92em;
  overflow-wrap: anywhere;
}

.article kbd {
  font-weight: 700;
  white-space: nowrap;
}

.article blockquote {
  margin: 1rem 0;
  border-inline-start: 3px solid var(--heading);
  padding: 0.15rem 1rem;
}

.article blockquote > :first-child {
  margin-block-start: 0;
}

.article blockquote > :last-child {
  margin-block-end: 0;
}

.article hr {
  margin: 2rem 0;
  border: 0;
  border-block-start: 1px solid var(--line);
}

.article mark {
  background: var(--index-selected-bg);
  padding: 0.05em 0.15em;
  color: var(--index-selected-text);
}

.summary {
  color: var(--muted);
  font-size: 1.05rem;
}

.article-meta {
  margin: 0.65rem 0 0;
  color: var(--text);
  font: 0.68rem/1.3 var(--font-mono);
  font-variant-numeric: tabular-nums;
  text-align: end;
}

.article-downloads {
  display: grid;
  gap: 0.55rem;
  margin: 0.75rem 0 1rem;
}

.article-download {
  position: relative;
  z-index: 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.2rem 0.6rem;
  border: 1px solid var(--code-border);
  border-radius: 6px;
  background: var(--code-title-bg);
  color: var(--interactive-text);
  padding: 0.5rem 0.7rem;
  text-decoration: none;
}

.article-download-hit {
  position: absolute;
  z-index: 1;
  inset: 0;
  border-radius: inherit;
}

.article-downloads + .article-downloads {
  margin-block-start: -0.45rem;
}

.article-download:not(.article-download-missing) .article-download-kind::before {
  content: "↓";
  color: var(--strong);
  font-weight: 700;
}

.article-download-kind {
  display: inline-flex;
  position: relative;
  z-index: 2;
  grid-row: 1 / 3;
  grid-column: 1;
  align-items: center;
  gap: 0.6rem;
  color: var(--text);
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1;
  pointer-events: none;
  text-transform: uppercase;
}

.article-download code {
  color: inherit;
  font: 0.85rem/1.3 var(--font-mono);
}

.article-download:not(.article-download-missing) .block-label {
  position: relative;
  z-index: 2;
  grid-row: 1;
  grid-column: 2;
  min-inline-size: 0;
  pointer-events: none;
}

.article-download .block-checksum {
  position: relative;
  z-index: 2;
  grid-row: 2;
  grid-column: 2;
  justify-self: stretch;
  pointer-events: auto;
  text-align: start;
  user-select: text;
}

.article-download:not(.article-download-missing) .block-size {
  position: relative;
  z-index: 2;
  grid-row: 1 / 3;
  grid-column: 3;
  align-self: center;
  pointer-events: none;
}

.article-download:hover {
  border-color: var(--download-hover-border);
  background: var(--code-bg);
  color: var(--strong);
}

.article-download-missing::before {
  content: "!";
  color: var(--interface-error);
  font-weight: 700;
}

.article-download-missing {
  display: flex;
  border-color: var(--interface-error);
  color: var(--interface-error);
}

.article-download-missing .article-download-kind {
  color: var(--interface-error);
}

.code-details,
.media-details {
  min-inline-size: 0;
  margin: 1rem 0 1.35rem;
}

.code-details summary,
.media-details summary {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  cursor: pointer;
  border: 1px solid var(--code-border);
  border-block-end: 0;
  border-radius: 6px 6px 0 0;
  background: var(--code-title-bg);
  color: var(--interactive-text);
  padding: 0.45rem 0.7rem;
  list-style: none;
}

.code-details:not([open]) summary,
.media-details:not([open]) summary {
  border-block-end: 1px solid var(--code-border);
  border-radius: 6px;
}

.code-details summary[id],
.media-details summary[id],
.block-footer[id] {
  scroll-margin-top: calc(var(--header-height) + 1rem);
}

.code-details summary::-webkit-details-marker,
.media-details summary::-webkit-details-marker {
  display: none;
}

.code-details summary::before,
.media-details summary::before {
  content: "▸";
  color: var(--strong);
}

.code-details[open] summary::before,
.media-details[open] summary::before {
  content: "▾";
}

.code-details summary:hover,
.media-details summary:hover {
  background: var(--code-bg);
  color: var(--strong);
}

.code-details summary:focus-visible,
.media-details summary:focus-visible {
  outline: 2px solid var(--strong);
  outline-offset: -2px;
}

.code-details summary:target,
.media-details summary:target,
.block-footer:target {
  outline: 1px solid var(--functional-cue);
  outline-offset: -1px;
  animation: block-target-outline 1.2s ease-out forwards;
}

@keyframes block-target-outline {
  to {
    outline-color: transparent;
  }
}

.block-action:focus-visible {
  background: var(--line);
  color: var(--strong);
  outline: 2px solid var(--strong);
  outline-offset: 2px;
}

.code-details summary code,
.media-details summary code {
  min-inline-size: 0;
  color: inherit;
  overflow-wrap: anywhere;
}

.block-label {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem 0.45rem;
  min-inline-size: 0;
}

.block-title {
  min-inline-size: 0;
  color: inherit;
  font: 0.85rem/1.3 var(--font-mono);
  font-weight: 700;
  overflow-wrap: anywhere;
}

.block-note {
  color: inherit;
  font: 0.76rem/1.3 var(--font-ui);
  font-size: clamp(0.76rem, calc(0.7rem + 0.1vw), 0.8rem);
  overflow-wrap: anywhere;
}

.block-note::before {
  content: ":";
  margin-inline-end: 0.45rem;
  color: inherit;
}

.block-action {
  display: inline-flex;
  align-items: center;
  color: var(--interactive-text);
  font: 0.78rem/1.3 var(--font-ui);
  line-height: 1;
  text-decoration: none;
}

.block-action:hover {
  background: var(--page-bg);
  color: var(--strong);
}

.code-download {
  margin-inline-start: auto;
}

.block-size {
  display: inline-flex;
  align-items: center;
  margin-inline-start: auto;
  color: inherit;
  font: 0.72rem/1.25 var(--font-mono);
  font-variant-numeric: tabular-nums;
  line-height: 1;
  white-space: nowrap;
}

.block-checksum {
  display: block;
  min-inline-size: 0;
  color: inherit;
  font: 0.52rem/1.2 var(--font-mono);
  font-size: clamp(0.52rem, calc(0.4rem + 0.2vw), 0.64rem);
  font-variant-numeric: tabular-nums;
  overflow: hidden;
  text-align: end;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.block-footer {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  border: 1px solid var(--code-border);
  border-block-start: 0;
  border-radius: 0 0 6px 6px;
  background: var(--code-title-bg);
  color: var(--code-title-text);
  padding: 0.4rem 0.7rem;
}

.block-footer .block-label {
  flex: 1 1 auto;
}

.block-footer-link {
  font: 0.78rem/1.3 var(--font-ui);
  line-height: 1;
}

.block-jump {
  font-weight: 700;
}

.code-details:not([open]) summary .block-jump,
.media-details:not([open]) summary .block-jump {
  display: none;
}

.code-block {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  min-inline-size: 0;
  max-inline-size: 100%;
  overflow: hidden;
  margin: 0;
  border: 1px solid var(--code-border);
  border-radius: 0;
  background: var(--code-bg);
  color: var(--syntax-normal);
}

.code-block-standalone {
  margin-block: 1rem 1.35rem;
  border-radius: 6px;
}

.block-standalone {
  min-inline-size: 0;
  margin: 1rem 0 1.35rem;
}

.block-standalone .code-block,
.block-standalone .image-block {
  border-radius: 6px 6px 0 0;
}

.code-details:not(:has(.block-footer)) .code-block {
  border-radius: 0 0 6px 6px;
}

.code-block code {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  display: block;
  min-inline-size: 0;
  overflow: auto;
  max-inline-size: 100%;
  padding: 1rem;
  font: 0.92rem/1.55 var(--font-mono);
  tab-size: 2;
  white-space: pre;
}

.code-block code * {
  font-size: inherit;
}

.code-block-missing {
  border-color: var(--interface-error);
  color: var(--interface-error);
}

.image-block {
  --image-inline-limit: 100%;
  --image-margin-start: auto;
  --image-margin-end: auto;

  display: grid;
  place-items: center;
  gap: 0.7rem;
  overflow: auto;
  min-block-size: var(--image-min-height);
  margin: 0;
  border: 1px solid var(--code-border);
  border-radius: 0;
  background: var(--code-bg);
  color: var(--code-text);
  padding: 1rem;
}

.image-scale-small {
  --image-inline-limit: 20rem;
  --image-frame-limit: 22.125rem;
}

.image-scale-medium {
  --image-inline-limit: 32rem;
  --image-frame-limit: 34.125rem;
}

.image-scale-large {
  --image-inline-limit: 48rem;
  --image-frame-limit: 50.125rem;
}

.image-align-center {
  --image-margin-start: auto;
  --image-margin-end: auto;
}

.image-align-start {
  --image-margin-start: max(0px, calc((100% - var(--article-measure)) / 2));
  --image-margin-end: auto;
}

.image-align-end {
  --image-margin-start: auto;
  --image-margin-end: max(0px, calc((100% - var(--article-measure)) / 2));
}

.image-block.image-align-start {
  justify-items: start;
}

.image-block.image-align-end {
  justify-items: end;
}

.media-details.image-border-fit,
.block-standalone.image-border-fit,
.image-block-standalone.image-border-fit {
  inline-size: fit-content;
  max-inline-size: min(100%, var(--image-frame-limit, var(--article-measure)));
  margin-inline-start: var(--image-margin-start);
  margin-inline-end: var(--image-margin-end);
}

.image-block.image-border-fit {
  min-block-size: 0;
  inline-size: fit-content;
  max-inline-size: min(100%, var(--image-frame-limit, var(--article-measure)));
}

.image-block.image-border-none {
  min-block-size: 0;
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: transparent;
  padding: 0;
}

.image-block-standalone {
  margin-block: 1rem 1.35rem;
  border-radius: 6px;
}

.media-details:not(:has(.block-footer)) .image-block {
  border-radius: 0 0 6px 6px;
}

.image-block img {
  display: block;
  inline-size: auto;
  block-size: auto;
  max-block-size: min(var(--image-max-height), 70vh);
  max-block-size: min(var(--image-max-height), 70dvb);
  max-inline-size: min(100%, var(--image-inline-limit));
  object-fit: contain;
}

.image-block figcaption {
  max-inline-size: 60ch;
  color: var(--muted);
  font-size: 0.85rem;
  line-height: 1.4;
  text-align: center;
}

.image-block-missing {
  border-color: var(--interface-error);
  color: var(--interface-error);
}

.image-block-missing p {
  margin: 0;
}

@media (min-width: 761px) {
  .article > section > :is(.image-border-fit, .image-border-none):is(.image-align-start, .image-align-end) {
    max-inline-size: min(55%, var(--image-frame-limit, var(--article-measure)));
  }

  .article > section > :is(.image-border-fit, .image-border-none).image-align-start {
    float: left;
    float: inline-start;
    margin-inline-start: max(0px, calc((100% - var(--article-measure)) / 2));
    margin-inline-end: 1.25rem;
  }

  .article > section > :is(.image-border-fit, .image-border-none).image-align-end {
    float: right;
    float: inline-end;
    margin-inline-start: 1.25rem;
    margin-inline-end: max(0px, calc((100% - var(--article-measure)) / 2));
  }

  .article > section > :is(.image-border-fit, .image-border-none):is(.image-align-start, .image-align-end)
    + :is(.image-border-fit, .image-border-none):is(.image-align-start, .image-align-end) {
    float: none;
  }

  .article > section:has(> :is(.image-border-fit, .image-border-none):is(.image-align-start, .image-align-end))
    > :is(h2, h3, details, pre, figure, table, hr, .article-downloads, .block-standalone) {
    clear: both;
  }

  .article > section:has(> :is(.image-border-fit, .image-border-none):is(.image-align-start, .image-align-end))::after {
    display: block;
    clear: both;
    content: "";
  }
}

.sh-normal {
  color: var(--syntax-normal);
}

.sh-comment {
  color: var(--syntax-comment);
  font-style: italic;
}

.sh-keyword {
  color: var(--syntax-keyword);
  font-weight: 700;
}

.sh-type {
  color: var(--syntax-type);
}

.sh-preproc {
  color: var(--syntax-preproc);
}

.sh-string {
  color: var(--syntax-string);
}

.sh-regexp {
  color: var(--syntax-regexp);
}

.sh-specialchar {
  color: var(--syntax-special);
}

.sh-usertype,
.sh-classname {
  color: var(--syntax-class);
  font-weight: 700;
}

.sh-function {
  color: var(--syntax-function);
}

.sh-number,
.sh-value {
  color: var(--syntax-number);
}

.sh-variable,
.sh-property {
  color: var(--syntax-identifier);
}

.sh-selector {
  color: var(--syntax-tag);
}

.sh-symbol,
.sh-cbracket {
  color: var(--syntax-operator);
}

.sh-error {
  color: var(--syntax-error);
}

.sh-underline {
  text-decoration: underline;
}

.code-block .w,
.code-block .esc,
.code-block .x,
.code-block .n,
.code-block .l,
.code-block .ld,
.code-block .g {
  color: var(--syntax-normal);
}

.code-block .c,
.code-block .c1,
.code-block .ch,
.code-block .cm,
.code-block .cs {
  color: var(--syntax-comment);
  font-style: italic;
}

.code-block .cp,
.code-block .cpf {
  color: var(--syntax-preproc);
}

.code-block .go {
  color: var(--syntax-comment);
}

.code-block .gp {
  color: var(--syntax-heading);
  font-weight: 700;
}

.code-block .k,
.code-block .kc,
.code-block .kd,
.code-block .kn,
.code-block .kp,
.code-block .kr,
.code-block .ow {
  color: var(--syntax-keyword);
}

.code-block .k,
.code-block .kc,
.code-block .kd,
.code-block .kn,
.code-block .kr {
  font-weight: 700;
}

.code-block .kt {
  color: var(--syntax-type);
}

.code-block .s,
.code-block .s1,
.code-block .s2,
.code-block .sa,
.code-block .sb,
.code-block .sc,
.code-block .dl,
.code-block .sd,
.code-block .se,
.code-block .sh,
.code-block .si,
.code-block .ss,
.code-block .sx {
  color: var(--syntax-string);
}

.code-block .sr {
  color: var(--syntax-regexp);
}

.code-block .se,
.code-block .si {
  color: var(--syntax-special);
  font-weight: 700;
}

.code-block .nf,
.code-block .fm {
  color: var(--syntax-function);
}

.code-block .m,
.code-block .mb,
.code-block .mf,
.code-block .mh,
.code-block .mi,
.code-block .mo,
.code-block .il {
  color: var(--syntax-number);
}

.code-block .na,
.code-block .nl,
.code-block .nv,
.code-block .py,
.code-block .vc,
.code-block .vg,
.code-block .vi,
.code-block .vm {
  color: var(--syntax-identifier);
}

.code-block .nb,
.code-block .bp {
  color: var(--syntax-builtin);
}

.code-block .nt {
  color: var(--syntax-tag);
}

.code-block .nt {
  font-weight: 700;
}

.code-block .nc,
.code-block .nn {
  color: var(--syntax-class);
  font-weight: 700;
}

.code-block .nd {
  color: var(--syntax-decorator);
}

.code-block .ni {
  color: var(--syntax-special);
}

.code-block .ni {
  font-weight: 700;
}

.code-block .ne {
  color: var(--syntax-exception);
  font-weight: 700;
}

.code-block .no {
  color: var(--syntax-constant);
}

.code-block .nx {
  color: var(--syntax-identifier);
}

.code-block .o,
.code-block .p,
.code-block .pm {
  color: var(--syntax-operator);
}

.code-block .err {
  color: var(--syntax-error);
}

.code-block .gd,
.code-block .gr,
.code-block .gt {
  color: var(--syntax-deleted);
}

.code-block .gi {
  color: var(--syntax-inserted);
}

.code-block .gh {
  color: var(--syntax-heading);
  font-weight: 700;
}

.code-block .gu {
  color: var(--syntax-subheading);
  font-weight: 700;
}

.code-block .ge,
.code-block .ges {
  font-style: italic;
}

.code-block .ges,
.code-block .gs {
  font-weight: 700;
}

.code-block[data-title="makefile-objects.mk"] .err,
.code-block[data-title="makefile-variables.mk"] .err {
  color: var(--syntax-decorator);
}

@media (max-width: 960px), (pointer: coarse) {
  .block-action {
    justify-content: center;
    min-block-size: 1.5rem;
    padding-inline: 0.2rem;
  }

  .block-jump {
    min-inline-size: 1.5rem;
    font-size: 0.82rem;
  }
}

@media (max-width: 760px),
       (max-width: 960px) and (orientation: landscape) {
  :root {
    --header-height: 3rem;
  }

  body {
    font-size: 0.9rem;
    line-height: 1.55;
  }

  .brand {
    padding-inline: 0.75rem;
    font-size: 1.2rem;
  }

  .brand-icon {
    font-size: 2.025rem;
  }

  .brand-icon-image,
  .brand-icon-inline {
    inline-size: 2.025rem;
    block-size: 2.025rem;
  }

  .header-controls {
    margin-inline-end: 0.75rem;
  }

  .theme-button {
    padding-inline: 0.45rem;
    font-size: 0.72rem;
  }

  .theme-mode label {
    min-inline-size: 1.25rem;
    padding-inline: 0.18rem;
  }

  .summary {
    font-size: 0.9rem;
  }
}

@media (max-width: 760px) {
  :root {
    --image-min-height: 9rem;
    --image-max-height: 22rem;
    --mobile-index-height: 10rem;
  }

  .site-header {
    gap: 0.5rem;
  }

  .brand {
    gap: 0.45rem;
  }

  h1 {
    font-size: 1.6rem;
  }

  h2 {
    font-size: 1rem;
  }

  h3 {
    font-size: 0.9rem;
  }

  .shell {
    grid-template-columns: 1fr;
  }

  .index-pane {
    position: sticky;
    top: var(--header-height);
    z-index: 1;
    block-size: var(--mobile-index-height);
    border-block-end: 1px solid var(--line);
    border-inline-end: 0;
    padding: 0.6rem 0.85rem;
  }

  .index-head {
    margin-block-end: 0.4rem;
  }

  .index-pane .index-list {
    gap: 0.18rem;
  }

  .index-pane a {
    padding: 0.22rem 0.45rem;
  }

  .index-section-list a {
    padding-block: 0.08rem;
    font-size: 0.6rem;
  }

  .index-footer {
    display: flex;
    flex-wrap: nowrap;
    justify-content: flex-end;
    gap: 0.35rem;
    margin-block-start: 0.35rem;
    padding-block-start: 0.35rem;
    overflow: hidden;
    font-size: clamp(0.5rem, 1.75vw, 0.6rem);
    line-height: 1.25;
    white-space: nowrap;
  }

  .index-footer p {
    margin: 0;
  }

  .index-footer .contact-button,
  .index-footer .license-button {
    text-decoration-thickness: 1px;
    text-underline-offset: 0.08em;
  }

  .article-pane {
    padding: 0.85rem;
  }

  .article-pane:has(.article:target) .article:target,
  .article-pane:has(.article :target) .article:has(:target),
  .article[id],
  .article h2[id],
  .article h3[id],
  .code-details summary[id],
  .media-details summary[id],
  .block-footer[id] {
    scroll-margin-top: calc(var(--header-height) + var(--mobile-index-height) + 0.75rem);
  }

  .article-header {
    margin-block-end: 1.1rem;
    padding-block-end: 0.6rem;
  }

  .article-download {
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 0.16rem 0.4rem;
    padding: 0.38rem 0.5rem;
  }

  .article-download-kind {
    gap: 0.3rem;
    font-size: 0.58rem;
  }

  .article-download code,
  .block-title {
    font-size: 0.7rem;
  }

  .block-note {
    font-size: 0.64rem;
  }

  .block-size,
  .block-action,
  .block-footer-link {
    font-size: 0.68rem;
  }

  .block-jump {
    font-size: 0.82rem;
  }

  .block-checksum {
    font-size: 0.46rem;
  }

  .code-details summary,
  .media-details summary,
  .block-footer {
    gap: 0.35rem;
    padding: 0.32rem 0.45rem;
  }

  .code-block code {
    padding: 0.6rem;
    font-size: 0.68rem;
    line-height: 1.35;
  }

  .image-block {
    padding: 0.6rem;
  }
}

@media (max-width: 760px) and (orientation: portrait) {
  :root {
    --mobile-index-height: 9rem;
  }

  .index-pane {
    display: grid;
    grid-template-rows: auto 2.625rem auto 1.125rem;
    align-content: start;
    gap: 0.1875rem;
    padding: 0.25rem 0.65rem;
    padding-block-end: 0.125rem;
  }

  .index-head {
    grid-row: 1;
    margin-block-end: 0;
  }

  .index-pane .index-list {
    grid-row: 2;
    align-items: flex-start;
    gap: 0.35rem;
    flex: none;
    block-size: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    max-block-size: none;
    min-block-size: 0;
    padding: 2px;
    overscroll-behavior-x: contain;
    overscroll-behavior-y: auto;
    white-space: nowrap;
  }

  .index-pane > #index-order-title:checked ~ .index-list-title,
  .index-pane > #index-order-created:checked ~ .index-list-created,
  .index-pane > #index-order-modified:checked ~ .index-list-modified {
    display: flex;
  }

  .index-item {
    flex: none;
    min-inline-size: max-content;
  }

  .index-section-lists {
    grid-row: 3;
    flex: none;
    block-size: 2.75rem;
    min-inline-size: 0;
    margin-block-start: 0;
    padding-block-start: 0.25rem;
  }

  .index-subsection-lists {
    grid-row: 4;
    flex: none;
    flex-direction: column;
    block-size: 2.75rem;
    min-inline-size: 0;
    border-block-start: 1px solid var(--line);
    padding-block-start: 0.25rem;
  }

  .index-section-list,
  .index-subsection-lists > .index-subsection-list {
    align-items: flex-start;
    flex: none;
    flex-direction: row;
    gap: 0.3rem;
    block-size: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    min-block-size: 0;
    margin: 0;
    padding: 2px;
    list-style: none;
    overscroll-behavior-x: contain;
    overscroll-behavior-y: auto;
    scrollbar-color: var(--functional-cue) var(--panel-bg);
    scrollbar-width: thin;
    white-space: nowrap;
  }

  .index-section-list > li,
  .index-subsection-lists > .index-subsection-list > li {
    flex: none;
  }

  .index-section-list > .index-section-item > .index-subsection-list {
    display: none !important;
  }

  .index-pane .index-article,
  .index-section-item > a,
  .index-subsection-lists .index-subsection-list a {
    display: flex;
    align-items: center;
    flex: none;
    min-block-size: 1.5rem;
    border: 1px solid var(--line);
    padding: 0.15rem 0.5rem;
    line-height: 1.2;
    white-space: nowrap;
  }

  .index-pane .index-article {
    min-block-size: 1.625rem;
  }

  .index-section-item > a {
    color: var(--interactive-text);
    font-size: 0.6rem;
  }

  .index-subsection-lists .index-subsection-list a {
    color: var(--interactive-text);
    font-size: 0.56rem;
  }

  .index-pane .index-article:hover,
  .index-section-item > a:hover,
  .index-subsection-list a:hover {
    border-color: var(--strong);
    color: var(--strong);
  }

  .index-pane .index-list a:focus-visible,
  .index-section-list a:focus-visible,
  .index-subsection-list a:focus-visible {
    outline-offset: -2px;
  }

  .index-footer {
    grid-row: 4;
    align-items: center;
    justify-content: flex-start;
    gap: 0.2rem;
    block-size: 100%;
    min-inline-size: 0;
    margin-block-start: 0;
    padding-block-start: 0;
    overflow: hidden;
    font-size: clamp(0.5rem, 1.5vw, 0.6rem);
  }

  .index-footer p {
    flex: none;
  }

  .index-footer p:first-child {
    margin-inline-start: auto;
  }

  .index-footer .contact-button,
  .index-footer .license-button {
    min-block-size: 1rem;
  }
}

@media (max-width: 960px) and (orientation: landscape) {
  .shell {
    grid-template-columns: 12rem minmax(0, 1fr);
  }

  .index-pane {
    block-size: calc(100vh - var(--header-height));
    block-size: calc(100svh - var(--header-height));
    block-size: calc(100dvh - var(--header-height));
    border-block-end: 0;
    border-inline-end: 1px solid var(--line);
    padding: 0.75rem;
    padding-block-end: 0.5rem;
  }

  .index-pane a {
    padding-block: 0.24rem;
  }

  .index-pane .index-article {
    font-size: 0.99rem;
  }

  .index-section-item > a {
    font-size: 0.77rem;
  }

  .index-subsection-list a {
    font-size: 0.66rem;
  }

  .index-footer {
    display: block;
    margin-block-start: 0.75rem;
    padding-block-start: 0.5rem;
    font-size: 0.62rem;
    line-height: 1.35;
    white-space: normal;
  }

  .article-pane {
    padding: 1rem 1.25rem;
  }

  h1 {
    font-size: 1.95rem;
  }

  .code-block code {
    padding: 0.6rem;
    font-size: 0.7rem;
    line-height: 1.35;
  }

  .article-pane:has(.article:target) .article:target,
  .article-pane:has(.article :target) .article:has(:target),
  .article[id],
  .article h2[id],
  .article h3[id],
  .code-details summary[id],
  .media-details summary[id],
  .block-footer[id] {
    scroll-margin-top: calc(var(--header-height) + 1rem);
  }
}

@media (orientation: landscape) {
  .index-pane .index-list {
    flex: 1 1 0;
    max-block-size: max-content;
  }

  .index-pane .index-list:has(> .index-item:nth-child(2)) {
    min-block-size: 4.375rem;
  }

  .index-section-lists {
    flex: 2 1 0;
    min-block-size: 4.25rem;
  }
}

@media (min-width: 961px) and (orientation: landscape) {
  .index-pane .index-list:has(> .index-item:nth-child(2)) {
    min-block-size: 5.625rem;
  }

  .index-pane .index-article {
    font-size: 1.1rem;
  }

  .index-section-item > a {
    font-size: 0.825rem;
  }

  .index-subsection-list a {
    font-size: 0.715rem;
  }
}

@media (max-height: 480px) and (orientation: landscape) {
  .index-section-lists {
    margin-block-start: 0.4rem;
    padding-block-start: 0.4rem;
  }
}

@media (max-height: 320px) and (orientation: landscape) {
  .index-head {
    margin-block-end: 0.25rem;
  }

  .index-footer {
    margin-block-start: 0.35rem;
    padding-block-start: 0.4rem;
    font-size: 0.56rem;
  }

  .index-footer p {
    margin-block: 0.1rem;
  }
}

@media (max-width: 480px) and (orientation: portrait),
       (max-height: 330px) and (orientation: landscape) {
  .index-footer p:nth-child(2),
  .index-footer p:nth-child(3) {
    display: none;
  }
}

@media (max-width: 360px) {
  h1 {
    font-size: 1.42rem;
  }

  .article-pane {
    padding-inline: 0.7rem;
  }

  .code-block code {
    font-size: 0.64rem;
  }
}
