From 80ecc7c8b5ded3d05c4ecc9adce9ebbdfccab5a1 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 26 Aug 2026 01:06:41 -0700 Subject: [PATCH] feat(control-ui): add the Absolutely theme with self-hosted typography (#129885) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(control-ui): vendor Space Grotesk and Lora webfont subsets Adds the woff2 faces the Absolutely theme paints in, plus the stylesheet that declares them. Both families are SIL Open Font License 1.1 and ship unmodified, with their upstream license text beside the files as the license requires. Latin and latin-ext subsets only, 184 KB total. Serving these from the gateway rather than a font CDN keeps font-src 'self' intact, avoids a third-party request on every load, and works on an offline or LAN-only gateway. The stylesheet is a static asset rather than a bundled import: it is linked at runtime only while a theme that declares faces is active, so it stays out of the startup CSS budget and out of every other theme's load. * feat(control-ui): add the Absolutely theme with self-hosted typography Adds a fourth built-in Control UI theme: terracotta clay on warm graphite in dark mode, burnt clay on ivory in light mode, with its own typography — Space Grotesk for chrome and Lora for chat prose. Typography is theme-owned rather than global. A new --font-chat token defaults to --font-body, so every other theme is byte-for-byte unchanged, and the face declarations live in a static stylesheet that the theme applier links only while a theme that declares fonts is active. Themes without declared faces issue no font request at all. The faces themselves are vendored in the preceding commit. Also fixes two defects found while building it: - Theme cards overflowed their border on long labels: the grid's 1fr label track floors at min-content, so a long name pushed the trailing column past the card edge. The track is now minmax(0, 1fr) with an ellipsis, which also covers imported tweakcn labels. The selected-state checkmark that made the overflow visible is gone; the accent border, tint, and ring already carry selection, and aria-pressed owns the semantics. - index.html's first-paint bootstrap only knew claw/knot/dash, so any new theme flashed the default palette before the app corrected it. It now resolves the new theme and has a matching pre-paint background, with mount-fallback coverage for both modes. Startup JS grows 198 B for the theme wiring, appearance option, locale strings, and font loader, which fits the existing ratchet tolerance, so no budget baseline moves. Startup CSS stays within its 45 KiB ceiling, which is why the faces are a linked static asset rather than a bundled import. * style(control-ui): format the vendored font stylesheet The generated @font-face block kept its upstream single-line unicode-range declarations, which oxfmt wraps. Repo-wide `pnpm format:check` is clean. * test(control-ui): type the chat runId in the typography e2e Reuses the chat-flow requireRecord/requireString helpers instead of asserting the params shape, so runId is a real string rather than an unknown coerced by String() (oxlint no-base-to-string). * fix(control-ui): resolve theme fonts against the configured UI mount The theme font stylesheet and its faces used root-absolute URLs, so a gateway served under a configured Control UI base path (gateway.controlUi.basePath, for example /openclaw) fetched them from the wrong origin path. Both requests 404ed there and Absolutely silently fell back to system fonts while its palette still applied, which reads as "the theme looks a bit off" rather than as a broken asset. The link href now goes through inferControlUiPublicAssetPath, the same helper plugin art and provider icons already use, and the stylesheet's own url() references are relative to it, so both levels follow the mount without the loader knowing the base path. Adds an e2e case under /openclaw asserting the resolved href and that the browser fetches below the mount; it fails on the previous code with the root-absolute path. Reported by ClawSweeper review on #129885. * test(slack): stop racing the aborted read request in the Web API bound test `bounds dedicated reads without timing out shared clients` asserted the mock server received exactly two requests, but the read client aborts at 20ms and the server records on arrival, so whether the aborted request lands first is a race. It failed on a loaded CI runner with 1 received. The bound is still asserted directly (read rejects, shared resolves); the count now only requires the shared client's arrival, and checks its token so the dedicated client is still proven not to have carried the call. Unrelated to this PR's theme work; fixed here rather than left red. --- docs/web/control-ui.md | 2 +- extensions/slack/src/client.web-api.test.ts | 7 +- src/config/types.openclaw.ts | 2 +- src/config/zod-schema.root-shape.ts | 8 +- ui/index.html | 20 +- ui/public/fonts/absolutely.css | 92 +++++++++ ui/public/fonts/lora-OFL.txt | 93 +++++++++ ui/public/fonts/lora-italic-latin-ext.woff2 | Bin 0 -> 21120 bytes ui/public/fonts/lora-italic-latin.woff2 | Bin 0 -> 40648 bytes ui/public/fonts/lora-latin-ext.woff2 | Bin 0 -> 20176 bytes ui/public/fonts/lora-latin.woff2 | Bin 0 -> 37792 bytes ui/public/fonts/space-grotesk-OFL.txt | 93 +++++++++ ui/public/fonts/space-grotesk-latin-ext.woff2 | Bin 0 -> 18924 bytes ui/public/fonts/space-grotesk-latin.woff2 | Bin 0 -> 22320 bytes ui/src/app/bootstrap.ts | 3 +- ui/src/app/mount-fallback.test.ts | 14 +- ui/src/app/public-assets.ts | 1 + ui/src/app/server-prefs-state.ts | 2 +- ui/src/app/theme.ts | 48 ++++- ui/src/e2e/theme-muted-contrast.e2e.test.ts | 7 +- ui/src/e2e/theme-typography.e2e.test.ts | 191 ++++++++++++++++++ ui/src/i18n/locales/en.ts | 4 + ui/src/pages/config/view-appearance.ts | 10 +- .../styles/base-theme-contrast.node.test.ts | 2 + ui/src/styles/base.css | 163 +++++++++++++++ ui/src/styles/chat/grouped.css | 6 +- ui/src/styles/chat/text.css | 1 + ui/src/styles/config.css | 35 +++- ui/src/styles/theme-contrast.test.ts | 1 + 29 files changed, 776 insertions(+), 29 deletions(-) create mode 100644 ui/public/fonts/absolutely.css create mode 100644 ui/public/fonts/lora-OFL.txt create mode 100644 ui/public/fonts/lora-italic-latin-ext.woff2 create mode 100644 ui/public/fonts/lora-italic-latin.woff2 create mode 100644 ui/public/fonts/lora-latin-ext.woff2 create mode 100644 ui/public/fonts/lora-latin.woff2 create mode 100644 ui/public/fonts/space-grotesk-OFL.txt create mode 100644 ui/public/fonts/space-grotesk-latin-ext.woff2 create mode 100644 ui/public/fonts/space-grotesk-latin.woff2 create mode 100644 ui/src/e2e/theme-typography.e2e.test.ts diff --git a/docs/web/control-ui.md b/docs/web/control-ui.md index eb20d1cf039c..6c57703336b5 100644 --- a/docs/web/control-ui.md +++ b/docs/web/control-ui.md @@ -149,7 +149,7 @@ Docs translations are generated for the same non-English locale set, but the doc ## Appearance themes -The Appearance panel has the built-in Claw, Knot, and Dash themes (Claw is default), plus one browser-local tweakcn import slot. To import a theme, open the [tweakcn editor](https://tweakcn.com/editor/theme), choose or create a theme, click **Share**, and paste the copied link into Appearance. The importer also accepts `https://tweakcn.com/r/themes/` registry URLs, editor URLs like `https://tweakcn.com/editor/theme?theme=amethyst-haze`, relative `/themes/` paths, raw theme IDs, and default theme names such as `amethyst-haze`. +The Appearance panel has the built-in Claw, Knot, Dash, and Absolutely themes (Claw is default), plus one browser-local tweakcn import slot. To import a theme, open the [tweakcn editor](https://tweakcn.com/editor/theme), choose or create a theme, click **Share**, and paste the copied link into Appearance. The importer also accepts `https://tweakcn.com/r/themes/` registry URLs, editor URLs like `https://tweakcn.com/editor/theme?theme=amethyst-haze`, relative `/themes/` paths, raw theme IDs, and default theme names such as `amethyst-haze`. Imported themes are stored only in the current browser profile; they are not written to gateway config and do not sync across devices. Replacing the imported theme updates the one local slot; clearing it switches back to Claw if the imported theme was active. diff --git a/extensions/slack/src/client.web-api.test.ts b/extensions/slack/src/client.web-api.test.ts index ea66ae52cab2..ef09ab7e9fba 100644 --- a/extensions/slack/src/client.web-api.test.ts +++ b/extensions/slack/src/client.web-api.test.ts @@ -379,7 +379,12 @@ describe("Slack Web API routing", () => { await expect(readClient.auth.test()).rejects.toThrow(); await expect(sharedClient.auth.test()).resolves.toMatchObject({ ok: true }); - expect(requests).toHaveLength(2); + // The read client aborts at 20ms, so whether its request reaches the + // server before the abort is a race on a loaded runner. The bound itself + // is asserted above; here only the shared client's arrival is certain, + // and its token proves the dedicated client did not carry the call. + expect(requests.length).toBeGreaterThanOrEqual(1); + expect(requests.at(-1)?.authorization).toBe("Bearer xoxb-shared"); } finally { await server.close(); } diff --git a/src/config/types.openclaw.ts b/src/config/types.openclaw.ts index 8a15340c98af..a8f732b4fef8 100644 --- a/src/config/types.openclaw.ts +++ b/src/config/types.openclaw.ts @@ -156,7 +156,7 @@ export type OpenClawConfig = { */ prefs?: { /** Control UI theme. */ - theme?: "claw" | "knot" | "dash" | "custom"; + theme?: "claw" | "knot" | "dash" | "absolutely" | "custom"; /** Light/dark preference. */ themeMode?: "light" | "dark" | "system"; /** User-selected Control UI accent color (#RRGGBB). */ diff --git a/src/config/zod-schema.root-shape.ts b/src/config/zod-schema.root-shape.ts index 7344990b0c2f..61338b419f76 100644 --- a/src/config/zod-schema.root-shape.ts +++ b/src/config/zod-schema.root-shape.ts @@ -220,7 +220,13 @@ export const OpenClawSchemaShape = { prefs: z .strictObject({ theme: z - .union([z.literal("claw"), z.literal("knot"), z.literal("dash"), z.literal("custom")]) + .union([ + z.literal("claw"), + z.literal("knot"), + z.literal("dash"), + z.literal("absolutely"), + z.literal("custom"), + ]) .optional(), themeMode: z .union([z.literal("light"), z.literal("dark"), z.literal("system")]) diff --git a/ui/index.html b/ui/index.html index 4efa26669d30..f1872cf5142f 100644 --- a/ui/index.html +++ b/ui/index.html @@ -21,7 +21,7 @@ globalThis.__zod_globalConfig.jitless = true; (function () { - var THEMES = { claw: 1, knot: 1, dash: 1 }; + var THEMES = { claw: 1, knot: 1, dash: 1, absolutely: 1 }; var MODES = { system: 1, light: 1, dark: 1 }; var LEGACY = { dark: "claw:dark", @@ -61,9 +61,13 @@ ? mode === "light" ? "dash-light" : "dash" - : mode === "light" - ? "light" - : "dark"; + : theme === "absolutely" + ? mode === "light" + ? "absolutely-light" + : "absolutely" + : mode === "light" + ? "light" + : "dark"; document.documentElement.setAttribute("data-theme", resolved); var resolvedMode = resolved.includes("light") ? "light" : "dark"; document.documentElement.setAttribute("data-theme-mode", resolvedMode); @@ -106,6 +110,14 @@ background: #f7f2ec; } + html[data-theme="absolutely"] { + background: #262624; + } + + html[data-theme="absolutely-light"] { + background: #faf9f5; + } + body { margin: 0; min-height: 100%; diff --git a/ui/public/fonts/absolutely.css b/ui/public/fonts/absolutely.css new file mode 100644 index 000000000000..b8badc1e7103 --- /dev/null +++ b/ui/public/fonts/absolutely.css @@ -0,0 +1,92 @@ +/* + * Self-hosted webfonts for the Absolutely theme. + * + * Served as a static asset and linked at runtime by the theme applier, so + * themes that do not use these faces download neither this file nor the + * fonts. Paths are stable (public/, unhashed) because the link is built + * from a constant rather than a bundler import. + * + * The url() references are relative to this stylesheet on purpose: the link + * href is resolved against the configured Control UI mount, and relative + * sources then follow it, so a gateway served under a base path such as + * /openclaw still reaches the faces. + * + * Both families are SIL Open Font License 1.1 and ship unmodified, with their + * upstream license text beside the files in public/fonts. Serving them from the + * gateway (not a font CDN) keeps `font-src 'self'` intact, avoids a third-party + * request on every load, and works on an offline or LAN-only gateway. + * + * Latin and latin-ext subsets only, matching the Control UI's shipped locales; + * unicode-range values come from the upstream subset definitions, so a glyph + * outside them falls through to the stack's next family instead of loading a + * face nothing renders. + */ + +@font-face { + font-family: "Space Grotesk"; + font-style: normal; + font-weight: 300 700; + font-display: swap; + src: url("space-grotesk-latin-ext.woff2") format("woff2"); + 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: "Space Grotesk"; + font-style: normal; + font-weight: 300 700; + font-display: swap; + src: url("space-grotesk-latin.woff2") format("woff2"); + 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: "Lora"; + font-style: italic; + font-weight: 400 700; + font-display: swap; + src: url("lora-italic-latin-ext.woff2") format("woff2"); + 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: "Lora"; + font-style: italic; + font-weight: 400 700; + font-display: swap; + src: url("lora-italic-latin.woff2") format("woff2"); + 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: "Lora"; + font-style: normal; + font-weight: 400 700; + font-display: swap; + src: url("lora-latin-ext.woff2") format("woff2"); + 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: "Lora"; + font-style: normal; + font-weight: 400 700; + font-display: swap; + src: url("lora-latin.woff2") format("woff2"); + 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; +} diff --git a/ui/public/fonts/lora-OFL.txt b/ui/public/fonts/lora-OFL.txt new file mode 100644 index 000000000000..d0ce7fe062e6 --- /dev/null +++ b/ui/public/fonts/lora-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/ui/public/fonts/lora-italic-latin-ext.woff2 b/ui/public/fonts/lora-italic-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..580e3d9c5d289ac36af2489331e314f4d1c21eeb GIT binary patch literal 21120 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 Xj1}j>Q|~)ZQ z1(j_9A*l4iNRZG0z0Lut3NXQJ0EU1>dmuJoQjlWpceinn3FPcZH!2z&_T3@PL9@9$%BG%RMg9~v2epnzXne*Qz& zDU%hlDiK=t3KhScWXCHs$yDSGI3{FFGM4LX(TfSeutGPZb0TKEcU2VR?^toMms}!O ztm`w_(=lUo-K<%4S7+dO4^HqQ7E!u$4G^>p&PhpNG6T&pR11%H_L0|T<^E9VjJUDY z*U0bNK43(XcLm+-#SxK{8E?#b;Mni%zND8A@v$)v1>;=0gj`7{-q7_2)@Q4`Ewt~c z6+FzMeH1F1n~Vv+@7ci}m4Scz1%(Itni}B+5*9>Z6KfhnLI>tEj74G`odu71nfq$j zo})N_llH+y8h$v;a}BiJ$n|c2FRkIggnXeWun3`~ zc;y+)XVg$8P$Z!9-c5ILoqy+KNdJzN(3eW39ZQ8p%{8`<*n0O@Z<0FxsQD1NmkLA< zcYPjU;*n$5n`aq#tF~}kM_`!ilF(7X?=y~qGU4|Y(hsA0u}_urvRgOKbK#& z$!R*@?x;aoldbw%j$nL$Z?4ucxo2veHkR(J@m~<*cEyx(Cj$}@sC6`T+_YPprmqsN zar(^#@Wp>NZ(1U60XZNMUwNDM1~ZCrt=0k|vxeM7dRu}^SMl(mV5fea_6A`#1}Bd) zKX(?nNQw7U%|70G-S^l|fnK0kHdI7fwG{uLUu+t_O0u~K1HrE);vRLDDO=NNezD(i zM01b@;CjfC<`8lv?l-ud%MNhn;8rv`r5NI66)t@1DQ#bNGON<~B?sP#y&t@|4JbNj zRRHP^Z9G^=EKFIJB8Uh%Wxt2M2qDCFoUI{@)j6mbyAyy(LUJqg5@3Fv$MYBYMPy(3 zt7)Ly_mZmb8FteD1hcA)vfSHa2k#OSFI31(e*mBP{-)BiNMoz`n$D+2vcSq9^EjzJ zDt=P|m-xXfNy|uW#O-8~I62lzl`-e`v*@GyR|oJLoif$wpVEhpPMK*`n+&!cUI0NK zh&ZG&$wK~~Xoq~U^;qd)e7>_-0A=@-4p|6Y3B1(wVCqCB=X#=nI*8myMQ&PB)fgj; z?>=eH@;-DbH2#G;X44X?WrLy-seJ_p&L3mqI@O8hJL)ON+B|&sL&Yll5GzOxYIqw} z^Fg9LE7>(%p%ZcQs%(TK8S3Z#rA_am#~qf_ovNt7@~A;?C|G97BK zlCS6rJqe?AezR%oAB0AH36RZOp{j*rj;Sd}u-l!HPGZd-d`XUD?-+o8UG=t}CA6hv2rX~RbYhKfAC`k_Id

w7_%~H5h=3@ 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

eVB|< zlOhTp&5?tk*;gjUAO6mrlZcB={~DNUU?i73OtzvK#_;7~DE*K0ApTcqZv|$I4zWFU z9!~WAi>jVB!x@i0AtFWgRjnFVB2#o^6^mpA?qtyxxR7lKIu?|(F*AacD-dp|Wh(EZe%W}uu$;$k$D{0g ze9LFo?ao`;SlMp?&4MTfcWyd{1;2uePu$cWDax~4P;^ODhlWiH#PSzSuG=4NiS6HS z8ILHXg|^>>;c_RjzPDsYZAKS+v%H^)MP6cJG&MYgTz`0f$3^0y;>23Lnos~{=Ln@R zUAVGH6S2UNG6usTK=ITz zm4bHB6RYuA1TkV7_L&nelI&>8XM{i$&*a2%UY-~Kx+i^4ME$nMy9s}~TMdAy|9;mO z(nvS!0Yld`t|v>iY?%c2a$dK}`@Hfx@&n2B+ASg4{=Au|@BO@8<{xBWX`BSBTher{ zW}Ev{03y}vYmLBDvfmsB>+_V+Zr8J0Nzq%1sD)$Ic)IY;doxQC$9ubAW!J@elJm^> za?)tmmSCN0QV+*A^t58P(fi@jVy63t(Ky{;?8i*d>Ls9oGgU$vxqJtJ>!AODObo0l zbPith=fJv&M$%x7j?tKYFkd4$IS{tE{jHGZ>1C(`$@mpOXD#@ z<0?cbCa5~G8V+6oP?#N*mP|4c64DB0=sc^gA}7|3hANLkH#O>JYCLT+ZW2^QD;n7` za-FT4z|4^|NigUxsK=SCdKs4jWFjcdW#8{JPc0_M`6L0G3nl@JXiqvOrQc5=%!IiH zJRl%a;Bkz{9>&E%YhO748-PE)8#Sl*-27!>8Nnsxl#{3OPxNKxZT{zNRI9;r;;gJ9 zt#dfeds)53W)x|D7~VMM=X5^UiSu<^1FW|mw@q>x3ff;L#vu4zLn-f4Hh&WWZ^xYZ`nHqpC{qbEoUCK}5nHfq#9-ogX@AEaGUEel{A z8=_2;I|fpFouR56EAua$af;S|HdgCLzIrxX@-+eoG%QltN{0zZq}$_5DnIN}UBuj^ zf!SA1IDdca#9BLxJ)hwb)YxuG^f@YWllVEd;vg!2ngb5cxlfic-ukUuRGV0;IBN z*&Cg)e+s&el(1vmQOHHw1DEZla?8sngexByl1vZleAy9+f1>*IfX|MU9n{ERI4N3t zjsxY{pD7ax^`J-)4`v|wLO)f31?KQy1c{?qpq+I;Dd{`5OXkKf^93x20 z5z%^dF|^Wbsy~@C>qC4_vkH1WB_cGN3Js(s`!TKE=IEwfhSI}2CiAtkfOffe@ z?WZf7Oe6BknaUCj8jV_^Lb4fK>7lK1`Nw&a*G@!OZbuovbxqb)*Np9uzZRdSi3^9f z%hVI*AHz@>)t4E`^>_nFWl~fY*p3xv`*bG5Nzf!PMkyghVmk?r2BVn(9BL77_q)B( zEP6jd;%F3d?Lc*hy%6yv+MlJ`8sLZJ^1r0pCGKR%lQ4{8Frnbha-9BHm}Lh7>I@Kh zLC+?i7a*s+efQ^^kj3PSPSk=c@VTYaC76AJ)H9lfxDARRKPH%c5c}@pYPGz8deNSR zVcBl(J3u=WV;a&^B2s8%)7^*UCd~F@fT#U=VuqnY!>5Dfdk&UQm(3@d!^`=Nmk0b1YV2 zf|C5%b(R9h;ZgZV6vT|=1Z}8^Mkx9^+7?$8+h1XT?Q^x(c`kqixb5QIV zt80y~eP8$oR@~s6`-u<+>Shro?F7q@nvk#zkw9kG`HaNh*hRJ52gVmHAYsZa%ZSW5 zm?$3NO^7B|y)`H*>PTu0u}D?FK|{k;#Y-$YV_*|UO!=dK`UMk*8wCI*c67kCU5c)v zlK$>0z$F$zR|6eqTE4c5>y!|HurMklOD_r)=OAedx+Y!o zKIYfvQpGWLcH|dTa6kFMreS0x45k|Z0W`)01m8g?SI<^^sr!}M1SH$8n==Lvg@^n3 zNl%85zd=yoYFwR{HrBb2GI0{J;o!H_i<*Mk)txFM3Hq`*yy%_oetY^Zeck2DyAWYP zcaQKhI3^&b>{e>=2p>U6T4rq1GH6<@KHWd~dO+qy$xc4A^Wn|-RYp|lf@A;=JG_JFknd2$bstyK_8#qt?n|j`+e+n)X`v*jny1QUWs|$|ZNCEVVFeTC zZ|T?Jl*Z{>wnBOm`2>5Pt5&J`%C}_;SYCWa=-FqqRdWvOo&1_lAZonEg~nDjV8h*%zBO_0%~YsTgi6o7r1|dE8?%(m zS)TM&+8;TYul7nX+rwlZ!T!>R>>e z`5yfIVCso~Dc_21#wmNzX*HVY;acA&fI*tt2FCeD&D6cq)cjTKc#t&Q;i0HboG>JC znaudQVKjltQ`ACa+|siDn4DwMnN`ShOHxhQQuoUnyZ_y)qkVgzLw#5JdvxS;P5|Nj z({&tJlEkc?@xoM7!wbQ-2)6~KsIWo)6yME}`R%L5p83Z_zYj2Pgg4%;O7M&t#} z4$hW|Xrhxk+A!z}+~D{JDhk+@n#1%k=Wr6C%Yz=J6R+K59*V2cM6=K}IK+G3Wg-_X zh^}GpbOxwRM0wn4S26v&hAqLs6>$v6OgK)F#PUsr6#p&fwd8yzZp;p*GnA=!7Yd7# zty@`l>{4;&{k4x?8e0ge*Qz$NtK@!VY%sX(sZus{$&pZelg!Z{1mztS$bM z!K3z)>4+;_@ux*(hXonlO`@uDf1Lmr_x87|?(ZZ17Z82>&YEf$c$#tDz!zdGf`JMs zPwTG(z0E>?ax<8+Jtf%Y;c4n=b>uOe-ac=NKT{$fEk9!OTGuKbI|g{T=gC@q|-5yNxNI>#-K} zKUD0Z^4*o4P1?@we8Tv5_fwSPsVED`R-zZjfqv?Mhp9b9F_;<90%ASHora7^nkc>V zgc5l#W|}c6KxyqvEO$j<&PXBgVHt`Z#kYJX3{wM|aZ^sRb)Ii*I3Ub6nBlI(l8!vt zlH-{7Idtn2;&rnE$|me3tkbBb-fRo9Q&GlRuKZ9e1%Y2qIH8}eX>nDmOU_FoGiNzM z@(zoSc+zf@o5x+{3V+Odwi|Yw88bk_RduG}mbIN+k7REs=9}T}0*dNbw-nU#L?>wS z14cTJ5`M@^AUg)jLRdg@jZEL|prTHM$baDqPjsDEnumL3r2bYG|kCp6Wf99UN)lZ*6TIb|3YT|9nViOyY`_OOXe zT`*}g%0nbRZ4jzyyKII_3wQeLg*e)50=K#xTE!O5uaB}+Vu&}*lOX;fchl4eAg*7A zeUDZ%6^2Q~v3)eu;fpItmb9{N#I0XBK8k_NXLpHSWSFz-h1Xgg0oN?-GLkCp$m;M> zTF6jpfO}e`>l4ATX!T@8mR`LJ5ZZrYdk^qPof>JBvI-MlernmY=<|uSQDX2f!Yj7P zrlg21=yEQ#>$kzYfN?SWQF%Xktn8lya%gKXTi;kVp8Sgm%{{t&P)W4`f)Fj`* zRaOK$!8Mh~AqVVO^KU>az16Izilo*w4Wx=SELTwx@oJH*=^6?t{>g}&^h@`phD5J9 zi_YKvMWRXyO*SU{ib!35j_oPE&kGDN-8gyczu7}C;D8NMVP&A>D)fBX_m~er_n8k?5|9QyOYZ#r?ih*f^VH7p6l>0B%g4>#y|kR5a}BWYLb9P9L* zR&mT1>(NS<((Vw&qMw}#)Y8zWgk==#%Tl~vk~%V2a<46aw~mLfT?{9ed$+YxtI3yQ zo^q&1SAPdO#jdN&8U%P*#L_s8{+|K55I3!Jjn+f3k_fMfol=;{^cM?qbSkm*3k-H7 zE*VGA_=%;Ign7}}yOigo4U`D3c42qfsl2e?bk+-vFkHtvp4Sp?4%QXLIY(t!_VDth z7}M6F1_4ahx96do7EvllIO(Q7q5Y9|-1Xzz;dY^D`)6r}Gnh|aMOZJ_wrH65&kr|O zO+mxPvtCr@;rrz>CD66LqmdL@?|}V|PVhP1Vg#8`u#5p$iON)wnEV!gb6_QSfAW_j zO|0YCCWT1rzD`&A+YJ#1=4wJK0~pCMH?v*cW<9OU-u=!QCqYe!ov>hGImb1i$pXK{ta2k5HSu!D0ZZy{C2dMC1sDnLiOU zp%A943A;K65kLc*!@qy`(5qh_dH*m?;#2G?*feTOLju+@*e0_tTVh{tcKU=p@o9F& z+>Ojx|E>Hr$WF-Ft1n(RO4z2Zn>QK#gOt}bRP-ND_C&Hj8pjEQwNXu?y^&ZR{(7{A zS1br_WphYl14zz0I%<%KjQInq?Z*A9`AQheZt$hlm|XLO1l)$B?ySR_EPFWzCk2G8 zk9K4q7EVI!J(|TsG@Cw(Id;^_Wez#sydaeC>Lc8LD&<9I;gRx{&ii#CwJ&dLlvyd3 zM~xQewB4qYvXE+MvXphnd}g!yp*gK0a-%r8m6XS1ErU_f4q+3>>$&Ht zt_7k7%STtQ(3zR`-|CwzaiV%lcQH`7p)>>5vnp*Y{R&)$=mGkwzh}^gwB9waNJ?m! z5$x(XHcpfMb_mb`CNPz)CDGZ|m_H>6IbmA|QOhWD)A`&PWjkAI(F+MsIia8gL=%6S z44D&lkv9{Jjy^-reO#kbKMebI+wCF=brPfvk(#%1*NPJKPDdlmpQFxoh1Ju2_pnF5 zzCcC`@md1;qHzJm=V}+5u4f%uJVcHbZQ^X7K4Jy$zw!_IGqT}661Mzq z>PL*d$S(X-R>*pd#!tIE2iPmvGqBYC^m(g$3Qmxn^C}6V2KlMF9_vp#E-fjnO~JK< zfe`y#^^KteDE+)g46t=pobGB2RaDKM(Wzfc%9xH9bF^4U$SOZxl091q!L)o~1fQad zzetWMZ7&j1k4rbdoWy{LnC#7xd83xedokUuP7}0)P8Oh87cQajf)aXV0!d7hd$mpO zIENYCUKbklONEuo8mQNwE&~2KzJA8{o`&6mCeSfUSxx+M>c_a9=}sAa;n0gtCY#=6 z6X(Zv#XT?YE$@DG-_FExRvAmVT{|y_$982)>u zM>?!1BpfQo#<&>YB%XSIcG*gY#-*u<5;O5#EzRn822r?7+Gx>a>TwH;-|q8Q5-8F@ zf0*ah>?Ipl#cZ&n4J}gLO;KCXw$vZKPB7>?%A?n;Oo ztZ{6{0_6Q?-QG-~MC@Hz*YOrIyt}9hFEYT;8~43k{ok>dv@!g-0`5G`YSTNXnGDPr z2<}E)7tNy?0(Wao-C3c{r^;Qe?#(+EEf>mNvM=bn!A?FP%iR>5C12Y2n`fB;KLtgW zyf~gMym@6KIUZ7rseo<16BU^H$Jep3E%#ToI3D@=9ozY*R?(f=|Cb_Fnt$|<`~%hf zr}D=bUOon)7eUNyPo<>!Ut*(oU0-bsLZ1h<-k;ojuB2`}ns_vN_LlE!514=vBEDbz z;c9;JY#Ta~;`9RDV-Dj$VFIu40xke6#P(P=;C1>zvOri}MRm^js zJA3meok%{j2zU0H$G#$50z#|spRjzmTf-lIg6ZVg;!0v#-Ws(p!Vh-MBP7gNU9UBu zM3S>{J)L##7IQ3R9*3fYW^7w^Ma;V*|IyVC^NZX0+3`tt zs?9J3g+U?Pn)<%gKEUynx-Fv4WbUHssC{jF&u*^{2&w$E7B6_3qmd~b3e$D9jx^2Z z&%jQSq+N+Lu1ikbmpQ#`Ef|JbMN-*N-6tV`nYVEdg@L^Oa1mLPcQAsdzQT;B@ZDaq z&c9W5<-4_P!PAhV4Dli;Fs?mJ=Km%mIOMA#Hs$$p`^#NIC49+3s5zqHv^n5edaeYp zSuFG~dW3rC;S$!oopG@TNX1adzP5f~wQrp!Lh}m_$nvN+g$#FXqovT@YK>M~Mxh{~ z*|TdbRe`?vTpOuc#3BPbVEP#%`S$o))MCZj-ib{p)6msqLodWY&Zj6iA z5%HdT*9@Ac{>0wo$6hiINADST4==QxJw+H(*aZ%QZY+6TL5_X2*ILVz&={B?@g0C@ zdg>P0M#i)Dk~z7wQ^6`y=t(w|HvlxeMzH2=-o(gBrp5 zzNBTv$$8qv#h7_*{mA;@ru4F+WQTTPaaqo$*8Vl#W%|;#0$;0oq!2F}%Fi?v`@NY0 zZ<}(oz#|(eYO2oz+aq3bYkc3+g!Z_q?;w>^!{s)xIHL^Aqa`0wR6p@h}BV`6MSkqw1xW1q?3>VP`jnLzlLy-=6JDDgDb zxUpb7<)WaRHH@P^wVWn)AEFB#+{e0tB&$U5h3E%kE#)OIRT^GY9^ZwlpyvF|V`V^k zGPB%VT8rtW)zQc*n=YboJE<9VmdxE87~uY36kiu!#Dw*M1oKNH9NLe{8FoRN$&<>K ziF}b5TYvI-e@phPn3h>;F0Lw6%aXD1YU?fnnJ^QpMQ6vf@YMqty#>@{KozDZLov3M zAOZ^b7B^ot5$x?P4>54u+oFG3ia(xDS1L5z|9#`Curaq*813h$r87-(kd6>BMHr3kQo4!jk=|0-wATA+1F|0B?Fg%>OkU`j^+uvc*9G!cNyV~ zq4&&v_X4p0SdVQy;+zb0mflk^-s)A1fZ$$2TqDQxH*T@_{^PsM7kw4^X<^a8qKCE& z{v564c(drQZ2Ma8fjMW2cFFI(-*4I%1=rb?@73an6%TMGYuIzVIn%prYdk5ZniKY= zf6$lWK3RAo-yH3#|I_nc#gH9+8^QaETQ`29J;Ud}asjSoit&r)#zC7($_OmyYwSR@YAT0_?sgSopsD>9N|F(oVLF*+|3%PZC)~1^WmDYcr@(e746!y=91ks$d z<*t5iq@pFHUKVK^$lYb}IZV~u?mP^w(xRQV2JH}UJonZ(klj^8cUMvPtFBk*(v*Bb z?E+ps_F%r2}pyNjj75zMm5kpZ)A)zVrUnVHW9DvU-; z&=us&{P7{d`V1clQ@$)A5U!3NP3o^T7GGku?G?5(1=s?#zE@@e-s80thfK2l{ud{IYpUegk*NLZt*OjK3~5J)n#-stqAo^|)F*k!w?I z@CITseY(4M$bt40G&JOcPP*c_q}J7r?XHV&V;(!}K#pwoM!ZO#nY4dGx`urpebNHj za&n)BGt6Nvx%sMikyl(E{~9E2z*;cHRz*qJIZDSy;F{WBELq0uFN(v|GHpQC2=q>< z-asAL0_m1yr+!1ADy?x?5)NA?5>yYAB$E1La}y?-I90mvAHGrYlHkVP80Gl{^&c`K z`_-y1*<9FRQj3*gP7S$MtDDgS zh0*~}ZDY=L>yxsKJJhQFzfNHS9>4ic6O%e5Oim+F$sQX1ypUR6vQ@VQM-v(H%~=uZ zcK)?2f~uzNcLz&5Nu*{NI%X!XB=v# zvmX`Enjc)mDe!sJ?Ta>2rez>**pj~c#n5_OQkUmdjfI*9U2#=_Jn11XffrH6!=yHB zS$}bMjwEDmP%Yq%sV->Qc~O_Cn%!cw(xQLC({x*wRYFd{HRL)yZHbGEChaL*FK;BD zNoK@mQK_cH1(dC{mGq{80*fRF$!G-gAJ{K8kju%nSrsBk+2C!()QTcU!ktGSp|?rd zo7k+4x0)34Z{LANjr<;)3{EiX;Ixr@3$Yn8m*Ubt(8x zeRs0zh4yIV*br`cfAs$KSlt0ws*yhI%!Y=Wn^@Db$(+`TJda2(qpdDxa5ra<(WLiC z8`#~{HbRgR#*d-&w_zalqi2KC4Oq+jsNqASI*&PmNO8^k zZXHsT{{0jlXh}(&W--wE-jHO}QK#?aW1)&%W<{$A8xVAr^L^TOOsg>b6lR&n7-8Ib zhkXV=1+%-(H93ww(YHgyd=nk{@ecL&=@Tn0F9hz$Cw*-?C{M1dC z3mZXdul%_qv|S z1b|>C9P}VMDA#IcUNP%p;wa%f?-7B<`ETPtg@T2#qh~n~d%wC_>x!~x7pSt&0@+=j zq;pW0Rl_(yYb2#{xNTfylUMsbWBJ}F+Z=+>#=_=Vsr4C2ojc>(RUez7XAThIgeskJ zZs4m7;TeCpWE!R=G*)WtvIMQSw5i88JC%!mz5r*33bdLW9&#fk6HtIUor0!TwCjjC z3zA~3jO9t0WNeV1)kQrDx6*cya(OHT#2;O2POIS3xS0c~0AU&(JoF-p@i6i|62@K`&?k-!Fs~qC$1SF{~X~r}P*>aS3noLHkw^|Eq8J-tb{W>q;`kh3Tf7X;K|AspLco z`S5FAw(aNqU3UE$w_Hc;r>-W2q=78xjk0~=p~hxCzlqf6 z{K6jlHmufXvm0;}(gad6%g1Nm$3_}Ieoo1_dVIFcZDhy@$*gK(jDk4xgra7p0Xq~& z!SI2)4XJTDeLs=DZ3<>1rl-&rID7R#8uK#M7mh1_g&}_g;C=l zX6Fp3k3Izvbcuw|TaO5?P@nZR8Wy_5@xv`52K#@;Gu-ji4uLxSOOxrm7|SXDq@N*v zna5hh;_E{1W0o>WXsNpL>>3(pZ`TRw?0lU_RQk6tCHCWl5lhXH>A;7<+9?)1N4Mcr z?IOoqe;CY|Z@5^tSTo{lOF5MK;-BPkS5mGzbZDMHy-K{k7eC`1S1!&Kt*Og7M`qU| z{8!m>-d75rc0j zm3{UZk6yUu@(b^HvSZJYfLc4Qw_7Xv?2G}cN=;T5cu>ZC`p>lv?%?rX0Sd-cVx+E( zMA2uF9%Sz#;QQMer+V#C;58<1^QPKFj!2Yx0_x36U@fBK*mgnk)*ECbO21 z$CBH;c&qwXwCavYXq}ImQ4^wPxzE!!c{o!X*5X?iMuC3w4BaFurGmbbwVxbhYS&)% zijmn<@_D5FVL;A>_mj%A;u=cWIFSs4AAPzSSCCRh3WS(+A(>*aquRm0Bo>vUtllub z_?4X;)lN^5Zhl3{{^TuA%5LEQV7FCS!Eb~+cEkNX2Y=k3qizV~JF?S4zuu{-3%dLD z=1Qsb!OL8E1rngscE166Oo>>ae!85FlhPWVwbEkh1b1VC)yH0_WKcpbZrk{-PM}?q zkMjj8v)wc(h&Dn?3Gi~@^H#Xg>+EN(uv!#T#r&#h;(9QvX_wicr9Lo&o|2h2*%03p3^U0!w^xQU}_m&~T zUL*^s$ct^>M0|0`oo+t5n}Bfi3SUm&FeB7d76zl($nJ;{M92vh+OxfecQ(|*?9F`c zQNHl}vI-P@U`3kD**-b{2$xZGh(?>Ra5`9~kJr>fQR2k$OdEH0j!Wgj?mJQp7P7o< zyFARYFLIHoTTFD$dY;T4Y;gqL4N7;sgsJgHb026WwRS=wyg%MNY6rL3xJj*)m4l35 zRB_(#0Fn+U1*yx+@rEsbvV(ZMA9y*!oGQuUU+D=kO(j)2yO&cggreb&p&Tz(ZPI&{ z{1-V4&mkHuVIjGsxDAillrajLs#}MUiqCLI~nv8 zG=}PJ-^&vyN(?L@gFP&Z-x1Lys4lzK;#nKoBM6W{`4^!uYs(?bPapHFx39PC71wp| z0VYdcj$BY;GLtDD!q)j4u(a5!3w#sf>6~?HcSy}O_W^m1NFURP(y7p4bg36x3T16Z@`joy;H-!K_Vjjm44ukHutUNI`=au`DTZoE@V~s!8#@F znm?7cQ~Ci1rP0bc`A}qsPI@bCAFgo*)Fr}?M6gpJ_=zqGfb1+8suHmR>gcHke9k2k z>^N0-6C0(0wmyULA!XtHTE_j9XOL|CiwQhWAo!Us4ubUiyzyb=xa}4!uKoo}5W_X# zX%8*pNh98W{*(QPg+;G1scll;zavex6xx;|2KRBk%;{^kmX=jJr4`Y9yU(BJwY>>Z z2}81P*YdxsByaJ)rwUX&!8rjL2cKN%MX!*FgS)DB+gtQ%v(qZ&0mZr+3avd(@8+J8 zk%-MqsydW5cN&sCkAIGIxxGd+dUaZ#NNDy4b;fL;PVE8Ms+U~OQ>=@ z5Z@5jmzhs?H)OZTx>)^seO520L(yWcdmVWER_U&Ws&Xz~$-i}!r^P`7Fk{Jpjlbjt z{I(*W1=lj#0;HU(#R?RLsev(hzG0dD@;K$3E-(KXkTcSj%6lzeE*#U)!Wdre&WZq$UPacH@X&SyFC@^!# zm`bSn5zxEk+UfrdyELeYJT>*AsrM}DF}U|w*Q$Pl1A1A1F$f~T;!6NK_+zEpb0_iJ zr{}HThLt@E?=6pe8XzIy=D~#@(q-Keg8F#ZN{H7clqG~~u)UJ}{7>Q6OivS5I#bQM zF%wjt(;3bSu~+ea^qrroY)DqxO!;0YqElvy<7rcYV9na`v>?^HUmBtY_5|#T5(Yiw zg^_J@Jgc%k%FT~88b_^A(l}9(=+b786s{wodt&diM=5V@AhJSQ_uQ8mp^3&!<@VNoSrX*=8)tO~|LE?6`gI zKNiWG>$2;NkI?mS3$`eXJa`IC+W)mc$mB{SHTv?_LQ`A5*tq3C4w>1PjRp+9oBVy} zd=*L5P+ZaD0LwJOz4%WvRW=jmQ>ZUN>X&^Gw7eDv>23#)UOH819;4%Bd?u{|=AJ~} zzGiG|dR!F$mggey{N_%n-zao69wLd^g5KLPl{>dw^Slh-Dqx@^FkGI?eCxT1W%_A- z+3*XEH&-VLtO+-D^J8zE@-?KMU&1Wvo$dyS@t>suLm>M_okwK+Zpv>6WP|R!U=Nl* zi1(xFdT+GFT%`5!RzgbhVI72p^If`x$(6F`jOnD)rL5MSefMp+If7*GtKZ_@-ecPV zB@n8x9c6>Nyz0_hyxIpHI|#8*m491B|1Pg`TViQmW5%@%AA~}N6;QvpJWX?~f9-#XT5jud8a7H*|cx3uj_t2T4RULYWc;s{6E4pBpJZu=$ zEy%*Lcudx5novJ8)vdDyopoDz*Ck9sbMk=U((uQV`S;^e-h9*TWbuU5H;9}eGO?R< zD&1%1Ja`Vvm*aO+Nn{3!d3SIrWQS0x3Z^r>uf4~WQC7{vuabeTZfk}F<_iu84{*Ta zzK~cN!o((jNNciTT7_S1GzG(k=ImCH@Q!gcSfS_+i2kOirbZ-S&u{!cBp=8{0zJPC zMoXEa>Yc?q0O2L@2<2pU4z}nGs4>?}{6%C@q1C1=Yc31H<1Wg0oK)A>WfRTMtxpy1 zBA0@6Nky^m2Mm)B7UTz}?EIPC0@XZkfgi&HFrCGV>GS+699Z%hp=K;O26#g|k5I7L zi86^~+5OisQc?~Eo~$O$yFQM2%{CYQ$P%QaRabb*gM9RfpmjCdug}Q55>oV|n5LaL zmYX$xB7P^so_bMa7bSo2Fs^)6+pxiB?#u}pcFKJcskJig@)Ah%z=J;LT677{o-2Jr zQ>u=KjD`90T=Ds=SS>gk0QBWNKDhlAIL*rj(%!MW!+RcOm$dM+Q%ijDFAC9#JnzFni$mh(|xZNHsdmWz}MHrF{i5xhY)1lUO zNinX9TAjYncDsk@J96{pUWO?x{Edzy__S2sm>YL!e#W+9qE~Bn!zcC+cUm~BfnwF? zX7fS)EA_nPhtEk+ayn39TMDBO;l+O6P|?!ECDcud86g`@8xALIia9zH0Xc!$UB(h z6YsUwoP@6R_^h?a<|K}G1gtwS`dxUZ%FC`-^TBFXUe&WlIaQuAx4K$xwbZ2ww!a_c zR@YeAx%D-9AEWh)j**SJRizS1|I!1PVZ>p7e)W|lvyqf^=G>38PjE5DC^wRNcsfIJ0-iX2*OO>%b~9jRbP&@`u_zirB-aY z_o6QYkZ#j?2g$T=Jnjw=`T7zrY+T+n<&%GbXTO&xqKY>{SL=pjPekL z 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 literal 0 HcmV?d00001 diff --git a/ui/public/fonts/lora-latin-ext.woff2 b/ui/public/fonts/lora-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0ee51edbabbe9a2d81ed823812a646de587fb14e GIT binary patch literal 20176 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≫ijKh3Vm;zd=0wUPZ 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 LUu67G82|tP?5>Y; literal 0 HcmV?d00001 diff --git a/ui/public/fonts/space-grotesk-latin.woff2 b/ui/public/fonts/space-grotesk-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7b0e76a5c9bdfdb5ccc8c9ab44780b5ff788c6db GIT binary patch literal 22320 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: void { @@ -88,6 +88,7 @@ function applyThemePresentation(settings: ReturnType): void root.classList.toggle("wa-dark", root.dataset.themeMode === "dark"); root.style.colorScheme = root.dataset.themeMode; root.style.setProperty("--control-ui-text-scale", `${(settings.textScale ?? 100) / 100}`); + syncThemeFontStylesheet(settings.theme); syncCustomThemeStyleTag(settings.customTheme); applyControlUiAccent(settings.accent); const background = getComputedStyle(root).getPropertyValue("--bg").trim(); diff --git a/ui/src/app/mount-fallback.test.ts b/ui/src/app/mount-fallback.test.ts index 5e16fbb51112..d23ffb9a3f2d 100644 --- a/ui/src/app/mount-fallback.test.ts +++ b/ui/src/app/mount-fallback.test.ts @@ -44,7 +44,7 @@ function installStartupPaintShell(window: TestWindow, html: string): void { const startupScript = Array.from( parsed.querySelectorAll("script:not([src])"), - ).find((script) => script.textContent?.includes("var THEMES = { claw: 1, knot: 1, dash: 1 }")); + ).find((script) => script.textContent?.includes("var THEMES = {")); if (!startupScript?.textContent) { throw new Error("Expected inline startup theme script in index.html"); } @@ -96,6 +96,18 @@ describe("Control UI mount fallback", () => { ["claw dark", { theme: "claw", themeMode: "dark" }, "dark", "rgb(14, 16, 21)"], ["OpenKnot dark", { theme: "knot", themeMode: "dark" }, "openknot", "rgb(8, 8, 8)"], ["Dash light", { theme: "dash", themeMode: "light" }, "dash-light", "rgb(247, 242, 236)"], + [ + "Absolutely dark", + { theme: "absolutely", themeMode: "dark" }, + "absolutely", + "rgb(38, 38, 36)", + ], + [ + "Absolutely light", + { theme: "absolutely", themeMode: "light" }, + "absolutely-light", + "rgb(250, 249, 245)", + ], ])( "paints %s before the app stylesheet loads", async (_name, settings, expectedTheme, expectedBackground) => { diff --git a/ui/src/app/public-assets.ts b/ui/src/app/public-assets.ts index bfc35377d0c9..c6230e1c5369 100644 --- a/ui/src/app/public-assets.ts +++ b/ui/src/app/public-assets.ts @@ -5,6 +5,7 @@ import { resolveControlUiPaths } from "./browser.ts"; type ControlUiPublicAsset = | ControlUiRootPublicAsset + | `fonts/${string}.css` | `provider-icons/ProviderIcon-${string}.svg` | `plugin-art/${string}.webp` | `app-art/${string}.webp`; diff --git a/ui/src/app/server-prefs-state.ts b/ui/src/app/server-prefs-state.ts index 8369918f47a7..b1dd813b8e8c 100644 --- a/ui/src/app/server-prefs-state.ts +++ b/ui/src/app/server-prefs-state.ts @@ -12,7 +12,7 @@ import { } from "./settings.ts"; import type { ThemeMode, ThemeName } from "./theme.ts"; -const THEMES: ReadonlySet = new Set(["claw", "knot", "dash", "custom"]); +const THEMES: ReadonlySet = new Set(["claw", "knot", "dash", "absolutely", "custom"]); const THEME_MODES: ReadonlySet = new Set(["light", "dark", "system"]); type SyncedPrefSpec = { diff --git a/ui/src/app/theme.ts b/ui/src/app/theme.ts index 9c6102c3c950..e8089b8a8f50 100644 --- a/ui/src/app/theme.ts +++ b/ui/src/app/theme.ts @@ -1,5 +1,6 @@ // Control UI module implements theme behavior. -export type ThemeName = "claw" | "knot" | "dash" | "custom"; +import { inferControlUiPublicAssetPath } from "./public-assets.ts"; +export type ThemeName = "claw" | "knot" | "dash" | "absolutely" | "custom"; export type ThemeMode = "system" | "light" | "dark"; export type ResolvedTheme = | "dark" @@ -8,10 +9,25 @@ export type ResolvedTheme = | "openknot-light" | "dash" | "dash-light" + | "absolutely" + | "absolutely-light" | "custom" | "custom-light"; -const VALID_THEME_NAMES = new Set(["claw", "knot", "dash", "custom"]); +const VALID_THEME_NAMES = new Set(["claw", "knot", "dash", "absolutely", "custom"]); + +const THEME_FONT_STYLESHEET_ID = "openclaw-theme-fonts"; +/* Themes that ship their own faces. The stylesheet is fetched only while such a + theme is active, so every other theme pays nothing for fonts it never paints. + Loading with the app bundle (not the first-paint boot script) costs one + font-display: swap on a cold load and keeps the theme->asset mapping in one + place. Values are bundle-relative asset names: the href is resolved against + the configured Control UI mount, and the stylesheet's own url() references + are relative to it, so both levels follow a non-root base path. */ +const THEME_FONT_STYLESHEETS: Partial> = { + absolutely: "fonts/absolutely.css", +}; +type ControlUiFontStylesheet = `fonts/${string}.css`; const VALID_THEME_MODES = new Set(["system", "light", "dark"]); function prefersLightScheme(): boolean { @@ -52,5 +68,33 @@ export function resolveTheme(theme: ThemeName, mode: ThemeMode): ResolvedTheme { if (theme === "dash") { return resolvedMode === "light" ? "dash-light" : "dash"; } + if (theme === "absolutely") { + return resolvedMode === "light" ? "absolutely-light" : "absolutely"; + } return resolvedMode === "light" ? "custom-light" : "custom"; } + +/** Loads (or drops) the webfont stylesheet a theme declares. Idempotent. */ +export function syncThemeFontStylesheet(theme: ThemeName): void { + if (typeof document === "undefined") { + return; + } + const asset = THEME_FONT_STYLESHEETS[theme]; + const existing = document.getElementById(THEME_FONT_STYLESHEET_ID); + if (!asset) { + existing?.remove(); + return; + } + const href = inferControlUiPublicAssetPath(asset); + if (existing instanceof HTMLLinkElement) { + if (existing.getAttribute("href") !== href) { + existing.href = href; + } + return; + } + const link = document.createElement("link"); + link.id = THEME_FONT_STYLESHEET_ID; + link.rel = "stylesheet"; + link.href = href; + document.head.append(link); +} diff --git a/ui/src/e2e/theme-muted-contrast.e2e.test.ts b/ui/src/e2e/theme-muted-contrast.e2e.test.ts index d796ac7f968d..dad558456457 100644 --- a/ui/src/e2e/theme-muted-contrast.e2e.test.ts +++ b/ui/src/e2e/theme-muted-contrast.e2e.test.ts @@ -17,6 +17,8 @@ const themeCases = [ { family: "knot", mode: "light", resolved: "openknot-light" }, { family: "dash", mode: "dark", resolved: "dash" }, { family: "dash", mode: "light", resolved: "dash-light" }, + { family: "absolutely", mode: "dark", resolved: "absolutely" }, + { family: "absolutely", mode: "light", resolved: "absolutely-light" }, ] as const; const textTokens = [ @@ -30,7 +32,10 @@ const textTokens = [ const surfaceTokens = ["--bg", "--bg-elevated", "--bg-muted", "--card", "--panel"] as const; -function themeConfigResponse(family: "claw" | "knot" | "dash", mode: "dark" | "light") { +function themeConfigResponse( + family: "claw" | "knot" | "dash" | "absolutely", + mode: "dark" | "light", +) { const config = { ui: { prefs: { ...(family === "claw" ? {} : { theme: family }), themeMode: mode } }, }; diff --git a/ui/src/e2e/theme-typography.e2e.test.ts b/ui/src/e2e/theme-typography.e2e.test.ts new file mode 100644 index 000000000000..b0e3b560a219 --- /dev/null +++ b/ui/src/e2e/theme-typography.e2e.test.ts @@ -0,0 +1,191 @@ +import { mkdir } from "node:fs/promises"; +import path from "node:path"; +import { expect, it } from "vitest"; +import { controlUiBundledGatewayUrl, installMockGateway } from "../test-helpers/control-ui-e2e.ts"; +import { requireRecord, requireString } from "./chat-flow.test-support.ts"; +import { createControlUiE2eSuite } from "./control-ui-e2e-suite.test-support.ts"; + +/* + * A theme that declares webfonts must actually paint in them, and a theme that + * does not must never pay for them. Both halves are invisible to unit tests: + * the stylesheet is linked at runtime and the faces only resolve once the + * browser has fetched them, so a broken asset path or a dropped link degrades + * silently to the fallback stack and looks merely "a bit off". + */ + +const captureUiProof = process.env.OPENCLAW_CAPTURE_UI_PROOF === "1"; +const proofDirectory = path.resolve(process.cwd(), ".artifacts/control-ui-e2e/theme-typography"); + +const suite = createControlUiE2eSuite({ + name: "Control UI theme typography", + trackBrowserContexts: true, + unavailableMessage: (executablePath) => + `Playwright Chromium is required for theme typography proof at ${executablePath}`, +}); + +function themeConfigResponse(theme: string, mode: "dark" | "light") { + const config = { ui: { prefs: { theme, themeMode: mode } } }; + const hash = `theme-typography-${theme}-${mode}`; + return { + appliedConfigHash: hash, + config, + configRevisionHash: hash, + hash, + issues: [], + raw: JSON.stringify(config), + valid: true, + }; +} + +async function openThemedChat(theme: string, mode: "dark" | "light", basePath = "") { + const context = await suite.newBrowserContext({ + colorScheme: mode, + locale: "en-US", + serviceWorkers: "block", + viewport: { height: 900, width: 1440 }, + }); + await context.addInitScript( + ({ gatewayUrl, initialMode, initialTheme }) => { + localStorage.setItem( + `openclaw.control.settings.v1:${gatewayUrl}`, + JSON.stringify({ gatewayUrl, theme: initialTheme, themeMode: initialMode }), + ); + }, + { + gatewayUrl: controlUiBundledGatewayUrl(suite.server.baseUrl), + initialMode: mode, + initialTheme: theme, + }, + ); + const page = await context.newPage(); + const fontRequests: string[] = []; + page.on("response", (response) => { + const url = response.url(); + if (url.includes("/fonts/")) { + fontRequests.push(`${url.split("/").pop()} ${response.status()}`); + } + }); + const gateway = await installMockGateway(page, { + ...(basePath ? { basePath } : {}), + methodResponses: { "config.get": themeConfigResponse(theme, mode) }, + }); + return { fontRequests, gateway, page }; +} + +async function renderAssistantProse( + gateway: Awaited>, + page: Awaited>["page"], +) { + await page.locator(".agent-chat__composer-combobox textarea").fill("say something"); + await page.getByRole("button", { name: "Send message" }).click(); + const sendRequest = await gateway.waitForRequest("chat.send"); + const runId = requireString( + requireRecord(sendRequest.params).idempotencyKey, + "chat send idempotency key", + ); + const text = + "Typography carries the theme: chat prose renders in the reading face while chrome, chips, and code keep their own."; + await gateway.emitGatewayEvent("chat", { + message: { content: [{ text, type: "text" }], role: "assistant", timestamp: Date.now() }, + runId, + sessionKey: "main", + state: "final", + }); + // first() is the prompt this test just sent; the assistant reply is last. + await expect.poll(() => page.locator(".chat-text").last().textContent()).toContain("Typography"); +} + +suite.define(() => { + it("paints Absolutely chrome and chat prose in its own faces", async () => { + if (captureUiProof) { + await mkdir(proofDirectory, { recursive: true }); + } + const { fontRequests, gateway, page } = await openThemedChat("absolutely", "dark"); + await page.goto(`${suite.server.baseUrl}chat`); + await renderAssistantProse(gateway, page); + + const report = await page.evaluate(async () => { + await document.fonts.ready; + const chats = document.querySelectorAll(".chat-text"); + const chat = chats[chats.length - 1]; + // Computed families come back quoted ('"Space Grotesk", -apple-system…'); + // the first entry is the one that actually paints. + const primary = (value: string) => + (value.split(",")[0] ?? "").trim().replace(/^["']|["']$/gu, ""); + return { + chatFontFamily: chat ? primary(getComputedStyle(chat).fontFamily) : null, + bodyFontFamily: primary(getComputedStyle(document.body).fontFamily), + linkHref: document.getElementById("openclaw-theme-fonts")?.getAttribute("href") ?? null, + loaded: [...document.fonts].filter((f) => f.status === "loaded").map((f) => f.family), + }; + }); + + expect(report.linkHref).toBe("/fonts/absolutely.css"); + // The declared face must win, not merely appear somewhere in the stack. + expect(report.bodyFontFamily).toBe("Space Grotesk"); + expect(report.chatFontFamily).toBe("Lora"); + expect(new Set(report.loaded)).toEqual(new Set(["Space Grotesk", "Lora"])); + expect(fontRequests.every((entry) => entry.endsWith(" 200"))).toBe(true); + + if (captureUiProof) { + await page.screenshot({ path: path.join(proofDirectory, "absolutely-chat-dark.png") }); + } + }); + + it("resolves the font stylesheet against a configured mount path", async () => { + // A gateway mounted at a base path serves the bundle below that prefix, so + // root-absolute font URLs 404 there and the theme silently falls back to + // system faces while its palette still applies. + const basePath = "/openclaw"; + const { page } = await openThemedChat("absolutely", "dark", basePath); + const requested: string[] = []; + await page.route(`**${basePath}/fonts/**`, async (route) => { + const { pathname } = new URL(route.request().url()); + requested.push(pathname); + await route.fulfill({ status: 404, body: "", contentType: "text/css" }); + }); + + await page.goto(`${suite.server.baseUrl}${basePath.slice(1)}/chat`); + await page + .locator(".agent-chat__composer-combobox textarea") + .waitFor({ state: "visible", timeout: 30_000 }); + + const linkHref = await page.evaluate( + () => document.getElementById("openclaw-theme-fonts")?.getAttribute("href") ?? null, + ); + + expect(linkHref).toBe(`${basePath}/fonts/absolutely.css`); + // The browser must actually fetch below the mount, not at the root. + await expect.poll(() => requested).toContain(`${basePath}/fonts/absolutely.css`); + }); + + it("leaves themes without declared faces on the system stack", async () => { + if (captureUiProof) { + await mkdir(proofDirectory, { recursive: true }); + } + const { fontRequests, gateway, page } = await openThemedChat("claw", "dark"); + await page.goto(`${suite.server.baseUrl}chat`); + await renderAssistantProse(gateway, page); + + const report = await page.evaluate(async () => { + await document.fonts.ready; + const primary = (value: string) => + (value.split(",")[0] ?? "").trim().replace(/^["']|["']$/gu, ""); + return { + bodyFontFamily: primary(getComputedStyle(document.body).fontFamily), + linkHref: document.getElementById("openclaw-theme-fonts")?.getAttribute("href") ?? null, + loaded: [...document.fonts].filter((f) => f.status === "loaded").map((f) => f.family), + }; + }); + + expect(report.linkHref).toBeNull(); + expect(report.loaded).toEqual([]); + expect(report.bodyFontFamily).not.toBe("Space Grotesk"); + // The default path must not fetch a font asset at all. + expect(fontRequests).toEqual([]); + + if (captureUiProof) { + await page.screenshot({ path: path.join(proofDirectory, "claw-chat-dark.png") }); + } + }); +}); diff --git a/ui/src/i18n/locales/en.ts b/ui/src/i18n/locales/en.ts index 1ab302c3bf74..21e8a342ad79 100644 --- a/ui/src/i18n/locales/en.ts +++ b/ui/src/i18n/locales/en.ts @@ -1821,6 +1821,10 @@ export const en: TranslationMap = { label: "Dash", description: "Chocolate blueprint", }, + absolutely: { + label: "Absolutely", + description: "Clay on graphite", + }, }, textSizes: { small: "Small", diff --git a/ui/src/pages/config/view-appearance.ts b/ui/src/pages/config/view-appearance.ts index 1bc4bcdd9975..a789051aa44a 100644 --- a/ui/src/pages/config/view-appearance.ts +++ b/ui/src/pages/config/view-appearance.ts @@ -59,6 +59,11 @@ const BUILTIN_THEME_OPTIONS: ThemeOption[] = [ labelKey: "configView.themes.dash.label", descriptionKey: "configView.themes.dash.description", }, + { + id: "absolutely", + labelKey: "configView.themes.absolutely.label", + descriptionKey: "configView.themes.absolutely.description", + }, ]; const ACCENT_PRESETS = [ @@ -211,11 +216,6 @@ export function renderAppearanceSection( > ${renderThemeCardVisual(opt.id, props.theme)} ${opt.label} - ${opt.id === props.theme - ? html`` - : nothing} `, )} diff --git a/ui/src/styles/base-theme-contrast.node.test.ts b/ui/src/styles/base-theme-contrast.node.test.ts index 5f44072e389b..bf185fd24cf2 100644 --- a/ui/src/styles/base-theme-contrast.node.test.ts +++ b/ui/src/styles/base-theme-contrast.node.test.ts @@ -124,6 +124,8 @@ function resolveThemes(blocks: Map): Map { ["openknot-light", layer(light, blocks.get(':root[data-theme="openknot-light"]'))], ["dash", layer(blocks.get(':root[data-theme="dash"]'))], ["dash-light", layer(light, blocks.get(':root[data-theme="dash-light"]'))], + ["absolutely", layer(blocks.get(':root[data-theme="absolutely"]'))], + ["absolutely-light", layer(light, blocks.get(':root[data-theme="absolutely-light"]'))], ]); } diff --git a/ui/src/styles/base.css b/ui/src/styles/base.css index 6f977133ea1d..8c62041082e6 100644 --- a/ui/src/styles/base.css +++ b/ui/src/styles/base.css @@ -228,6 +228,9 @@ "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace; --font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; --font-display: var(--font-body); + /* Chat prose only. Defaults to the UI face; a theme may point it at a + reading face without changing chrome, chips, tables, or code. */ + --font-chat: var(--font-body); --control-ui-text-scale: 1; --control-ui-text-xs: calc(11px * var(--control-ui-text-scale)); --control-ui-text-sm: calc(12px * var(--control-ui-text-scale)); @@ -938,6 +941,166 @@ --grid-line: rgba(80, 50, 20, 0.04); } +:root[data-theme="absolutely"] { + /* + * Accent — terracotta clay on warm graphite + * + * WCAG 2.1 AA audit (bg = #262624, relative luminance ≈ 0.0198): + * --accent #d97757 L ≈ 0.257 contrast ≈ 4.9:1 AA text ✓ + * --accent-hover #e68b6b L ≈ 0.338 contrast ≈ 6.0:1 ✓ + * --primary-foreground #241f1b on #d97757 button: 5.2:1 AA ✓ + * --primary-foreground #241f1b on #e68b6b hover: 6.4:1 AA ✓ + * --destructive-foreground #fafafa on #d32f2f button: 4.77:1 AA ✓ + * focus-ring at 75% opacity: ≈ 3.3:1 against bg ✓ (non-text 3:1 required) + * + * The accent dims below AA on the lightest surfaces (3.7:1 on --bg-muted), + * so it stays a fill/indicator color there; body copy uses --text. + */ + --ring: #d97757; + --accent: #d97757; + --accent-hover: #e68b6b; + --accent-muted: #d97757; + --accent-subtle: rgba(217, 119, 87, 0.14); + --accent-glow: rgba(217, 119, 87, 0.22); + --primary: #d97757; + --primary-hover: #e68b6b; + --primary-foreground: #241f1b; + + /* Deepen only the text-bearing destructive fill; keep danger accents vivid. */ + --destructive: #d32f2f; + --destructive-hover: #bc2a2a; + + /* Focus — clay ring */ + --focus: rgba(217, 119, 87, 0.2); + --focus-ring: 0 0 0 2px var(--bg), 0 0 0 3px color-mix(in srgb, var(--ring) 75%, transparent); + --focus-glow: 0 0 0 2px var(--bg), 0 0 0 3px var(--ring), 0 0 16px var(--accent-glow); + + /* Surfaces — warm graphite, a shade off true neutral */ + --bg: #262624; + --bg-accent: #2d2c29; + --bg-elevated: #33322e; + --bg-hover: #3a3934; + --bg-muted: #3a3934; + + --card: #2d2c29; + --card-foreground: #ede8dd; + --card-highlight: rgba(255, 246, 232, 0.04); + --popover: #33322e; + --popover-foreground: #ede8dd; + + --panel: #262624; + --panel-strong: #33322e; + --panel-hover: #3a3934; + --chrome: rgba(38, 38, 36, 0.96); + --chrome-strong: rgba(38, 38, 36, 0.98); + + --text: #e4dfd4; + --text-strong: #f5f1e8; + --chat-text: #e4dfd4; + --muted: #aba498; + --muted-strong: #b8b1a4; + --muted-foreground: #aba498; + + --border: #383630; + --border-strong: #48453d; + --border-hover: #5c584e; + --input: #383630; + + --secondary: #2d2c29; + --secondary-foreground: #ede8dd; + --accent-2: #b8926a; + --accent-2-muted: rgba(184, 146, 106, 0.7); + --accent-2-subtle: rgba(184, 146, 106, 0.12); + + --shadow-sm: 0 1px 2px rgba(12, 10, 8, 0.35); + --shadow-md: 0 4px 16px rgba(12, 10, 8, 0.45); + --shadow-lg: 0 12px 32px rgba(12, 10, 8, 0.55); + --overlay-shadow: var(--shadow-md); + + --grid-line: rgba(255, 246, 232, 0.03); + /* Typography is this theme's signature: a grotesque for chrome, a reading + serif for chat prose (styles/fonts.css self-hosts both). The stacks keep + system fallbacks so a failed font load degrades instead of blanking text. */ + --font-body: "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + --font-chat: "Lora", Georgia, "Times New Roman", serif; +} + +:root[data-theme="absolutely-light"] { + /* + * Accent — burnt clay on ivory paper + * + * WCAG 2.1 AA audit (bg = #faf9f5, relative luminance ≈ 0.934): + * --accent #a8452a L ≈ 0.126 contrast ≈ 5.6:1 AA text ✓ + * --accent-hover #8e3822 L ≈ 0.086 contrast ≈ 7.3:1 ✓ + * --primary-foreground #ffffff on #a8452a button: 5.9:1 AA ✓ + * focus-ring at 70% opacity: ≈ 3.2:1 against ivory bg ✓ + */ + --ring: #a8452a; + --accent: #a8452a; + --accent-hover: #8e3822; + --accent-muted: #a8452a; + --accent-subtle: rgba(168, 69, 42, 0.1); + --accent-glow: rgba(168, 69, 42, 0.14); + --primary: #a8452a; + --primary-foreground: #ffffff; + + /* Surfaces — ivory paper with a faint warm cast */ + --bg: #faf9f5; + --bg-accent: #f3f1e9; + --bg-elevated: #ffffff; + --bg-hover: #edeae0; + --bg-muted: #edeae0; + --bg-content: #f3f1e9; + + --card: #ffffff; + --card-foreground: #1f1d1a; + --card-highlight: rgba(60, 50, 30, 0.02); + --popover: #ffffff; + --popover-foreground: #1f1d1a; + --session-hovercard-surface: var(--card); + --session-hovercard-progress-surface: color-mix( + in srgb, + var(--card) 50%, + var(--panel-strong) 50% + ); + + --panel: #faf9f5; + --panel-strong: #f3f1e9; + --panel-hover: #e6e2d6; + --chrome: rgba(250, 249, 245, 0.96); + --chrome-strong: rgba(250, 249, 245, 0.98); + + --text: #3d3a33; + --text-strong: #1f1d1a; + --chat-text: #3d3a33; + --muted: #6b655b; + --muted-strong: #555047; + --muted-foreground: #6b655b; + + --border: #e3dfd2; + --border-strong: #cdc7b6; + --border-hover: #ada694; + --input: #e3dfd2; + + --secondary: #f3f1e9; + --secondary-foreground: #3d3a33; + --accent-2: #8a6a44; + --accent-2-muted: rgba(138, 106, 68, 0.75); + --accent-2-subtle: rgba(138, 106, 68, 0.1); + + --shadow-sm: 0 1px 2px rgba(60, 50, 30, 0.05); + --shadow-md: 0 4px 12px rgba(60, 50, 30, 0.07); + --shadow-lg: 0 12px 28px rgba(60, 50, 30, 0.09); + --overlay-shadow: var(--shadow-md); + + --grid-line: rgba(60, 50, 30, 0.04); + /* Typography is this theme's signature: a grotesque for chrome, a reading + serif for chat prose (styles/fonts.css self-hosts both). The stacks keep + system fallbacks so a failed font load degrades instead of blanking text. */ + --font-body: "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + --font-chat: "Lora", Georgia, "Times New Roman", serif; +} + * { box-sizing: border-box; /* scrollbar-width doesn't inherit (unlike scrollbar-color above), so every diff --git a/ui/src/styles/chat/grouped.css b/ui/src/styles/chat/grouped.css index d5a8c0526891..9a55ba830c39 100644 --- a/ui/src/styles/chat/grouped.css +++ b/ui/src/styles/chat/grouped.css @@ -1178,7 +1178,8 @@ details.msg-meta:not([open]) .msg-meta__details { } :root[data-theme="openknot"] .chat-confirm-popover__yes, -:root[data-theme="dash"] .chat-confirm-popover__yes { +:root[data-theme="dash"] .chat-confirm-popover__yes, +:root[data-theme="absolutely"] .chat-confirm-popover__yes { background: var(--destructive); color: var(--destructive-foreground); } @@ -1192,7 +1193,8 @@ details.msg-meta:not([open]) .msg-meta__details { } :root[data-theme="openknot"] .chat-confirm-popover__yes:hover, -:root[data-theme="dash"] .chat-confirm-popover__yes:hover { +:root[data-theme="dash"] .chat-confirm-popover__yes:hover, +:root[data-theme="absolutely"] .chat-confirm-popover__yes:hover { background: var(--destructive-hover); } diff --git a/ui/src/styles/chat/text.css b/ui/src/styles/chat/text.css index 7910e5dba291..41ae0b670be5 100644 --- a/ui/src/styles/chat/text.css +++ b/ui/src/styles/chat/text.css @@ -19,6 +19,7 @@ } .chat-text { + font-family: var(--font-chat); font-size: var(--chat-text-size); line-height: 1.5; color: var(--chat-text); diff --git a/ui/src/styles/config.css b/ui/src/styles/config.css index fcd4351b4685..9a1aa499a3c0 100644 --- a/ui/src/styles/config.css +++ b/ui/src/styles/config.css @@ -249,7 +249,9 @@ .settings-theme-card { position: relative; display: grid; - grid-template-columns: auto 1fr auto; + /* minmax(0, 1fr): a plain 1fr floors at the label's min-content width, so a + long theme name (imported tweakcn labels) overflowed the card's border. */ + grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 10px; min-height: 64px; @@ -269,14 +271,15 @@ background: var(--bg-hover); } +/* Selection is carried by this skin alone (aria-pressed owns the semantics), + so it stays stronger than the hover state at every accent. */ .settings-theme-card--active { - border-color: color-mix(in srgb, var(--accent) 35%, transparent); - background: color-mix(in srgb, var(--accent) 10%, var(--bg-elevated)); - box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 14%, transparent); + border-color: color-mix(in srgb, var(--accent) 60%, transparent); + background: color-mix(in srgb, var(--accent) 12%, var(--bg-elevated)); + box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 30%, transparent); } -.settings-theme-card__icon, -.settings-theme-card__check { +.settings-theme-card__icon { display: inline-flex; align-items: center; justify-content: center; @@ -285,8 +288,7 @@ color: var(--accent); } -.settings-theme-card__icon svg, -.settings-theme-card__check svg { +.settings-theme-card__icon svg { width: 18px; height: 18px; stroke: currentColor; @@ -297,6 +299,9 @@ font-size: 13px; font-weight: 600; color: var(--text); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .settings-theme-card--active .settings-theme-card__label { @@ -355,6 +360,13 @@ --theme-chip-accent-2: #a88050; } +.settings-theme-card--absolutely, +.settings-accent-theme--absolutely { + --theme-chip-bg: #262624; + --theme-chip-accent: #d97757; + --theme-chip-accent-2: #b8926a; +} + :root[data-theme-mode="light"] :is(.settings-theme-card--claw, .settings-accent-theme--claw) { --theme-chip-bg: #faf9f7; --theme-chip-accent: #bd4531; @@ -372,6 +384,13 @@ --theme-chip-accent: #6e4828; --theme-chip-accent-2: #6a4e30; } + +:root[data-theme-mode="light"] + :is(.settings-theme-card--absolutely, .settings-accent-theme--absolutely) { + --theme-chip-bg: #faf9f5; + --theme-chip-accent: #a8452a; + --theme-chip-accent-2: #8a6a44; +} /* stylelint-enable color-no-hex */ .settings-theme-card--custom, diff --git a/ui/src/styles/theme-contrast.test.ts b/ui/src/styles/theme-contrast.test.ts index f7a0d129665e..57f34bff6783 100644 --- a/ui/src/styles/theme-contrast.test.ts +++ b/ui/src/styles/theme-contrast.test.ts @@ -145,6 +145,7 @@ describe("Control UI theme contrast", () => { ':root[data-theme-mode="light"]', ':root[data-theme="openknot-light"]', ':root[data-theme="dash-light"]', + ':root[data-theme="absolutely-light"]', ]) { const theme = readCssVarBlock(baseCss, selector); const muted = requireCssColor(theme, "muted");