/* Chimerical Ventures theme for Gitea — GENERATED by tools/build-theme.py; edit src/*.css, not this file.
   Layers: Gitea built-in theme-gitea-auto (base, so every component variable exists) -> design-system tokens ->
   fonts -> Gitea variable mapping -> per-theme scales -> component rules. */

@media(prefers-color-scheme:light){gitea-theme-meta-info{--theme-display-name: "Light";--theme-color-scheme: "light"}:root{--is-dark-theme: false;--color-primary: #4183c4;--color-primary-contrast: #ffffff;--color-primary-dark-1: #3876b3;--color-primary-dark-2: #31699f;--color-primary-dark-3: #2b5c8b;--color-primary-dark-4: #254f77;--color-primary-dark-5: #193450;--color-primary-dark-6: #0c1a28;--color-primary-dark-7: #04080c;--color-primary-light-1: #548fca;--color-primary-light-2: #679cd0;--color-primary-light-3: #7aa8d6;--color-primary-light-4: #8db5dc;--color-primary-light-5: #b3cde7;--color-primary-light-6: #d9e6f3;--color-primary-light-7: #f4f8fb;--color-primary-alpha-10: #4183c419;--color-primary-alpha-20: #4183c433;--color-primary-alpha-30: #4183c44b;--color-primary-alpha-40: #4183c466;--color-primary-alpha-50: #4183c480;--color-primary-alpha-60: #4183c499;--color-primary-alpha-70: #4183c4b3;--color-primary-alpha-80: #4183c4cc;--color-primary-alpha-90: #4183c4e1;--color-primary-hover: var(--color-primary-dark-1);--color-primary-active: var(--color-primary-dark-2);--color-secondary: #d0d7de;--color-secondary-dark-1: #c7ced5;--color-secondary-dark-2: #b9c0c7;--color-secondary-dark-3: #99a0a7;--color-secondary-dark-4: #899097;--color-secondary-dark-5: #7a8188;--color-secondary-dark-6: #6a7178;--color-secondary-dark-7: #5b6269;--color-secondary-dark-8: #4b5259;--color-secondary-dark-9: #3c434a;--color-secondary-dark-10: #2c333a;--color-secondary-dark-11: #1d242b;--color-secondary-dark-12: #0d141b;--color-secondary-dark-13: #00040b;--color-secondary-light-1: #dee5ec;--color-secondary-light-2: #e4ebf2;--color-secondary-light-3: #ebf2f9;--color-secondary-light-4: #f1f8ff;--color-secondary-alpha-10: #d0d7de19;--color-secondary-alpha-20: #d0d7de33;--color-secondary-alpha-30: #d0d7de4b;--color-secondary-alpha-40: #d0d7de66;--color-secondary-alpha-50: #d0d7de80;--color-secondary-alpha-60: #d0d7de99;--color-secondary-alpha-70: #d0d7deb3;--color-secondary-alpha-80: #d0d7decc;--color-secondary-alpha-90: #d0d7dee1;--color-secondary-button: var(--color-secondary-dark-4);--color-secondary-hover: var(--color-secondary-dark-5);--color-secondary-active: var(--color-secondary-dark-6);--color-console-fg: #0d1117;--color-console-fg-subtle: #40474d;--color-console-bg: #ffffff;--color-console-hover-bg: #f1f3f5;--color-console-active-bg: #d0d7de;--color-console-link: #5c656d;--color-red: #db2828;--color-orange: #f2711c;--color-yellow: #fbbd08;--color-olive: #b5cc18;--color-green: #21ba45;--color-teal: #00b5ad;--color-blue: #2185d0;--color-violet: #6435c9;--color-purple: #a333c8;--color-pink: #e03997;--color-brown: #a5673f;--color-black: #1d2328;--color-red-light: #e45e5e;--color-orange-light: #f59555;--color-yellow-light: #fcce46;--color-olive-light: #d3e942;--color-green-light: #46de6a;--color-teal-light: #08fff4;--color-blue-light: #51a5e3;--color-violet-light: #8b67d7;--color-purple-light: #bb64d8;--color-pink-light: #e86bb1;--color-brown-light: #c58b66;--color-black-light: #4b5b68;--color-red-dark-1: #c82121;--color-orange-dark-1: #e6630d;--color-yellow-dark-1: #e5ac04;--color-olive-dark-1: #a3b816;--color-green-dark-1: #1ea73e;--color-teal-dark-1: #00a39c;--color-blue-dark-1: #1e78bb;--color-violet-dark-1: #5a30b5;--color-purple-dark-1: #932eb4;--color-pink-dark-1: #db228a;--color-brown-dark-1: #955d39;--color-black-dark-1: #2c3339;--color-red-dark-2: #b11e1e;--color-orange-dark-2: #cc580c;--color-yellow-dark-2: #cc9903;--color-olive-dark-2: #91a313;--color-green-dark-2: #1a9537;--color-teal-dark-2: #00918a;--color-blue-dark-2: #1a6aa6;--color-violet-dark-2: #502aa1;--color-purple-dark-2: #8229a0;--color-pink-dark-2: #c21e7b;--color-brown-dark-2: #845232;--color-black-dark-2: #131619;--color-ansi-black: #1e2327;--color-ansi-red: #cc4848;--color-ansi-green: #87ab63;--color-ansi-yellow: #cc9903;--color-ansi-blue: #3a8ac6;--color-ansi-magenta: #d22e8b;--color-ansi-cyan: #00918a;--color-ansi-white: var(--color-console-fg-subtle);--color-ansi-bright-black: #46494d;--color-ansi-bright-red: #d15a5a;--color-ansi-bright-green: #93b373;--color-ansi-bright-yellow: #eaaf03;--color-ansi-bright-blue: #4e96cc;--color-ansi-bright-magenta: #d74397;--color-ansi-bright-cyan: #00b6ad;--color-ansi-bright-white: var(--color-console-fg);--color-series-16-0: #7db233;--color-series-16-1: #499a37;--color-series-16-2: #ce4751;--color-series-16-3: #8f9121;--color-series-16-4: #ac32a6;--color-series-16-5: #7445e9;--color-series-16-6: #c67d28;--color-series-16-7: #4db392;--color-series-16-8: #aa4d30;--color-series-16-9: #2a6f84;--color-series-16-10: #c45327;--color-series-16-11: #3d965c;--color-series-16-12: #792a93;--color-series-16-13: #439d73;--color-series-16-14: #103aad;--color-series-16-15: #982e85;--color-grey: #697077;--color-grey-light: #7c838a;--color-gold: #a1882b;--color-white: #ffffff;--color-diff-added-fg: #177231;--color-diff-added-linenum-bg: #d1f8d9;--color-diff-added-row-bg: #e6ffed;--color-diff-added-row-border: #e6ffed;--color-diff-added-word-bg: #acf2bd;--color-diff-moved-row-bg: #f1f8d1;--color-diff-moved-row-border: #d0e27f;--color-diff-removed-fg: #c61f2b;--color-diff-removed-linenum-bg: #ffcecb;--color-diff-removed-row-bg: #ffeef0;--color-diff-removed-row-border: #f1c0c0;--color-diff-removed-word-bg: #fdb8c0;--color-diff-inactive: #f0f2f4;--color-error-border: #ff818266;--color-error-bg: #ffebe9;--color-error-bg-active: #ffcecb;--color-error-bg-hover: #ffdcd7;--color-error-text: #d1242f;--color-success-border: #4ac26b66;--color-success-bg: #dafbe1;--color-success-text: #1a7f37;--color-warning-border: #d4a72c66;--color-warning-bg: #fff8c5;--color-warning-text: #9a6700;--color-info-border: #54aeff66;--color-info-bg: #ddf4ff;--color-info-text: #0969da;--color-priority-border: #b9a1ff66;--color-priority-bg: #f3e7ff;--color-priority-text: #8250df;--color-red-badge: #db2828;--color-red-badge-bg: #db28281a;--color-red-badge-hover-bg: #db28284d;--color-green-badge: #21ba45;--color-green-badge-bg: #21ba451a;--color-green-badge-hover-bg: #21ba454d;--color-yellow-badge: #fbbd08;--color-yellow-badge-bg: #fbbd081a;--color-yellow-badge-hover-bg: #fbbd084d;--color-orange-badge: #f2711c;--color-orange-badge-bg: #f2711c1a;--color-orange-badge-hover-bg: #f2711c4d;--color-git: #f05133;--color-logo: #609926;--color-body: #ffffff;--color-box-header: #f1f3f5;--color-box-body: #ffffff;--color-box-body-highlight: #ecf5fd;--color-text-dark: #01050a;--color-text: #181c21;--color-text-light: #30363b;--color-text-light-1: #40474d;--color-text-light-2: #5b6167;--color-text-light-3: #747c84;--color-footer: var(--color-nav-bg);--color-timeline: #d0d7de;--color-input-text: var(--color-text-dark);--color-input-background: #fff;--color-input-toggle-background: #d0d7de;--color-input-border: var(--color-secondary-dark-1);--color-light: #00001706;--color-light-border: #0000171d;--color-hover: #00001708;--color-hover-opaque: #f1f3f5;--color-active: #00001714;--color-menu: #f8f9fb;--color-card: #f8f9fb;--color-markup-table-row: #0030600a;--color-markup-code-block: #00306010;--color-markup-code-inline: #00306012;--color-button: #f8f9fb;--color-code-bg: #fafdff;--color-shadow: #00001726;--color-shadow-opaque: #c7ced5;--color-secondary-bg: #f2f5f8;--color-expand-button: #cfe8fa;--color-placeholder-text: var(--color-text-light-3);--color-editor-line-highlight: var(--color-secondary-alpha-30);--color-editor-selection: var(--color-primary-alpha-30);--color-project-column-bg: var(--color-secondary-light-4);--color-caret: var(--color-text-dark);--color-reaction-bg: #0000170a;--color-reaction-hover-bg: var(--color-primary-light-5);--color-reaction-active-bg: var(--color-primary-light-6);--color-tooltip-text: #fbfdff;--color-tooltip-bg: #25292e;--color-nav-bg: #f6f7fa;--color-nav-hover-bg: var(--color-secondary-light-1);--color-nav-text: var(--color-text);--color-secondary-nav-bg: #f9fafb;--color-label-text: var(--color-text);--color-label-bg: #949da64b;--color-label-hover-bg: #949da6a0;--color-label-active-bg: #949da6ff;--color-accent: var(--color-primary-light-1);--color-small-accent: var(--color-primary-light-6);--color-highlight-fg: #eed200;--color-highlight-bg: #f5efc5;--color-overlay-backdrop: #080808c0;--color-danger: var(--color-red);--color-transparency-grid-light: #fafafa;--color-transparency-grid-dark: #e2e2e2;--color-workflow-edge-hover: #b1b7bd;--color-syntax-keyword: #a73a00;--color-syntax-bool: #076872;--color-syntax-control: #7d5700;--color-syntax-name: #785900;--color-syntax-type: #ae2368;--color-syntax-number: #105ead;--color-syntax-operator: #a73a00;--color-syntax-regexp: #773dc5;--color-syntax-string: #456800;--color-syntax-comment: #506070;--color-syntax-invalid: #c00000;--color-syntax-link: var(--color-primary);--color-syntax-tag: #a73a00;--color-syntax-attribute: #6f41c5;--color-syntax-property: #2060a0;--color-syntax-variable: #944a00;--color-syntax-string-special: #7d5700;--color-syntax-escape: #785900;--color-syntax-entity: #6f41c5;--color-syntax-preproc: #2d6a4b;--color-syntax-preproc-file: #105ead;--color-syntax-decorator: #2d6a4b;--color-syntax-namespace: #555555;--color-syntax-name-pseudo: #6f41c5;--color-syntax-comment-special: #773dc5;--color-syntax-text: inherit;--color-syntax-text-alt: #47525b;--color-syntax-punctuation: inherit;--color-syntax-whitespace: #bbbbbb;--color-syntax-diff-fg: #000000;--color-syntax-deleted-bg: #ffdddd;--color-syntax-inserted-bg: #ddffdd;--color-syntax-emph: #8b5000;--color-syntax-strong: inherit;--color-syntax-heading: #7d5700;--color-syntax-subheading: #456800;--color-syntax-output: #506070;--color-syntax-prompt: #944a00;--color-syntax-traceback: #c00000;--color-syntax-matching-bracket-bg: #00b5ad38;--color-syntax-nonmatching-bracket-bg: #db282838;accent-color:var(--color-accent);color-scheme:light}}@media(prefers-color-scheme:dark){gitea-theme-meta-info{--theme-display-name: "Dark";--theme-color-scheme: "dark"}:root{--is-dark-theme: true;--color-primary: #4183c4;--color-primary-contrast: #ffffff;--color-primary-dark-1: #548fca;--color-primary-dark-2: #679cd0;--color-primary-dark-3: #7aa8d6;--color-primary-dark-4: #8db5dc;--color-primary-dark-5: #b3cde7;--color-primary-dark-6: #d9e6f3;--color-primary-dark-7: #f4f8fb;--color-primary-light-1: #3876b3;--color-primary-light-2: #31699f;--color-primary-light-3: #2b5c8b;--color-primary-light-4: #254f77;--color-primary-light-5: #193450;--color-primary-light-6: #0c1a28;--color-primary-light-7: #04080c;--color-primary-alpha-10: #4183c419;--color-primary-alpha-20: #4183c433;--color-primary-alpha-30: #4183c44b;--color-primary-alpha-40: #4183c466;--color-primary-alpha-50: #4183c480;--color-primary-alpha-60: #4183c499;--color-primary-alpha-70: #4183c4b3;--color-primary-alpha-80: #4183c4cc;--color-primary-alpha-90: #4183c4e1;--color-primary-hover: var(--color-primary-light-1);--color-primary-active: var(--color-primary-light-2);--color-secondary: #3f4248;--color-secondary-dark-1: #46494f;--color-secondary-dark-2: #4f5259;--color-secondary-dark-3: #5e626a;--color-secondary-dark-4: #6f747d;--color-secondary-dark-5: #7d828c;--color-secondary-dark-6: #8b8f98;--color-secondary-dark-7: #999da4;--color-secondary-dark-8: #a8abb1;--color-secondary-dark-9: #aeb1b8;--color-secondary-dark-10: #bbbec3;--color-secondary-dark-11: #c8cacf;--color-secondary-dark-12: #d2d4d7;--color-secondary-dark-13: #d5d6d9;--color-secondary-light-1: #35373c;--color-secondary-light-2: #2c2e32;--color-secondary-light-3: #1f2124;--color-secondary-light-4: #191a1c;--color-secondary-alpha-10: #3f424819;--color-secondary-alpha-20: #3f424833;--color-secondary-alpha-30: #3f42484b;--color-secondary-alpha-40: #3f424866;--color-secondary-alpha-50: #3f424880;--color-secondary-alpha-60: #3f424899;--color-secondary-alpha-70: #3f4248b3;--color-secondary-alpha-80: #3f4248cc;--color-secondary-alpha-90: #3f4248e1;--color-secondary-button: var(--color-secondary-dark-4);--color-secondary-hover: var(--color-secondary-dark-3);--color-secondary-active: var(--color-secondary-dark-2);--color-console-fg: #f8f8f8;--color-console-fg-subtle: #c1c3c8;--color-console-bg: #191a1c;--color-console-hover-bg: #2a2c30;--color-console-active-bg: #313338;--color-console-link: #969aa1;--color-red: #cc4848;--color-orange: #cc580c;--color-yellow: #cc9903;--color-olive: #91a313;--color-green: #87ab63;--color-teal: #00918a;--color-blue: #3a8ac6;--color-violet: #906ae1;--color-purple: #b259d0;--color-pink: #d22e8b;--color-brown: #a47252;--color-black: #202225;--color-red-light: #d15a5a;--color-orange-light: #f6a066;--color-yellow-light: #eaaf03;--color-olive-light: #abc016;--color-green-light: #93b373;--color-teal-light: #00b6ad;--color-blue-light: #4e96cc;--color-violet-light: #9b79e4;--color-purple-light: #ba6ad5;--color-pink-light: #d74397;--color-brown-light: #b08061;--color-black-light: #45484e;--color-red-dark-1: #c23636;--color-orange-dark-1: #f38236;--color-yellow-dark-1: #b88a03;--color-olive-dark-1: #839311;--color-green-dark-1: #7a9e55;--color-teal-dark-1: #00837c;--color-blue-dark-1: #347cb3;--color-violet-dark-1: #7b4edb;--color-purple-dark-1: #a742c9;--color-pink-dark-1: #be297d;--color-brown-dark-1: #94674a;--color-black-dark-1: #2e3033;--color-red-dark-2: #ad3030;--color-orange-dark-2: #f16e17;--color-yellow-dark-2: #a37a02;--color-olive-dark-2: #74820f;--color-green-dark-2: #6c8c4c;--color-teal-dark-2: #00746e;--color-blue-dark-2: #2e6e9f;--color-violet-dark-2: #6733d6;--color-purple-dark-2: #9834b9;--color-pink-dark-2: #a9246f;--color-brown-dark-2: #835b42;--color-black-dark-2: #292b2e;--color-ansi-black: #202225;--color-ansi-red: #cc4848;--color-ansi-green: #87ab63;--color-ansi-yellow: #cc9903;--color-ansi-blue: #3a8ac6;--color-ansi-magenta: #d22e8b;--color-ansi-cyan: #00918a;--color-ansi-white: var(--color-console-fg-subtle);--color-ansi-bright-black: #45484e;--color-ansi-bright-red: #d15a5a;--color-ansi-bright-green: #93b373;--color-ansi-bright-yellow: #eaaf03;--color-ansi-bright-blue: #4e96cc;--color-ansi-bright-magenta: #d74397;--color-ansi-bright-cyan: #00b6ad;--color-ansi-bright-white: var(--color-console-fg);--color-series-16-0: #7db233;--color-series-16-1: #499a37;--color-series-16-2: #ce4751;--color-series-16-3: #8f9121;--color-series-16-4: #ac32a6;--color-series-16-5: #7445e9;--color-series-16-6: #c67d28;--color-series-16-7: #4db392;--color-series-16-8: #aa4d30;--color-series-16-9: #2a6f84;--color-series-16-10: #c45327;--color-series-16-11: #3d965c;--color-series-16-12: #792a93;--color-series-16-13: #439d73;--color-series-16-14: #103aad;--color-series-16-15: #982e85;--color-grey: #3d3f44;--color-grey-light: #898d96;--color-gold: #b1983b;--color-white: #ffffff;--color-diff-added-fg: #93b373;--color-diff-added-linenum-bg: #274227;--color-diff-added-row-bg: #203224;--color-diff-added-row-border: #314a37;--color-diff-added-word-bg: #3c653c;--color-diff-moved-row-bg: #818044;--color-diff-moved-row-border: #bcca6f;--color-diff-removed-fg: #fb5f5b;--color-diff-removed-linenum-bg: #482121;--color-diff-removed-row-bg: #301e1e;--color-diff-removed-row-border: #634343;--color-diff-removed-word-bg: #6f3333;--color-diff-inactive: #25272a;--color-error-border: #763232;--color-error-bg: #322226;--color-error-bg-active: #49262a;--color-error-bg-hover: #3c2427;--color-error-text: #f85149;--color-success-border: #225633;--color-success-bg: #1c3329;--color-success-text: #3fb950;--color-warning-border: #5f481a;--color-warning-bg: #342e1f;--color-warning-text: #d29922;--color-info-border: #254a7e;--color-info-bg: #1b283a;--color-info-text: #2f81f7;--color-priority-border: #4a268d;--color-priority-bg: #251c39;--color-priority-text: #a371f7;--color-red-badge: #db2828;--color-red-badge-bg: #db28281a;--color-red-badge-hover-bg: #db28284d;--color-green-badge: #21ba45;--color-green-badge-bg: #21ba451a;--color-green-badge-hover-bg: #21ba454d;--color-yellow-badge: #fbbd08;--color-yellow-badge-bg: #fbbd081a;--color-yellow-badge-hover-bg: #fbbd084d;--color-orange-badge: #f2711c;--color-orange-badge-bg: #f2711c1a;--color-orange-badge-hover-bg: #f2711c4d;--color-git: #f05133;--color-logo: #609926;--color-body: #1e1f20;--color-box-header: #1b1c1e;--color-box-body: #161718;--color-box-body-highlight: #202124;--color-text-dark: #f8f8f8;--color-text: #d2d4d8;--color-text-light: #c0c2c7;--color-text-light-1: #aaadb4;--color-text-light-2: #969aa1;--color-text-light-3: #80858f;--color-footer: var(--color-nav-bg);--color-timeline: #383b40;--color-input-text: var(--color-text-dark);--color-input-background: #191a1c;--color-input-toggle-background: #323438;--color-input-border: var(--color-secondary-dark-1);--color-light: #0b0b0c28;--color-light-border: #f3f3f428;--color-hover: #f3f3f419;--color-hover-opaque: #232528;--color-active: #f3f3f424;--color-menu: #191a1c;--color-card: #191a1c;--color-markup-table-row: #f3f3f40f;--color-markup-code-block: #f3f3f412;--color-markup-code-inline: #f3f3f428;--color-button: #191a1c;--color-code-bg: #161718;--color-shadow: #0b0b0c58;--color-shadow-opaque: #0b0b0c;--color-secondary-bg: #2e3033;--color-expand-button: #333539;--color-placeholder-text: var(--color-text-light-3);--color-editor-line-highlight: var(--color-secondary-alpha-40);--color-editor-selection: var(--color-primary-alpha-50);--color-project-column-bg: var(--color-secondary-light-2);--color-caret: var(--color-text);--color-reaction-bg: #f3f3f412;--color-reaction-hover-bg: var(--color-primary-light-4);--color-reaction-active-bg: var(--color-primary-light-5);--color-tooltip-text: #fafafa;--color-tooltip-bg: #2b2e33;--color-nav-bg: #18191b;--color-nav-hover-bg: var(--color-secondary-light-1);--color-nav-text: var(--color-text);--color-secondary-nav-bg: #1a1b1e;--color-label-text: var(--color-text);--color-label-bg: #7a7f8a4b;--color-label-hover-bg: #7a7f8aa0;--color-label-active-bg: #7a7f8aff;--color-accent: var(--color-primary-light-1);--color-small-accent: var(--color-primary-light-5);--color-highlight-fg: #87651e;--color-highlight-bg: #443a27;--color-overlay-backdrop: #080808c0;--color-danger: var(--color-red);--color-transparency-grid-light: #2a2a2a;--color-transparency-grid-dark: #1a1a1a;--color-workflow-edge-hover: #666a73;--color-syntax-keyword: #ff8854;--color-syntax-bool: #25bbc9;--color-syntax-control: #dd9e17;--color-syntax-name: #fabd2f;--color-syntax-type: #eb8cb3;--color-syntax-number: #63b2dd;--color-syntax-operator: #ff8854;--color-syntax-regexp: #b89de4;--color-syntax-string: #95b62a;--color-syntax-comment: #8898b0;--color-syntax-invalid: #ff8686;--color-syntax-link: var(--color-primary);--color-syntax-tag: #ff8854;--color-syntax-attribute: #c792ff;--color-syntax-property: #55afff;--color-syntax-variable: #e29b33;--color-syntax-string-special: #dd9e17;--color-syntax-escape: #c7a618;--color-syntax-entity: #c792ff;--color-syntax-preproc: #4cbe7a;--color-syntax-preproc-file: #63b2dd;--color-syntax-decorator: #4cbe7a;--color-syntax-namespace: #c9d1d9;--color-syntax-name-pseudo: #c792ff;--color-syntax-comment-special: #b89de4;--color-syntax-text: #c9d1d9;--color-syntax-text-alt: #b9bcc7;--color-syntax-punctuation: #d2d4db;--color-syntax-whitespace: #7f8699;--color-syntax-diff-fg: #ffffff;--color-syntax-deleted-bg: #5f3737;--color-syntax-inserted-bg: #3a523a;--color-syntax-emph: #d1a242;--color-syntax-strong: #e29b33;--color-syntax-heading: #dd9e17;--color-syntax-subheading: #95b62a;--color-syntax-output: #8898b0;--color-syntax-prompt: #e29b33;--color-syntax-traceback: #ff8686;--color-syntax-matching-bracket-bg: #00918a48;--color-syntax-nonmatching-bracket-bg: #cc484848;accent-color:var(--color-accent);color-scheme:dark}.emoji[data-alias=heavy_check_mark],.emoji[data-alias=currency_exchange],.emoji[data-alias=top],.emoji[data-alias=end],.emoji[data-alias=on],.emoji[data-alias=soon],.emoji[data-alias=heavy_dollar_sign],.emoji[data-alias=copyright],.emoji[data-alias=registered],.emoji[data-alias=tm],.emoji[data-alias=heavy_multiplication_x],.emoji[data-alias=heavy_plus_sign],.emoji[data-alias=heavy_minus_sign],.emoji[data-alias=heavy_division_sign],.emoji[data-alias=curly_loop],.emoji[data-alias=loop],.emoji[data-alias=wavy_dash],.emoji[data-alias=feet],.emoji[data-alias=musical_note],.emoji[data-alias=notes]{filter:invert(100%) hue-rotate(180deg)}}gitea-theme-meta-info{--theme-display-name: "Chimerical";--theme-color-scheme: "auto"}
/* VENDORED from @chimerical-ventures/design-system 2.19.0 (git c0db0a9, origin/main) tokens/tokens-next.css —
   byte-for-byte except the two @fontsource @import lines (Geist is self-hosted in fonts.css). DO NOT EDIT:
   re-run tools/vendor-tokens.py. Redesign ("next") language, approved 2026-10-19; adopted for Gitea 2026-10-24. */

/*
 * Redesign design tokens (Phase 0). Everything here is namespaced `--rd-*` so it can coexist with
 * the classic flow.css / governance.css token sets until the single cutover.
 *
 * Theme selection, exactly like the artifact rules:
 *   - default: light
 *   - `prefers-color-scheme: dark` switches to dark UNLESS the document says data-theme="light"
 *   - `[data-theme="dark"]` forces dark regardless of the OS setting
 * The dark block therefore appears twice (media query + attribute); CSS has no way to share it.
 *
 * Tenant accent: `--rd-accent` / `--rd-accent-tint` are plain custom properties, so the existing
 * `applyOrgAccent` can override them at runtime on <html> (inline style beats these rules).
 */

/* Fonts are self-hosted (npm packages, bundled by Vite): no third-party font requests. */

:root {
    color-scheme: light;

    /* Surfaces and ink (light) */
    --rd-bg: #f5f5f7;
    --rd-card: #ffffff;
    --rd-list-bg: #fbfbfc;
    --rd-rail: rgba(236, 236, 241, 0.85);
    --rd-tabbar: rgba(250, 250, 252, 0.88);
    --rd-sheet: #ffffff;
    --rd-scrim: rgba(12, 13, 14, 0.4);
    --rd-ink: #1d1d1f;
    --rd-ink-2: #4a4d54;
    --rd-ink-3: #686c74;
    --rd-line: rgba(0, 0, 0, 0.09);

    /* Accent */
    --rd-accent: #0b7a6b;
    --rd-accent-tint: #e2f2ef;
    --rd-on-accent: #ffffff;

    /* Status */
    --rd-warn: #9a4a06;
    --rd-warn-tint: #fcefd9;
    --rd-critical: #b3261e;
    --rd-critical-tint: #fbe9e7;
    --rd-on-critical: #ffffff;
    --rd-neutral: #3a3e45;
    --rd-neutral-tint: #e9ecef;

    /* Floating things only (popovers, toasts, dragged cards): everything else uses hairlines. */
    --rd-shadow-float: 0 1px 2px rgba(0, 0, 0, 0.08), 0 12px 40px rgba(0, 0, 0, 0.12);

    /* Focus ring: accent on light, accent on dark; 2px ring with a 2px offset gap. */
    --rd-focus-ring: var(--rd-accent);

    /* Radius */
    --rd-radius-xs: 10px;
    --rd-radius-sm: 12px;
    --rd-radius-md: 14px;
    --rd-radius-lg: 16px;
    --rd-radius-xl: 22px;
    --rd-radius-2xl: 28px;

    /* Type */
    --rd-font-sans: 'Geist Variable', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    --rd-font-mono: 'Geist Mono Variable', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
    --rd-text-title: clamp(30px, 2.2vw + 22px, 34px); /* page title, weight 650, -.025em */
    --rd-text-title-weight: 650;
    --rd-text-title-tracking: -0.025em;
    --rd-text-kicker: 11.5px; /* uppercase, .07em, weight 600, ink-3 */
    --rd-text-kicker-tracking: 0.07em;
    --rd-text-body: clamp(14px, 0.2vw + 13.2px, 15px);
    --rd-text-secondary: 13px; /* 12.5 to 13 */
    --rd-text-small: 12.5px;
    --rd-text-big: clamp(20px, 3vw + 8px, 52px); /* big figures, weight 650, tabular */

    /*
     * The ONE z-index scale. No component defines a z-index of its own: it uses one of these.
     * Order: rail < sticky < banner < inspector < sheet backdrop < sheet < dialog < popover
     *        < toast < palette < skip link.
     */
    --rd-z-rail: 20;
    --rd-z-sticky: 30;
    --rd-z-banner: 40;
    --rd-z-inspector: 60;
    --rd-z-sheet-backdrop: 85;
    --rd-z-sheet: 90;
    --rd-z-dialog: 100;
    --rd-z-popover: 105; /* above dialog and sheet: a menu opened inside a modal must not hide behind its scrim */
    --rd-z-toast: 110;
    --rd-z-palette: 120;
    --rd-z-skip-link: 130;

    /*
     * Motion. Anything touchable uses springs (motion/spring.js); CSS transitions are only for
     * colour and opacity, at most 160 ms. Both durations collapse to 0 under reduced motion.
     */
    --rd-dur-fast: 120ms;
    --rd-dur-color: 160ms;
    --rd-ease-out: cubic-bezier(0.22, 1, 0.36, 1);

    /* Safe-area insets (notch, home indicator). Fall back to 0 where unsupported. */
    --rd-safe-top: env(safe-area-inset-top, 0px);
    --rd-safe-bottom: env(safe-area-inset-bottom, 0px);
    --rd-safe-left: env(safe-area-inset-left, 0px);
    --rd-safe-right: env(safe-area-inset-right, 0px);

    /*
     * Toast stack sits this far above the viewport bottom (tab bar height already includes the safe area, so take the larger). The phone shell sets --rd-tabbar-h
     * (88px incl. safe area) so toasts clear the tab bar; on desktop it stays 0.
     */
    --rd-tabbar-h: 0px;
    --rd-toast-offset-bottom: calc(max(var(--rd-tabbar-h), var(--rd-safe-bottom)) + 16px);
}

/* Dark: OS preference, unless the page explicitly asked for light. */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme='light']) {
        color-scheme: dark;
        --rd-bg: #0c0d0e;
        --rd-card: #17181a;
        --rd-list-bg: #101112;
        --rd-rail: rgba(20, 21, 23, 0.85);
        --rd-tabbar: rgba(20, 21, 23, 0.88);
        --rd-sheet: #1b1d20;
        --rd-scrim: rgba(0, 0, 0, 0.55);
        --rd-ink: #f2f3f4;
        --rd-ink-2: #b7bbc2;
        --rd-ink-3: #8f949c;
        --rd-line: rgba(255, 255, 255, 0.1);
        --rd-accent: #41d1b0;
        --rd-accent-tint: rgba(65, 209, 176, 0.14);
        --rd-on-accent: #04201a;
        --rd-warn: #f2b35c;
        --rd-warn-tint: rgba(242, 179, 92, 0.14);
        --rd-critical: #ff8a80;
        --rd-critical-tint: rgba(255, 138, 128, 0.14);
        --rd-on-critical: #2a0b08;
        --rd-neutral: #c9ccd1;
        --rd-neutral-tint: rgba(255, 255, 255, 0.08);
        --rd-shadow-float: 0 1px 2px rgba(0, 0, 0, 0.4), 0 12px 40px rgba(0, 0, 0, 0.5);
    }
}

