diff --git a/devnotes/v2.0.0/rules/typography-design-system-rules.md b/devnotes/v2.0.0/rules/typography-design-system-rules.md new file mode 100644 index 00000000..5078d7f7 --- /dev/null +++ b/devnotes/v2.0.0/rules/typography-design-system-rules.md @@ -0,0 +1,80 @@ +# Scriberr Typography Design System (Nunito) + +## Purpose + +This document defines a centralized typography system for Scriberr so hierarchy is explicit, scanning is faster, and typography remains cohesive across transcript, notes, and product surfaces. + +## Foundation + +- Primary font family: `Nunito` from Google Fonts. +- Loading strategy: static local `@font-face` files in `web/frontend/public/fonts/nunito`. +- Imported static weights: `400`, `500`, `600`, `700`, with matching italics. +- Do not use range-based variable font imports for the app shell; browser font inspectors may expose the variable font's named instance instead of the active CSS weight. +- The app root uses shared weight tokens for `400`, `500`, `600`, and `700`. +- Single UI family across headings, body, metadata, controls, and note surfaces. +- Serif reading utility remains optional for long-form reading experiments only. + +## Hierarchy Principles + +- Use scale and spacing before decoration. +- Keep heading contrast obvious: larger size + stronger weight + tighter line-height. +- Keep body text highly legible: medium weight + comfortable line-height. +- Keep metadata quieter: smaller size + secondary/tertiary color. +- Avoid one-off font sizes inside components unless product-critical. + +## Central Token Model + +All typography should consume shared CSS variables from `design-system.css`. + +Required token groups: + +- Family: + - `--scr-font-sans` +- Weights: + - `--scr-font-weight-regular` + - `--scr-font-weight-medium` + - `--scr-font-weight-semibold` + - `--scr-font-weight-bold` +- Sizes: + - `--scr-type-display-xl` + - `--scr-type-heading-lg` + - `--scr-type-heading-md` + - `--scr-type-body-lg` + - `--scr-type-body-md` + - `--scr-type-body-sm` + - `--scr-type-meta` + - `--scr-type-micro` +- Leading: + - `--scr-line-tight` + - `--scr-line-base` + - `--scr-line-relaxed` + +## Recommended Mapping + +- Page/recording title: `display-xl` + `semibold` + `text-primary`. +- Section heading: `heading-md` + `semibold` + `text-primary`. +- Body/default: `body-md` + `medium` + `text-primary`. +- Supporting copy: `body-sm` + `medium` + `text-secondary`. +- Metadata/chips/timestamps: `meta` + `medium` + `text-secondary`. +- Tiny labels/help/status: `micro` + `medium` + `text-tertiary`. + +## Notes Sidebar Typography Rules + +- Quote line should read as context: `heading-lg` on desktop, never bold-heavy. +- Note bubble text should be compact and readable: `body-lg` with relaxed leading. +- Reply placeholder/input should be one step quieter than note content. +- Timestamp and count chips must stay compact and secondary. + +## Consistency Rules + +- New components must consume tokens; do not hardcode random font-size values. +- Reuse existing semantic classes before adding new typography variants. +- If a size is reused 3+ times, promote it to a token. +- Typography adjustments should be made in token layer first, then component overrides. + +## Accessibility and Readability + +- Minimum body size for dense product surfaces: `0.875rem`. +- Maintain clear contrast between primary and secondary text colors. +- Avoid extreme font-weight jumps between adjacent levels. +- Keep line lengths and vertical rhythm stable to prevent visual jitter. diff --git a/web/frontend/public/fonts/nunito/Nunito-Bold.ttf b/web/frontend/public/fonts/nunito/Nunito-Bold.ttf new file mode 100644 index 00000000..69096898 Binary files /dev/null and b/web/frontend/public/fonts/nunito/Nunito-Bold.ttf differ diff --git a/web/frontend/public/fonts/nunito/Nunito-BoldItalic.ttf b/web/frontend/public/fonts/nunito/Nunito-BoldItalic.ttf new file mode 100644 index 00000000..2479c36d Binary files /dev/null and b/web/frontend/public/fonts/nunito/Nunito-BoldItalic.ttf differ diff --git a/web/frontend/public/fonts/nunito/Nunito-Italic.ttf b/web/frontend/public/fonts/nunito/Nunito-Italic.ttf new file mode 100644 index 00000000..97fd1696 Binary files /dev/null and b/web/frontend/public/fonts/nunito/Nunito-Italic.ttf differ diff --git a/web/frontend/public/fonts/nunito/Nunito-Medium.ttf b/web/frontend/public/fonts/nunito/Nunito-Medium.ttf new file mode 100644 index 00000000..a6993ebb Binary files /dev/null and b/web/frontend/public/fonts/nunito/Nunito-Medium.ttf differ diff --git a/web/frontend/public/fonts/nunito/Nunito-MediumItalic.ttf b/web/frontend/public/fonts/nunito/Nunito-MediumItalic.ttf new file mode 100644 index 00000000..19136324 Binary files /dev/null and b/web/frontend/public/fonts/nunito/Nunito-MediumItalic.ttf differ diff --git a/web/frontend/public/fonts/nunito/Nunito-Regular.ttf b/web/frontend/public/fonts/nunito/Nunito-Regular.ttf new file mode 100644 index 00000000..be80c3f0 Binary files /dev/null and b/web/frontend/public/fonts/nunito/Nunito-Regular.ttf differ diff --git a/web/frontend/public/fonts/nunito/Nunito-SemiBold.ttf b/web/frontend/public/fonts/nunito/Nunito-SemiBold.ttf new file mode 100644 index 00000000..06f29ea7 Binary files /dev/null and b/web/frontend/public/fonts/nunito/Nunito-SemiBold.ttf differ diff --git a/web/frontend/public/fonts/nunito/Nunito-SemiBoldItalic.ttf b/web/frontend/public/fonts/nunito/Nunito-SemiBoldItalic.ttf new file mode 100644 index 00000000..5af81332 Binary files /dev/null and b/web/frontend/public/fonts/nunito/Nunito-SemiBoldItalic.ttf differ diff --git a/web/frontend/public/fonts/nunito/OFL.txt b/web/frontend/public/fonts/nunito/OFL.txt new file mode 100644 index 00000000..8f5b7e21 --- /dev/null +++ b/web/frontend/public/fonts/nunito/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2014 The Nunito Project Authors (https://github.com/googlefonts/nunito) + +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. diff --git a/web/frontend/src/features/transcription/components/ReadOnlyMarkdown.css b/web/frontend/src/features/transcription/components/ReadOnlyMarkdown.css index b77130b0..3e30e871 100644 --- a/web/frontend/src/features/transcription/components/ReadOnlyMarkdown.css +++ b/web/frontend/src/features/transcription/components/ReadOnlyMarkdown.css @@ -3,17 +3,17 @@ } .scr-textforge-readonly { - --font-body: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif; - --font-heading: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif; - --font-weight-body: 500; - --font-weight-heading: 600; + --font-body: var(--scr-font-sans); + --font-heading: var(--scr-font-sans); + --font-weight-body: var(--scr-font-weight-regular); + --font-weight-heading: var(--scr-font-weight-semibold); --line-height-body: 1.62; --line-height-heading: var(--scr-line-tight); border: 0; background: transparent; box-shadow: none; color: var(--scr-text-primary); - font-family: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif; + font-family: var(--scr-font-sans); font-size: 0.96875rem; line-height: 1.62; } @@ -22,14 +22,14 @@ min-height: 0; padding: 0; color: var(--scr-text-primary); - font-family: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif; + font-family: var(--scr-font-sans); font-size: 0.96875rem; - font-weight: 500; + font-weight: var(--scr-font-weight-regular); line-height: 1.62; } .scr-textforge-readonly .ProseMirror * { - font-family: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif; + font-family: var(--scr-font-sans); } .scr-textforge-readonly .ProseMirror:focus { @@ -41,7 +41,7 @@ .scr-textforge-readonly .ProseMirror h3 { margin: var(--scr-space-4) 0 var(--scr-space-2); color: var(--scr-text-strong); - font-weight: 600; + font-weight: var(--scr-font-weight-semibold); letter-spacing: 0; line-height: var(--scr-line-tight); } @@ -61,7 +61,7 @@ margin: var(--scr-space-3) 0 var(--scr-space-2); color: var(--scr-text-strong); font-size: 0.90625rem; - font-weight: 600; + font-weight: var(--scr-font-weight-semibold); letter-spacing: 0; line-height: var(--scr-line-tight); } @@ -71,9 +71,9 @@ .scr-textforge-readonly .ProseMirror ol { margin: 0 0 var(--scr-space-3); color: var(--scr-text-primary); - font-family: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif; + font-family: var(--scr-font-sans); font-size: 0.96875rem; - font-weight: 500; + font-weight: var(--scr-font-weight-regular); line-height: 1.62; } @@ -104,7 +104,7 @@ padding-left: var(--scr-space-1); color: var(--scr-text-primary); font-size: 0.96875rem; - font-weight: 500; + font-weight: var(--scr-font-weight-regular); line-height: 1.62; } diff --git a/web/frontend/src/index.css b/web/frontend/src/index.css index 48383045..c655a352 100644 --- a/web/frontend/src/index.css +++ b/web/frontend/src/index.css @@ -74,10 +74,10 @@ --color-brand-900: var(--brand-900); --color-brand-950: var(--brand-950); - --font-sans: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; - --font-display: 'Manrope', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + --font-sans: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + --font-display: "Nunito", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --font-mono: 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --font-inter: 'Manrope', sans-serif; + --font-inter: "Nunito", sans-serif; --font-reading: 'Literata', serif; /* For Transcripts */ diff --git a/web/frontend/src/styles/design-system.css b/web/frontend/src/styles/design-system.css index adf45398..c0b1fa2d 100644 --- a/web/frontend/src/styles/design-system.css +++ b/web/frontend/src/styles/design-system.css @@ -1,9 +1,65 @@ @font-face { - font-family: "Manrope"; + font-family: "Nunito"; font-style: normal; - font-weight: 200; + font-weight: 400; font-display: swap; - src: url("/fonts/manrope/Manrope-ExtraLight.ttf") format("truetype"); + src: url("/fonts/nunito/Nunito-Regular.ttf") format("truetype"); +} + +@font-face { + font-family: "Nunito"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url("/fonts/nunito/Nunito-Medium.ttf") format("truetype"); +} + +@font-face { + font-family: "Nunito"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url("/fonts/nunito/Nunito-SemiBold.ttf") format("truetype"); +} + +@font-face { + font-family: "Nunito"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url("/fonts/nunito/Nunito-Bold.ttf") format("truetype"); +} + +@font-face { + font-family: "Nunito"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url("/fonts/nunito/Nunito-Italic.ttf") format("truetype"); +} + +@font-face { + font-family: "Nunito"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url("/fonts/nunito/Nunito-MediumItalic.ttf") format("truetype"); +} + +@font-face { + font-family: "Nunito"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url("/fonts/nunito/Nunito-SemiBoldItalic.ttf") format("truetype"); +} + +@font-face { + font-family: "Nunito"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url("/fonts/nunito/Nunito-BoldItalic.ttf") format("truetype"); } .scr-audio-detail-main { @@ -49,10 +105,10 @@ .scr-audio-title { min-width: 0; color: var(--scr-text-primary); - font-size: clamp(1.75rem, 2.2vw, 2.25rem); - font-weight: 500; + font-size: var(--scr-type-display-xl); + font-weight: var(--scr-font-weight-semibold); letter-spacing: 0; - line-height: 1.16; + line-height: 1.15; } .scr-audio-title-button, @@ -109,8 +165,8 @@ gap: var(--scr-space-4); margin-top: var(--scr-space-5); color: var(--scr-text-secondary); - font-size: 0.8125rem; - font-weight: 600; + font-size: var(--scr-type-meta); + font-weight: var(--scr-font-weight-medium); } .scr-audio-meta span { @@ -134,8 +190,8 @@ background: transparent; color: var(--scr-text-secondary); cursor: pointer; - font-size: 0.9375rem; - font-weight: 600; + font-size: var(--scr-type-body-md); + font-weight: var(--scr-font-weight-medium); line-height: 1; padding: 0; } @@ -176,7 +232,7 @@ gap: var(--scr-space-8); max-width: 920px; color: var(--scr-text-primary); - font-size: 1rem; + font-size: var(--scr-type-body-lg); line-height: var(--scr-line-relaxed); } @@ -194,8 +250,8 @@ .scr-summary-heading h2 { margin: 0; - font-size: 1.125rem; - font-weight: 600; + font-size: var(--scr-type-heading-md); + font-weight: var(--scr-font-weight-semibold); letter-spacing: 0; line-height: var(--scr-line-tight); } @@ -204,10 +260,10 @@ margin: 0; padding-left: calc(18px + var(--scr-space-3)); color: var(--scr-text-primary); - font-size: 1.0625rem; - font-weight: 500; + font-size: var(--scr-type-body-lg); + font-weight: var(--scr-font-weight-regular); letter-spacing: 0; - line-height: 1.68; + line-height: var(--scr-line-relaxed); } .scr-summary-widget-section { @@ -221,14 +277,14 @@ margin: 0; padding-left: calc(18px + var(--scr-space-3)); color: var(--scr-text-secondary); - font-size: 0.9375rem; - font-weight: 500; + font-size: var(--scr-type-body-sm); + font-weight: var(--scr-font-weight-regular); line-height: var(--scr-line-base); } .scr-summary-note { color: var(--scr-text-tertiary); - font-size: 0.8125rem; + font-size: var(--scr-type-meta); } .scr-transcript { @@ -247,15 +303,15 @@ .scr-transcript-placeholder h2 { color: var(--scr-text-primary); - font-size: 1rem; - font-weight: 600; + font-size: var(--scr-type-body-lg); + font-weight: var(--scr-font-weight-semibold); line-height: var(--scr-line-tight); } .scr-transcript-placeholder p { color: var(--scr-text-secondary); - font-size: 0.9375rem; - font-weight: 500; + font-size: var(--scr-type-body-sm); + font-weight: var(--scr-font-weight-regular); line-height: var(--scr-line-base); } @@ -271,8 +327,8 @@ align-self: start; justify-self: end; color: var(--scr-text-tertiary); - font-size: 0.8125rem; - font-weight: 600; + font-size: var(--scr-type-meta); + font-weight: var(--scr-font-weight-medium); line-height: var(--scr-transcript-row-line); white-space: nowrap; user-select: none; @@ -282,8 +338,8 @@ grid-column: 1 / -1; overflow: hidden; color: var(--scr-text-secondary); - font-size: 0.8125rem; - font-weight: 600; + font-size: var(--scr-type-meta); + font-weight: var(--scr-font-weight-medium); line-height: 1.2; text-overflow: ellipsis; user-select: none; @@ -291,8 +347,8 @@ .scr-transcript-text { color: var(--scr-text-primary); - font-size: 1.0625rem; - font-weight: 500; + font-size: var(--scr-type-body-lg); + font-weight: var(--scr-font-weight-regular); letter-spacing: 0; line-height: var(--scr-transcript-row-line); margin: 0; @@ -412,8 +468,8 @@ align-items: center; gap: 6px; color: var(--scr-text-secondary); - font-size: 0.78rem; - font-weight: 650; + font-size: var(--scr-type-meta); + font-weight: var(--scr-font-weight-medium); } .scr-transcript-note-composer-input { @@ -422,8 +478,8 @@ border-color: color-mix(in srgb, var(--scr-brand-solid) 42%, var(--scr-border-subtle)); background: var(--scr-surface); color: var(--scr-text-primary); - font-size: 0.9rem; - line-height: 1.45; + font-size: var(--scr-type-body-sm); + line-height: var(--scr-line-base); } .scr-transcript-note-composer-actions { @@ -536,8 +592,8 @@ body[data-notes-sidebar-resizing="true"] { background: transparent; color: var(--scr-text-secondary); cursor: default; - font-size: 0.82rem; - font-weight: 500; + font-size: var(--scr-type-meta); + font-weight: var(--scr-font-weight-medium); padding: 0; } @@ -579,8 +635,8 @@ body[data-notes-sidebar-resizing="true"] { margin: 0; padding: var(--scr-space-4); color: var(--scr-text-secondary); - font-size: 0.82rem; - font-weight: 500; + font-size: var(--scr-type-meta); + font-weight: var(--scr-font-weight-regular); line-height: var(--scr-line-base); } @@ -599,15 +655,15 @@ body[data-notes-sidebar-resizing="true"] { .scr-transcript-note-item h3 { color: var(--scr-text-primary); - font-size: 0.95rem; - font-weight: 400; - line-height: 1.34; + font-size: var(--scr-type-body-lg); + font-weight: var(--scr-font-weight-regular); + line-height: var(--scr-line-base); } .scr-transcript-note-item p { color: var(--scr-text-secondary); - font-size: 0.8rem; - font-weight: 400; + font-size: var(--scr-type-body-sm); + font-weight: var(--scr-font-weight-regular); line-height: 1.35; overflow-wrap: anywhere; } @@ -628,8 +684,8 @@ body[data-notes-sidebar-resizing="true"] { border-radius: 999px; background: var(--scr-surface); color: var(--scr-text-secondary); - font-size: 0.7rem; - font-weight: 500; + font-size: var(--scr-type-meta); + font-weight: var(--scr-font-weight-medium); padding: 0 8px; } @@ -668,6 +724,9 @@ body[data-notes-sidebar-resizing="true"] { min-height: 34px; background: #f7eeee; color: #675d5d; + font-size: var(--scr-type-body-lg); + font-weight: var(--scr-font-weight-regular); + line-height: var(--scr-line-base); padding: 7px 12px; } @@ -675,8 +734,8 @@ body[data-notes-sidebar-resizing="true"] { min-height: 32px; background: #f5f7fa; color: var(--scr-text-secondary); - font-size: 0.8rem; - line-height: 1.25; + font-size: var(--scr-type-body-sm); + line-height: var(--scr-line-base); padding: 6px 12px; } @@ -957,54 +1016,6 @@ body[data-notes-sidebar-resizing="true"] { } } -@font-face { - font-family: "Manrope"; - font-style: normal; - font-weight: 300; - font-display: swap; - src: url("/fonts/manrope/Manrope-Light.ttf") format("truetype"); -} - -@font-face { - font-family: "Manrope"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url("/fonts/manrope/Manrope-Regular.ttf") format("truetype"); -} - -@font-face { - font-family: "Manrope"; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url("/fonts/manrope/Manrope-Medium.ttf") format("truetype"); -} - -@font-face { - font-family: "Manrope"; - font-style: normal; - font-weight: 600; - font-display: swap; - src: url("/fonts/manrope/Manrope-SemiBold.ttf") format("truetype"); -} - -@font-face { - font-family: "Manrope"; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url("/fonts/manrope/Manrope-Bold.ttf") format("truetype"); -} - -@font-face { - font-family: "Manrope"; - font-style: normal; - font-weight: 800; - font-display: swap; - src: url("/fonts/manrope/Manrope-ExtraBold.ttf") format("truetype"); -} - :root { --scr-color-orange-50: #fff7ed; --scr-color-orange-100: #ffedd5; @@ -1078,9 +1089,21 @@ body[data-notes-sidebar-resizing="true"] { --scr-radius-xl: 16px; --scr-font-sans: var(--font-inter); + --scr-font-weight-regular: 400; + --scr-font-weight-medium: 500; + --scr-font-weight-semibold: 600; + --scr-font-weight-bold: 700; + --scr-type-display-xl: clamp(2rem, 2.45vw, 2.5rem); + --scr-type-heading-lg: 1.5rem; + --scr-type-heading-md: 1.1875rem; + --scr-type-body-lg: 1rem; + --scr-type-body-md: 0.9375rem; + --scr-type-body-sm: 0.875rem; + --scr-type-meta: 0.8125rem; + --scr-type-micro: 0.75rem; --scr-line-tight: 1.25; - --scr-line-base: 1.5; - --scr-line-relaxed: 1.65; + --scr-line-base: 1.55; + --scr-line-relaxed: 1.7; } .dark { @@ -1106,14 +1129,14 @@ body[data-notes-sidebar-resizing="true"] { background: var(--scr-surface-canvas); color: var(--scr-text-primary); font-family: var(--scr-font-sans); - font-size: 15px; - font-weight: 500; + font-size: var(--scr-type-body-md); + font-weight: var(--scr-font-weight-regular); line-height: var(--scr-line-base); } .scr-app strong, .scr-app b { - font-weight: 600; + font-weight: var(--scr-font-weight-semibold); } .scr-visually-hidden {