diff --git a/docs/design.md b/docs/design.md
index c4ecb70b..bda6ccc1 100644
--- a/docs/design.md
+++ b/docs/design.md
@@ -6,10 +6,18 @@ guidance in [CONTRIBUTING](../CONTRIBUTING.md).
## Tokens and appearance
-The current owners are `packages/core/src/theme/presentation.ts`,
-`desktop/src/styles/global.css` and `mobile/src/theme/index.ts`. Inspect current
-source before changing them. Keep neutral light/dark surfaces and the restrained
-blue accent; preserve semantic statuses and user-selected calendar/tag colors.
+The current owners are `web/src/ui/tokens.css` for the rebuilt web app,
+`packages/core/src/theme/presentation.ts`, `desktop/src/styles/global.css` and
+`mobile/src/theme/index.ts`. Inspect current source before changing them.
+
+The web app uses the Orbyn house style shared with Orbyn Engineering (owner decision,
+November 2026): Geist for text and JetBrains Mono for code, served from
+`web/public/fonts`; Light, Dark and Dim themes; headings at medium weight, never
+bold. At most three colours appear in the interface: ink for everything, including
+live and selected states; amber (`--warn`) when the person must act; red
+(`--danger`) for failures and removals. Done, working and selected states are ink.
+Calendar, list, tag, project and booking-page colours are content the person chose
+and keep their own colour. There is no 3D calendar view.
| Text role | Base size | Use |
| --------- | --------- | ---------------------------------------------------- |
@@ -69,8 +77,8 @@ acceptance. Record checks of changed flows under [verification](verification.md)
- Keep one clear action per outcome. Remove duplicate controls, competing toolbars
and explanations of obvious actions. Put rare management actions in the existing
overflow menu. Icon-only controls need accessible names and keyboard focus.
-- Use the current accent, neutral surfaces, text roles and spacing tokens. Do not
- introduce a new palette or shrink text to hide layout problems. Filled/bordered
+- Use the house-style tokens, text roles and spacing tokens. Do not add colours
+ beyond ink, amber and red, or shrink text to hide layout problems. Filled/bordered
controls need padding and consistent heights; mobile touch targets remain usable.
- Respond to the actual pane width. Preserve user-selected sidebar widths; opening
another pane must not reset them. Align pane/tab headers and avoid duplicate
diff --git a/web/index.html b/web/index.html
index 6a0c6086..5770d6cf 100644
--- a/web/index.html
+++ b/web/index.html
@@ -5,9 +5,9 @@
Orbyn
-
-
-
+
+
+
diff --git a/web/public/fonts/README.md b/web/public/fonts/README.md
index 5e8b9c4f..783ecfac 100644
--- a/web/public/fonts/README.md
+++ b/web/public/fonts/README.md
@@ -1,24 +1,23 @@
# Web typefaces
-Orbyn serves DM Sans and Manrope from this directory. No font stylesheet or font
-binary is requested from Google while the application runs. The existing family
-names, system fallbacks and text roles remain in `src/ui/tokens.css`.
+Orbyn serves Geist and JetBrains Mono from this directory. No font stylesheet or font
+binary is requested from Google while the application runs. Family names, system
+fallbacks and text roles live in `src/ui/tokens.css`.
-These are unmodified WOFF2 variable-font subsets distributed by Google Fonts:
-DM Sans v17, weight 100–1000 and optical size 9–40; Manrope v23, weight 200–800.
-The local stylesheet retains their published Unicode ranges and `font-display:
-swap`. Latin faces are preloaded; additional script subsets load on demand.
-Content hashes in filenames change when the font bytes change.
+These are unmodified WOFF2 variable-font subsets distributed by Google Fonts: Geist,
+weight 100–900, and JetBrains Mono, weight 100–800. The local stylesheet keeps their
+published Unicode ranges and `font-display: swap`. Latin faces are preloaded;
+additional script subsets load on demand. Content hashes in filenames change when the
+font bytes change.
Both families use the SIL Open Font License 1.1. Keep the complete copyright and
licence notices with the distributed fonts:
-- [DM Sans licence](dm-sans-OFL.txt), from the
- [Google Fonts DM Sans directory](https://github.com/google/fonts/tree/main/ofl/dmsans).
-- [Manrope licence](manrope-OFL.txt), from the
- [Google Fonts Manrope directory](https://github.com/google/fonts/tree/main/ofl/manrope).
+- [Geist licence](geist-OFL.txt), from the
+ [Google Fonts Geist directory](https://github.com/google/fonts/tree/main/ofl/geist).
+- [JetBrains Mono licence](jetbrains-mono-OFL.txt), from the
+ [Google Fonts JetBrains Mono directory](https://github.com/google/fonts/tree/main/ofl/jetbrainsmono).
[sources.json](sources.json) records the exact official stylesheet request, font
-URLs, byte counts and SHA-256 hashes. Licence bytes were checked against the listed
-Git blob identities. No font has been renamed internally, subsetted or converted
-by Orbyn. Unsupported glyphs continue to use the declared system fallback.
+URLs, byte counts and SHA-256 hashes. No font has been renamed internally, subsetted
+or converted by Orbyn. Unsupported glyphs continue to use the declared system fallback.
diff --git a/web/public/fonts/dm-sans-latin-ca72d2bcea8f.woff2 b/web/public/fonts/dm-sans-latin-ca72d2bcea8f.woff2
deleted file mode 100644
index c75f7bf1..00000000
Binary files a/web/public/fonts/dm-sans-latin-ca72d2bcea8f.woff2 and /dev/null differ
diff --git a/web/public/fonts/dm-sans-latin-ext-5d18d31d23ad.woff2 b/web/public/fonts/dm-sans-latin-ext-5d18d31d23ad.woff2
deleted file mode 100644
index 6e84cba1..00000000
Binary files a/web/public/fonts/dm-sans-latin-ext-5d18d31d23ad.woff2 and /dev/null differ
diff --git a/web/public/fonts/fonts-3822d62d9e34.css b/web/public/fonts/fonts-3822d62d9e34.css
new file mode 100644
index 00000000..b79843e5
--- /dev/null
+++ b/web/public/fonts/fonts-3822d62d9e34.css
@@ -0,0 +1,99 @@
+/* cyrillic-ext */
+@font-face {
+ font-family: 'Geist';
+ font-style: normal;
+ font-weight: 100 900;
+ font-display: swap;
+ src: url(/fonts/geist-cyrillic-ext-b7a545bbb082.woff2) format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'Geist';
+ font-style: normal;
+ font-weight: 100 900;
+ font-display: swap;
+ src: url(/fonts/geist-cyrillic-6129fc8571c3.woff2) format('woff2');
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'Geist';
+ font-style: normal;
+ font-weight: 100 900;
+ font-display: swap;
+ src: url(/fonts/geist-vietnamese-f689f638f29f.woff2) format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Geist';
+ font-style: normal;
+ font-weight: 100 900;
+ font-display: swap;
+ src: url(/fonts/geist-latin-ext-58a6b173d5ca.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Geist';
+ font-style: normal;
+ font-weight: 100 900;
+ font-display: swap;
+ src: url(/fonts/geist-latin-9b6f5ff45b27.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;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: 'JetBrains Mono';
+ font-style: normal;
+ font-weight: 100 800;
+ font-display: swap;
+ src: url(/fonts/jetbrains-mono-cyrillic-ext-992eea2f7021.woff2) format('woff2');
+ unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: 'JetBrains Mono';
+ font-style: normal;
+ font-weight: 100 800;
+ font-display: swap;
+ src: url(/fonts/jetbrains-mono-cyrillic-af7486955880.woff2) format('woff2');
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek */
+@font-face {
+ font-family: 'JetBrains Mono';
+ font-style: normal;
+ font-weight: 100 800;
+ font-display: swap;
+ src: url(/fonts/jetbrains-mono-greek-3edf363dbf9d.woff2) format('woff2');
+ unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: 'JetBrains Mono';
+ font-style: normal;
+ font-weight: 100 800;
+ font-display: swap;
+ src: url(/fonts/jetbrains-mono-vietnamese-1390e86cc282.woff2) format('woff2');
+ unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'JetBrains Mono';
+ font-style: normal;
+ font-weight: 100 800;
+ font-display: swap;
+ src: url(/fonts/jetbrains-mono-latin-ext-7db7affbce1f.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'JetBrains Mono';
+ font-style: normal;
+ font-weight: 100 800;
+ font-display: swap;
+ src: url(/fonts/jetbrains-mono-latin-1e06740a02a4.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/web/public/fonts/fonts-5d9f0bf2e309.css b/web/public/fonts/fonts-5d9f0bf2e309.css
deleted file mode 100644
index afbf32cd..00000000
--- a/web/public/fonts/fonts-5d9f0bf2e309.css
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Self-hosted Google Fonts. Font licences and source hashes are in README.md. */
-/* latin-ext */
-@font-face {
- font-family: 'DM Sans';
- font-style: normal;
- font-weight: 100 1000;
- font-display: swap;
- src: url(/fonts/dm-sans-latin-ext-5d18d31d23ad.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-
-/* latin */
-@font-face {
- font-family: 'DM Sans';
- font-style: normal;
- font-weight: 100 1000;
- font-display: swap;
- src: url(/fonts/dm-sans-latin-ca72d2bcea8f.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;
-}
-
-/* cyrillic-ext */
-@font-face {
- font-family: 'Manrope';
- font-style: normal;
- font-weight: 200 800;
- font-display: swap;
- src: url(/fonts/manrope-cyrillic-ext-3c09135e88bb.woff2) format('woff2');
- unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
-}
-
-/* cyrillic */
-@font-face {
- font-family: 'Manrope';
- font-style: normal;
- font-weight: 200 800;
- font-display: swap;
- src: url(/fonts/manrope-cyrillic-447c49583b1b.woff2) format('woff2');
- unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
-}
-
-/* greek */
-@font-face {
- font-family: 'Manrope';
- font-style: normal;
- font-weight: 200 800;
- font-display: swap;
- src: url(/fonts/manrope-greek-e507c109c317.woff2) format('woff2');
- unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
-}
-
-/* vietnamese */
-@font-face {
- font-family: 'Manrope';
- font-style: normal;
- font-weight: 200 800;
- font-display: swap;
- src: url(/fonts/manrope-vietnamese-dbf64d973b39.woff2) format('woff2');
- unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
-}
-
-/* latin-ext */
-@font-face {
- font-family: 'Manrope';
- font-style: normal;
- font-weight: 200 800;
- font-display: swap;
- src: url(/fonts/manrope-latin-ext-2f7335119075.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-
-/* latin */
-@font-face {
- font-family: 'Manrope';
- font-style: normal;
- font-weight: 200 800;
- font-display: swap;
- src: url(/fonts/manrope-latin-8c2def024c1b.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/web/public/fonts/dm-sans-OFL.txt b/web/public/fonts/geist-OFL.txt
similarity index 94%
rename from web/public/fonts/dm-sans-OFL.txt
rename to web/public/fonts/geist-OFL.txt
index 4430b85a..61f6f4b7 100644
--- a/web/public/fonts/dm-sans-OFL.txt
+++ b/web/public/fonts/geist-OFL.txt
@@ -1,93 +1,93 @@
-Copyright 2014 The DM Sans Project Authors (https://github.com/googlefonts/dm-fonts)
-
-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.
+Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font.git)
+
+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://openfontlicense.org
+
+
+-----------------------------------------------------------
+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.
\ No newline at end of file
diff --git a/web/public/fonts/geist-cyrillic-6129fc8571c3.woff2 b/web/public/fonts/geist-cyrillic-6129fc8571c3.woff2
new file mode 100644
index 00000000..f385e23a
Binary files /dev/null and b/web/public/fonts/geist-cyrillic-6129fc8571c3.woff2 differ
diff --git a/web/public/fonts/geist-cyrillic-ext-b7a545bbb082.woff2 b/web/public/fonts/geist-cyrillic-ext-b7a545bbb082.woff2
new file mode 100644
index 00000000..7ab581f7
Binary files /dev/null and b/web/public/fonts/geist-cyrillic-ext-b7a545bbb082.woff2 differ
diff --git a/web/public/fonts/geist-latin-9b6f5ff45b27.woff2 b/web/public/fonts/geist-latin-9b6f5ff45b27.woff2
new file mode 100644
index 00000000..8f01e763
Binary files /dev/null and b/web/public/fonts/geist-latin-9b6f5ff45b27.woff2 differ
diff --git a/web/public/fonts/geist-latin-ext-58a6b173d5ca.woff2 b/web/public/fonts/geist-latin-ext-58a6b173d5ca.woff2
new file mode 100644
index 00000000..8a1d3df6
Binary files /dev/null and b/web/public/fonts/geist-latin-ext-58a6b173d5ca.woff2 differ
diff --git a/web/public/fonts/geist-vietnamese-f689f638f29f.woff2 b/web/public/fonts/geist-vietnamese-f689f638f29f.woff2
new file mode 100644
index 00000000..0bcca1b2
Binary files /dev/null and b/web/public/fonts/geist-vietnamese-f689f638f29f.woff2 differ
diff --git a/web/public/fonts/manrope-OFL.txt b/web/public/fonts/jetbrains-mono-OFL.txt
similarity index 97%
rename from web/public/fonts/manrope-OFL.txt
rename to web/public/fonts/jetbrains-mono-OFL.txt
index e271172a..821a3dac 100644
--- a/web/public/fonts/manrope-OFL.txt
+++ b/web/public/fonts/jetbrains-mono-OFL.txt
@@ -1,8 +1,8 @@
-Copyright 2018 The Manrope Project Authors (https://github.com/googlefonts/manrope)
+Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
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:
-http://scripts.sil.org/OFL
+
+This license is copied below, and is also available with a FAQ at: https://scripts.sil.org/OFL
-----------------------------------------------------------
@@ -18,7 +18,7 @@ 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,
+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
diff --git a/web/public/fonts/jetbrains-mono-cyrillic-af7486955880.woff2 b/web/public/fonts/jetbrains-mono-cyrillic-af7486955880.woff2
new file mode 100644
index 00000000..8d79fc58
Binary files /dev/null and b/web/public/fonts/jetbrains-mono-cyrillic-af7486955880.woff2 differ
diff --git a/web/public/fonts/jetbrains-mono-cyrillic-ext-992eea2f7021.woff2 b/web/public/fonts/jetbrains-mono-cyrillic-ext-992eea2f7021.woff2
new file mode 100644
index 00000000..0bb8709d
Binary files /dev/null and b/web/public/fonts/jetbrains-mono-cyrillic-ext-992eea2f7021.woff2 differ
diff --git a/web/public/fonts/jetbrains-mono-greek-3edf363dbf9d.woff2 b/web/public/fonts/jetbrains-mono-greek-3edf363dbf9d.woff2
new file mode 100644
index 00000000..74791bbc
Binary files /dev/null and b/web/public/fonts/jetbrains-mono-greek-3edf363dbf9d.woff2 differ
diff --git a/web/public/fonts/jetbrains-mono-latin-1e06740a02a4.woff2 b/web/public/fonts/jetbrains-mono-latin-1e06740a02a4.woff2
new file mode 100644
index 00000000..c3f0666e
Binary files /dev/null and b/web/public/fonts/jetbrains-mono-latin-1e06740a02a4.woff2 differ
diff --git a/web/public/fonts/jetbrains-mono-latin-ext-7db7affbce1f.woff2 b/web/public/fonts/jetbrains-mono-latin-ext-7db7affbce1f.woff2
new file mode 100644
index 00000000..b1f58042
Binary files /dev/null and b/web/public/fonts/jetbrains-mono-latin-ext-7db7affbce1f.woff2 differ
diff --git a/web/public/fonts/jetbrains-mono-vietnamese-1390e86cc282.woff2 b/web/public/fonts/jetbrains-mono-vietnamese-1390e86cc282.woff2
new file mode 100644
index 00000000..7bb40116
Binary files /dev/null and b/web/public/fonts/jetbrains-mono-vietnamese-1390e86cc282.woff2 differ
diff --git a/web/public/fonts/manrope-cyrillic-447c49583b1b.woff2 b/web/public/fonts/manrope-cyrillic-447c49583b1b.woff2
deleted file mode 100644
index 18973fb4..00000000
Binary files a/web/public/fonts/manrope-cyrillic-447c49583b1b.woff2 and /dev/null differ
diff --git a/web/public/fonts/manrope-cyrillic-ext-3c09135e88bb.woff2 b/web/public/fonts/manrope-cyrillic-ext-3c09135e88bb.woff2
deleted file mode 100644
index 97657520..00000000
Binary files a/web/public/fonts/manrope-cyrillic-ext-3c09135e88bb.woff2 and /dev/null differ
diff --git a/web/public/fonts/manrope-greek-e507c109c317.woff2 b/web/public/fonts/manrope-greek-e507c109c317.woff2
deleted file mode 100644
index 11b3486a..00000000
Binary files a/web/public/fonts/manrope-greek-e507c109c317.woff2 and /dev/null differ
diff --git a/web/public/fonts/manrope-latin-8c2def024c1b.woff2 b/web/public/fonts/manrope-latin-8c2def024c1b.woff2
deleted file mode 100644
index f3122c17..00000000
Binary files a/web/public/fonts/manrope-latin-8c2def024c1b.woff2 and /dev/null differ
diff --git a/web/public/fonts/manrope-latin-ext-2f7335119075.woff2 b/web/public/fonts/manrope-latin-ext-2f7335119075.woff2
deleted file mode 100644
index e756446c..00000000
Binary files a/web/public/fonts/manrope-latin-ext-2f7335119075.woff2 and /dev/null differ
diff --git a/web/public/fonts/manrope-vietnamese-dbf64d973b39.woff2 b/web/public/fonts/manrope-vietnamese-dbf64d973b39.woff2
deleted file mode 100644
index fed7e710..00000000
Binary files a/web/public/fonts/manrope-vietnamese-dbf64d973b39.woff2 and /dev/null differ
diff --git a/web/public/fonts/sources.json b/web/public/fonts/sources.json
index 9a7e6c69..cdd0f01b 100644
--- a/web/public/fonts/sources.json
+++ b/web/public/fonts/sources.json
@@ -1,85 +1,95 @@
{
- "cssSource": "https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,100..1000&family=Manrope:wght@200..800&display=swap",
- "cssSourceSha256": "82bc38a42b211fe97895a2c66a82a58bb40226dc369c96a138f76e0588d87619",
- "stylesheet": "fonts-5d9f0bf2e309.css",
+ "cssSource": "https://fonts.googleapis.com/css2?family=Geist:wght@100..900&family=JetBrains+Mono:wght@100..800&display=swap",
+ "cssSourceSha256": "bcd51f8c9b5bda526750e81f557df5c22836494d901ee56a67f0604e9466de64",
+ "stylesheet": "fonts-3822d62d9e34.css",
"files": [
{
- "family": "DM Sans",
+ "family": "Geist",
+ "subset": "cyrillic-ext",
+ "url": "https://fonts.gstatic.com/s/geist/v5/gyByhwUxId8gMEwRGFWNOITddY4.woff2",
+ "file": "geist-cyrillic-ext-b7a545bbb082.woff2",
+ "bytes": 7252,
+ "sha256": "b7a545bbb08256bd809f11cfe66d88da3e22d169ea4407737b1ef0ec1ed3d791"
+ },
+ {
+ "family": "Geist",
+ "subset": "cyrillic",
+ "url": "https://fonts.gstatic.com/s/geist/v5/gyByhwUxId8gMEwYGFWNOITddY4.woff2",
+ "file": "geist-cyrillic-6129fc8571c3.woff2",
+ "bytes": 14900,
+ "sha256": "6129fc8571c3e0cb0a4c41f5160c974a843b055009dc4ad8858bd808e18a2d86"
+ },
+ {
+ "family": "Geist",
+ "subset": "vietnamese",
+ "url": "https://fonts.gstatic.com/s/geist/v5/gyByhwUxId8gMEwTGFWNOITddY4.woff2",
+ "file": "geist-vietnamese-f689f638f29f.woff2",
+ "bytes": 7968,
+ "sha256": "f689f638f29fff460a2d5749edb5d5c38d7bef0389f32032d871f23fc6ebb008"
+ },
+ {
+ "family": "Geist",
"subset": "latin-ext",
- "url": "https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZ2IHSeH.woff2",
- "file": "dm-sans-latin-ext-5d18d31d23ad.woff2",
- "bytes": 31292,
- "sha256": "5d18d31d23ada61ebee1d589b11d5da30db9e158f589d5e35221ba2b1a45de54"
+ "url": "https://fonts.gstatic.com/s/geist/v5/gyByhwUxId8gMEwSGFWNOITddY4.woff2",
+ "file": "geist-latin-ext-58a6b173d5ca.woff2",
+ "bytes": 16540,
+ "sha256": "58a6b173d5ca1dec92166ea3c6cb1a84a4144556d10928ac14e8e6b40e4787bd"
},
{
- "family": "DM Sans",
+ "family": "Geist",
"subset": "latin",
- "url": "https://fonts.gstatic.com/s/dmsans/v17/rP2Hp2ywxg089UriCZOIHQ.woff2",
- "file": "dm-sans-latin-ca72d2bcea8f.woff2",
- "bytes": 62724,
- "sha256": "ca72d2bcea8f4daa783dbdfa2d9b46068c3ce38168e05918fb867aa453b4f890"
+ "url": "https://fonts.gstatic.com/s/geist/v5/gyByhwUxId8gMEwcGFWNOITd.woff2",
+ "file": "geist-latin-9b6f5ff45b27.woff2",
+ "bytes": 29288,
+ "sha256": "9b6f5ff45b278c744b5f379a2c4ecbaf858a842b8eaf82ac8d21b699ca16c608"
},
{
- "family": "Manrope",
+ "family": "JetBrains Mono",
"subset": "cyrillic-ext",
- "url": "https://fonts.gstatic.com/s/manrope/v23/xn7gYHE41ni1AdIRggqxSuXd.woff2",
- "file": "manrope-cyrillic-ext-3c09135e88bb.woff2",
- "bytes": 2588,
- "sha256": "3c09135e88bbfcd848e99be137710afbb615a8d9a73c5c48e6cb0245a162af1d"
+ "url": "https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD2OwGtT0rU3BE.woff2",
+ "file": "jetbrains-mono-cyrillic-ext-992eea2f7021.woff2",
+ "bytes": 2020,
+ "sha256": "992eea2f70210457ddd1196de4df3240919ffe068ad188c79d985fba4565d3bf"
},
{
- "family": "Manrope",
+ "family": "JetBrains Mono",
"subset": "cyrillic",
- "url": "https://fonts.gstatic.com/s/manrope/v23/xn7gYHE41ni1AdIRggOxSuXd.woff2",
- "file": "manrope-cyrillic-447c49583b1b.woff2",
- "bytes": 14352,
- "sha256": "447c49583b1b735cc6f566151db1d24354cec41076c55dd98455cfbde9e806c1"
+ "url": "https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD_OwGtT0rU3BE.woff2",
+ "file": "jetbrains-mono-cyrillic-af7486955880.woff2",
+ "bytes": 12064,
+ "sha256": "af7486955880be1c2b972e9c766acffb776768d669b6576ed9a0919ce72e7ca6"
},
{
- "family": "Manrope",
+ "family": "JetBrains Mono",
"subset": "greek",
- "url": "https://fonts.gstatic.com/s/manrope/v23/xn7gYHE41ni1AdIRggSxSuXd.woff2",
- "file": "manrope-greek-e507c109c317.woff2",
- "bytes": 9268,
- "sha256": "e507c109c31789b33994646b457ee288639324516357250607c9b1398186e069"
+ "url": "https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD4OwGtT0rU3BE.woff2",
+ "file": "jetbrains-mono-greek-3edf363dbf9d.woff2",
+ "bytes": 9084,
+ "sha256": "3edf363dbf9d5fa0cdc784ae2b431a8a4152f4055a8a8858028c0bd668808273"
},
{
- "family": "Manrope",
+ "family": "JetBrains Mono",
"subset": "vietnamese",
- "url": "https://fonts.gstatic.com/s/manrope/v23/xn7gYHE41ni1AdIRggixSuXd.woff2",
- "file": "manrope-vietnamese-dbf64d973b39.woff2",
- "bytes": 8388,
- "sha256": "dbf64d973b3987844df30992c93f47d24ac8935ee8c9b1e320942aeb1b367703"
+ "url": "https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD0OwGtT0rU3BE.woff2",
+ "file": "jetbrains-mono-vietnamese-1390e86cc282.woff2",
+ "bytes": 7468,
+ "sha256": "1390e86cc2823e759358918c01c4fcc1b6e4f01bca915bdbeb6d68eb5c244405"
},
{
- "family": "Manrope",
+ "family": "JetBrains Mono",
"subset": "latin-ext",
- "url": "https://fonts.gstatic.com/s/manrope/v23/xn7gYHE41ni1AdIRggmxSuXd.woff2",
- "file": "manrope-latin-ext-2f7335119075.woff2",
- "bytes": 15160,
- "sha256": "2f7335119075b2079f1d882530bbc18728461612bf90743203d73a74a48f4d9b"
+ "url": "https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD1OwGtT0rU3BE.woff2",
+ "file": "jetbrains-mono-latin-ext-7db7affbce1f.woff2",
+ "bytes": 15204,
+ "sha256": "7db7affbce1fdee69c1ffc2641bbca289b049867f524c9d861fe35ab6670bf29"
},
{
- "family": "Manrope",
+ "family": "JetBrains Mono",
"subset": "latin",
- "url": "https://fonts.gstatic.com/s/manrope/v23/xn7gYHE41ni1AdIRggexSg.woff2",
- "file": "manrope-latin-8c2def024c1b.woff2",
- "bytes": 24532,
- "sha256": "8c2def024c1bf31aacf3624ae3c4d701269b4ec3dc765c04830839f0d36b2d9e"
- }
- ],
- "licences": [
- {
- "file": "dm-sans-OFL.txt",
- "gitBlobSha": "4430b85ac62998e2edb914360f9ebdfe43f4deaa",
- "sha256": "9af36190332437f5ecd09974de43c1f7c77a310a996cdd8ceb25628b458840e1",
- "url": "https://raw.githubusercontent.com/google/fonts/main/ofl/dmsans/OFL.txt"
- },
- {
- "file": "manrope-OFL.txt",
- "gitBlobSha": "e271172a9ed0cddc895aabb6509f1c7d880b492d",
- "sha256": "58172e0c0fac2cda8a37b348164bb55e44b0e69051e557e92b1d3f6910141f7b",
- "url": "https://raw.githubusercontent.com/google/fonts/main/ofl/manrope/OFL.txt"
+ "url": "https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD7OwGtT0rU.woff2",
+ "file": "jetbrains-mono-latin-1e06740a02a4.woff2",
+ "bytes": 40480,
+ "sha256": "1e06740a02a443fb7f3eeda8fcaa685a0f6c620e3f01e6666e847295469ce3ad"
}
]
-}
+}
\ No newline at end of file
diff --git a/web/src/app/Shell.tsx b/web/src/app/Shell.tsx
index b955572b..00acdb5f 100644
--- a/web/src/app/Shell.tsx
+++ b/web/src/app/Shell.tsx
@@ -50,7 +50,7 @@ import {
useNavigate,
usePath,
} from "../lib/router";
-import { useTheme } from "../lib/theme";
+import { isDarkTheme, useTheme } from "../lib/theme";
import { Button, ErrorNotice, IconButton, Menu, useToast } from "../ui/kit";
import { TaskHost, useTasks, useItems, nextUp } from "../screens/shared-task";
import { useAccount } from "./account";
@@ -754,10 +754,10 @@ export function Shell({
- {theme === "dark" ? : }
+ {isDarkTheme(theme) ? : }
+ THEMES.includes(value as Theme);
+/** Dark and Dim are both dark schemes. */
+export const isDarkTheme = (value: Theme) => value !== "light";
/** The same key the old client uses, so the choice carries over. */
const KEY = "orbyn-theme";
@@ -8,7 +14,7 @@ const KEY = "orbyn-theme";
function initial(): Theme {
try {
const saved = localStorage.getItem(KEY);
- if (saved === "light" || saved === "dark") return saved;
+ if (isTheme(saved)) return saved;
} catch {
// Fall back to the system preference.
}
@@ -42,10 +48,7 @@ function apply(next: Theme, persist: boolean) {
apply(theme, true);
window.addEventListener("storage", (event) => {
- if (
- event.key === KEY &&
- (event.newValue === "light" || event.newValue === "dark")
- )
+ if (event.key === KEY && isTheme(event.newValue))
apply(event.newValue, false);
});
const subscribe = (listener: () => void) => {
@@ -53,7 +56,7 @@ const subscribe = (listener: () => void) => {
return () => void listeners.delete(listener);
};
export const setTheme = (next: Theme) => apply(next, true);
-const toggle = () => setTheme(theme === "dark" ? "light" : "dark");
+const toggle = () => setTheme(isDarkTheme(theme) ? "light" : "dark");
export function useTheme() {
const value = useSyncExternalStore(subscribe, () => theme);
diff --git a/web/src/screens/agents-shared/agents-shared.css b/web/src/screens/agents-shared/agents-shared.css
index b490b65c..3f3421ca 100644
--- a/web/src/screens/agents-shared/agents-shared.css
+++ b/web/src/screens/agents-shared/agents-shared.css
@@ -195,7 +195,7 @@
}
.agents-table th {
background: var(--sunken);
- font-weight: 600;
+ font-weight: 500;
}
.agents-changes > li > label,
.agents-check {
@@ -284,7 +284,7 @@
gap: 4px;
}
.agents-fieldset > legend {
- font-weight: 600;
+ font-weight: 500;
font-size: 13px;
color: var(--text-soft);
}
diff --git a/web/src/screens/assistant/assistant.css b/web/src/screens/assistant/assistant.css
index 34df1ece..429a4bc6 100644
--- a/web/src/screens/assistant/assistant.css
+++ b/web/src/screens/assistant/assistant.css
@@ -22,7 +22,7 @@
justify-content: space-between;
gap: 8px;
padding: 12px 8px 8px 16px;
- font-weight: 600;
+ font-weight: 500;
font-size: 13px;
}
.assistant-rail-head .btn {
@@ -208,7 +208,8 @@
background: var(--accent);
color: var(--on-ink, #fff);
}
-:root[data-theme="dark"] .assistant-message-user {
+:root[data-theme="dark"] .assistant-message-user,
+:root[data-theme="dim"] .assistant-message-user {
color: #0d0e10;
}
.assistant-message-user .agents-reply > :first-child {
@@ -240,7 +241,7 @@
}
.assistant-update-label {
font-size: 13px;
- font-weight: 600;
+ font-weight: 500;
}
.assistant-actions {
display: flex;
diff --git a/web/src/screens/booking/booking.css b/web/src/screens/booking/booking.css
index 7a9bc5ab..076675f4 100644
--- a/web/src/screens/booking/booking.css
+++ b/web/src/screens/booking/booking.css
@@ -107,7 +107,7 @@
cursor: pointer;
min-height: var(--control);
align-content: center;
- font-weight: 600;
+ font-weight: 500;
overflow-wrap: anywhere;
}
.booking-web-workspace summary + *,
@@ -127,7 +127,7 @@
.booking-web-metrics dd {
font-size: 24px;
margin: 8px 0;
- font-weight: 600;
+ font-weight: 500;
}
.booking-web-rows,
.booking-web-page-list,
diff --git a/web/src/screens/calendar/calendar.css b/web/src/screens/calendar/calendar.css
index 4d3e9c07..98754a93 100644
--- a/web/src/screens/calendar/calendar.css
+++ b/web/src/screens/calendar/calendar.css
@@ -302,7 +302,7 @@
.calendar-daychoice button[aria-pressed="true"] {
background: var(--accent-soft);
color: var(--accent-text);
- font-weight: 600;
+ font-weight: 500;
}
.calendar-tags {
display: flex;
@@ -401,7 +401,7 @@
.calendar-flags h4 {
margin: 0;
font-size: 13px;
- font-weight: 600;
+ font-weight: 500;
}
.calendar-lanes {
display: flex;
@@ -435,7 +435,7 @@
cursor: grab;
}
.calendar-lane-row.is-pinned .row-title {
- font-weight: 600;
+ font-weight: 500;
}
.calendar-flags {
display: flex;
@@ -1340,7 +1340,7 @@
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
- font-weight: 600;
+ font-weight: 500;
}
.calendar-page .calendar-tile svg {
display: inline;
@@ -1555,7 +1555,7 @@
height: 20px;
border-radius: 10px;
font-size: 11px;
- font-weight: 600;
+ font-weight: 500;
}
.calendar-month-cell.is-today .calendar-month-date {
background: var(--accent);
diff --git a/web/src/screens/library/library.css b/web/src/screens/library/library.css
index 79f2de2e..7a6f90f8 100644
--- a/web/src/screens/library/library.css
+++ b/web/src/screens/library/library.css
@@ -1047,7 +1047,7 @@ button.lib-twist:disabled {
}
.doc-editing[data-type="heading"] .doc-input {
font-family: var(--head);
- font-weight: 700;
+ font-weight: 500;
letter-spacing: -0.012em;
}
.doc-editing[data-level="1"] .doc-input {
@@ -1343,7 +1343,7 @@ button.lib-twist:disabled {
}
.doc-table th {
background: var(--sunken);
- font-weight: 600;
+ font-weight: 500;
}
.doc-table span {
display: block;
diff --git a/web/src/screens/projects/projects.css b/web/src/screens/projects/projects.css
index e5c7ebfc..f1df9312 100644
--- a/web/src/screens/projects/projects.css
+++ b/web/src/screens/projects/projects.css
@@ -67,7 +67,7 @@
align-items: center;
gap: 6px;
min-height: 36px;
- font-weight: 600;
+ font-weight: 500;
font-size: 13px;
}
.pj-promises > button svg {
@@ -141,7 +141,7 @@
}
.pj-name {
color: var(--text);
- font-weight: 600;
+ font-weight: 500;
overflow-wrap: anywhere;
}
.pj-name:hover,
@@ -479,7 +479,7 @@
border-radius: 50%;
background: var(--chip);
font-size: 11px;
- font-weight: 600;
+ font-weight: 500;
}
.pj-aliases {
display: flex;
diff --git a/web/src/screens/public/PublicFrame.tsx b/web/src/screens/public/PublicFrame.tsx
index 95cd60b2..dcfe6e08 100644
--- a/web/src/screens/public/PublicFrame.tsx
+++ b/web/src/screens/public/PublicFrame.tsx
@@ -2,7 +2,7 @@ import { ArrowUpRight, Moon, Orbit, Sun } from "lucide-react";
import type { MouseEvent, ReactNode } from "react";
import { useAccount } from "../../app/account";
import { navigate, useSearch } from "../../lib/router";
-import { useTheme } from "../../lib/theme";
+import { isDarkTheme, useTheme } from "../../lib/theme";
import { IconButton } from "../../ui/kit";
import "./public.css";
import {
@@ -54,10 +54,10 @@ export function PublicFrame({