/* Dark: explicit. Same values as above. */
:root[data-theme='dark'] {
    color-scheme: dark;
    --rd-bg: #0c0d0e;
    --rd-card: #17181a;
    --rd-list-bg: #101112;
    --rd-rail: rgba(20, 21, 23, 0.85);
    --rd-tabbar: rgba(20, 21, 23, 0.88);
    --rd-sheet: #1b1d20;
    --rd-scrim: rgba(0, 0, 0, 0.55);
    --rd-ink: #f2f3f4;
    --rd-ink-2: #b7bbc2;
    --rd-ink-3: #8f949c;
    --rd-line: rgba(255, 255, 255, 0.1);
    --rd-accent: #41d1b0;
    --rd-accent-tint: rgba(65, 209, 176, 0.14);
    --rd-on-accent: #04201a;
    --rd-warn: #f2b35c;
    --rd-warn-tint: rgba(242, 179, 92, 0.14);
    --rd-critical: #ff8a80;
    --rd-critical-tint: rgba(255, 138, 128, 0.14);
    --rd-on-critical: #2a0b08;
    --rd-neutral: #c9ccd1;
    --rd-neutral-tint: rgba(255, 255, 255, 0.08);
    --rd-shadow-float: 0 1px 2px rgba(0, 0, 0, 0.4), 0 12px 40px rgba(0, 0, 0, 0.5);
}

@media (prefers-reduced-motion: reduce) {
    :root {
        --rd-dur-fast: 0ms;
        --rd-dur-color: 0ms;
    }
}

/*
 * Toasts (ToastStack). A toast is a dark surface in BOTH themes, like the X4 board's Undo toast:
 * it must read as separate from whatever page content it floats over. The tone colours are the
 * dark-theme accent/warn/critical values, because they sit on a dark surface in light mode too.
 */
:root {
    --rd-toast-bg: #1d1d1f;
    --rd-toast-ink: #f5f5f7;
    --rd-toast-line: rgba(255, 255, 255, 0.08);
    --rd-toast-success: #41d1b0;
    --rd-toast-warn: #f2b35c;
    --rd-toast-critical: #ff8a80;
    --rd-toast-info: #b7bbc2;
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme='light']) {
        --rd-toast-bg: #2b2e33;
        --rd-toast-ink: #f2f3f4;
        --rd-toast-line: rgba(255, 255, 255, 0.12);
    }
}

:root[data-theme='dark'] {
    --rd-toast-bg: #2b2e33;
    --rd-toast-ink: #f2f3f4;
    --rd-toast-line: rgba(255, 255, 255, 0.12);
}

/* Self-hosted variable fonts — no third-party CDN (Gitea CSP + privacy). Geist and Geist Mono (SIL OFL; licence text
   in fonts/GEIST-LICENSE.txt), the same files the design system's `next` language ships. Family names match the
   tokens' --rd-font-sans / --rd-font-mono. Paths are relative to /assets/css/. */
@font-face { font-family: "Geist Variable"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/geist-latin-wght-normal.woff2") format("woff2-variations"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Geist Variable"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/geist-latin-ext-wght-normal.woff2") format("woff2-variations"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Geist Mono Variable"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/geist-mono-latin-wght-normal.woff2") format("woff2-variations"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Geist Mono Variable"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/geist-mono-latin-ext-wght-normal.woff2") format("woff2-variations"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
/* Login page only (matches Forge's sign-in): Sora headings and IBM Plex Sans body, the previous theme's self-hosted files (OFL). */
@font-face { font-family: "Sora"; font-style: normal; font-weight: 400 800; font-display: swap; src: url("../fonts/sora-var.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 100 700; font-display: swap; src: url("../fonts/ibm-plex-sans-var.woff2") format("woff2"); }

/* ============================================================
   Gitea --color-* / --border-radius / --fonts-* variables, mapped onto the Chimerical REDESIGN ("next") tokens
   (src/tokens.vendored.css, --rd-*). Theme-agnostic: every value is a var() of a token, so light/dark follow the
   tokens' own prefers-color-scheme switching. Per-theme specifics (scale directions, tint strength) live in
   mapping-light.css / mapping-dark.css. Semantics: success = accent (teal), warning = --rd-warn, danger =
   --rd-critical, info = --rd-neutral. Gitea's own purple/orange/yellow hues are kept where the design has none.
   ============================================================ */
:root {
  /* ── Shape + type (SPEC: controls 10-12, cards 14-16, hairlines, shadow only on floating things) ── */
  --border-radius: var(--rd-radius-xs);
  --border-radius-medium: var(--rd-radius-md);
  --border-radius-full: 999px;
  --fonts-regular: var(--rd-font-sans), system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
  --fonts-proportional: var(--fonts-regular);
  --fonts-monospace: var(--rd-font-mono), ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji";

  /* ── Surfaces ── */
  --color-body: var(--rd-bg);
  --color-nav-bg: var(--rd-rail);
  --color-secondary-nav-bg: var(--rd-bg);
  --color-footer: var(--rd-bg);
  --color-box-body: var(--rd-card);
  --color-box-header: var(--rd-list-bg);
  --color-box-body-highlight: var(--rd-accent-tint);
  --color-menu: var(--rd-sheet);
  --color-card: var(--rd-card);
  --color-button: var(--rd-card);
  --color-code-bg: var(--rd-list-bg);
  --color-console-bg: var(--rd-card);
  --color-console-fg: var(--rd-ink);
  --color-console-fg-subtle: var(--rd-ink-2);
  --color-console-link: var(--rd-ink-2);
  --color-console-hover-bg: color-mix(in srgb, var(--rd-ink) 5%, var(--rd-card));
  --color-console-active-bg: color-mix(in srgb, var(--rd-ink) 10%, var(--rd-card));
  --color-expand-button: var(--rd-accent-tint);
  --color-tooltip-bg: var(--rd-toast-bg);
  --color-tooltip-text: var(--rd-toast-ink);
  --color-timeline: var(--rd-line);
  --color-project-column-bg: color-mix(in srgb, var(--rd-ink) 4%, var(--rd-bg));
  --color-overlay-backdrop: var(--rd-scrim);

  /* ── Text (ink / ink-2 / ink-3; ink-3 only where it sits on plain surfaces) ── */
  --color-text-dark: var(--rd-ink);
  --color-text: var(--rd-ink);
  --color-text-light: var(--rd-ink-2);
  --color-text-light-1: var(--rd-ink-2);
  --color-text-light-2: var(--rd-ink-2);   /* blockquotes etc. sit on tinted code backgrounds: ink-3 is too faint there */
  --color-text-light-3: var(--rd-ink-3);
  --color-placeholder-text: var(--rd-ink-3);
  --color-nav-text: var(--rd-ink);
  --color-label-text: var(--rd-ink);
  --color-caret: var(--rd-ink);

  /* ── Form controls: the redesign's hairline (9%) is far below the 3:1 non-text contrast WCAG 1.4.11 needs for a
       control boundary, so inputs use a stronger edge of their own (--cv-field-border); never --rd-line. ── */
  --cv-field-border: color-mix(in srgb, var(--rd-ink) 50%, var(--rd-card));
  --color-input-text: var(--rd-ink);
  --color-input-background: var(--rd-card);
  --color-input-border: var(--cv-field-border);
  --color-input-toggle-background: color-mix(in srgb, var(--rd-ink) 18%, var(--rd-card));

  /* ── Brand accent (teal). --rd-accent is already the AA-safe value in each theme (5.2:1 on white in light;
       #41d1b0 on near-black in dark), so links, active text and solid fills all use it; fills carry --rd-on-accent. ── */
  --color-primary: var(--rd-accent);
  --color-primary-contrast: var(--rd-on-accent);
  --color-primary-hover: var(--color-primary-dark-1);
  --color-primary-active: var(--color-primary-dark-2);
  --color-accent: var(--rd-accent);
  --color-small-accent: var(--rd-accent-tint);

  /* ── Semantic: text on its own tint, the way the tokens were contrast-verified ── */
  --color-success-text: var(--rd-accent);
  --color-warning-text: var(--rd-warn);
  --color-error-text: var(--rd-critical);
  --color-info-text: var(--rd-neutral);
  --color-priority-text: var(--color-purple);
  --color-success-border: color-mix(in srgb, var(--rd-accent) 35%, transparent);
  --color-warning-border: color-mix(in srgb, var(--rd-warn) 35%, transparent);
  --color-error-border: color-mix(in srgb, var(--rd-critical) 35%, transparent);
  --color-info-border: color-mix(in srgb, var(--rd-neutral) 25%, transparent);
  --color-success-bg: var(--rd-accent-tint);
  --color-warning-bg: var(--rd-warn-tint);
  --color-error-bg: var(--rd-critical-tint);
  --color-info-bg: var(--rd-neutral-tint);
  --color-error-bg-hover: color-mix(in srgb, var(--rd-critical) calc(var(--cv-tint) + 4%), var(--rd-card));
  --color-error-bg-active: color-mix(in srgb, var(--rd-critical) calc(var(--cv-tint) + 8%), var(--rd-card));
  --color-green: var(--rd-accent);
  --color-red: var(--rd-critical);
  --color-blue: var(--rd-neutral);
  --color-danger: var(--rd-critical);

  /* ── Diff: accent/critical tints; word-level highlight a step stronger ── */
  --color-diff-added-fg: var(--rd-accent);
  --color-diff-removed-fg: var(--rd-critical);
  --color-diff-added-row-bg: color-mix(in srgb, var(--rd-accent) var(--cv-tint), var(--rd-card));
  --color-diff-added-row-border: color-mix(in srgb, var(--rd-accent) 22%, var(--rd-card));
  --color-diff-added-linenum-bg: color-mix(in srgb, var(--rd-accent) calc(var(--cv-tint) * 2), var(--rd-card));
  --color-diff-added-word-bg: color-mix(in srgb, var(--rd-accent) calc(var(--cv-tint) * 3), var(--rd-card));
  --color-diff-removed-row-bg: color-mix(in srgb, var(--rd-critical) var(--cv-tint), var(--rd-card));
  --color-diff-removed-row-border: color-mix(in srgb, var(--rd-critical) 22%, var(--rd-card));
  --color-diff-removed-linenum-bg: color-mix(in srgb, var(--rd-critical) calc(var(--cv-tint) * 2), var(--rd-card));
  --color-diff-removed-word-bg: color-mix(in srgb, var(--rd-critical) calc(var(--cv-tint) * 3), var(--rd-card));
  --color-diff-inactive: color-mix(in srgb, var(--rd-ink) 3.5%, var(--rd-card));

  /* ── Hover / active washes ── */
  --color-light: color-mix(in srgb, var(--rd-ink) 3%, transparent);
  --color-light-border: var(--rd-line);
  --color-hover: color-mix(in srgb, var(--rd-ink) var(--cv-hover), transparent);
  --color-hover-opaque: color-mix(in srgb, var(--rd-ink) var(--cv-hover), var(--rd-card));
  --color-active: color-mix(in srgb, var(--rd-ink) calc(var(--cv-hover) * 2), transparent);
  --color-nav-hover-bg: color-mix(in srgb, var(--rd-ink) var(--cv-hover), transparent);
  --color-markup-table-row: color-mix(in srgb, var(--rd-ink) 4%, transparent);
  --color-markup-code-block: var(--rd-list-bg);
  --color-markup-code-inline: color-mix(in srgb, var(--rd-ink) 8%, transparent);
  --color-shadow: color-mix(in srgb, var(--rd-ink) 14%, transparent);
  --color-shadow-opaque: color-mix(in srgb, var(--rd-ink) 18%, var(--rd-bg));
  --color-reaction-bg: color-mix(in srgb, var(--rd-ink) 5%, transparent);
  --color-label-bg: color-mix(in srgb, var(--rd-ink) 12%, transparent);
  --color-label-hover-bg: color-mix(in srgb, var(--rd-ink) 22%, transparent);
  --color-label-active-bg: color-mix(in srgb, var(--rd-ink) 32%, transparent);
  --color-workflow-edge-hover: color-mix(in srgb, var(--rd-ink) 30%, var(--rd-card));
}

@media (prefers-color-scheme: light) {
:root {
  --is-dark-theme: false;
  --cv-tint: 8%;       /* diff / tint strength in light */
  --cv-hover: 4%;
  --color-secondary: color-mix(in srgb, var(--rd-ink) 11%, var(--rd-card));
  --cv-on-fill: #ffffff;        /* white on Gitea's purple fills: >=4.5:1 in light */
  --color-primary-dark-1: color-mix(in srgb, black 14%, var(--color-primary));
  --color-primary-dark-2: color-mix(in srgb, black 25%, var(--color-primary));
  --color-primary-dark-3: color-mix(in srgb, black 34%, var(--color-primary));
  --color-primary-dark-4: color-mix(in srgb, black 43%, var(--color-primary));
  --color-primary-dark-5: color-mix(in srgb, black 62%, var(--color-primary));
  --color-primary-dark-6: color-mix(in srgb, black 82%, var(--color-primary));
  --color-primary-dark-7: color-mix(in srgb, black 94%, var(--color-primary));
  --color-primary-light-1: color-mix(in srgb, white 10%, var(--color-primary));
  --color-primary-light-2: color-mix(in srgb, white 20%, var(--color-primary));
  --color-primary-light-3: color-mix(in srgb, white 30%, var(--color-primary));
  --color-primary-light-4: color-mix(in srgb, white 40%, var(--color-primary));
  --color-primary-light-5: color-mix(in srgb, white 60%, var(--color-primary));
  --color-primary-light-6: color-mix(in srgb, white 80%, var(--color-primary));
  --color-primary-light-7: color-mix(in srgb, white 94%, var(--color-primary));
  --color-secondary-dark-1: color-mix(in srgb, black 4%, var(--color-secondary));
  --color-secondary-dark-2: color-mix(in srgb, black 11%, var(--color-secondary));
  --color-secondary-dark-3: color-mix(in srgb, black 26%, var(--color-secondary));
  --color-secondary-dark-4: color-mix(in srgb, black 34%, var(--color-secondary));
  --color-secondary-dark-5: color-mix(in srgb, black 41%, var(--color-secondary));
  --color-secondary-dark-6: color-mix(in srgb, black 49%, var(--color-secondary));
  --color-secondary-dark-7: color-mix(in srgb, black 56%, var(--color-secondary));
  --color-secondary-dark-8: color-mix(in srgb, black 64%, var(--color-secondary));
  --color-secondary-dark-9: color-mix(in srgb, black 71%, var(--color-secondary));
  --color-secondary-dark-10: color-mix(in srgb, black 79%, var(--color-secondary));
  --color-secondary-dark-11: color-mix(in srgb, black 86%, var(--color-secondary));
  --color-secondary-light-1: color-mix(in srgb, white 30%, var(--color-secondary));
  --color-secondary-light-2: color-mix(in srgb, white 43%, var(--color-secondary));
  --color-secondary-light-3: color-mix(in srgb, white 57%, var(--color-secondary));
  --color-secondary-light-4: color-mix(in srgb, white 70%, var(--color-secondary));
  --color-primary-alpha-10: color-mix(in srgb, var(--color-primary) 10%, transparent);
  --color-secondary-alpha-10: color-mix(in srgb, var(--color-secondary) 10%, transparent);
  --color-primary-alpha-20: color-mix(in srgb, var(--color-primary) 20%, transparent);
  --color-secondary-alpha-20: color-mix(in srgb, var(--color-secondary) 20%, transparent);
  --color-primary-alpha-30: color-mix(in srgb, var(--color-primary) 30%, transparent);
  --color-secondary-alpha-30: color-mix(in srgb, var(--color-secondary) 30%, transparent);
  --color-primary-alpha-40: color-mix(in srgb, var(--color-primary) 40%, transparent);
  --color-secondary-alpha-40: color-mix(in srgb, var(--color-secondary) 40%, transparent);
  --color-primary-alpha-50: color-mix(in srgb, var(--color-primary) 50%, transparent);
  --color-secondary-alpha-50: color-mix(in srgb, var(--color-secondary) 50%, transparent);
  --color-primary-alpha-60: color-mix(in srgb, var(--color-primary) 60%, transparent);
  --color-secondary-alpha-60: color-mix(in srgb, var(--color-secondary) 60%, transparent);
  --color-primary-alpha-70: color-mix(in srgb, var(--color-primary) 70%, transparent);
  --color-secondary-alpha-70: color-mix(in srgb, var(--color-secondary) 70%, transparent);
  --color-primary-alpha-80: color-mix(in srgb, var(--color-primary) 80%, transparent);
  --color-secondary-alpha-80: color-mix(in srgb, var(--color-secondary) 80%, transparent);
  --color-primary-alpha-90: color-mix(in srgb, var(--color-primary) 90%, transparent);
  --color-secondary-alpha-90: color-mix(in srgb, var(--color-secondary) 90%, transparent);
}
}

@media (prefers-color-scheme: dark) {
:root {
  --is-dark-theme: true;
  --cv-tint: 10%;      /* diff / tint strength in dark */
  --cv-hover: 7%;
  --color-secondary: color-mix(in srgb, var(--rd-ink) 9%, var(--rd-card));
  --cv-on-fill: #0c0d0e;        /* the mid-tone dark-theme fills need ink, not white */
  --color-primary-dark-1: color-mix(in srgb, white 14%, var(--color-primary));
  --color-primary-dark-2: color-mix(in srgb, white 25%, var(--color-primary));
  --color-primary-dark-3: color-mix(in srgb, white 34%, var(--color-primary));
  --color-primary-dark-4: color-mix(in srgb, white 43%, var(--color-primary));
  --color-primary-dark-5: color-mix(in srgb, white 62%, var(--color-primary));
  --color-primary-dark-6: color-mix(in srgb, white 82%, var(--color-primary));
  --color-primary-dark-7: color-mix(in srgb, white 94%, var(--color-primary));
  --color-primary-light-1: color-mix(in srgb, black 10%, var(--color-primary));
  --color-primary-light-2: color-mix(in srgb, black 20%, var(--color-primary));
  --color-primary-light-3: color-mix(in srgb, black 30%, var(--color-primary));
  --color-primary-light-4: color-mix(in srgb, black 40%, var(--color-primary));
  --color-primary-light-5: color-mix(in srgb, black 60%, var(--color-primary));
  --color-primary-light-6: color-mix(in srgb, black 80%, var(--color-primary));
  --color-primary-light-7: color-mix(in srgb, black 94%, var(--color-primary));
  --color-secondary-dark-1: color-mix(in srgb, white 4%, var(--color-secondary));
  --color-secondary-dark-2: color-mix(in srgb, white 8%, var(--color-secondary));
  --color-secondary-dark-3: color-mix(in srgb, white 16%, var(--color-secondary));
  --color-secondary-dark-4: color-mix(in srgb, white 25%, var(--color-secondary));
  --color-secondary-dark-5: color-mix(in srgb, white 32%, var(--color-secondary));
  --color-secondary-dark-6: color-mix(in srgb, white 40%, var(--color-secondary));
  --color-secondary-dark-7: color-mix(in srgb, white 47%, var(--color-secondary));
  --color-secondary-dark-8: color-mix(in srgb, white 55%, var(--color-secondary));
  --color-secondary-dark-9: color-mix(in srgb, white 58%, var(--color-secondary));
  --color-secondary-dark-10: color-mix(in srgb, white 65%, var(--color-secondary));
  --color-secondary-dark-11: color-mix(in srgb, white 71%, var(--color-secondary));
  --color-secondary-light-1: color-mix(in srgb, black 16%, var(--color-secondary));
  --color-secondary-light-2: color-mix(in srgb, black 30%, var(--color-secondary));
  --color-secondary-light-3: color-mix(in srgb, black 51%, var(--color-secondary));
  --color-secondary-light-4: color-mix(in srgb, black 60%, var(--color-secondary));
  --color-primary-alpha-10: color-mix(in srgb, var(--color-primary) 10%, transparent);
  --color-secondary-alpha-10: color-mix(in srgb, var(--color-secondary) 10%, transparent);
  --color-primary-alpha-20: color-mix(in srgb, var(--color-primary) 20%, transparent);
  --color-secondary-alpha-20: color-mix(in srgb, var(--color-secondary) 20%, transparent);
  --color-primary-alpha-30: color-mix(in srgb, var(--color-primary) 30%, transparent);
  --color-secondary-alpha-30: color-mix(in srgb, var(--color-secondary) 30%, transparent);
  --color-primary-alpha-40: color-mix(in srgb, var(--color-primary) 40%, transparent);
  --color-secondary-alpha-40: color-mix(in srgb, var(--color-secondary) 40%, transparent);
  --color-primary-alpha-50: color-mix(in srgb, var(--color-primary) 50%, transparent);
  --color-secondary-alpha-50: color-mix(in srgb, var(--color-secondary) 50%, transparent);
  --color-primary-alpha-60: color-mix(in srgb, var(--color-primary) 60%, transparent);
  --color-secondary-alpha-60: color-mix(in srgb, var(--color-secondary) 60%, transparent);
  --color-primary-alpha-70: color-mix(in srgb, var(--color-primary) 70%, transparent);
  --color-secondary-alpha-70: color-mix(in srgb, var(--color-secondary) 70%, transparent);
  --color-primary-alpha-80: color-mix(in srgb, var(--color-primary) 80%, transparent);
  --color-secondary-alpha-80: color-mix(in srgb, var(--color-secondary) 80%, transparent);
  --color-primary-alpha-90: color-mix(in srgb, var(--color-primary) 90%, transparent);
  --color-secondary-alpha-90: color-mix(in srgb, var(--color-secondary) 90%, transparent);
}
}

/* ============================================================
   Component-level rules for the Chimerical REDESIGN ("next") language. Colours/radii/fonts come from the --rd-*
   tokens; the only hard-coded colour is #111214-class ink noted below. SPEC (Flow redesign): Geist, hairlines not
   shadows, 10-14px radii, uppercase 0.07em kickers, accent teal, no gradients, translucent chrome.
   ============================================================ */

/* ── Type: Geist throughout; headings weight 650, tracking -0.025em (the language's title style) ── */
h1, h2, h3, h4, h5,
.ui.header,
.repository.file.list .repo-title,
.page-content .ui.header { font-family: var(--rd-font-sans), var(--fonts-regular); letter-spacing: -0.02em; }
h1, h2 { font-weight: 650; letter-spacing: -0.025em; }
body { font-feature-settings: "cv11", "ss01"; }

/* ── Focus: the language's one ring (2px accent, 2px offset) ── */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible,
.ui.button:focus-visible, .ui.dropdown:focus-visible, .item:focus-visible {
  outline: 2px solid var(--rd-focus-ring);
  outline-offset: 2px;
}
.ui.form input:focus, .ui.form textarea:focus, .ui.input input:focus, .ui.selection.dropdown:focus,
.ui.selection.active.dropdown { border-color: var(--rd-accent); }

/* ── Navbar: translucent material + hairline, sentence-case Geist links, active item as an accent tint pill ── */
#navbar {
  border-bottom: 1px solid var(--rd-line);
  background: var(--rd-rail);
  backdrop-filter: saturate(1.6) blur(20px);   /* unprefixed only: the prefixed pair is dropped by the toolchain */
}
#navbar .item { font-family: var(--rd-font-sans), var(--fonts-regular); font-size: 14px; font-weight: 500; letter-spacing: -0.005em; border-radius: var(--rd-radius-xs); }
#navbar .item.active, #navbar a.item.active { background: var(--rd-accent-tint); color: var(--rd-accent); box-shadow: none; }
#navbar #navbar-logo { gap: 10px; padding-left: 6px; padding-right: 6px; }
#navbar #navbar-logo img { display: none; }            /* the brand mark is drawn from the verbatim brand SVGs instead, so it can follow light/dark */
#navbar #navbar-logo::before {
  content: ""; display: block; width: 28px; height: 28px; flex: none;
  background: url("../img/cv-symbol.svg") center / contain no-repeat;
}
#navbar #navbar-logo::after {
  content: "Git"; font-family: var(--rd-font-sans), var(--fonts-regular);
  font-weight: 650; font-size: 18px; letter-spacing: -0.025em; color: var(--rd-ink);
}
@media (prefers-color-scheme: dark) {
  #navbar #navbar-logo::before { background-image: url("../img/cv-symbol-dark.svg"); }
}

/* ── Buttons: accent fill + the token's own on-accent label; hover is a mix toward ink ── */
.ui.primary.button, .ui.primary.buttons .button, .ui.basic.primary.active.button:not(.basic) {
  background: var(--rd-accent); color: var(--rd-on-accent); border: 1px solid transparent; font-weight: 600;
}
.ui.primary.button:hover, .ui.primary.buttons .button:hover,
.ui.primary.button:focus, .ui.primary.buttons .button:focus,
.ui.primary.button:active, .ui.primary.buttons .button:active {
  background: color-mix(in srgb, var(--rd-accent) 86%, var(--rd-ink)); color: var(--rd-on-accent);
}
.ui.green.button, .ui.green.buttons .button, .ui.positive.button { background: var(--rd-accent); color: var(--rd-on-accent); }
.ui.green.button:hover, .ui.positive.button:hover { background: color-mix(in srgb, var(--rd-accent) 86%, var(--rd-ink)); color: var(--rd-on-accent); }
.ui.red.button, .ui.red.buttons .button, .ui.negative.button { background: var(--rd-critical); color: var(--rd-on-critical); }
.ui.red.button:hover, .ui.negative.button:hover { background: color-mix(in srgb, var(--rd-critical) 88%, var(--rd-ink)); color: var(--rd-on-critical); }
.ui.button, .ui.buttons .button { font-weight: 550; border-radius: var(--rd-radius-xs); }
.ui.basic.button, .ui.basic.buttons .button { border-color: var(--cv-field-border); }

/* ── Cards / boxes: hairline border, 14px, no shadow (shadow is for floating things only: menus, popups) ── */
.ui.segment, .ui.attached.segment, .ui.attached.header, .ui.menu, .ui.card, .ui.cards > .card, .ui.table { box-shadow: none; }
.ui.segment, .ui.card, .ui.cards > .card { border-radius: var(--rd-radius-md); }
.ui.attached.header:first-child, .ui.top.attached.header { border-top-left-radius: var(--rd-radius-md); border-top-right-radius: var(--rd-radius-md); }
.ui.bottom.attached.segment, .ui.attached.segment:last-child { border-bottom-left-radius: var(--rd-radius-md); border-bottom-right-radius: var(--rd-radius-md); }
.ui.dropdown .menu, .ui.popup, .tippy-box { border-radius: var(--rd-radius-sm); box-shadow: var(--rd-shadow-float); }

/* ── Footer: small Geist, not mono ── */
.page-footer { font-family: var(--rd-font-sans), var(--fonts-regular); font-size: 12.5px; }

/* ── Code stays ligature-free (Geist Mono would render -> as an arrow, => as ⇒ in diffs) ── */
html { font-variant-ligatures: none; font-feature-settings: "liga" 0, "calt" 0; }
code, pre, kbd, samp, .ui.label.mono { font-family: var(--rd-font-mono), var(--fonts-monospace); }

/* ── Solid colour labels/badges: on-fill text only where it is >=4.5:1.
     (Gitea guards these with a tripled .ui.ui.ui selector, so ours must match.) ── */
.ui.ui.ui.green.label, .ui.ui.ui.green.label:hover { background: var(--rd-accent); border-color: var(--rd-accent); color: var(--rd-on-accent); }
.ui.ui.ui.green.label:hover { background: color-mix(in srgb, var(--rd-accent) 88%, var(--rd-ink)); }
.ui.ui.ui.purple.label, .ui.ui.ui.purple.label:hover { color: var(--cv-on-fill); }
.ui.ui.ui.purple.label:hover { background: color-mix(in srgb, var(--color-purple) 88%, var(--rd-ink)); border-color: transparent; }
.ui.ui.ui.red.label, .ui.ui.ui.red.label:hover { background: var(--rd-critical); border-color: var(--rd-critical); color: var(--rd-on-critical); }
.ui.ui.ui.orange.label, .ui.ui.ui.orange.label:hover, .ui.ui.ui.yellow.label, .ui.ui.ui.yellow.label:hover { color: #111214; }  /* ink on Gitea's amber hues */

/* ── Links inside running text must not rely on colour alone (WCAG 1.4.1) ── */
p a, .markup a, .help a, .ui.message a, .time-desc a, .page-footer .left-links a, .comment .text a, .timeline-item .text a, .flex-item-body a:not(.ui):not(.label) {
  text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px;
}
.ui.button a, a.ui.button, .ui.label a, a.ui.label, .menu a, a.item, .ui.menu a, .repo-button-row a, .repo-title a { text-decoration: none; }
.form .help { color: var(--rd-ink-2); }

/* Sign-in (and the other auth pages sharing its layout) is styled in login.css to match Forge's login. */

/* Diff summary: the "changed files" count uses --color-yellow as text (1.55:1 on the page) */
.repository .diff-detail-box .diff-detail-stats strong:nth-of-type(1) { color: var(--rd-warn); }

/* Landing page (custom/templates/home.tmpl) — signed-out visitors. Same type/marks as the branded sign-in. */
.page-content.home.cv-landing {
  display: flex; align-items: center; justify-content: center;
  min-height: calc(100vh - 160px); padding: 48px 24px;
}
.cv-landing-hero { max-width: 560px; text-align: center; }
.cv-landing-mark {
  display: block; width: 76px; height: 76px; margin: 0 auto 22px;
  background: url("../img/cv-symbol.svg") center / contain no-repeat;
}
@media (prefers-color-scheme: dark) {
  .cv-landing-mark { background-image: url("../img/cv-symbol-dark.svg"); }
}
.cv-landing-title {
  margin: 0; font-family: var(--rd-font-sans), var(--fonts-regular); font-weight: 650;
  font-size: 48px; line-height: 1.06; letter-spacing: -0.03em; color: var(--rd-ink);
}
.cv-landing-strap {
  margin: 14px 0 0; font-family: var(--rd-font-sans), var(--fonts-regular); font-size: 12.5px; font-weight: 600;
  letter-spacing: 0.07em; text-transform: uppercase; color: var(--rd-ink-2);
}
.cv-landing-owner { margin: 6px 0 34px; font-size: 15px; color: var(--rd-ink-3); }
.cv-landing-actions { display: flex; gap: 12px; justify-content: center; }
.cv-landing-actions .ui.button { min-width: 160px; padding: 14px 24px; font-size: 15px; border-radius: var(--rd-radius-sm); }
@media (max-width: 480px) {
  .cv-landing-title { font-size: 36px; }
  .cv-landing-mark { width: 60px; height: 60px; }
}

/* ============================================================
   Sign-in family pages (sign in, 2FA, passkey, link account, register) styled to MATCH FORGE'S LOGIN.
   Source of the values: Forge `resources/ts/components/AuthShell.vue` (origin/main 2b83f09) and its four wallpaper SVGs
   (copied byte-for-byte to /assets/img/login-facets-*.svg). Tokens are namespaced --fl-* so they cannot collide with the
   theme's --rd-* tokens or Gitea's variables; they are Forge's scoped copies, not new brand values.
   Scoped with :has(.page-content.user.signin) so no other Gitea page is touched.
   This page therefore keeps Forge's current look (Sora / IBM Plex Sans, green) while the rest of Gitea follows the
   redesign ("next") language: an intentional, Josh-requested exception (2026-10-24).
   Known departures from Forge: the "Forgot password?" link sits on the password label row (Gitea's markup) rather than
   beside "Remember me"; no "Admin Login" pill or footer link; Gitea's navbar and footer are hidden on these pages.
   ============================================================ */
body:has(.page-content.user.signin) {
  --fl-bg: #f4f5f6; --fl-card: #ffffff; --fl-border: rgba(10, 10, 11, 0.10); --fl-hair: rgba(10, 10, 11, 0.06);
  --fl-text: #111214; --fl-text2: #53565c; --fl-text3: #666a70;
  --fl-accent: #12a668; --fl-accent-bright: #0b7a4a; --fl-accent-tint: rgba(18, 166, 104, 0.08); --fl-on-accent: #0a0a0b;
  --fl-danger: #b02a32; --fl-danger-tint: rgba(176, 42, 50, 0.08); --fl-danger-line: rgba(176, 42, 50, 0.24); --fl-success-line: rgba(18, 166, 104, 0.28);
  --fl-base: #10985f; --fl-glow: rgba(255, 255, 255, 0.14); --fl-edge: rgba(7, 96, 58, 0.22);
  --fl-facets: url("../img/login-facets-green-land.svg"); --fl-mark: url("../img/login-mark.svg");
  --fl-display: "Sora", system-ui, sans-serif; --fl-sans: "IBM Plex Sans", system-ui, sans-serif;
  background: var(--fl-base) !important; color: var(--fl-text); font-family: var(--fl-sans);
}
@media (orientation: portrait) { body:has(.page-content.user.signin) { --fl-facets: url("../img/login-facets-green-port.svg"); } }
@media (prefers-color-scheme: dark) {
  body:has(.page-content.user.signin) {
    --fl-bg: #0a0a0b; --fl-card: #151517; --fl-border: rgba(255, 255, 255, 0.07); --fl-hair: rgba(255, 255, 255, 0.05);
    --fl-text: #e7e7ea; --fl-text2: #9a9aa3; --fl-text3: #84848f;
    --fl-accent: #3ecf8e; --fl-accent-bright: #6fe3ac; --fl-accent-tint: rgba(62, 207, 142, 0.10);
    --fl-danger: #ea6165; --fl-danger-tint: rgba(234, 97, 101, 0.10); --fl-danger-line: rgba(234, 97, 101, 0.28); --fl-success-line: rgba(62, 207, 142, 0.30);
    --fl-base: #0b3a28; --fl-glow: rgba(18, 166, 104, 0.20); --fl-edge: rgba(3, 26, 17, 0.35);
    --fl-facets: url("../img/login-facets-forest-land.svg"); --fl-mark: url("../img/login-mark-dark.svg");
  }
}
@media (prefers-color-scheme: dark) and (orientation: portrait) { body:has(.page-content.user.signin) { --fl-facets: url("../img/login-facets-forest-port.svg"); } }

/* wallpaper: flat base first, then the facets fade in (as Forge's AuthShell does), plus the glow behind the card and the edge shading */
body:has(.page-content.user.signin)::before {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background: var(--fl-facets) center / cover no-repeat; animation: fl-in 0.8s ease 0.06s both;
}
body:has(.page-content.user.signin)::after {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background: radial-gradient(ellipse 46% 62% at 50% 50%, var(--fl-glow), transparent 100%), radial-gradient(circle at 50% 50%, transparent 55%, var(--fl-edge) 100%);
}
@keyframes fl-in { from { opacity: 0; transform: scale(1.04); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { body:has(.page-content.user.signin)::before { animation: none; } }
body:has(.page-content.user.signin) .full.height, body:has(.page-content.user.signin) .page-content.user.signin { background: transparent !important; }
body:has(.page-content.user.signin) #navbar, body:has(.page-content.user.signin) .page-footer { display: none; }

/* layout: the card is centred; Gitea's own column becomes the card */
.page-content.user.signin { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 32px 20px 48px; }
.page-content.user.signin > .ui.grid { width: 100%; margin: 0; }
.page-content.user.signin .column {
  max-width: 380px !important; width: 100%; margin: 0 auto !important; padding: 32px !important; gap: 0 !important;
  background: var(--fl-card); color: var(--fl-text); border: 1px solid var(--fl-hair); border-radius: 20px;
  box-shadow: 0 32px 64px -24px rgba(3, 40, 24, 0.55); font-family: var(--fl-sans);
}
.page-content.user.signin .column::before {
  content: "Chimerical Git"; display: block; text-align: center; margin: 0 0 24px; padding-top: 54px;
  background: var(--fl-mark) top center / 44px 44px no-repeat;
  font: 650 17px/1.2 var(--fl-display); letter-spacing: -0.01em; color: var(--fl-text);
}
.page-content.user.signin .column::after { content: none; }
.page-content.user.signin .ui.container.fluid { width: 100% !important; max-width: none !important; margin: 0 !important; }
.page-content.user.signin .ui.attached.segment, .page-content.user.signin .ui.attached.segment.header {
  background: none; border: 0; box-shadow: none; padding: 0; margin: 0; max-width: none; border-radius: 0; color: inherit;
}
/* title (the page's own heading, so assistive tech still gets it) + the lede */
.page-content.user.signin :is(h3, h4).ui.top.attached.header {
  display: block; background: none; border: 0; border-radius: 0; box-shadow: none; padding: 0; margin: 0 0 6px; text-align: center;
  font: 650 19px/1.25 var(--fl-display); letter-spacing: -0.01em; text-transform: none; color: var(--fl-text);
}
.page-content.user.signin:has(form[action$="/user/login"]) h4.ui.top.attached.header::after {
  content: "Welcome back. Sign in to continue."; display: block; margin: 6px 0 24px;
  font: 400 13px/1.55 var(--fl-sans); letter-spacing: 0; color: var(--fl-text2);
}
.page-content.user.signin :is(h3, h4).ui.top.attached.header + .ui.attached.segment { margin-top: 22px; }
.page-content.user.signin:has(form[action$="/user/login"]) h4.ui.top.attached.header + .ui.attached.segment { margin-top: 0; }
/* fields */
.page-content.user.signin .ui.form .field { margin: 0 0 16px; }
.page-content.user.signin .ui.form .field > label, .page-content.user.signin .ui.form .field .tw-flex > label {
  display: block; font: 600 12.5px/1.3 var(--fl-sans); letter-spacing: 0; text-transform: none; color: var(--fl-text2); margin: 0 0 6px;
}
.page-content.user.signin .ui.form .required.field > label::after { content: none; }
.page-content.user.signin .ui.form .tw-flex.tw-mb-1 { align-items: baseline; margin-bottom: 6px !important; }
.page-content.user.signin .ui.form .tw-flex.tw-mb-1 label { margin: 0; }
.page-content.user.signin .ui.form input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]) {
  width: 100%; padding: 12px 14px; border-radius: 12px; border: 1.5px solid var(--fl-border); background: var(--fl-bg); color: var(--fl-text);
  font: 400 16px/1.4 var(--fl-sans); outline: none; box-shadow: none; transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.page-content.user.signin .ui.form input::placeholder { color: var(--fl-text3); }
.page-content.user.signin .ui.form input:not([type="checkbox"]):focus { border-color: var(--fl-accent); box-shadow: 0 0 0 3px var(--fl-accent-tint); background: var(--fl-bg); color: var(--fl-text); }
.page-content.user.signin .ui.form .inline.field { margin: 2px 0 22px; }
.page-content.user.signin .ui.form .ui.checkbox label { font: 400 13px/1.4 var(--fl-sans); color: var(--fl-text2); margin-left: 22px; padding-left: 0; }
.page-content.user.signin .ui.form input[type="checkbox"] { accent-color: var(--fl-accent); }
.page-content.user.signin a:not(.ui):not(.signin-passkey) { font: 600 13px/1.3 var(--fl-sans); color: var(--fl-accent-bright); text-decoration: none; }
.page-content.user.signin a:not(.ui):not(.signin-passkey):hover { text-decoration: underline; }
.page-content.user.signin :is(a, button, input, .signin-passkey):focus-visible { outline: 2px solid var(--fl-accent); outline-offset: 3px; }
/* primary button: Forge's pill */
.page-content.user.signin .ui.primary.button, .page-content.user.signin .ui.primary.button:hover, .page-content.user.signin .ui.primary.button:focus, .page-content.user.signin .ui.primary.button:active {
  display: flex; align-items: center; justify-content: center; width: 100%; padding: 13px 16px; border: 0; border-radius: 999px;
  background: var(--fl-accent); color: var(--fl-on-accent); font: 700 14px/1.3 var(--fl-sans); letter-spacing: 0; text-transform: none; margin: 0;
}
.page-content.user.signin .ui.primary.button:active { transform: scale(0.98); }
/* secondary button: the passkey link */
.page-content.user.signin .signin-passkey {
  display: flex; align-items: center; justify-content: center; width: 100%; margin-top: 10px; padding: 13px 16px; border-radius: 999px;
  background: var(--fl-hair); color: var(--fl-text); font: 600 14px/1.3 var(--fl-sans); text-decoration: none; cursor: pointer;
}
.page-content.user.signin .signin-passkey:hover { text-decoration: underline; }
/* messages: Forge's alert */
.page-content.user.signin .ui.message, .page-content.user.signin .ui.negative.message {
  font: 400 13px/1.5 var(--fl-sans); color: var(--fl-danger); background: var(--fl-danger-tint); border: 1px solid var(--fl-danger-line);
  border-radius: 12px; padding: 12px 14px; margin: 0 0 18px; box-shadow: none;
}
.page-content.user.signin .ui.message .header { font: 600 13px/1.4 var(--fl-sans); color: inherit; }
.page-content.user.signin .ui.positive.message, .page-content.user.signin .ui.success.message { color: var(--fl-accent-bright); background: var(--fl-accent-tint); border-color: var(--fl-success-line); }
/* phones (MobileAuth-Login in Forge): 32px gutter, tighter card, smaller title */
@media (max-width: 480px) {
  .page-content.user.signin { padding: 32px; }
  .page-content.user.signin .column { padding: 26px !important; }
  .page-content.user.signin .column::before { margin-bottom: 20px; }
  .page-content.user.signin :is(h3, h4).ui.top.attached.header { font-size: 17px; }
  .page-content.user.signin:has(form[action$="/user/login"]) h4.ui.top.attached.header::after { font-size: 12.5px; margin-bottom: 20px; }
}
