From a8215149a3e39a4dbf60cece2d2aa9c915716045 Mon Sep 17 00:00:00 2001 From: Nexoniarz Date: Fri, 23 Oct 2026 15:10:40 +0200 Subject: [PATCH] docs/Website: Niveus at upstream f340d56; fonts are binary The vendored copy of Niveus, the site's design system, brought up to the current upstream (github.com/Nexoniarz/Niveus, 2026-10-18). The tree under docs/Website/niveus is upstream's byte for byte. .gitattributes says `* text eol=lf` and listed the binary types it knew, and woff2 was not one of them: Niveus's InstrumentSans-Italic had a CR LF pair in its compressed data, and committing it turned that into LF and the font into garbage. woff, woff2, otf, ico, gif, webp, pdf and wasm are binary now. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4 --- .gitattributes | 11 + docs/Website/niveus/.gitignore | 1 + docs/Website/niveus/LICENSE | 201 + docs/Website/niveus/README.md | 71 +- docs/Website/niveus/REFERENCE.md | 165 +- docs/Website/niveus/dist/niveus.css | 4950 +++++++++++++++++ .../niveus/examples/ai-chat/index.html | 2 +- .../niveus/examples/ai-landing/index.html | 2 +- .../niveus/examples/dashboard/index.html | 2 +- .../niveus/fonts/InstrumentSans-Italic.woff2 | Bin 0 -> 94832 bytes .../Website/niveus/fonts/InstrumentSans.woff2 | Bin 0 -> 88676 bytes docs/Website/niveus/fonts/JetBrainsMono.woff2 | Bin 0 -> 71736 bytes .../niveus/fonts/OFL-InstrumentSans.txt | 93 + .../niveus/fonts/OFL-JetBrainsMono.txt | 93 + .../fonts/static/InstrumentSans-Bold.ttf | Bin 0 -> 68740 bytes .../static/InstrumentSans-BoldItalic.ttf | Bin 0 -> 70548 bytes .../fonts/static/InstrumentSans-Italic.ttf | Bin 0 -> 70440 bytes .../fonts/static/InstrumentSans-Medium.ttf | Bin 0 -> 68948 bytes .../static/InstrumentSans-MediumItalic.ttf | Bin 0 -> 70716 bytes .../fonts/static/InstrumentSans-Regular.ttf | Bin 0 -> 68708 bytes .../fonts/static/InstrumentSans-SemiBold.ttf | Bin 0 -> 68920 bytes .../static/InstrumentSans-SemiBoldItalic.ttf | Bin 0 -> 70704 bytes .../fonts/static/JetBrainsMono-Bold.ttf | Bin 0 -> 115100 bytes .../fonts/static/JetBrainsMono-Medium.ttf | Bin 0 -> 115200 bytes .../fonts/static/JetBrainsMono-Regular.ttf | Bin 0 -> 115180 bytes .../fonts/static/JetBrainsMono-SemiBold.ttf | Bin 0 -> 115148 bytes docs/Website/niveus/index.html | 68 +- docs/Website/niveus/niveus/base.css | 44 +- .../niveus/niveus/components/avatar.css | 113 + .../niveus/niveus/components/badge.css | 2 + .../niveus/niveus/components/button.css | 44 +- .../Website/niveus/niveus/components/card.css | 97 +- .../Website/niveus/niveus/components/deck.css | 55 + .../niveus/niveus/components/dialog.css | 10 +- .../niveus/niveus/components/disclosure.css | 3 +- .../niveus/niveus/components/input.css | 49 +- .../Website/niveus/niveus/components/menu.css | 5 +- .../niveus/niveus/components/navigation.css | 73 +- .../niveus/niveus/components/skeleton.css | 60 + .../Website/niveus/niveus/components/stat.css | 74 + .../niveus/niveus/components/steps.css | 157 + .../Website/niveus/niveus/components/tile.css | 83 + .../niveus/niveus/components/window.css | 192 + docs/Website/niveus/niveus/continuity.css | 98 +- docs/Website/niveus/niveus/fonts.css | 42 + docs/Website/niveus/niveus/niveus.css | 12 +- docs/Website/niveus/niveus/niveus.js | 136 +- docs/Website/niveus/niveus/themes/dark.css | 149 +- docs/Website/niveus/niveus/themes/light.css | 69 +- docs/Website/niveus/niveus/tokens/color.css | 83 +- .../niveus/niveus/tokens/elevation.css | 74 +- .../niveus/niveus/tokens/materials.css | 57 +- docs/Website/niveus/niveus/tokens/motion.css | 10 + docs/Website/niveus/niveus/tokens/radius.css | 13 +- .../niveus/niveus/tokens/typography.css | 15 +- docs/Website/niveus/tools/niveus_css.py | 944 ++++ 56 files changed, 8141 insertions(+), 281 deletions(-) create mode 100644 docs/Website/niveus/.gitignore create mode 100644 docs/Website/niveus/LICENSE create mode 100644 docs/Website/niveus/dist/niveus.css create mode 100644 docs/Website/niveus/fonts/InstrumentSans-Italic.woff2 create mode 100644 docs/Website/niveus/fonts/InstrumentSans.woff2 create mode 100644 docs/Website/niveus/fonts/JetBrainsMono.woff2 create mode 100644 docs/Website/niveus/fonts/OFL-InstrumentSans.txt create mode 100644 docs/Website/niveus/fonts/OFL-JetBrainsMono.txt create mode 100644 docs/Website/niveus/fonts/static/InstrumentSans-Bold.ttf create mode 100644 docs/Website/niveus/fonts/static/InstrumentSans-BoldItalic.ttf create mode 100644 docs/Website/niveus/fonts/static/InstrumentSans-Italic.ttf create mode 100644 docs/Website/niveus/fonts/static/InstrumentSans-Medium.ttf create mode 100644 docs/Website/niveus/fonts/static/InstrumentSans-MediumItalic.ttf create mode 100644 docs/Website/niveus/fonts/static/InstrumentSans-Regular.ttf create mode 100644 docs/Website/niveus/fonts/static/InstrumentSans-SemiBold.ttf create mode 100644 docs/Website/niveus/fonts/static/InstrumentSans-SemiBoldItalic.ttf create mode 100644 docs/Website/niveus/fonts/static/JetBrainsMono-Bold.ttf create mode 100644 docs/Website/niveus/fonts/static/JetBrainsMono-Medium.ttf create mode 100644 docs/Website/niveus/fonts/static/JetBrainsMono-Regular.ttf create mode 100644 docs/Website/niveus/fonts/static/JetBrainsMono-SemiBold.ttf create mode 100644 docs/Website/niveus/niveus/components/avatar.css create mode 100644 docs/Website/niveus/niveus/components/deck.css create mode 100644 docs/Website/niveus/niveus/components/skeleton.css create mode 100644 docs/Website/niveus/niveus/components/stat.css create mode 100644 docs/Website/niveus/niveus/components/steps.css create mode 100644 docs/Website/niveus/niveus/components/tile.css create mode 100644 docs/Website/niveus/niveus/components/window.css create mode 100644 docs/Website/niveus/niveus/fonts.css create mode 100644 docs/Website/niveus/tools/niveus_css.py diff --git a/.gitattributes b/.gitattributes index e5b6a7f..1cca36e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -16,3 +16,14 @@ *.tgz binary *.zip binary *.wad binary +# Fonts and the rest of what the website ships. `* text` above applies to +# anything not listed, and a compressed font with a 0x0D 0x0A in it had that +# pair "fixed" to 0x0A on commit -- a woff2 that no longer decoded. +*.woff binary +*.woff2 binary +*.otf binary +*.ico binary +*.gif binary +*.webp binary +*.pdf binary +*.wasm binary diff --git a/docs/Website/niveus/.gitignore b/docs/Website/niveus/.gitignore new file mode 100644 index 0000000..c18dd8d --- /dev/null +++ b/docs/Website/niveus/.gitignore @@ -0,0 +1 @@ +__pycache__/ diff --git a/docs/Website/niveus/LICENSE b/docs/Website/niveus/LICENSE new file mode 100644 index 0000000..b34d044 --- /dev/null +++ b/docs/Website/niveus/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the + purposes of this License, Derivative Works shall not include works + that remain separable from, or merely link (or bind by name) to the + interfaces of, the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including the + original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing + the origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/Website/niveus/README.md b/docs/Website/niveus/README.md index 9bbfe49..f89a8e5 100644 --- a/docs/Website/niveus/README.md +++ b/docs/Website/niveus/README.md @@ -1,16 +1,28 @@ # Niveus -A calm, adaptive interface language built around clarity, depth, material and -consistency. +A tactile, adaptive interface language. Controls are bevelled keys with light +falling across them, fields are wells cut into the surface, windows are solid, +and glass is kept for the chrome that floats over everything else. Warm +graphite in dark, soft paper in light, one brand color driving both. Niveus is a **design-system layer**, not a component library bolted onto an application. Applications consume it; they do not redefine it. The visual rules live here and can change without touching a line of application logic. ```html - + ``` +Niveus ships its own faces in `fonts/`: Instrument Sans for the interface and +JetBrains Mono for code and engraved labels, both under the SIL Open Font +License. Copy `fonts/` alongside `dist/` (or `niveus/`) and they load by +themselves. + +The stylesheet uses the variable `.woff2` files. `fonts/static/` holds the +same faces as plain TrueType files at the four weights Niveus uses (400, 500, +600, 700, plus Instrument Sans italics), for native toolkits and font +configurations that pick a weight by name rather than by variable axis. + ```html ``` @@ -137,6 +149,27 @@ answers how far that surface is from the canvas. They are independent. Applied as classes: `.nv-material-frosted`, `.nv-elevation-3`. A shadow that is on neither scale is a shadow that means nothing. +### Light + +Elevation is the shade a surface casts. **Glow** is the light it gives off — +and it is reserved for things that are *on*: a live status, the plan you are +on, a finished step, the selected item in a showcase. Glow never replaces an +elevation; a glowing surface still rests on something. + +| Where | How | +| ----- | --- | +| A card that belongs to something with a color | `.nv-card--lit` — a lit top edge in `--nv-card-tint` | +| The one card that is on | `.nv-card--glow` | +| A showcase card | `.nv-card--spotlight` — light follows the pointer | +| A feature icon or product mark | `.nv-tile`, `--glow` to light it | +| A person | `.nv-avatar--glow` | +| A display line | `.nv-text-lit` — type cut from the same lit material | + +Glows come in the same steps as everything else (`--nv-glow-sm/md/lg`), and a +tinted surface glows in its own tint, mixed down to `--nv-glow-strength`. Two +glowing things side by side cancel each other out: if everything is lit, +nothing is. + ## Continuity Every interaction should read as a continuation of the state before it. When @@ -170,6 +203,11 @@ works; changes simply arrive rather than travel. It also wires `[data-nv-theme]`, `[data-nv-dialog]`, `[data-nv-tabs]` and `[data-nv-close]` so the common cases need no code at all. +Long pages can arrive in the order they were written: `.nv-reveal` rises into +place once as it scrolls into view, and `.nv-reveal-group` brings its children +in one after another, `--nv-stagger` apart. Only the script marks anything as +waiting, so without it — and under reduced motion — nothing is ever hidden. + ### One rule worth knowing A `view-transition-name` must be unique among all rendered elements, or the @@ -379,7 +417,7 @@ probably not the problem the system has. | -------------- | --------------------------------------------------------- | | `.nv-button` | `--primary` `--subtle` `--ghost` `--danger` `--frosted` `--float`, `--sm`/`--lg`, `--icon`, `--pill`, `--block`, `.nv-button-group` | | `.nv-input` | with `.nv-field`, `.nv-input-group`, `.nv-select`, `.nv-checkbox`, `.nv-radio`, `.nv-switch`, `.nv-choice` | -| `.nv-card` | `--elevated` `--floating` `--inset` `--frosted` `--interactive`, `.nv-card-grid` | +| `.nv-card` | `--elevated` `--floating` `--inset` `--frosted` `--interactive`, light: `--lit` `--glow` `--spotlight`, `.nv-card-grid` | | `.nv-dialog` | native ``; `--sheet` `--compact` `--wide` | | `.nv-nav` | `--vertical` `--plain` `--inline`, plus `.nv-nav-tabs`, `.nv-tab-panel` and `.nv-breadcrumbs` | | `.nv-menu` | anchored popover with `.nv-menu-trigger`, `__item`, `__separator`, `__label`, `__shortcut` | @@ -388,6 +426,12 @@ probably not the problem the system has. | `.nv-bed` | ground that is visibly not ordinary background; `--quiet` `--vivid` `--single` `--flush` | | `.nv-badge` | state, not an action; `--accent` `--success` `--warning` `--danger`, `--solid` `--count` `--square` | | `.nv-table` | inside `.nv-table-frame`; `__number` `__actions`, `--compact` `--interactive` | +| `.nv-tile` | a small raised key holding one glyph; `--solid` `--glow`, `--sm` `--lg` `--xl` | +| `.nv-avatar` | round raised disc; `--ring` `--glow`, sizes, `__status`, `.nv-avatar-group` | +| `.nv-stat` | readings set into one recessed well with `.nv-stat-group`; `__label` `__value` `__delta` | +| `.nv-steps` | markers set into a rail; `data-state="done"` lights the way, `--vertical` | +| `.nv-deck` | one surface in front of others of its kind, with `__layer` | +| `.nv-skeleton` | a waiting well with a slow sweep of light; `--text` `--circle` | | `.nv-surface` | materials and elevation as utilities | Variants are defined by reassigning private `--_*` properties. Interaction — @@ -413,6 +457,14 @@ python3 tools/build.py --check # fail if dist/ is stale (for CI) python3 tools/check.py # enforce the system's own rules ``` +`tools/niveus_css.py` is not a command: it is an evaluator for the subset of +CSS the token layer is written in (`oklch(from …)`, `color-mix()`, +`light-dark()`, `calc()`), with CSS Color 4 gamut mapping, plus `read_rules()` +for the component layer (which role a button's background is in each state). +Every port that cannot read CSS — Android, Qt — imports it from here to +generate its tokens and control recipes, so no platform restates a value by +hand. + `check.py` catches the failures that do not look broken: a role defined for one appearance but not the other, a token referenced but never defined, and a hard-coded color in a component. @@ -435,9 +487,16 @@ to the state change simply happening rather than travelling: --- -> Niveus is not about making interfaces look physical. It is about making -> digital surfaces feel understandable. +> Niveus borrows from physical things only what makes a surface easier to +> understand: a key looks pressable, a well looks like a place to put +> something, and glass means something is floating. --- +## License + +Niveus is licensed under the [Apache License 2.0](LICENSE). The fonts in +`fonts/` keep their own license, the SIL Open Font License 1.1 +(`fonts/OFL-*.txt`), which allows bundling them with anything. + Made by **Nexoniarz**. diff --git a/docs/Website/niveus/REFERENCE.md b/docs/Website/niveus/REFERENCE.md index 56cb1f1..3b8f139 100644 --- a/docs/Website/niveus/REFERENCE.md +++ b/docs/Website/niveus/REFERENCE.md @@ -17,7 +17,7 @@ Everything ships inside the `niveus` cascade layer, so unlayered application styles win without `!important`. ```html - + @@ -76,6 +76,9 @@ States come from the element: `disabled`, `aria-disabled`, `aria-busy="true"` | `.nv-card--frosted` | glass card | Translucent, for use over imagery or a bed. | | `.nv-card--interactive` | clickable card | Lifts on hover, sinks on press. | | `.nv-card--flush` | edge-to-edge card | Removes part padding, for media or tables. | +| `.nv-card--lit` | accent-edge card, colored top border | A strip of light along the top edge in the card's tint, spilling a little down the face. For a card that belongs to something with a color. | +| `.nv-card--glow` | glowing card, highlighted card | Gives off its tint. For the one card that is *on* — the current plan, the live item. | +| `.nv-card--spotlight` | spotlight card, cursor glow | A soft light follows the pointer across the face (needs `niveus.js`). Showcases only. | | `.nv-card__header` | card header | | | `.nv-card__title` | card title | | | `.nv-card__subtitle` | card subtitle, supporting text | | @@ -86,6 +89,19 @@ States come from the element: `disabled`, `aria-disabled`, `aria-busy="true"` | `.nv-card__link` | stretched link | Expands one link's hit area over the whole card. | | `.nv-card-grid` | responsive card grid | Auto-fitting, equal-height columns. | +`--lit`, `--glow` and `--spotlight` combine with every elevation and with each +other. They take `--nv-card-tint` (the accent unless set on the card). + +## Deck + +| Class | Known as | Does | +| --- | --- | --- | +| `.nv-deck` | card stack, stacked cards | One surface in front of others of its kind. Every child shares one grid cell. | +| `.nv-deck__layer` | stack layer | A decorative card behind the front one, stepping back and dimming with depth. Up to two; mark them `aria-hidden="true"`. | + +Hidden `.nv-tab-panel`s can live in a deck together: the front surface is +whichever one is showing. + ## Dialog Built on native ``; open with `showModal()` or `nv.openDialog()`. @@ -136,7 +152,7 @@ the same anchor through `--nv-anchor`. | `.nv-nav__badge` | count badge, notification badge | | | `.nv-nav__spacer` | flexible spacer | Pushes what follows to the end. | | `.nv-nav-tabs` | tab list, segmented tabs | Inset track; the selected tab lifts out of it. | -| `.nv-tab-panel` | tab panel | Carries the shared content name so panels cross-fade. | +| `.nv-tab-panel` | tab panel | Hands over to the next panel inside the same box when `nv.selectTab` switches tabs. | | `.nv-breadcrumbs` | breadcrumbs | | ## Disclosure @@ -173,6 +189,61 @@ Set `--nv-scroller-item` for item width, `--nv-scroller-fade` for the edge fade. | `.nv-badge--square` | square badge | | | `.nv-badge__dot` | status dot | | +## Tile + +| Class | Known as | Does | +| --- | --- | --- | +| `.nv-tile` | icon tile, icon badge, feature icon | A small raised key holding one glyph: tinted face, glyph in its tint. Not interactive. | +| `.nv-tile--solid` | filled icon tile | Saturated face with a light glyph. | +| `.nv-tile--glow` | glowing icon tile | Lit from inside. | +| `.nv-tile--sm` `.nv-tile--lg` `.nv-tile--xl` | tile sizes | 32 / 56 / 72px; default 44px. | + +`--nv-tile-tint` picks the color. An `` inside fills the key, an `` +takes half of it. + +## Avatar + +| Class | Known as | Does | +| --- | --- | --- | +| `.nv-avatar` | avatar, profile picture | Round raised disc holding an `` or initials. | +| `.nv-avatar--ring` | avatar ring, story ring | A ring in `--nv-avatar-tint`, set off by a gap of surface. | +| `.nv-avatar--glow` | glowing avatar | The ring, giving off its tint. | +| `.nv-avatar--sm` `.nv-avatar--lg` `.nv-avatar--xl` | avatar sizes | 28 / 64 / 96px; default 40px. | +| `.nv-avatar__status` | presence dot | Grey at rest. | +| `.nv-avatar__status--online` | online indicator | Lit green. | +| `.nv-avatar-group` | avatar stack, facepile | Overlapping row. | + +## Stat + +| Class | Known as | Does | +| --- | --- | --- | +| `.nv-stat-group` | stats row, KPI strip, readout | One recessed well holding several readings, split by hairlines. Wraps on its own. Use a `
`. | +| `.nv-stat` | stat, metric, KPI | One reading: label, value, optional delta, in that order. | +| `.nv-stat__label` | metric label | `
` inside a group. | +| `.nv-stat__value` | metric value, big number | `
`; tabular numerals. | +| `.nv-stat__delta` | change, trend | | +| `.nv-stat__delta--up` `.nv-stat__delta--down` | positive / negative trend | Success and danger text. | + +## Steps + +| Class | Known as | Does | +| --- | --- | --- | +| `.nv-steps` | stepper, timeline, process, progress steps | Markers set into a rail cut into the surface. Horizontal, vertical below 40rem. Use an `
    `. | +| `.nv-steps--vertical` | vertical stepper, timeline | Always vertical. | +| `.nv-steps__item` | step | `data-state="done"` lights it and its stretch of rail; `aria-current="step"` lights the marker only. | +| `.nv-steps__marker` | step number, step knob | | +| `.nv-steps__body` | step content | | +| `.nv-steps__title` | step title | | +| `.nv-steps__text` | step description | | + +## Skeleton + +| Class | Known as | Does | +| --- | --- | --- | +| `.nv-skeleton` | skeleton, loading placeholder, shimmer | A shallow well where content will be, with a slow band of light crossing it. Still under reduced motion. | +| `.nv-skeleton--text` | text line placeholder | The last of several lines ends short. | +| `.nv-skeleton--circle` | avatar placeholder | | + ## Table | Class | Known as | Does | @@ -197,6 +268,25 @@ Set `--nv-scroller-item` for item width, `--nv-scroller-fade` for the edge fade. Set `--nv-bed-tint` to lead with a color other than the accent. +## Window + +| Class | Known as | Does | +| --- | --- | --- | +| `.nv-window` | window, app frame | A framed, solid window. Content never sits on glass. | +| `.nv-window--inactive` | unfocused window | Greys the lights and the title, drops one elevation. Hovering the lights restores their color. | +| `.nv-window__titlebar` | titlebar, header bar | Raised strip: controls · title · actions, with the title on the window's center line. | +| `.nv-window__controls` | traffic lights, window buttons | Group at the start of the bar. Its glyphs show while the pointer is over the group. | +| `.nv-window__control` | window button | One light. Needs `aria-label`, plus one of the three below. | +| `.nv-window__control--close` | close button | Red, ×. Always first. | +| `.nv-window__control--minimize` | minimize button | Yellow, −. Always second. | +| `.nv-window__control--zoom` | zoom, maximize button | Green, +. Always third. | +| `.nv-window__title` | window title | Truncates. | +| `.nv-window__actions` | titlebar actions | Trailing slot; put `.nv-button--ghost.nv-button--sm` here. | +| `.nv-window__body` | window content | Fills the rest and scrolls. | + +The three lights keep fixed colors on purpose: they are found by position and +color before they are read, so they never take the brand. + ## Surface, material and elevation | Class | Known as | Does | @@ -205,7 +295,7 @@ Set `--nv-bed-tint` to lead with a color other than the accent. | `.nv-material-solid` | opaque surface | Content lives here. The default. | | `.nv-material-elevated` | raised surface | Separated from its context. | | `.nv-material-inset` | recessed surface | Fields, wells, tracks. | -| `.nv-material-frosted` | frosted glass, blur backdrop | Chrome that content passes under. | +| `.nv-material-frosted` | frosted glass, blur backdrop | Chrome that floats over content: bars, docks, launchers, notifications, menus. Moderate blur, bevelled rim. | | `.nv-material-glass` | glass | Contextual layers where content behind must stay legible. | | `.nv-elevation-0` `.nv-elevation-1` `.nv-elevation-2` | elevation / z-depth | flush · resting · raised | | `.nv-elevation-3` `.nv-elevation-4` `.nv-elevation-5` | elevation / z-depth | floating · lifted · overlay | @@ -215,6 +305,14 @@ Set `--nv-bed-tint` to lead with a color other than the accent. Material and elevation are independent: combine freely. +Niveus is solid, with glass used sparingly: anything that holds content +(windows, cards, dialogs) is solid, and only chrome floating over it is +frosted. Raised things are bevelled — lit along the top edge, shaded along the +bottom, with a contact outline — and carry a sheen across their face. When +composing your own raised element, use `box-shadow: var(--nv-bevel), +var(--nv-outline), var(--nv-elevation-2)` with `background-image: +var(--nv-sheen-raised)` over its role color. + ## Type roles | Class | Known as | Size | @@ -225,10 +323,19 @@ Material and elevation are independent: combine freely. | `.nv-body` | body copy | 15px | | `.nv-label` | label, UI text | 13px | | `.nv-caption` | caption, secondary text | 12px | -| `.nv-overline` | overline, eyebrow, kicker | 12px uppercase | +| `.nv-overline` | overline, eyebrow, engraved label | 11px mono, uppercase, wide tracking | | `.nv-code` | code, monospace | 13px | | `.nv-text-primary` `.nv-text-secondary` `.nv-text-tertiary` | text color roles | Emphasis, not size. | | `.nv-text-accent` `.nv-text-success` `.nv-text-warning` `.nv-text-danger` | semantic text colors | | +| `.nv-text-lit` | gradient text, metallic text | Lit from above, settling into the accent. One display line per page. | +| `.nv-text-lit--accent` | accent gradient text | The accent alone, lit from above — for a phrase inside a display line. | + +## Reveal + +| Class | Known as | Does | +| --- | --- | --- | +| `.nv-reveal` | scroll reveal, animate on scroll | Rises and fades in once, as it scrolls into view. Needs `niveus.js`; without it, or under reduced motion, nothing is hidden. | +| `.nv-reveal-group` | staggered reveal | Its children arrive one after another, `--nv-stagger` apart. | ## Layout utilities @@ -243,7 +350,8 @@ Material and elevation are independent: combine freely. | `.nv-truncate` | ellipsis, text truncation | One line with an ellipsis. | | `.nv-prose` | prose, measure | Readable line length and leading. | | `.nv-visually-hidden` | screen-reader-only, sr-only | Available to assistive tech, invisible on screen. | -| `.nv-continuous` | cross-fading region | Content that should cross-fade in place when it changes. | +| `.nv-continuous` | content region | Content that hands over in place (out, then in) when it changes. | +| `.nv-content` | view-transition class | Not an HTML class: the `view-transition-class` that gives a named element the hand-over animation. Set `view-transition-class: nv-content` on your own named element to get it. | | `.nv-carried` | (view-transition class) | Applied to nav items so they ride above a travelling marker. | | `.nv-travelling` | (view-transition class) | Applied to a selection marker so it travels below the labels. | @@ -274,9 +382,14 @@ danger danger-hover danger-active danger-subtle danger-border danger-text on-danger shadow-ambient shadow-penumbra shadow-umbra shadow-inset -highlight highlight-strong elevation-tint-1 … -5 +highlight highlight-strong lowlight outline elevation-tint-1 … -5 +sheen-top sheen-bottom sheen-strong-top sheen-strong-bottom +knob knob-shade material-frosted material-glass material-border +window-close window-minimize window-zoom window-inactive +window-control-ring window-glyph focus-ring focus-ring-contrast selection +glow ``` `on-*` is the text that goes on top of that color, and is derived — never set @@ -292,8 +405,9 @@ it by hand. | `--nv-contrast-pivot` | `0.7` | Lightness where a color can no longer carry a label. | | `--nv-contrast-dark` / `-light` | `0.53` / `0.78` | How far either side a color is pushed. | -`--nv-palette-{neutral|accent|success|warning|danger}-{0…1000}` are raw values. -Components must never reference them. +`--nv-palette-{neutral|accent|success|warning|danger}-{0…1000}` and +`--nv-palette-window-{close|minimize|zoom}` are raw values. Components must +never reference them. ### Scales @@ -304,24 +418,28 @@ Components must never reference them. | `--nv-font-size-` | `2xs xs sm md lg xl 2xl 3xl 4xl 5xl` | | `--nv-font-weight-` | `regular medium semibold bold` | | `--nv-line-height-` | `tight snug normal relaxed` | -| `--nv-letter-spacing-` | `tighter tight normal wide wider` | -| `--nv-font-` | `display heading title body label caption code` (composite shorthands) | -| `--nv-font-family-` | `sans mono` | +| `--nv-letter-spacing-` | `tighter tight normal wide wider engraved` | +| `--nv-font-` | `display heading title body label caption code engraved` (composite shorthands) | +| `--nv-font-family-` | `sans` (Instrument Sans) `mono` (JetBrains Mono), both shipped in `fonts/` | | `--nv-measure` | `-narrow` · `--nv-measure` · `-wide` | | `--nv-control-height-` | `sm md lg` — also `control-padding-` and `control-gap-` | | `--nv-elevation-` | `0 1 2 3 4 5`, `inset-sm` `inset-md` `inset-lg` | | `--nv-highlight-` | `top` `top-strong` `edge` | +| bevel | `--nv-bevel` (lit top + shaded bottom) · `--nv-lowlight-bottom` · `--nv-outline` (contact line) · `--nv-ledge` (lit lower lip of a recess) | +| `--nv-sheen-` | `raised filled surface knob` — gradients laid over a role color as `background-image` | | `--nv-blur-` | `sm md lg xl` — also `backdrop-frosted` `backdrop-glass` `backdrop-scrim` | | `--nv-material-` | `{solid,elevated,inset,frosted,glass}-{bg,border,shadow}` | +| `--nv-glow-` | `sm md lg` (accent halos) · `blur-sm/md/lg` `spread-sm/md/lg` (geometry for a tinted glow) · `strength` (how much tint a glow carries) | ### Motion | Family | Steps | | --- | --- | -| `--nv-duration-` | `instant fast quick normal slow slower travel expand theme` | +| `--nv-duration-` | `instant fast quick normal slow slower travel expand theme shimmer` | | `--nv-ease-` | `standard entrance exit spring emphasized linear` | | `--nv-transition-` | `colors depth control surface expand` (composites) | | displacement | `--nv-lift-hover` `--nv-press-depth` `--nv-travel-sm/md/lg` | +| sequence | `--nv-stagger` — the gap between siblings arriving one after another | `prefers-reduced-motion` collapses every duration and displacement at the token level. Components never opt in individually. @@ -332,7 +450,9 @@ level. Components never opt in individually. `--nv-border-width-strong` · `--nv-target-min` · `--nv-layout-gutter` · `--nv-layout-max-width` · `--nv-selection-name` · `--nv-anchor` · `--nv-button-offset` · `--nv-bed-tint` · `--nv-scroller-item` · -`--nv-scroller-fade` · `--nv-content-name` +`--nv-scroller-fade` · `--nv-content-name` · `--nv-card-tint` · +`--nv-tile-tint` · `--nv-avatar-tint` · `--nv-pointer-x` / `--nv-pointer-y` +(set by `niveus.js`) · `--nv-reveal-index` (set by `niveus.js`) --- @@ -343,14 +463,14 @@ everything still renders — state changes simply arrive instead of travelling. | Function | Signature | Does | | --- | --- | --- | -| `nv.transition` | `(update, { direction, kind }) => Promise` | Runs `update` inside a view transition so the change can be followed. `direction` is `"forward"`/`"backward"`; `kind: "theme"` slows the cross-fade. Falls back to running `update` directly under reduced motion or without API support. | +| `nv.transition` | `(update, { direction, kind, scope }) => Promise` | Runs `update` inside a view transition so the change can be followed. `direction` is `"forward"`/`"backward"`; `kind: "theme"` slows the cross-fade; `scope` is the selection group (or list of groups) whose marker should travel — pass the group whose `aria-current`/`aria-selected` the update moves. Without `scope` nothing is lifted and the change cross-fades in place. Falls back to running `update` directly under reduced motion or without API support. | | `nv.setTheme` | `("light" \| "dark" \| "system") => Promise` | Cross-fades the whole surface into the new appearance and fires `nv:theme` on ``. | | `nv.syncThemeControls` | `(theme) => void` | Sets `aria-pressed` on every `[data-nv-theme]`. | | `nv.openDialog` | `(dialog \| id, trigger?) => dialog` | `showModal()`, plus a transform origin so the dialog expands out of its trigger. | | `nv.selectTab` | `(tablist, tab) => Promise` | Moves selection and its panel, with direction. | | `nv.initScroller` | `(frame) => void` | Wires one scroller's controls. | -| `nv.liftLabels` | `(scope) => void` | Names navigation items so a travelling marker passes behind them. | -| `nv.wire` | `(scope = document) => void` | Applies all of the below. Runs once on load; call again after injecting markup. | +| `nv.liftLabels` | `(scope) => Element[]` | Names the navigation items in `scope` so a travelling marker passes behind them, and returns them. `nv.transition` does this for its `scope` and removes the names afterwards. | +| `nv.wire` | `(scope = document) => void` | Applies all of the below, and starts watching `.nv-reveal` / `.nv-reveal-group`. Runs once on load; call again after injecting markup. | | `nv.prefersReducedMotion` | `() => boolean` | | ### Data attributes @@ -367,19 +487,22 @@ everything still renders — state changes simply arrive instead of travelling. | `data-scrolled` | `.nv-nav` | Set by the application on scroll; gives the bar its shadow. | | `data-nv-direction` | `` | Set during a transition by `nv.transition`. | | `data-nv-transition` | `` | `"theme"` during an appearance change. | +| `data-nv-reveal` | revealed element | `pending` while waiting to scroll into view, `shown` while arriving; removed once it has. Set by `niveus.js`. | +| `data-nv-travelling` | selection group | Set by `nv.transition` on each `scope` for the length of the change; names its marker. | --- ## Rules that bite 1. **`view-transition-name` must be unique per document.** A duplicate makes - the browser skip the transition entirely. Each selection group needs its own - `--nv-selection-name`; `.nv-nav-tabs` defaults to `nv-tabs-selection` and - everything else to `nv-selection`, which is enough for one of each per page. + the browser skip the transition entirely. Markers are only named while their + group is in `scope`, so this only bites when one transition moves two groups + at once: give each its own `--nv-selection-name`. `.nv-nav-tabs` defaults + to `nv-tabs-selection` and everything else to `nv-selection`. 2. **A menu and its trigger must name the same anchor** through `--nv-anchor`, and the value must be unique per pair. -3. **Only one `.nv-tab-panel` may be visible at a time** — hide the rest with - `hidden`. They share one content name. +3. **Hide inactive `.nv-tab-panel`s with `hidden`.** `nv.selectTab` relies + on it to know which panel is leaving. 4. **Never reference `--nv-palette-*` from application code.** It is raw, and does not adapt to the appearance. 5. **A floating control positioned with `translate`** needs diff --git a/docs/Website/niveus/dist/niveus.css b/docs/Website/niveus/dist/niveus.css new file mode 100644 index 0000000..526faca --- /dev/null +++ b/docs/Website/niveus/dist/niveus.css @@ -0,0 +1,4950 @@ +/* Niveus — generated bundle. Do not edit. + Source: niveus/niveus.css and the files it imports. + Rebuild: python3 tools/build.py +*/ + +/* ========================================================================== + Niveus — a tactile, adaptive interface language. + Made by Nexoniarz. + -------------------------------------------------------------------------- + The single entry point. An application links this file and nothing else: + + + — optional, see below + — or omit data-theme to follow the system + + niveus.js is not required for anything to render. It exists only so state + changes can be *continuous*: it wraps an update in a view transition so the + browser can animate between the two states. Without it, every component + still works — changes simply arrive rather than travel. + + Everything ships inside the `niveus` cascade layer, so unlayered application + styles always win without needing !important or selector escalation. The + sub-layers are ordered below; that statement is what fixes their precedence, + independently of the order the files happen to load in. + ========================================================================== */ + +@layer niveus.tokens, niveus.theme, niveus.base, niveus.continuity, + niveus.components, niveus.utilities; + +/* --- Fonts: the faces Niveus ships, so it reads the same everywhere ---------- */ +/* ========================================================================== + Niveus — Fonts + -------------------------------------------------------------------------- + Niveus ships its own faces, so it reads the same wherever it is used + instead of depending on what a machine happens to have installed. Both are + variable fonts under the SIL Open Font License (fonts/OFL-*.txt), free to + bundle with anything. + + Instrument Sans the interface. Crisp, slightly narrow, warm at small + sizes — the voice of every label, control and heading. + JetBrains Mono code, figures, and the engraved labels (.nv-overline) + that mark sections the way markings mark an instrument. + + The paths are relative to this file and to dist/niveus.css alike: both sit + one level below the root, where fonts/ lives. + ========================================================================== */ + +@font-face { + font-family: "Instrument Sans"; + src: url("../fonts/InstrumentSans.woff2") format("woff2"); + font-weight: 400 700; + font-stretch: 75% 100%; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Instrument Sans"; + src: url("../fonts/InstrumentSans-Italic.woff2") format("woff2"); + font-weight: 400 700; + font-stretch: 75% 100%; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: "JetBrains Mono"; + src: url("../fonts/JetBrainsMono.woff2") format("woff2"); + font-weight: 100 800; + font-style: normal; + font-display: swap; +} + +/* --- Tokens: the values, appearance-agnostic ------------------------------- */ +@layer niveus.tokens { + /* ========================================================================== + Niveus — Color + -------------------------------------------------------------------------- + Two levels of tokens live here: + + 1. Palette Raw, appearance-agnostic values. Never referenced by + components. Prefixed --nv-palette-*. + + 2. Semantic The roles components actually consume (background, surface, + text-primary, accent, danger, …). Each role resolves with + light-dark(), pulling its value from the matching appearance + file: themes/light.css (--nv-light-*) or themes/dark.css + (--nv-dark-*). + + The appearance is chosen by `color-scheme`, which themes/*.css bind to the + [data-theme] attribute. A component therefore never knows — and must never + ask — which appearance is active. + ========================================================================== */ + + /* ========================================================================== + Brand + -------------------------------------------------------------------------- + The whole color system has one input. Set --nv-brand and the accent, its + hover and active states, the text that lands on it, the focus ring, the + selection highlight, the tint in the greys and the lean of the status colors + are all re-derived from it — in both appearances, with no second value to + keep in sync. + + :root { --nv-brand: #d92e3f; } + + Set it on any element with [data-nv-brand] to re-brand a subtree. + ========================================================================== */ + + :root { + --nv-brand: #4f6cff; + + /* How much of the brand bleeds into the greys. Enough that the neutrals + belong to the same family as the accent; not enough to read as colored. + 0% gives strictly neutral greys. */ + --nv-brand-tint: 4%; + + /* How far the status colors lean towards the brand. Red still reads as + danger and green still reads as success — they just stop looking borrowed + from another system. 0% keeps them literal. */ + --nv-brand-harmony: 12%; + + /* Where "too mid-toned to carry a label" begins, and how far either side a + color is pushed to escape it. Raising the pivot sends more brands dark + (white labels); lowering it sends more of them light (dark labels). */ + --nv-contrast-pivot: 0.7; + --nv-contrast-dark: 0.53; + --nv-contrast-light: 0.78; + } + + :root { + /* --- Neutral ---------------------------------------------------------- + Warm graphite to warm paper. A grey that leans very slightly towards + yellow reads as a material (metal, enamel, paper); a grey that leans blue + reads as a screen. The lean is small enough that the brand tint still + decides the family. */ + --nv-palette-neutral-0: #ffffff; + --nv-palette-neutral-25: #fcfcfb; + --nv-palette-neutral-50: #f8f8f6; + --nv-palette-neutral-100: #f2f1ee; + --nv-palette-neutral-150: #eae9e5; + --nv-palette-neutral-200: #e1e0db; + --nv-palette-neutral-300: #cfcec8; + --nv-palette-neutral-400: #aeada7; + --nv-palette-neutral-500: #87867f; + --nv-palette-neutral-600: #63625d; + --nv-palette-neutral-700: #4a4945; + --nv-palette-neutral-800: #343337; + --nv-palette-neutral-850: #2a2a2d; + --nv-palette-neutral-900: #1d1d20; + --nv-palette-neutral-925: #18181a; + --nv-palette-neutral-950: #131315; + --nv-palette-neutral-975: #0e0e10; + --nv-palette-neutral-1000: #08080a; + + /* --- Window controls ---------------------------------------------------- + The three lights at the start of a titlebar. They are the one place the + system uses fixed colors instead of the brand: their meaning is learned + from position and color together, and re-coloring them would unteach it. */ + --nv-palette-window-close: #ff5f57; + --nv-palette-window-minimize: #febc2e; + --nv-palette-window-zoom: #28c840; + + /* --- Accent (indigo) --------------------------------------------------- */ + --nv-palette-accent-50: #eef2ff; + --nv-palette-accent-100: #dfe6ff; + --nv-palette-accent-200: #c4d0ff; + --nv-palette-accent-300: #9fb3ff; + --nv-palette-accent-400: #7691ff; + --nv-palette-accent-500: #4f6cff; + --nv-palette-accent-600: #3f5cf0; + --nv-palette-accent-700: #3450d6; + --nv-palette-accent-800: #2a3fa8; + --nv-palette-accent-900: #22347f; + + /* --- Success (green) --------------------------------------------------- */ + --nv-palette-success-50: #e8f9ef; + --nv-palette-success-100: #ccf0dc; + --nv-palette-success-200: #9ee2bc; + --nv-palette-success-300: #62cd96; + --nv-palette-success-400: #33b478; + --nv-palette-success-500: #189a60; + --nv-palette-success-600: #0f7d4d; + --nv-palette-success-700: #0c6440; + --nv-palette-success-800: #0a5034; + --nv-palette-success-900: #08412b; + + /* --- Warning (amber) --------------------------------------------------- */ + --nv-palette-warning-50: #fff6e6; + --nv-palette-warning-100: #ffe9c2; + --nv-palette-warning-200: #ffd68d; + --nv-palette-warning-300: #fbbe52; + --nv-palette-warning-400: #eda520; + --nv-palette-warning-500: #cf8809; + --nv-palette-warning-600: #a96d05; + --nv-palette-warning-700: #855505; + --nv-palette-warning-800: #6a4406; + --nv-palette-warning-900: #563806; + + /* --- Danger (red) ------------------------------------------------------ */ + --nv-palette-danger-50: #ffeff1; + --nv-palette-danger-100: #ffdbde; + --nv-palette-danger-200: #ffb9bf; + --nv-palette-danger-300: #ff8b96; + --nv-palette-danger-400: #f95b6c; + --nv-palette-danger-500: #e2334a; + --nv-palette-danger-600: #c01f36; + --nv-palette-danger-700: #9c172b; + --nv-palette-danger-800: #7e1524; + --nv-palette-danger-900: #67141f; + } + + /* ========================================================================== + Semantic roles + ========================================================================== */ + + /* The subtree selector has to be repeated here, not just on the theme files: + var() inside a custom property is substituted where that property is + *declared*, so a --nv-color-* declared only on :root would bake in the root + brand and inherit the result unchanged. Re-declaring on [data-nv-brand] + re-runs the substitution against the subtree's own brand. */ + :root, + [data-nv-brand] { + /* --- Canvas and surfaces ----------------------------------------------- */ + --nv-color-background: light-dark(var(--nv-light-background), var(--nv-dark-background)); + --nv-color-background-subtle: light-dark(var(--nv-light-background-subtle), var(--nv-dark-background-subtle)); + --nv-color-surface: light-dark(var(--nv-light-surface), var(--nv-dark-surface)); + --nv-color-surface-elevated: light-dark(var(--nv-light-surface-elevated), var(--nv-dark-surface-elevated)); + --nv-color-surface-inset: light-dark(var(--nv-light-surface-inset), var(--nv-dark-surface-inset)); + --nv-color-surface-hover: light-dark(var(--nv-light-surface-hover), var(--nv-dark-surface-hover)); + --nv-color-surface-active: light-dark(var(--nv-light-surface-active), var(--nv-dark-surface-active)); + --nv-color-scrim: light-dark(var(--nv-light-scrim), var(--nv-dark-scrim)); + + /* --- Text --------------------------------------------------------------- */ + --nv-color-text-primary: light-dark(var(--nv-light-text-primary), var(--nv-dark-text-primary)); + --nv-color-text-secondary: light-dark(var(--nv-light-text-secondary), var(--nv-dark-text-secondary)); + --nv-color-text-tertiary: light-dark(var(--nv-light-text-tertiary), var(--nv-dark-text-tertiary)); + --nv-color-text-disabled: light-dark(var(--nv-light-text-disabled), var(--nv-dark-text-disabled)); + --nv-color-text-inverted: light-dark(var(--nv-light-text-inverted), var(--nv-dark-text-inverted)); + + /* --- Borders ------------------------------------------------------------ */ + --nv-color-border-subtle: light-dark(var(--nv-light-border-subtle), var(--nv-dark-border-subtle)); + --nv-color-border: light-dark(var(--nv-light-border), var(--nv-dark-border)); + --nv-color-border-strong: light-dark(var(--nv-light-border-strong), var(--nv-dark-border-strong)); + + /* --- Accent ------------------------------------------------------------- */ + --nv-color-accent: light-dark(var(--nv-light-accent), var(--nv-dark-accent)); + --nv-color-accent-hover: light-dark(var(--nv-light-accent-hover), var(--nv-dark-accent-hover)); + --nv-color-accent-active: light-dark(var(--nv-light-accent-active), var(--nv-dark-accent-active)); + --nv-color-accent-subtle: light-dark(var(--nv-light-accent-subtle), var(--nv-dark-accent-subtle)); + --nv-color-accent-subtle-hover: light-dark(var(--nv-light-accent-subtle-hover), var(--nv-dark-accent-subtle-hover)); + --nv-color-accent-border: light-dark(var(--nv-light-accent-border), var(--nv-dark-accent-border)); + --nv-color-accent-text: light-dark(var(--nv-light-accent-text), var(--nv-dark-accent-text)); + --nv-color-on-accent: light-dark(var(--nv-light-on-accent), var(--nv-dark-on-accent)); + + /* --- Success ------------------------------------------------------------ */ + --nv-color-success: light-dark(var(--nv-light-success), var(--nv-dark-success)); + --nv-color-success-hover: light-dark(var(--nv-light-success-hover), var(--nv-dark-success-hover)); + --nv-color-success-subtle: light-dark(var(--nv-light-success-subtle), var(--nv-dark-success-subtle)); + --nv-color-success-border: light-dark(var(--nv-light-success-border), var(--nv-dark-success-border)); + --nv-color-success-text: light-dark(var(--nv-light-success-text), var(--nv-dark-success-text)); + --nv-color-on-success: light-dark(var(--nv-light-on-success), var(--nv-dark-on-success)); + + /* --- Warning ------------------------------------------------------------ */ + --nv-color-warning: light-dark(var(--nv-light-warning), var(--nv-dark-warning)); + --nv-color-warning-hover: light-dark(var(--nv-light-warning-hover), var(--nv-dark-warning-hover)); + --nv-color-warning-subtle: light-dark(var(--nv-light-warning-subtle), var(--nv-dark-warning-subtle)); + --nv-color-warning-border: light-dark(var(--nv-light-warning-border), var(--nv-dark-warning-border)); + --nv-color-warning-text: light-dark(var(--nv-light-warning-text), var(--nv-dark-warning-text)); + --nv-color-on-warning: light-dark(var(--nv-light-on-warning), var(--nv-dark-on-warning)); + + /* --- Danger ------------------------------------------------------------- */ + --nv-color-danger: light-dark(var(--nv-light-danger), var(--nv-dark-danger)); + --nv-color-danger-hover: light-dark(var(--nv-light-danger-hover), var(--nv-dark-danger-hover)); + --nv-color-danger-active: light-dark(var(--nv-light-danger-active), var(--nv-dark-danger-active)); + --nv-color-danger-subtle: light-dark(var(--nv-light-danger-subtle), var(--nv-dark-danger-subtle)); + --nv-color-danger-border: light-dark(var(--nv-light-danger-border), var(--nv-dark-danger-border)); + --nv-color-danger-text: light-dark(var(--nv-light-danger-text), var(--nv-dark-danger-text)); + --nv-color-on-danger: light-dark(var(--nv-light-on-danger), var(--nv-dark-on-danger)); + + /* --- Depth and material ------------------------------------------------- */ + --nv-color-shadow-ambient: light-dark(var(--nv-light-shadow-ambient), var(--nv-dark-shadow-ambient)); + --nv-color-shadow-penumbra: light-dark(var(--nv-light-shadow-penumbra), var(--nv-dark-shadow-penumbra)); + --nv-color-shadow-umbra: light-dark(var(--nv-light-shadow-umbra), var(--nv-dark-shadow-umbra)); + --nv-color-shadow-inset: light-dark(var(--nv-light-shadow-inset), var(--nv-dark-shadow-inset)); + --nv-color-highlight: light-dark(var(--nv-light-highlight), var(--nv-dark-highlight)); + --nv-color-highlight-strong: light-dark(var(--nv-light-highlight-strong), var(--nv-dark-highlight-strong)); + + /* The bevel's other half: the shade along a raised surface's bottom edge, + and the contact line around anything that sits on another surface. Light + along the top and shade along the bottom is what makes a control read as + something pressable instead of a painted rectangle. */ + --nv-color-lowlight: light-dark(var(--nv-light-lowlight), var(--nv-dark-lowlight)); + --nv-color-outline: light-dark(var(--nv-light-outline), var(--nv-dark-outline)); + + /* Sheen: the light falling across a raised face, top to bottom. The plain + pair is for neutral controls and surfaces; the strong pair is for filled + color (primary buttons, checked marks), where it has to read through a + saturated fill. Both are laid over a surface's own color, never instead + of it. */ + --nv-color-sheen-top: light-dark(var(--nv-light-sheen-top), var(--nv-dark-sheen-top)); + --nv-color-sheen-bottom: light-dark(var(--nv-light-sheen-bottom), var(--nv-dark-sheen-bottom)); + --nv-color-sheen-strong-top: light-dark(var(--nv-light-sheen-strong-top), var(--nv-dark-sheen-strong-top)); + --nv-color-sheen-strong-bottom: light-dark(var(--nv-light-sheen-strong-bottom), var(--nv-dark-sheen-strong-bottom)); + + /* Glow: light a surface gives off, as opposed to the shade it casts. It is + the accent seen through air — strong enough in dark to read as a lit + edge, faint in light, where paper does not emit. */ + --nv-color-glow: light-dark(var(--nv-light-glow), var(--nv-dark-glow)); + + /* A knob: the thumb of a switch or a slider. It stays light in both + appearances, the way a physical knob does not change color with the room. */ + --nv-color-knob: light-dark(var(--nv-light-knob), var(--nv-dark-knob)); + --nv-color-knob-shade: light-dark(var(--nv-light-knob-shade), var(--nv-dark-knob-shade)); + + /* Elevation tint: on a dark canvas a shadow has nothing to darken, so a + raised surface also has to gain light. Transparent in light, where the + shadow does all the work. */ + --nv-color-elevation-tint-1: light-dark(var(--nv-light-elevation-tint-1), var(--nv-dark-elevation-tint-1)); + --nv-color-elevation-tint-2: light-dark(var(--nv-light-elevation-tint-2), var(--nv-dark-elevation-tint-2)); + --nv-color-elevation-tint-3: light-dark(var(--nv-light-elevation-tint-3), var(--nv-dark-elevation-tint-3)); + --nv-color-elevation-tint-4: light-dark(var(--nv-light-elevation-tint-4), var(--nv-dark-elevation-tint-4)); + --nv-color-elevation-tint-5: light-dark(var(--nv-light-elevation-tint-5), var(--nv-dark-elevation-tint-5)); + + --nv-color-material-frosted: light-dark(var(--nv-light-material-frosted), var(--nv-dark-material-frosted)); + --nv-color-material-glass: light-dark(var(--nv-light-material-glass), var(--nv-dark-material-glass)); + --nv-color-material-border: light-dark(var(--nv-light-material-border), var(--nv-dark-material-border)); + + /* --- Window controls ------------------------------------------------------- */ + --nv-color-window-close: light-dark(var(--nv-light-window-close), var(--nv-dark-window-close)); + --nv-color-window-minimize: light-dark(var(--nv-light-window-minimize), var(--nv-dark-window-minimize)); + --nv-color-window-zoom: light-dark(var(--nv-light-window-zoom), var(--nv-dark-window-zoom)); + --nv-color-window-inactive: light-dark(var(--nv-light-window-inactive), var(--nv-dark-window-inactive)); + --nv-color-window-control-ring: light-dark(var(--nv-light-window-control-ring), var(--nv-dark-window-control-ring)); + --nv-color-window-glyph: light-dark(var(--nv-light-window-glyph), var(--nv-dark-window-glyph)); + + /* --- Interaction --------------------------------------------------------- */ + --nv-color-focus-ring: light-dark(var(--nv-light-focus-ring), var(--nv-dark-focus-ring)); + --nv-color-focus-ring-contrast: light-dark(var(--nv-light-focus-ring-contrast), var(--nv-dark-focus-ring-contrast)); + --nv-color-selection: light-dark(var(--nv-light-selection), var(--nv-dark-selection)); + } +} +@layer niveus.tokens { + /* ========================================================================== + Niveus — Typography + -------------------------------------------------------------------------- + One type scale, used everywhere. Sizes are in rem so they respect the user's + browser font size; line heights are unitless so they inherit correctly. + ========================================================================== */ + + :root { + /* --- Families ----------------------------------------------------------- */ + /* Both ship with Niveus (fonts.css); the rest of each stack only covers the + moment before they load, or a context that cannot load them. */ + --nv-font-family-sans: + "Instrument Sans", "Inter var", "Inter", -apple-system, BlinkMacSystemFont, + "Segoe UI", "Helvetica Neue", Arial, sans-serif; + --nv-font-family-mono: + "JetBrains Mono", "SF Mono", "IBM Plex Mono", ui-monospace, "Menlo", + "Consolas", monospace; + + /* --- Size scale ---------------------------------------------------------- */ + --nv-font-size-2xs: 0.6875rem; /* 11px — dense metadata, never body text */ + --nv-font-size-xs: 0.75rem; /* 12px */ + --nv-font-size-sm: 0.8125rem; /* 13px */ + --nv-font-size-md: 0.9375rem; /* 15px — default body size */ + --nv-font-size-lg: 1.0625rem; /* 17px */ + --nv-font-size-xl: 1.25rem; /* 20px */ + --nv-font-size-2xl: 1.5rem; /* 24px */ + --nv-font-size-3xl: 1.875rem; /* 30px */ + --nv-font-size-4xl: 2.375rem; /* 38px */ + --nv-font-size-5xl: 3rem; /* 48px */ + + /* --- Weight -------------------------------------------------------------- */ + --nv-font-weight-regular: 400; + --nv-font-weight-medium: 500; + --nv-font-weight-semibold: 600; + --nv-font-weight-bold: 700; + + /* --- Line height --------------------------------------------------------- */ + --nv-line-height-tight: 1.18; /* display and large headings */ + --nv-line-height-snug: 1.32; /* headings, single-line controls */ + --nv-line-height-normal: 1.5; /* body copy */ + --nv-line-height-relaxed: 1.68; /* long-form reading */ + + /* --- Letter spacing ------------------------------------------------------- + Large text needs negative tracking to stay optically even; small caps-ish + labels need positive tracking to stay readable. */ + --nv-letter-spacing-tighter: -0.022em; + --nv-letter-spacing-tight: -0.012em; + --nv-letter-spacing-normal: 0em; + --nv-letter-spacing-wide: 0.02em; + --nv-letter-spacing-wider: 0.06em; + /* Engraved labels: small mono capitals, spaced like markings on a panel. */ + --nv-letter-spacing-engraved: 0.1em; + + /* --- Composite roles ------------------------------------------------------ + Applied as classes in base.css (.nv-display, .nv-heading, …). Kept as + tokens so applications can compose their own elements from the same + values instead of guessing. */ + --nv-font-display: var(--nv-font-weight-semibold) var(--nv-font-size-4xl) / + var(--nv-line-height-tight) var(--nv-font-family-sans); + --nv-font-heading: var(--nv-font-weight-semibold) var(--nv-font-size-2xl) / + var(--nv-line-height-snug) var(--nv-font-family-sans); + --nv-font-title: var(--nv-font-weight-semibold) var(--nv-font-size-lg) / + var(--nv-line-height-snug) var(--nv-font-family-sans); + --nv-font-body: var(--nv-font-weight-regular) var(--nv-font-size-md) / + var(--nv-line-height-normal) var(--nv-font-family-sans); + --nv-font-label: var(--nv-font-weight-medium) var(--nv-font-size-sm) / + var(--nv-line-height-snug) var(--nv-font-family-sans); + --nv-font-caption: var(--nv-font-weight-regular) var(--nv-font-size-xs) / + var(--nv-line-height-normal) var(--nv-font-family-sans); + --nv-font-code: var(--nv-font-weight-regular) var(--nv-font-size-sm) / + var(--nv-line-height-normal) var(--nv-font-family-mono); + /* The engraved label: section markers, the clock, anything that names a + region rather than being read. Paired with uppercase and the engraved + tracking (see .nv-overline in base.css). */ + --nv-font-engraved: var(--nv-font-weight-medium) var(--nv-font-size-2xs) / + var(--nv-line-height-snug) var(--nv-font-family-mono); + + /* --- Measure --------------------------------------------------------------- */ + --nv-measure-narrow: 44ch; + --nv-measure: 68ch; + --nv-measure-wide: 82ch; + } +} +@layer niveus.tokens { + /* ========================================================================== + Niveus — Spacing and size + -------------------------------------------------------------------------- + A 4px rhythm. The numeric suffix is the value in quarter-steps, so + --nv-space-4 is 16px and --nv-space-6 is 24px. Anything not on the scale is + application layout, not design-system spacing. + ========================================================================== */ + + :root { + --nv-space-0: 0; + --nv-space-px: 1px; + --nv-space-0-5: 0.125rem; /* 2px */ + --nv-space-1: 0.25rem; /* 4px */ + --nv-space-1-5: 0.375rem; /* 6px */ + --nv-space-2: 0.5rem; /* 8px */ + --nv-space-2-5: 0.625rem; /* 10px */ + --nv-space-3: 0.75rem; /* 12px */ + --nv-space-4: 1rem; /* 16px */ + --nv-space-5: 1.25rem; /* 20px */ + --nv-space-6: 1.5rem; /* 24px */ + --nv-space-7: 1.75rem; /* 28px */ + --nv-space-8: 2rem; /* 32px */ + --nv-space-10: 2.5rem; /* 40px */ + --nv-space-12: 3rem; /* 48px */ + --nv-space-14: 3.5rem; /* 56px */ + --nv-space-16: 4rem; /* 64px */ + --nv-space-20: 5rem; /* 80px */ + --nv-space-24: 6rem; /* 96px */ + --nv-space-32: 8rem; /* 128px */ + + /* --- Control sizing ------------------------------------------------------- + Shared by every interactive control so a button, an input and a select + line up on the same row without per-component tuning. */ + --nv-control-height-sm: 1.75rem; /* 28px */ + --nv-control-height-md: 2.25rem; /* 36px */ + --nv-control-height-lg: 2.75rem; /* 44px */ + + --nv-control-padding-sm: var(--nv-space-2-5); + --nv-control-padding-md: var(--nv-space-3); + --nv-control-padding-lg: var(--nv-space-4); + + --nv-control-gap-sm: var(--nv-space-1-5); + --nv-control-gap-md: var(--nv-space-2); + --nv-control-gap-lg: var(--nv-space-2-5); + + /* Minimum pointer target, independent of visual control height. */ + --nv-target-min: 2.75rem; /* 44px */ + + /* --- Layout ---------------------------------------------------------------- */ + --nv-layout-gutter: var(--nv-space-6); + --nv-layout-max-width: 72rem; + --nv-border-width: 1px; + --nv-border-width-strong: 2px; + } +} +@layer niveus.tokens { + /* ========================================================================== + Niveus — Radius + -------------------------------------------------------------------------- + Corner softness carries as much of the Niveus character as shadow does. + Radii grow with the surface: controls stay modest and machined, containers + get noticeably rounder — a window or a popover is a soft object, a button + is a key — and only pills, knobs and avatars go fully round. + ========================================================================== */ + + :root { + --nv-radius-none: 0; + --nv-radius-xs: 0.25rem; /* 4px — tags, swatches, nested chips */ + --nv-radius-sm: 0.5rem; /* 8px — small controls, menu items */ + --nv-radius-md: 0.625rem; /* 10px — buttons, inputs, default control radius */ + --nv-radius-lg: 0.875rem; /* 14px — cards, panels, menus */ + --nv-radius-xl: 1.25rem; /* 20px — windows, dialogs, sheets, popovers */ + --nv-radius-2xl: 1.5rem; /* 24px — docks, hero surfaces */ + --nv-radius-full: 999rem; /* — pills, avatars, switches */ + + /* Nested radius: an inner surface inset by N should be N smaller than its + parent, or the corners read as off-center. */ + --nv-radius-nested-md: calc(var(--nv-radius-lg) - var(--nv-space-2)); + --nv-radius-nested-lg: calc(var(--nv-radius-xl) - var(--nv-space-3)); + } +} +@layer niveus.tokens { + /* ========================================================================== + Niveus — Elevation + -------------------------------------------------------------------------- + Depth is a scale, not a free choice. Each level describes one relationship + between a surface and what sits behind it: + + 0 flush painted on the canvas, no separation + 1 resting cards, list rows, static panels + 2 raised buttons, controls, anything that reacts to a pointer + 3 floating popovers, menus, dropdowns, tooltips + 4 lifted dialogs, sheets, detached panels + 5 overlay the topmost layer, used sparingly + + Every level is built from the same three shadow colors so depth stays + consistent between appearances: an ambient contact shadow that keeps the + edge crisp, a soft penumbra for the spread, and an umbra that only appears + once a surface is genuinely far from the canvas. + ========================================================================== */ + + :root { + --nv-elevation-0: none; + + --nv-elevation-1: + 0 1px 1px var(--nv-color-shadow-ambient), + 0 2px 4px -1px var(--nv-color-shadow-penumbra), + 0 6px 14px -8px var(--nv-color-shadow-umbra); + + --nv-elevation-2: + 0 1px 1px var(--nv-color-shadow-ambient), + 0 3px 6px -2px var(--nv-color-shadow-penumbra), + 0 10px 20px -10px var(--nv-color-shadow-umbra); + + --nv-elevation-3: + 0 1px 2px var(--nv-color-shadow-ambient), + 0 6px 12px -4px var(--nv-color-shadow-penumbra), + 0 18px 36px -12px var(--nv-color-shadow-umbra); + + --nv-elevation-4: + 0 1px 2px var(--nv-color-shadow-ambient), + 0 10px 20px -6px var(--nv-color-shadow-penumbra), + 0 30px 60px -16px var(--nv-color-shadow-umbra); + + --nv-elevation-5: + 0 2px 3px var(--nv-color-shadow-ambient), + 0 16px 32px -8px var(--nv-color-shadow-penumbra), + 0 44px 88px -20px var(--nv-color-shadow-umbra); + + /* --- Inset --------------------------------------------------------------- + Recessed surfaces: fields, wells, tracks, pressed controls. */ + --nv-elevation-inset-sm: inset 0 1px 2px var(--nv-color-shadow-inset); + --nv-elevation-inset-md: + inset 0 1px 1px var(--nv-color-shadow-inset), + inset 0 3px 6px -2px var(--nv-color-shadow-inset); + --nv-elevation-inset-lg: + inset 0 2px 3px var(--nv-color-shadow-inset), + inset 0 6px 12px -3px var(--nv-color-shadow-inset); + + /* --- Highlight ----------------------------------------------------------- + The thin catch of light along the top edge of a raised surface. This is + what makes Niveus read as material rather than as a rectangle with a + shadow. Always paired with an elevation, never used alone. */ + --nv-highlight-top: inset 0 1px 0 var(--nv-color-highlight); + --nv-highlight-top-strong: inset 0 1px 0 var(--nv-color-highlight-strong); + --nv-highlight-edge: + inset 0 1px 0 var(--nv-color-highlight), + inset 0 0 0 1px var(--nv-color-border-subtle); + + /* --- Bevel ----------------------------------------------------------------- + The highlight's other half. A raised face is lit along its top edge and + shaded along its bottom one; together they are the bevel, and the bevel is + what makes a Niveus control look like something a finger could press. + Raised controls and surfaces take the full bevel; the highlight alone is + for things that sit flush. */ + --nv-lowlight-bottom: inset 0 -1px 0 var(--nv-color-lowlight); + --nv-bevel: + inset 0 1px 0 var(--nv-color-highlight), + inset 0 -1px 0 var(--nv-color-lowlight); + + /* --- Outline --------------------------------------------------------------- + The contact line: a hairline just outside a raised surface, where it meets + whatever it rests on. In dark it is near-black and does most of the + separating; in light it only softens the border beside it. */ + --nv-outline: 0 0 0 1px var(--nv-color-outline); + + /* --- Ledge ----------------------------------------------------------------- + A recess catches light on its *lower* lip, the edge facing the viewer. + Paired with an inset shadow, it turns a field from a dark rectangle into + a well cut into the surface. */ + --nv-ledge: 0 1px 0 var(--nv-color-highlight); + + /* --- Focus --------------------------------------------------------------- + A contrast ring sits under the accent ring so focus stays visible on both + light and dark surfaces, and on accent-filled controls. */ + --nv-focus-ring-width: 3px; + --nv-focus-ring: + 0 0 0 1px var(--nv-color-focus-ring-contrast), + 0 0 0 calc(1px + var(--nv-focus-ring-width)) var(--nv-color-focus-ring); + + /* --- Glow ------------------------------------------------------------------ + Light a surface emits rather than the shade it casts. Glow is for things + that are *on* — a live status, the selected item in a showcase, a lit key — + and it always sits beside an elevation, never instead of one: a glowing + surface still rests on something. + + The geometry is a scale like elevation. The color is the component's: a + tinted surface glows in its own tint, mixed down to --nv-glow-strength. */ + --nv-glow-strength: 40%; + --nv-glow-blur-sm: 12px; + --nv-glow-spread-sm: -2px; + --nv-glow-blur-md: 28px; + --nv-glow-spread-md: -6px; + --nv-glow-blur-lg: 64px; + --nv-glow-spread-lg: -12px; + } + + /* The accent glows are declared on every branded subtree as well as the root: + a var() inside a custom property resolves where the property is declared, so + a root-only declaration would glow in the root brand everywhere. */ + :root, + [data-nv-brand] { + --nv-glow-sm: 0 0 var(--nv-glow-blur-sm) var(--nv-glow-spread-sm) var(--nv-color-glow); + --nv-glow-md: 0 0 var(--nv-glow-blur-md) var(--nv-glow-spread-md) var(--nv-color-glow); + --nv-glow-lg: 0 0 var(--nv-glow-blur-lg) var(--nv-glow-spread-lg) var(--nv-color-glow); + } +} +@layer niveus.tokens { + /* ========================================================================== + Niveus — Motion + -------------------------------------------------------------------------- + Motion explains state and spatial relationship. It is short enough to feel + immediate and eased enough to feel physical. + + Rule of thumb: the smaller the element, the faster it moves. A button's + hover is 120ms; a dialog's entrance is 240ms. + ========================================================================== */ + + :root { + /* --- Duration ------------------------------------------------------------ */ + --nv-duration-instant: 0ms; + --nv-duration-fast: 120ms; /* hover, press, color change */ + --nv-duration-quick: 160ms; /* small elements entering */ + --nv-duration-normal: 220ms; /* popovers, menus, expansion */ + --nv-duration-slow: 320ms; /* dialogs, sheets, large surfaces */ + --nv-duration-slower: 480ms; /* full-screen transitions */ + + /* --- Easing --------------------------------------------------------------- + `standard` covers almost everything. Entrance decelerates into place, exit + accelerates away, and `spring` is reserved for confirmations — never for + anything a user triggers repeatedly. */ + --nv-ease-standard: cubic-bezier(0.2, 0.05, 0, 1); + --nv-ease-entrance: cubic-bezier(0.05, 0.7, 0.1, 1); + --nv-ease-exit: cubic-bezier(0.3, 0, 0.8, 0.15); + --nv-ease-spring: cubic-bezier(0.34, 1.4, 0.64, 1); + --nv-ease-linear: linear; + + /* --- Continuity ------------------------------------------------------------- + Durations for changes the user is meant to *follow*, not merely notice. + They are longer than an interaction response because the eye has further + to travel: emphasis crossing a navigation bar, a panel growing open, a + whole surface changing appearance. */ + --nv-duration-travel: 260ms; /* emphasis moving from one element to another */ + --nv-duration-expand: 280ms; /* content growing out of, or back into, place */ + --nv-duration-theme: 400ms; /* the entire surface changing appearance */ + + /* Leaves quickly, lands softly. The right curve for something travelling a + distance the user is meant to follow with their eye. */ + --nv-ease-emphasized: cubic-bezier(0.32, 0.04, 0.06, 1); + + /* --- Composites ------------------------------------------------------------ + `translate` and `scale` are listed rather than `transform`, because the + components animate the individual properties — a transition on `transform` + does not cover them, and the movement snaps. */ + --nv-transition-colors: + color var(--nv-duration-fast) var(--nv-ease-standard), + background-color var(--nv-duration-fast) var(--nv-ease-standard), + border-color var(--nv-duration-fast) var(--nv-ease-standard); + --nv-transition-depth: + box-shadow var(--nv-duration-fast) var(--nv-ease-standard), + translate var(--nv-duration-fast) var(--nv-ease-standard), + scale var(--nv-duration-fast) var(--nv-ease-standard); + --nv-transition-control: + color var(--nv-duration-fast) var(--nv-ease-standard), + background-color var(--nv-duration-fast) var(--nv-ease-standard), + border-color var(--nv-duration-fast) var(--nv-ease-standard), + box-shadow var(--nv-duration-fast) var(--nv-ease-standard), + translate var(--nv-duration-fast) var(--nv-ease-standard), + scale var(--nv-duration-fast) var(--nv-ease-standard); + + /* Containers: the same as depth, plus the colors, so a surface glides into + its new appearance when the theme changes instead of snapping. */ + --nv-transition-surface: + color var(--nv-duration-fast) var(--nv-ease-standard), + background-color var(--nv-duration-fast) var(--nv-ease-standard), + border-color var(--nv-duration-fast) var(--nv-ease-standard), + box-shadow var(--nv-duration-fast) var(--nv-ease-standard), + translate var(--nv-duration-fast) var(--nv-ease-standard), + scale var(--nv-duration-fast) var(--nv-ease-standard); + + --nv-transition-expand: + block-size var(--nv-duration-expand) var(--nv-ease-standard), + grid-template-rows var(--nv-duration-expand) var(--nv-ease-standard), + opacity var(--nv-duration-expand) var(--nv-ease-standard); + + /* --- Displacement ---------------------------------------------------------- + How far things move. Presses sink by 1px; surfaces enter from 8px away. */ + --nv-lift-hover: -1px; + --nv-press-depth: 1px; + --nv-travel-sm: 4px; + --nv-travel-md: 8px; + --nv-travel-lg: 16px; + + /* --- Sequence --------------------------------------------------------------- + The gap between siblings arriving one after another. Short enough that a + group reads as one movement, long enough that the eye sees an order. */ + --nv-stagger: 60ms; + + /* A loading shimmer is a slow, constant sweep — slow enough to read as + "waiting", never fast enough to read as an alert. */ + --nv-duration-shimmer: 1600ms; + } + + /* Reduced motion is a system-wide contract, not a per-component opt-in: cut + duration to near-zero and neutralise displacement, but keep transitions + alive so state changes still resolve rather than snapping mid-flight. */ + @media (prefers-reduced-motion: reduce) { + :root { + --nv-duration-fast: 1ms; + --nv-duration-quick: 1ms; + --nv-duration-normal: 1ms; + --nv-duration-slow: 1ms; + --nv-duration-slower: 1ms; + --nv-duration-travel: 1ms; + --nv-duration-expand: 1ms; + --nv-duration-theme: 1ms; + --nv-ease-spring: var(--nv-ease-standard); + --nv-lift-hover: 0px; + --nv-press-depth: 0px; + --nv-travel-sm: 0px; + --nv-travel-md: 0px; + --nv-travel-lg: 0px; + --nv-stagger: 0ms; + } + } +} +@layer niveus.tokens { + /* ========================================================================== + Niveus — Materials + -------------------------------------------------------------------------- + A material is a surface treatment: what it is made of, not where it sits. + Elevation answers "how far from the canvas"; material answers "what does + light do when it hits this". + + solid opaque, stable. The default. Content lives here. + elevated solid with depth and a top highlight. Separated from context. + inset recessed into its parent. Fields, wells, tracks. + frosted translucent, moderately blurred, bevelled. Chrome that sits + over content: bars, docks, launchers, notifications, menus. + glass more translucent, lightly blurred. Contextual layers where the + content behind should stay legible: overlays, hover cards. + + Niveus is a solid system with glass used sparingly. Windows, cards, dialogs + and everything that holds content are solid; translucency is reserved for + the chrome that floats over them. Translucency has a cost — it tints + whatever is behind it and forces the GPU to composite — and used everywhere + it stops meaning "this floats". + + Sheen is the light falling across a raised face. It is laid over a + surface's own color as background-image, so a surface keeps its role color + and gains the gradient; anything that does not draw gradients simply shows + the role color. + ========================================================================== */ + + :root { + /* --- Blur ---------------------------------------------------------------- */ + --nv-blur-sm: 12px; + --nv-blur-md: 24px; + --nv-blur-lg: 36px; + --nv-blur-xl: 56px; + + /* Backdrops lose saturation when blurred; a touch of saturate() puts the + color back so frosted surfaces do not read as gray films. Moderate on + purpose: the blur says "this floats", it is not the look itself. */ + --nv-backdrop-saturate: 180%; + --nv-backdrop-frosted: blur(var(--nv-blur-md)) saturate(var(--nv-backdrop-saturate)); + --nv-backdrop-glass: blur(var(--nv-blur-sm)) saturate(var(--nv-backdrop-saturate)); + + /* --- Sheen ------------------------------------------------------------------ + raised neutral controls: buttons, the selected tab, a titlebar + filled saturated fills: primary and danger buttons, checked marks + surface large surfaces: windows, dialogs, cards. Brightest along the + top edge, easing through the middle and settling into a faint + shade at the foot, so a panel reads as a curved, lit body + rather than as a flat sheet. + knob a round thumb: lit from above, shaded towards its rim */ + --nv-sheen-raised: linear-gradient(var(--nv-color-sheen-top), var(--nv-color-sheen-bottom)); + --nv-sheen-filled: linear-gradient(var(--nv-color-sheen-strong-top), var(--nv-color-sheen-strong-bottom)); + --nv-sheen-surface: linear-gradient(var(--nv-color-sheen-top), transparent 7rem, transparent 55%, var(--nv-color-sheen-bottom)); + --nv-sheen-knob: radial-gradient(circle at 50% 22%, var(--nv-color-highlight-strong), transparent 45%), radial-gradient(circle at 50% 30%, transparent 40%, var(--nv-color-knob-shade)); + --nv-backdrop-scrim: blur(var(--nv-blur-sm)) saturate(140%); + + /* --- Material recipes ----------------------------------------------------- + Each recipe is the full set of properties that defines the material. + Applied by the .nv-material-* classes in components/surface.css. */ + --nv-material-solid-bg: var(--nv-color-surface); + --nv-material-solid-border: var(--nv-color-border); + --nv-material-solid-shadow: var(--nv-elevation-0); + + --nv-material-elevated-bg: var(--nv-color-surface-elevated); + --nv-material-elevated-border: var(--nv-color-border-subtle); + --nv-material-elevated-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2); + + --nv-material-inset-bg: var(--nv-color-surface-inset); + --nv-material-inset-border: var(--nv-color-border-subtle); + --nv-material-inset-shadow: var(--nv-elevation-inset-md), var(--nv-ledge); + + --nv-material-frosted-bg: var(--nv-color-material-frosted); + --nv-material-frosted-border: var(--nv-color-material-border); + --nv-material-frosted-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3); + + --nv-material-glass-bg: var(--nv-color-material-glass); + --nv-material-glass-border: var(--nv-color-material-border); + --nv-material-glass-shadow: var(--nv-highlight-top-strong), var(--nv-outline), var(--nv-elevation-4); + } + + /* Where translucency cannot be honoured — reduced transparency, or a browser + without backdrop-filter — materials fall back to their solid equivalents + rather than becoming unreadable washes. */ + @media (prefers-reduced-transparency: reduce) { + :root { + --nv-material-frosted-bg: var(--nv-color-surface-elevated); + --nv-material-glass-bg: var(--nv-color-surface-elevated); + --nv-backdrop-frosted: none; + --nv-backdrop-glass: none; + --nv-backdrop-scrim: none; + } + } + + @supports not (backdrop-filter: blur(1px)) { + :root { + --nv-material-frosted-bg: var(--nv-color-surface-elevated); + --nv-material-glass-bg: var(--nv-color-surface-elevated); + } + } +} + +/* --- Themes: what those values become in each appearance -------------------- */ +@layer niveus.theme { + /* ========================================================================== + Niveus — Light appearance + -------------------------------------------------------------------------- + Values for the light side of every semantic role. Nothing here is consumed + by components directly; tokens/color.css resolves these through light-dark(). + + Almost nothing below is a literal color. Each role is *derived* from + --nv-brand, so setting one value re-colours the entire system: the accent + and its states, what text goes on top of it, how the status colors lean, and + how much of the brand bleeds into the greys. See tokens/color.css for the + inputs. + + Light Niveus reads as soft paper and enamel on a warm grey desk: surfaces + that hold content stay near-white, so documents never look yellowed; the + canvas around them is a few steps warmer and darker, so a window sits *on* + something. Raised controls are bevelled — a bright top edge, a soft shade + along the bottom, light falling across the face — and shadows are warm, + the color of shade on paper rather than of a grey filter. + ========================================================================== */ + + :root { + /* Follow the environment unless the application states an appearance. */ + color-scheme: light dark; + } + + :root[data-theme="light"] { + color-scheme: light; + } + + /* [data-nv-brand] re-derives the whole set for a subtree, so one region can + carry a different brand without a second theme. */ + :root, + [data-nv-brand] { + /* --- Canvas and surfaces ----------------------------------------------- + Paper stays paper: the two surfaces that hold content are left untinted so + text keeps its contrast. Everything the surfaces sit *in* picks up a trace + of the brand, which is what stops an accent from looking stuck on. */ + --nv-light-background: color-mix(in oklab, #e8e5de, var(--nv-brand) var(--nv-brand-tint)); + --nv-light-background-subtle: color-mix(in oklab, #eeece6, var(--nv-brand) var(--nv-brand-tint)); + --nv-light-surface: #fbfbfa; + --nv-light-surface-elevated: #f8f8f6; + --nv-light-surface-inset: color-mix(in oklab, #eeede8, var(--nv-brand) var(--nv-brand-tint)); + --nv-light-surface-hover: color-mix(in oklab, #f1f0ec, var(--nv-brand) var(--nv-brand-tint)); + --nv-light-surface-active: color-mix(in oklab, #e6e5e0, var(--nv-brand) var(--nv-brand-tint)); + --nv-light-scrim: rgb(28 24 18 / 0.34); + + /* --- Text --------------------------------------------------------------- + Primary text stays neutral — it carries the reading contrast. The quieter + two lean towards the brand, where a tint reads as warmth rather than as a + loss of legibility. */ + --nv-light-text-primary: var(--nv-palette-neutral-900); + --nv-light-text-secondary: color-mix(in oklab, var(--nv-palette-neutral-600), var(--nv-brand) 8%); + --nv-light-text-tertiary: color-mix(in oklab, var(--nv-palette-neutral-500), var(--nv-brand) 8%); + --nv-light-text-disabled: var(--nv-palette-neutral-400); + --nv-light-text-inverted: var(--nv-palette-neutral-0); + + /* --- Borders ------------------------------------------------------------ */ + --nv-light-border-subtle: rgb(28 24 18 / 0.07); + --nv-light-border: rgb(28 24 18 / 0.13); + --nv-light-border-strong: rgb(28 24 18 / 0.22); + + /* --- Accent -------------------------------------------------------------- + Every filled color is pushed away from the middle of the lightness range + before it is used. A mid-tone is the one place where neither white nor + black text reaches 4.5:1, so a brand that lands there is darkened until + white works — or, if it is already light, lightened until black does. The + brand's hue and chroma are untouched; only its lightness moves, and only + as far as it has to. */ + --nv-light-accent: oklch(from var(--nv-brand) calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); + --nv-light-accent-hover: oklch(from var(--nv-light-accent) calc(l - 0.045) c h); + --nv-light-accent-active: oklch(from var(--nv-light-accent) calc(l - 0.09) c h); + --nv-light-accent-subtle: oklch(from var(--nv-light-accent) 0.965 calc(c * 0.16) h); + --nv-light-accent-subtle-hover: oklch(from var(--nv-light-accent) 0.93 calc(c * 0.22) h); + --nv-light-accent-border: oklch(from var(--nv-light-accent) l c h / 0.32); + --nv-light-accent-text: oklch(from var(--nv-light-accent) clamp(0.3, calc(l - 0.12), 0.5) c h); + /* Text that lands on the color itself. The clamp is a step function: below + the lightness threshold it resolves to 1 and the text goes near-white, + above it to 0 and the text goes near-black — so a yellow brand gets dark + labels and a navy one gets light labels, with no second token to set. */ + --nv-light-on-accent: oklch(from var(--nv-light-accent) + calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) + calc(c * 0.2) h); + + /* --- Success ------------------------------------------------------------- */ + --nv-light-success: oklch(from + color-mix(in oklab, var(--nv-palette-success-500), var(--nv-brand) var(--nv-brand-harmony)) + calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); + --nv-light-success-hover: oklch(from var(--nv-light-success) calc(l - 0.05) c h); + --nv-light-success-subtle: oklch(from var(--nv-light-success) 0.965 calc(c * 0.16) h); + --nv-light-success-border: oklch(from var(--nv-light-success) l c h / 0.3); + --nv-light-success-text: oklch(from var(--nv-light-success) clamp(0.3, calc(l - 0.1), 0.48) c h); + --nv-light-on-success: oklch(from var(--nv-light-success) + calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) + calc(c * 0.2) h); + + /* --- Warning -------------------------------------------------------------- */ + /* Amber starts above the pivot on purpose. Pushed the other way it lands as + brown, which reads as neither a warning nor a color anyone chose. */ + --nv-light-warning: oklch(from + color-mix(in oklab, var(--nv-palette-warning-400), var(--nv-brand) var(--nv-brand-harmony)) + calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); + --nv-light-warning-hover: oklch(from var(--nv-light-warning) calc(l - 0.05) c h); + --nv-light-warning-subtle: oklch(from var(--nv-light-warning) 0.965 calc(c * 0.16) h); + --nv-light-warning-border: oklch(from var(--nv-light-warning) l c h / 0.32); + --nv-light-warning-text: oklch(from var(--nv-light-warning) clamp(0.3, calc(l - 0.1), 0.48) c h); + --nv-light-on-warning: oklch(from var(--nv-light-warning) + calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) + calc(c * 0.2) h); + + /* --- Danger ---------------------------------------------------------------- */ + --nv-light-danger: oklch(from + color-mix(in oklab, var(--nv-palette-danger-500), var(--nv-brand) var(--nv-brand-harmony)) + calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); + --nv-light-danger-hover: oklch(from var(--nv-light-danger) calc(l - 0.05) c h); + --nv-light-danger-active: oklch(from var(--nv-light-danger) calc(l - 0.1) c h); + --nv-light-danger-subtle: oklch(from var(--nv-light-danger) 0.965 calc(c * 0.16) h); + --nv-light-danger-border: oklch(from var(--nv-light-danger) l c h / 0.3); + --nv-light-danger-text: oklch(from var(--nv-light-danger) clamp(0.3, calc(l - 0.1), 0.48) c h); + --nv-light-on-danger: oklch(from var(--nv-light-danger) + calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) + calc(c * 0.2) h); + + /* --- Depth and material ------------------------------------------------- + Three shadow colors build every elevation level: an ambient contact + shadow, a soft penumbra, and a deeper umbra for high elevations. */ + --nv-light-shadow-ambient: rgb(40 32 20 / 0.08); + --nv-light-shadow-penumbra: rgb(40 32 20 / 0.1); + --nv-light-shadow-umbra: rgb(40 32 20 / 0.16); + --nv-light-shadow-inset: rgb(40 32 20 / 0.14); + --nv-light-highlight: rgb(255 255 255 / 0.9); + --nv-light-highlight-strong: rgb(255 255 255 / 1); + + /* Paper already has a border doing the contact work, so the outline only + softens it; the bottom shade is faint for the same reason. */ + --nv-light-lowlight: rgb(40 32 20 / 0.09); + --nv-light-outline: rgb(40 32 20 / 0.05); + + --nv-light-sheen-top: rgb(255 255 255 / 0.9); + --nv-light-sheen-bottom: rgb(40 32 20 / 0.07); + --nv-light-sheen-strong-top: rgb(255 255 255 / 0.32); + --nv-light-sheen-strong-bottom: rgb(20 16 10 / 0.16); + --nv-light-glow: oklch(from var(--nv-light-accent) l c h / 0.3); + + --nv-light-knob: var(--nv-palette-neutral-0); + --nv-light-knob-shade: rgb(40 32 20 / 0.13); + + /* Light surfaces are already lighter than their canvas; the shadow alone + carries elevation, so there is nothing to add. */ + --nv-light-elevation-tint-1: transparent; + --nv-light-elevation-tint-2: transparent; + --nv-light-elevation-tint-3: transparent; + --nv-light-elevation-tint-4: transparent; + --nv-light-elevation-tint-5: transparent; + + --nv-light-material-frosted: rgb(252 252 250 / 0.56); + --nv-light-material-glass: rgb(252 252 250 / 0.4); + --nv-light-material-border: rgb(255 255 255 / 0.72); + + /* --- Window controls --------------------------------------------------------- */ + --nv-light-window-close: var(--nv-palette-window-close); + --nv-light-window-minimize: var(--nv-palette-window-minimize); + --nv-light-window-zoom: var(--nv-palette-window-zoom); + --nv-light-window-inactive: var(--nv-palette-neutral-300); + --nv-light-window-control-ring: rgb(0 0 0 / 0.16); + --nv-light-window-glyph: rgb(0 0 0 / 0.55); + + /* --- Interaction ----------------------------------------------------------- */ + --nv-light-focus-ring: oklch(from var(--nv-light-accent) l c h / 0.4); + --nv-light-focus-ring-contrast: rgb(255 255 255 / 0.9); + --nv-light-selection: oklch(from var(--nv-light-accent) l c h / 0.2); + } +} +@layer niveus.theme { + /* ========================================================================== + Niveus — Dark appearance + -------------------------------------------------------------------------- + Values for the dark side of every semantic role, resolved through + light-dark() in tokens/color.css. Like the light appearance, almost nothing + here is a literal color — every role is derived from --nv-brand. + + Dark Niveus is warm graphite, not the light theme inverted. Surfaces get + *lighter* as they rise and each step is large enough to see; shadows are + deep and every raised thing carries a near-black contact line, because on a + dark canvas a shadow alone has nothing left to darken. The bevel is what + carries depth here — a lit top edge, a shaded bottom one — and filled color + stays saturated: a vivid accent with a light label reads as a lit key, not + as a hole. + ========================================================================== */ + + :root[data-theme="dark"] { + color-scheme: dark; + } + + :root, + [data-nv-brand] { + /* --- Canvas and surfaces ----------------------------------------------- */ + --nv-dark-background: color-mix(in oklab, #0f0f12, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-background-subtle: color-mix(in oklab, #18181b, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-surface: color-mix(in oklab, #1f1f22, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-surface-elevated: color-mix(in oklab, #2a2a2e, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-surface-inset: color-mix(in oklab, #111113, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-surface-hover: color-mix(in oklab, #313136, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-surface-active: color-mix(in oklab, #39393f, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-scrim: rgb(6 6 8 / 0.62); + + /* --- Text --------------------------------------------------------------- */ + --nv-dark-text-primary: #ecebe8; + --nv-dark-text-secondary: color-mix(in oklab, #a9a8a3, var(--nv-brand) 8%); + --nv-dark-text-tertiary: color-mix(in oklab, #7d7c77, var(--nv-brand) 8%); + --nv-dark-text-disabled: #58585c; + --nv-dark-text-inverted: var(--nv-palette-neutral-975); + + /* --- Borders ------------------------------------------------------------ */ + --nv-dark-border-subtle: rgb(255 255 255 / 0.06); + --nv-dark-border: rgb(255 255 255 / 0.1); + --nv-dark-border-strong: rgb(255 255 255 / 0.2); + + /* --- Accent ------------------------------------------------------------- + The same derivation as light: a fill is pushed out of the mid-tones until + its label clears 4.5:1, so the brand keeps its full saturation and a light + label. Earlier Niveus lifted the dark accent into pastel to avoid neon; + with bevel and sheen doing the shaping, a saturated fill reads as a lit + key instead, and the pastel was what made the whole system feel washed + out. Only the accent *text* (links, subtle labels) moves up the ramp, + because text on a dark canvas needs the lightness that a fill does not. */ + --nv-dark-accent: oklch(from var(--nv-brand) calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); + --nv-dark-accent-hover: oklch(from var(--nv-dark-accent) calc(l + 0.05) c h); + --nv-dark-accent-active: oklch(from var(--nv-dark-accent) calc(l + 0.09) c h); + --nv-dark-accent-subtle: oklch(from var(--nv-dark-accent) l c h / 0.2); + --nv-dark-accent-subtle-hover: oklch(from var(--nv-dark-accent) l c h / 0.28); + --nv-dark-accent-border: oklch(from var(--nv-dark-accent) l c h / 0.5); + --nv-dark-accent-text: oklch(from var(--nv-dark-accent) clamp(0.74, calc(l + 0.2), 0.9) calc(c * 0.9) h); + --nv-dark-on-accent: oklch(from var(--nv-dark-accent) + calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) + calc(c * 0.2) h); + + /* --- Success ------------------------------------------------------------ */ + --nv-dark-success: oklch(from + color-mix(in oklab, var(--nv-palette-success-500), var(--nv-brand) var(--nv-brand-harmony)) + calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); + --nv-dark-success-hover: oklch(from var(--nv-dark-success) calc(l + 0.05) c h); + --nv-dark-success-subtle: oklch(from var(--nv-dark-success) l c h / 0.2); + --nv-dark-success-border: oklch(from var(--nv-dark-success) l c h / 0.35); + --nv-dark-success-text: oklch(from var(--nv-dark-success) clamp(0.76, calc(l + 0.2), 0.9) calc(c * 0.9) h); + --nv-dark-on-success: oklch(from var(--nv-dark-success) + calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) + calc(c * 0.2) h); + + /* --- Warning ------------------------------------------------------------ */ + --nv-dark-warning: oklch(from + color-mix(in oklab, var(--nv-palette-warning-400), var(--nv-brand) var(--nv-brand-harmony)) + calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); + --nv-dark-warning-hover: oklch(from var(--nv-dark-warning) calc(l + 0.05) c h); + --nv-dark-warning-subtle: oklch(from var(--nv-dark-warning) l c h / 0.2); + --nv-dark-warning-border: oklch(from var(--nv-dark-warning) l c h / 0.35); + --nv-dark-warning-text: oklch(from var(--nv-dark-warning) clamp(0.76, calc(l + 0.2), 0.9) calc(c * 0.9) h); + --nv-dark-on-warning: oklch(from var(--nv-dark-warning) + calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) + calc(c * 0.2) h); + + /* --- Danger ------------------------------------------------------------- */ + --nv-dark-danger: oklch(from + color-mix(in oklab, var(--nv-palette-danger-500), var(--nv-brand) var(--nv-brand-harmony)) + calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); + --nv-dark-danger-hover: oklch(from var(--nv-dark-danger) calc(l + 0.05) c h); + --nv-dark-danger-active: oklch(from var(--nv-dark-danger) calc(l + 0.09) c h); + --nv-dark-danger-subtle: oklch(from var(--nv-dark-danger) l c h / 0.2); + --nv-dark-danger-border: oklch(from var(--nv-dark-danger) l c h / 0.35); + --nv-dark-danger-text: oklch(from var(--nv-dark-danger) clamp(0.76, calc(l + 0.2), 0.9) calc(c * 0.9) h); + --nv-dark-on-danger: oklch(from var(--nv-dark-danger) + calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) + calc(c * 0.2) h); + + /* --- Depth and material -------------------------------------------------- */ + --nv-dark-shadow-ambient: rgb(0 0 0 / 0.5); + --nv-dark-shadow-penumbra: rgb(0 0 0 / 0.5); + --nv-dark-shadow-umbra: rgb(0 0 0 / 0.55); + --nv-dark-shadow-inset: rgb(0 0 0 / 0.65); + --nv-dark-highlight: rgb(255 255 255 / 0.15); + --nv-dark-highlight-strong: rgb(255 255 255 / 0.24); + + /* The contact line is what separates graphite from graphite: a raised + surface over a dark canvas has no shadow to show, but it always has an + edge. */ + --nv-dark-lowlight: rgb(0 0 0 / 0.5); + --nv-dark-outline: rgb(0 0 0 / 0.72); + + --nv-dark-sheen-top: rgb(255 255 255 / 0.09); + --nv-dark-sheen-bottom: rgb(0 0 0 / 0.18); + --nv-dark-sheen-strong-top: rgb(255 255 255 / 0.3); + --nv-dark-sheen-strong-bottom: rgb(0 0 0 / 0.2); + --nv-dark-glow: oklch(from var(--nv-dark-accent) l c h / 0.5); + + --nv-dark-knob: #f4f3ef; + --nv-dark-knob-shade: rgb(40 32 20 / 0.3); + + /* The higher a surface sits, the more light reaches it. */ + --nv-dark-elevation-tint-1: rgb(255 255 255 / 0.03); + --nv-dark-elevation-tint-2: rgb(255 255 255 / 0.05); + --nv-dark-elevation-tint-3: rgb(255 255 255 / 0.07); + --nv-dark-elevation-tint-4: rgb(255 255 255 / 0.09); + --nv-dark-elevation-tint-5: rgb(255 255 255 / 0.11); + + --nv-dark-material-frosted: color-mix(in oklab, rgb(34 34 40 / 0.5), var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-material-glass: color-mix(in oklab, rgb(44 44 52 / 0.36), var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-material-border: rgb(255 255 255 / 0.14); + + /* --- Window controls --------------------------------------------------------- */ + --nv-dark-window-close: var(--nv-palette-window-close); + --nv-dark-window-minimize: var(--nv-palette-window-minimize); + --nv-dark-window-zoom: var(--nv-palette-window-zoom); + --nv-dark-window-inactive: var(--nv-palette-neutral-700); + --nv-dark-window-control-ring: rgb(0 0 0 / 0.35); + --nv-dark-window-glyph: rgb(0 0 0 / 0.6); + + /* --- Interaction ---------------------------------------------------------- */ + --nv-dark-focus-ring: oklch(from var(--nv-dark-accent-text) l c h / 0.55); + --nv-dark-focus-ring-contrast: rgb(8 8 10 / 0.9); + --nv-dark-selection: oklch(from var(--nv-dark-accent) l c h / 0.4); + } +} + +/* --- Base: elements, before any component ----------------------------------- */ +@layer niveus.base { + /* ========================================================================== + Niveus — Base + -------------------------------------------------------------------------- + The minimum an application needs before any component renders: a predictable + box model, the canvas, the default type, and the system-wide focus and + selection treatment. + + This layer styles elements, never classes with intent. Anything opinionated + enough to need a name belongs in components/. + ========================================================================== */ + + *, + *::before, + *::after { + box-sizing: border-box; + } + + html { + -webkit-text-size-adjust: 100%; + text-size-adjust: 100%; + } + + body { + margin: 0; + min-height: 100svh; + background-color: var(--nv-color-background); + /* The canvas is lit, not painted: a wash of the accent falls in from the top + corner and a fainter one pools at the opposite foot. It is what gives + translucent surfaces something to be translucent against, and keeps a + page of solid panels from reading as one flat field. */ + background-image: + radial-gradient(120% 80% at 0% 0%, color-mix(in oklab, var(--nv-color-accent) light-dark(10%, 16%), transparent), transparent 60%), + radial-gradient(90% 70% at 100% 100%, color-mix(in oklab, var(--nv-color-accent) light-dark(6%, 10%), transparent), transparent 60%); + background-attachment: fixed; + color: var(--nv-color-text-primary); + font: var(--nv-font-body); + letter-spacing: var(--nv-letter-spacing-normal); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + font-synthesis-weight: none; + + /* The canvas glides into a new appearance with everything standing on it, + rather than cutting while the surfaces above it fade. */ + transition: var(--nv-transition-colors); + } + + /* --- Rhythm --------------------------------------------------------------- + Block elements carry no outer margin of their own; spacing between them is + the layout's decision, set with gap or the spacing tokens. */ + h1, h2, h3, h4, h5, h6, + p, figure, blockquote, dl, dd, pre { + margin: 0; + } + + h1, h2, h3, h4, h5, h6 { + font-weight: var(--nv-font-weight-semibold); + letter-spacing: var(--nv-letter-spacing-tight); + line-height: var(--nv-line-height-snug); + text-wrap: balance; + } + + h1 { font-size: var(--nv-font-size-3xl); letter-spacing: var(--nv-letter-spacing-tighter); } + h2 { font-size: var(--nv-font-size-2xl); } + h3 { font-size: var(--nv-font-size-xl); } + h4 { font-size: var(--nv-font-size-lg); } + h5 { font-size: var(--nv-font-size-md); } + h6 { font-size: var(--nv-font-size-sm); } + + p { + text-wrap: pretty; + } + + small { + font-size: var(--nv-font-size-xs); + } + + code, kbd, samp, pre { + font-family: var(--nv-font-family-mono); + font-size: var(--nv-font-size-sm); + } + + /* --- Links ----------------------------------------------------------------- */ + a { + color: var(--nv-color-accent-text); + text-decoration-color: color-mix(in srgb, currentColor 35%, transparent); + text-underline-offset: 0.18em; + transition: var(--nv-transition-colors); + } + + a:hover { + text-decoration-color: currentColor; + } + + /* --- Media ----------------------------------------------------------------- */ + img, svg, video, canvas, audio, iframe, embed, object { + display: block; + max-width: 100%; + } + + svg { + flex: none; + } + + hr { + border: 0; + border-top: var(--nv-border-width) solid var(--nv-color-border-subtle); + margin: 0; + } + + /* --- Forms ----------------------------------------------------------------- + Form controls do not inherit type by default; without this every field in + the system would silently fall back to the browser's own font. */ + button, input, optgroup, select, textarea { + font: inherit; + color: inherit; + margin: 0; + } + + textarea { + resize: vertical; + } + + :disabled { + cursor: not-allowed; + } + + /* --- Focus ----------------------------------------------------------------- + One focus treatment for the whole system. Components that need the ring to + follow their own shape override box-shadow, not outline-color. */ + :focus-visible { + outline: var(--nv-focus-ring-width) solid var(--nv-color-focus-ring); + outline-offset: 2px; + border-radius: var(--nv-radius-xs); + } + + ::selection { + background-color: var(--nv-color-selection); + color: var(--nv-color-text-primary); + } + + /* --- Scrollbars ------------------------------------------------------------ */ + * { + scrollbar-color: var(--nv-color-border-strong) transparent; + scrollbar-width: thin; + } + + /* ========================================================================== + Type roles + -------------------------------------------------------------------------- + Named roles from tokens/typography.css, available as classes so hierarchy + stays consistent even when the markup cannot use a heading element. + ========================================================================== */ + + .nv-display { + font: var(--nv-font-display); + letter-spacing: var(--nv-letter-spacing-tighter); + text-wrap: balance; + } + + .nv-heading { + font: var(--nv-font-heading); + letter-spacing: var(--nv-letter-spacing-tight); + text-wrap: balance; + } + + .nv-title { + font: var(--nv-font-title); + letter-spacing: var(--nv-letter-spacing-tight); + } + + .nv-body { + font: var(--nv-font-body); + text-wrap: pretty; + } + + .nv-label { + font: var(--nv-font-label); + } + + .nv-caption { + font: var(--nv-font-caption); + color: var(--nv-color-text-secondary); + } + + /* Engraved: small mono capitals that mark a region the way markings mark an + instrument panel. Not for anything that has to be read as a sentence. */ + .nv-overline { + font: var(--nv-font-engraved); + letter-spacing: var(--nv-letter-spacing-engraved); + text-transform: uppercase; + color: var(--nv-color-text-tertiary); + } + + .nv-code { + font: var(--nv-font-code); + } + + /* Text color roles, for when the role is about emphasis rather than size. */ + .nv-text-primary { color: var(--nv-color-text-primary); } + .nv-text-secondary { color: var(--nv-color-text-secondary); } + .nv-text-tertiary { color: var(--nv-color-text-tertiary); } + .nv-text-accent { color: var(--nv-color-accent-text); } + .nv-text-success { color: var(--nv-color-success-text); } + .nv-text-warning { color: var(--nv-color-warning-text); } + .nv-text-danger { color: var(--nv-color-danger-text); } + + /* Lit text: type cut from the same material as the surfaces — bright along + the top, warming towards the accent below, the way light falls across a + raised face. Each line is lit on its own. For one display line on a page, + not for running text. */ + .nv-text-lit { + background-image: linear-gradient( + 180deg, + var(--nv-color-text-primary) 30%, + color-mix(in oklab, var(--nv-color-accent-text) 30%, var(--nv-color-text-primary)) + ); + -webkit-box-decoration-break: clone; + box-decoration-break: clone; + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: transparent; + color: var(--nv-color-accent-text); + } + + /* The accent alone, lit from above: for an accented phrase inside a display + line, where flat accent text would read as a link. */ + .nv-text-lit--accent { + background-image: linear-gradient( + 180deg, + color-mix(in oklab, var(--nv-color-accent-text) 55%, var(--nv-color-text-primary)), + var(--nv-color-accent-text) 60%, + var(--nv-color-accent) + ); + } +} + +/* --- Continuity: how one state becomes the next ----------------------------- */ +@layer niveus.continuity { + /* ========================================================================== + Niveus — Continuity + -------------------------------------------------------------------------- + Every interaction should read as a continuation of the previous state, not + as a replacement of it. When something moves, grows, collapses or changes + appearance, the change itself should be perceptible: where it came from, + where it went, and why. + + This layer holds the cross-cutting machinery that individual components + then opt into: + + · one duration and easing for everything the browser animates between + two states via a view transition + · emphasis that travels between elements instead of disappearing from one + and reappearing on another (--nv-selection-name) + · direction, so moving forward and moving back do not look identical + · appearance changes that cross-fade rather than cut + + The goal is not to animate everything. It is that nothing pops into a new + state the user could have watched it reach. + ========================================================================== */ + + :root { + /* Lets block-size: auto participate in transitions, which is what allows + content to expand from where it already is instead of appearing at full + height. Without it, every disclosure in the system would jump. */ + interpolate-size: allow-keywords; + + /* The default name for travelling emphasis. A page with more than one + selection group must give each group its own name — two visible elements + sharing a view-transition-name abort the transition entirely. */ + --nv-selection-name: nv-selection; + } + + /* --- View transitions ------------------------------------------------------- + Anything the application wraps in document.startViewTransition() inherits + the system's travel duration and easing, so a state change animates like + the rest of Niveus without the application choosing timings. */ + + ::view-transition-group(*) { + animation-duration: var(--nv-duration-travel); + animation-timing-function: var(--nv-ease-emphasized); + } + + /* The page behind a travelling element cross-fades quickly — it is context, + not the subject of the change, and a slow fade would make the whole + interface feel as though it were being replaced. */ + ::view-transition-old(root), + ::view-transition-new(root) { + animation-duration: var(--nv-duration-quick); + animation-timing-function: var(--nv-ease-standard); + } + + /* --- Travelling emphasis ------------------------------------------------------- + A selection marker moves between two elements, which no single element can + transition — so it is captured and interpolated. The problem that creates is + layering: transition layers paint above the page snapshot, so a marker that + sits *behind* its label at rest would slide over the top of every label it + passed, washing the text as it went. + + The fix is to capture the labels too and order the groups explicitly. The + marker travels below; the items ride above it, exactly as they do at rest. + niveus.js names the items of the group that is changing, and only while it + changes — names have to be unique per document, which no stylesheet can + guarantee — and every other item simply stays in the page snapshot. + + Because the layering is now correct, the marker needs no trick to stay out of + the way: it travels at full opacity, like the solid object it is. */ + + ::view-transition-group(.nv-travelling) { + z-index: 0; + } + + /* The marker changes shape as it travels — a short label's pill becomes a + long one's. By default the browser scales each snapshot to the group's + width and keeps its aspect ratio, so mid-way a 40×26 pill stretched to + 80px wide is drawn 52px tall, hanging out below its strip. The marker is a + plain surface, so its snapshots fill the box instead. */ + ::view-transition-old(.nv-travelling), + ::view-transition-new(.nv-travelling) { + block-size: 100%; + } + + ::view-transition-group(.nv-carried) { + z-index: 1; + } + + /* A carried item does not move — only its color changes when selection leaves + or arrives. That resolves quickly so the label does not sit half-way between + two colors for the length of the travel. */ + ::view-transition-old(.nv-carried), + ::view-transition-new(.nv-carried) { + animation-duration: var(--nv-duration-fast); + } + + /* --- Appearance --------------------------------------------------------------- + A theme change is the one moment the entire surface is the subject, so the + root cross-fade slows down and every color arrives together. The attribute + is set for the duration of the change by nv.setTheme(). */ + + :root[data-nv-transition="theme"]::view-transition-old(root), + :root[data-nv-transition="theme"]::view-transition-new(root) { + animation-duration: var(--nv-duration-theme); + animation-timing-function: var(--nv-ease-standard); + } + + /* Without the view-transition path — no script, or a browser without the API — + surfaces still glide, because their own transitions cover color. */ + + /* --- Direction ------------------------------------------------------------------ + Moving forward and moving back should not look the same. The application + sets data-nv-direction on the root for the length of the transition; content + then leaves towards where the user came from and enters from where they are + going. Without a direction, content simply rises into place. + + Content hands over; it does not cross-fade. Two blocks of text at half + opacity on top of each other read as a rendering fault, not as motion, so + the outgoing content is gone (fast) before the incoming arrives (delayed by + that same beat). The box itself never empties for longer than a blink. + + Any element whose content changes in place takes part by carrying the + nv-content class: .nv-continuous and .nv-tab-panel both do. + + The box clips what it holds. When a tall panel gives way to a short one, + the page around it has already reflowed to the new height, so unclipped + outgoing content would spill out below its own card. */ + + ::view-transition-group(.nv-content) { + overflow: clip; + } + + ::view-transition-old(.nv-content) { + animation: nv-fade-out var(--nv-duration-fast) var(--nv-ease-exit) both; + } + + ::view-transition-new(.nv-content) { + animation: + nv-fade-in var(--nv-duration-normal) var(--nv-ease-entrance) var(--nv-duration-fast) both, + nv-rise var(--nv-duration-normal) var(--nv-ease-entrance) var(--nv-duration-fast) both; + } + + :root[data-nv-direction="forward"]::view-transition-old(.nv-content) { + animation: + nv-fade-out var(--nv-duration-fast) var(--nv-ease-exit) both, + nv-exit-to-start var(--nv-duration-fast) var(--nv-ease-exit) both; + } + + :root[data-nv-direction="forward"]::view-transition-new(.nv-content) { + animation: + nv-fade-in var(--nv-duration-normal) var(--nv-ease-entrance) var(--nv-duration-fast) both, + nv-enter-from-end var(--nv-duration-normal) var(--nv-ease-emphasized) var(--nv-duration-fast) both; + } + + :root[data-nv-direction="backward"]::view-transition-old(.nv-content) { + animation: + nv-fade-out var(--nv-duration-fast) var(--nv-ease-exit) both, + nv-exit-to-end var(--nv-duration-fast) var(--nv-ease-exit) both; + } + + :root[data-nv-direction="backward"]::view-transition-new(.nv-content) { + animation: + nv-fade-in var(--nv-duration-normal) var(--nv-ease-entrance) var(--nv-duration-fast) both, + nv-enter-from-start var(--nv-duration-normal) var(--nv-ease-emphasized) var(--nv-duration-fast) both; + } + + @keyframes nv-fade-in { + from { opacity: 0; } + } + + @keyframes nv-fade-out { + to { opacity: 0; } + } + + @keyframes nv-rise { + from { translate: 0 var(--nv-travel-sm); } + } + + @keyframes nv-enter-from-end { + from { translate: var(--nv-travel-lg) 0; } + } + + @keyframes nv-enter-from-start { + from { translate: calc(var(--nv-travel-lg) * -1) 0; } + } + + @keyframes nv-exit-to-start { + to { translate: calc(var(--nv-travel-md) * -1) 0; } + } + + @keyframes nv-exit-to-end { + to { translate: var(--nv-travel-md) 0; } + } + + /* --- Utilities --------------------------------------------------------------------- + .nv-continuous marks a region whose content should cross-fade in place when + it changes — the "same surface, different content" relationship. */ + + .nv-continuous { + view-transition-name: var(--nv-content-name, nv-content); + view-transition-class: nv-content; + } + + /* --- Reveal ------------------------------------------------------------------------ + Content arriving as it scrolls into view: it rises a short way and fades in, + once, so a long page is read in the order it was written instead of all at + once. .nv-reveal-group does the same for its children one after another, + --nv-stagger apart. + + niveus.js marks what is waiting. Without the script, and under reduced + motion, nothing is ever marked — so nothing is ever hidden. */ + + .nv-reveal[data-nv-reveal="pending"], + .nv-reveal-group > [data-nv-reveal="pending"] { + opacity: 0; + } + + .nv-reveal[data-nv-reveal="shown"], + .nv-reveal-group > [data-nv-reveal="shown"] { + animation: nv-arrive var(--nv-duration-slower) var(--nv-ease-entrance) + calc(var(--nv-reveal-index, 0) * var(--nv-stagger)) both; + } + + @keyframes nv-arrive { + from { + opacity: 0; + translate: 0 var(--nv-travel-lg); + } + } + + /* Collapsible region for markup that is not a
    . The 0fr -> 1fr grid + row is the one technique that animates to an unknown content height in every + browser, with no measurement and no script. */ + + .nv-collapse { + display: grid; + grid-template-rows: 0fr; + transition: + grid-template-rows var(--nv-duration-expand) var(--nv-ease-standard), + opacity var(--nv-duration-expand) var(--nv-ease-standard); + opacity: 0; + } + + .nv-collapse > * { + min-block-size: 0; + overflow: hidden; + } + + .nv-collapse[data-open], + .nv-collapse:not([hidden])[open] { + grid-template-rows: 1fr; + opacity: 1; + } + + /* Reduced motion does not mean "no continuity" — a state change still has to + resolve rather than be cut mid-way. The token layer already collapses every + duration to 1ms; this removes the displacement so nothing slides. */ + @media (prefers-reduced-motion: reduce) { + ::view-transition-group(*), + ::view-transition-old(*), + ::view-transition-new(*) { + animation-duration: 1ms; + } + } +} + +/* --- Components -------------------------------------------------------------- */ +@layer niveus.components { + /* ========================================================================== + Niveus — Surface + -------------------------------------------------------------------------- + The material vocabulary, expressed as classes. Every other component is + built from these; applications use them directly for anything the system + does not ship as a named component. + + .nv-surface a container using the solid material + .nv-material-{type} apply a material to any element + .nv-elevation-{0..5} apply a depth level to any element + + A material and an elevation are independent: .nv-material-solid + .nv-elevation-3 is a legitimate combination. What is not legitimate is a + raw box-shadow that belongs to neither scale. + ========================================================================== */ + + .nv-surface { + background-color: var(--nv-color-surface); + color: var(--nv-color-text-primary); + border: var(--nv-border-width) solid var(--nv-color-border); + border-radius: var(--nv-radius-lg); + transition: var(--nv-transition-surface); + } + + /* --- Materials ------------------------------------------------------------- */ + + .nv-material-solid { + background-color: var(--nv-material-solid-bg); + border: var(--nv-border-width) solid var(--nv-material-solid-border); + box-shadow: var(--nv-material-solid-shadow); + backdrop-filter: none; + } + + .nv-material-elevated { + background-color: var(--nv-material-elevated-bg); + border: var(--nv-border-width) solid var(--nv-material-elevated-border); + box-shadow: var(--nv-material-elevated-shadow); + backdrop-filter: none; + } + + .nv-material-inset { + background-color: var(--nv-material-inset-bg); + border: var(--nv-border-width) solid var(--nv-material-inset-border); + box-shadow: var(--nv-material-inset-shadow); + backdrop-filter: none; + } + + .nv-material-frosted { + background-color: var(--nv-material-frosted-bg); + border: var(--nv-border-width) solid var(--nv-material-frosted-border); + box-shadow: var(--nv-material-frosted-shadow); + backdrop-filter: var(--nv-backdrop-frosted); + -webkit-backdrop-filter: var(--nv-backdrop-frosted); + } + + .nv-material-glass { + background-color: var(--nv-material-glass-bg); + border: var(--nv-border-width) solid var(--nv-material-glass-border); + box-shadow: var(--nv-material-glass-shadow); + backdrop-filter: var(--nv-backdrop-glass); + -webkit-backdrop-filter: var(--nv-backdrop-glass); + } + + /* --- Elevation ------------------------------------------------------------- + Elevation utilities carry three things at once, because a lifted surface is + never only a shadow: the shadow itself, the highlight along its top edge, + and — on a dark canvas, where a shadow has nothing left to darken — a tint + that lets more light reach the surface the higher it sits. The tint is + transparent in light appearance, so the two read as one scale. */ + + .nv-elevation-0 { box-shadow: var(--nv-elevation-0); } + + .nv-elevation-1 { + box-shadow: var(--nv-highlight-top), var(--nv-elevation-1); + background-image: linear-gradient(var(--nv-color-elevation-tint-1) 0 0); + } + + .nv-elevation-2 { + box-shadow: var(--nv-highlight-top), var(--nv-elevation-2); + background-image: linear-gradient(var(--nv-color-elevation-tint-2) 0 0); + } + + .nv-elevation-3 { + box-shadow: var(--nv-highlight-top), var(--nv-elevation-3); + background-image: linear-gradient(var(--nv-color-elevation-tint-3) 0 0); + } + + .nv-elevation-4 { + box-shadow: var(--nv-highlight-top), var(--nv-elevation-4); + background-image: linear-gradient(var(--nv-color-elevation-tint-4) 0 0); + } + + .nv-elevation-5 { + box-shadow: var(--nv-highlight-top-strong), var(--nv-elevation-5); + background-image: linear-gradient(var(--nv-color-elevation-tint-5) 0 0); + } + + .nv-elevation-inset-sm { box-shadow: var(--nv-elevation-inset-sm); } + .nv-elevation-inset-md { box-shadow: var(--nv-elevation-inset-md); } + .nv-elevation-inset-lg { box-shadow: var(--nv-elevation-inset-lg); } + + /* --- Divider ---------------------------------------------------------------- */ + + .nv-divider { + border: 0; + border-top: var(--nv-border-width) solid var(--nv-color-border-subtle); + margin-block: var(--nv-space-4); + } + + .nv-divider--vertical { + border-top: 0; + border-left: var(--nv-border-width) solid var(--nv-color-border-subtle); + margin-block: 0; + margin-inline: var(--nv-space-4); + align-self: stretch; + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Button + -------------------------------------------------------------------------- + .nv-button secondary by default — a raised surface + .nv-button--primary the single affirmative action in a view + .nv-button--ghost low-emphasis, no material until hovered + .nv-button--danger destructive, and only when it is + .nv-button--frosted for use over imagery or frosted chrome + .nv-button--sm | --lg 36px by default + .nv-button--icon square, for a lone icon (needs a label) + .nv-button--block fills its container + + A button is a key: a bevelled face with light falling across it, a contact + line where it meets the surface, and a press that sinks it into an inset. + + Every variant is defined purely by reassigning the private --_* properties + below. Interaction — the lift on hover, the sink on press, the focus ring — + lives once in the base rule, so a new variant can never drift from the way + the rest of the system responds to a pointer. + ========================================================================== */ + + .nv-button { + /* Variant surface, overridden per modifier. */ + --_bg: var(--nv-color-surface-elevated); + --_bg-hover: var(--nv-color-surface-hover); + --_bg-active: var(--nv-color-surface-active); + --_fg: var(--nv-color-text-primary); + --_border: var(--nv-color-border); + --_sheen: var(--nv-sheen-raised); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2); + --_shadow-hover: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3); + --_shadow-active: var(--nv-elevation-inset-sm), var(--nv-outline); + + /* Size, overridden per size modifier. */ + --_height: var(--nv-control-height-md); + --_padding: var(--nv-control-padding-md); + --_gap: var(--nv-control-gap-md); + --_font-size: var(--nv-font-size-sm); + --_radius: var(--nv-radius-md); + + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--_gap); + + block-size: var(--_height); + padding-inline: var(--_padding); + border: var(--nv-border-width) solid var(--_border); + border-radius: var(--_radius); + + background-color: var(--_bg); + background-image: var(--_sheen); + color: var(--_fg); + box-shadow: var(--_shadow); + + font-family: var(--nv-font-family-sans); + font-size: var(--_font-size); + font-weight: var(--nv-font-weight-medium); + line-height: var(--nv-line-height-snug); + letter-spacing: var(--nv-letter-spacing-normal); + white-space: nowrap; + text-decoration: none; + + cursor: pointer; + user-select: none; + -webkit-tap-highlight-color: transparent; + transition: var(--nv-transition-control); + } + + /* A control smaller than the minimum target still gets a full-size hit area: + the pseudo-element grows outward without changing the visual size. */ + .nv-button::after { + content: ""; + position: absolute; + inset-block-start: 50%; + inset-inline-start: 50%; + translate: -50% -50%; + inline-size: max(100%, var(--nv-target-min)); + block-size: max(100%, var(--nv-target-min)); + } + + @media (hover: hover) { + .nv-button:hover:not(:disabled, [aria-disabled="true"]) { + background-color: var(--_bg-hover); + box-shadow: var(--_shadow-hover); + translate: 0 var(--nv-lift-hover); + } + } + + /* Pressed, the face is pushed below the light: the sheen goes and the inset + takes over. */ + .nv-button:active:not(:disabled, [aria-disabled="true"]) { + background-color: var(--_bg-active); + background-image: none; + box-shadow: var(--_shadow-active); + translate: 0 var(--nv-press-depth); + transition-duration: var(--nv-duration-instant); + } + + .nv-button:focus-visible { + outline: none; + box-shadow: var(--_shadow), var(--nv-focus-ring); + } + + .nv-button:disabled, + .nv-button[aria-disabled="true"] { + background-color: var(--nv-color-surface-inset); + background-image: none; + color: var(--nv-color-text-disabled); + border-color: var(--nv-color-border-subtle); + box-shadow: none; + translate: none; + cursor: not-allowed; + } + + /* --- Variants --------------------------------------------------------------- */ + + .nv-button--primary { + --_bg: var(--nv-color-accent); + --_bg-hover: var(--nv-color-accent-hover); + --_bg-active: var(--nv-color-accent-active); + --_fg: var(--nv-color-on-accent); + --_border: transparent; + --_sheen: var(--nv-sheen-filled); + /* A filled key gives off a little of its own color: the glow is what makes + it read as lit rather than printed. */ + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2), + 0 6px 16px -8px color-mix(in oklab, var(--_bg) 80%, transparent); + --_shadow-hover: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3), + 0 8px 22px -8px color-mix(in oklab, var(--_bg) 85%, transparent); + font-weight: var(--nv-font-weight-semibold); + } + + .nv-button--danger { + --_bg: var(--nv-color-danger); + --_bg-hover: var(--nv-color-danger-hover); + --_bg-active: var(--nv-color-danger-active); + --_fg: var(--nv-color-on-danger); + --_border: transparent; + --_sheen: var(--nv-sheen-filled); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2), + 0 6px 16px -8px color-mix(in oklab, var(--_bg) 80%, transparent); + --_shadow-hover: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3), + 0 8px 22px -8px color-mix(in oklab, var(--_bg) 85%, transparent); + --nv-color-focus-ring: var(--nv-color-danger-border); + font-weight: var(--nv-font-weight-semibold); + } + + .nv-button--ghost { + --_bg: transparent; + --_bg-hover: var(--nv-color-surface-hover); + --_bg-active: var(--nv-color-surface-active); + --_fg: var(--nv-color-text-secondary); + --_border: transparent; + --_sheen: none; + --_shadow: none; + --_shadow-hover: none; + --_shadow-active: var(--nv-elevation-inset-sm); + } + + /* A ghost has no material to lose, so disabling it only dims the label — + it does not suddenly grow a well its enabled siblings never had. */ + .nv-button--ghost:disabled, + .nv-button--ghost[aria-disabled="true"] { + background-color: transparent; + border-color: transparent; + } + + @media (hover: hover) { + .nv-button--ghost:hover:not(:disabled, [aria-disabled="true"]) { + color: var(--nv-color-text-primary); + translate: none; /* nothing to lift — a ghost has no material to raise */ + } + } + + .nv-button--subtle { + --_bg: var(--nv-color-accent-subtle); + --_bg-hover: var(--nv-color-accent-subtle-hover); + --_bg-active: var(--nv-color-accent-subtle-hover); + --_fg: var(--nv-color-accent-text); + --_border: var(--nv-color-accent-border); + --_sheen: none; + --_shadow: none; + --_shadow-hover: var(--nv-elevation-1); + } + + .nv-button--frosted { + --_bg: var(--nv-material-glass-bg); + --_bg-hover: var(--nv-material-frosted-bg); + --_bg-active: var(--nv-material-frosted-bg); + --_border: var(--nv-material-glass-border); + --_sheen: none; + backdrop-filter: var(--nv-backdrop-glass); + -webkit-backdrop-filter: var(--nv-backdrop-glass); + } + + /* --- Sizes ------------------------------------------------------------------- */ + + .nv-button--sm { + --_height: var(--nv-control-height-sm); + --_padding: var(--nv-control-padding-sm); + --_gap: var(--nv-control-gap-sm); + --_font-size: var(--nv-font-size-xs); + --_radius: var(--nv-radius-sm); + } + + .nv-button--lg { + --_height: var(--nv-control-height-lg); + --_padding: var(--nv-control-padding-lg); + --_gap: var(--nv-control-gap-lg); + --_font-size: var(--nv-font-size-md); + } + + .nv-button--icon { + --_padding: 0; + inline-size: var(--_height); + } + + .nv-button--pill { + --_radius: var(--nv-radius-full); + } + + .nv-button--block { + display: flex; + inline-size: 100%; + } + + /* --- Floating ------------------------------------------------------------------ + A control that sits *over* content rather than in the flow: a carousel arrow, + a floating action. Two things change. + + It is already off the surface, so there is nothing to lift it from — it grows + instead. And it is almost always positioned with `translate`, which the hover + lift would overwrite, throwing the button half its own height down the page + the moment a pointer touched it. --nv-button-offset carries that positioning + through every state. */ + + .nv-button--float { + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3); + --_shadow-hover: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-4); + --_shadow-active: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2); + + translate: var(--nv-button-offset, 0 0); + } + + @media (hover: hover) { + .nv-button--float:hover:not(:disabled, [aria-disabled="true"]) { + translate: var(--nv-button-offset, 0 0); + scale: 1.06; + } + } + + .nv-button--float:active:not(:disabled, [aria-disabled="true"]) { + translate: var(--nv-button-offset, 0 0); + scale: 0.97; + } + + /* --- Parts --------------------------------------------------------------------- */ + + .nv-button__icon { + inline-size: 1em; + block-size: 1em; + font-size: 1.15em; + opacity: 0.9; + } + + /* Busy: the label stays in place to keep the button from resizing mid-action, + and the spinner replaces it. */ + .nv-button[aria-busy="true"] { + color: transparent; + pointer-events: none; + } + + .nv-button[aria-busy="true"]::before { + content: ""; + position: absolute; + inline-size: 1em; + block-size: 1em; + border: 2px solid var(--_fg); + border-block-start-color: transparent; + border-radius: var(--nv-radius-full); + animation: nv-spin var(--nv-duration-slower) var(--nv-ease-linear) infinite; + } + + @keyframes nv-spin { + to { rotate: 1turn; } + } + + /* --- Group --------------------------------------------------------------------- + Segmented controls: buttons share an edge, so only the outer corners round + and the shared border is not drawn twice. */ + + .nv-button-group { + display: inline-flex; + align-items: center; + } + + .nv-button-group > .nv-button:not(:first-child) { + border-start-start-radius: 0; + border-end-start-radius: 0; + margin-inline-start: calc(var(--nv-border-width) * -1); + } + + .nv-button-group > .nv-button:not(:last-child) { + border-start-end-radius: 0; + border-end-end-radius: 0; + } + + .nv-button-group > .nv-button:hover, + .nv-button-group > .nv-button:focus-visible { + z-index: 1; + translate: none; + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Input + -------------------------------------------------------------------------- + .nv-field label + control + hint, correctly spaced + .nv-input text input, textarea and select + .nv-input-group control with a leading or trailing affix + .nv-select wrapper that supplies the chevron + .nv-checkbox / .nv-radio custom marks on the native controls + .nv-switch binary control with an inset track + + Inputs are the system's inset material: they read as wells cut into the + surface that holds them — shaded inside, lit along the lower lip — which is + what distinguishes a place to type from a thing to press. On focus the recess stays — only the ring and border change, + so the field never appears to jump forward. + ========================================================================== */ + + .nv-field { + display: flex; + flex-direction: column; + gap: var(--nv-space-1-5); + min-inline-size: 0; + } + + .nv-field__label { + font: var(--nv-font-label); + color: var(--nv-color-text-primary); + } + + .nv-field__label[data-optional]::after { + content: " " attr(data-optional); + color: var(--nv-color-text-tertiary); + font-weight: var(--nv-font-weight-regular); + } + + .nv-field__hint { + font: var(--nv-font-caption); + color: var(--nv-color-text-secondary); + } + + .nv-field__error { + display: flex; + align-items: center; + gap: var(--nv-space-1-5); + font: var(--nv-font-caption); + font-weight: var(--nv-font-weight-medium); + color: var(--nv-color-danger-text); + } + + /* --- Control ----------------------------------------------------------------- */ + + .nv-input { + --_height: var(--nv-control-height-md); + --_padding: var(--nv-control-padding-md); + --_font-size: var(--nv-font-size-md); + --_radius: var(--nv-radius-md); + --_border: var(--nv-color-border); + + inline-size: 100%; + min-inline-size: 0; + block-size: var(--_height); + padding-inline: var(--_padding); + /* A well in dark, where recess reads as shade; paper in light, where a grey + well reads as a field that has been switched off. The inset shadow and + ledge carry the recess either way. */ + background-color: light-dark(var(--nv-color-surface), var(--nv-color-surface-inset)); + color: var(--nv-color-text-primary); + border: var(--nv-border-width) solid var(--_border); + border-radius: var(--_radius); + box-shadow: var(--nv-elevation-inset-md), var(--nv-ledge); + + font-family: var(--nv-font-family-sans); + font-size: var(--_font-size); + line-height: var(--nv-line-height-snug); + transition: var(--nv-transition-control); + appearance: none; + } + + .nv-input::placeholder { + color: var(--nv-color-text-tertiary); + } + + @media (hover: hover) { + .nv-input:hover:not(:disabled, [readonly]) { + --_border: var(--nv-color-border-strong); + } + } + + .nv-input:focus-visible, + .nv-input:focus { + outline: none; + --_border: var(--nv-color-accent); + box-shadow: var(--nv-elevation-inset-md), var(--nv-focus-ring); + } + + .nv-input[aria-invalid="true"] { + --_border: var(--nv-color-danger); + --nv-color-focus-ring: var(--nv-color-danger-border); + } + + .nv-input:disabled { + background-color: var(--nv-color-background-subtle); + color: var(--nv-color-text-disabled); + box-shadow: none; + cursor: not-allowed; + } + + .nv-input[readonly] { + background-color: transparent; + box-shadow: none; + } + + /* Multi-line controls grow, so height becomes a minimum and the block padding + has to be stated explicitly. */ + textarea.nv-input { + block-size: auto; + min-block-size: calc(var(--nv-control-height-lg) * 2); + padding-block: var(--nv-space-2-5); + line-height: var(--nv-line-height-normal); + } + + .nv-input--sm { + --_height: var(--nv-control-height-sm); + --_padding: var(--nv-control-padding-sm); + --_font-size: var(--nv-font-size-sm); + --_radius: var(--nv-radius-sm); + } + + /* A color well: the swatch fills the control, so the value is the control. */ + .nv-input--color { + inline-size: var(--nv-control-height-md); + padding: var(--nv-space-1); + cursor: pointer; + } + + .nv-input--color::-webkit-color-swatch-wrapper { + padding: 0; + } + + .nv-input--color::-webkit-color-swatch { + border: var(--nv-border-width) solid var(--nv-color-border); + border-radius: calc(var(--nv-radius-md) - var(--nv-space-1)); + } + + /* Separate rules on purpose: a selector list that names another engine's + pseudo-element is invalid as a whole, and each browser would drop both. */ + .nv-input--color::-moz-color-swatch { + border: var(--nv-border-width) solid var(--nv-color-border); + border-radius: calc(var(--nv-radius-md) - var(--nv-space-1)); + } + + .nv-input--lg { + --_height: var(--nv-control-height-lg); + --_padding: var(--nv-control-padding-lg); + --_font-size: var(--nv-font-size-lg); + } + + /* --- Affixes ------------------------------------------------------------------- +
    + @ + +
    + The affix sits inside the field's recess rather than beside it, so the group + still reads as a single surface. */ + + .nv-input-group { + position: relative; + display: flex; + align-items: center; + inline-size: 100%; + } + + .nv-input-group__affix { + position: absolute; + z-index: 1; + display: flex; + align-items: center; + padding-inline: var(--nv-control-padding-md); + color: var(--nv-color-text-tertiary); + font-size: var(--nv-font-size-sm); + pointer-events: none; + } + + .nv-input-group__affix:first-child { + inset-inline-start: 0; + } + + .nv-input-group__affix:last-child { + inset-inline-end: 0; + } + + .nv-input-group__affix:first-child ~ .nv-input { + padding-inline-start: calc(var(--nv-control-padding-md) * 2 + 1em); + } + + .nv-input:has(~ .nv-input-group__affix:last-child) { + padding-inline-end: calc(var(--nv-control-padding-md) * 2 + 1em); + } + + /* Interactive affixes — a clear button, a reveal toggle — opt back in. */ + .nv-input-group__affix > * { + pointer-events: auto; + } + + /* --- Select ---------------------------------------------------------------------- +
    */ + + .nv-select { + position: relative; + display: flex; + inline-size: 100%; + } + + .nv-select > .nv-input { + padding-inline-end: calc(var(--nv-control-padding-md) * 2 + 0.5em); + cursor: pointer; + } + + .nv-select::after { + content: ""; + position: absolute; + inset-inline-end: var(--nv-control-padding-md); + inset-block-start: 50%; + inline-size: 0.45em; + block-size: 0.45em; + margin-block-start: -0.28em; + border-inline-end: 1.5px solid var(--nv-color-text-tertiary); + border-block-end: 1.5px solid var(--nv-color-text-tertiary); + rotate: 45deg; + pointer-events: none; + } + + /* --- Checkbox and radio ------------------------------------------------------------ */ + + .nv-checkbox, + .nv-radio { + position: relative; + flex: none; + /* The marks are drawn in em; pinning the size keeps them the same whatever + the label around them is set in. */ + font-size: var(--nv-font-size-md); + inline-size: var(--nv-space-5); + block-size: var(--nv-space-5); + margin: 0; + background-color: var(--nv-color-surface-inset); + border: var(--nv-border-width) solid var(--nv-color-border-strong); + border-radius: var(--nv-radius-xs); + box-shadow: var(--nv-elevation-inset-sm), var(--nv-ledge); + cursor: pointer; + appearance: none; + transition: var(--nv-transition-control); + } + + .nv-radio { + border-radius: var(--nv-radius-full); + } + + .nv-checkbox:checked, + .nv-radio:checked, + .nv-checkbox:indeterminate { + background-color: var(--nv-color-accent); + background-image: var(--nv-sheen-filled); + border-color: transparent; + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1); + } + + /* The marks are always present, at zero size and zero opacity, so checking a + box grows the tick out of its centre instead of stamping it there. A mark + that only exists in the :checked state has nothing to animate from. */ + + .nv-checkbox::after, + .nv-radio::after, + .nv-checkbox::before { + content: ""; + position: absolute; + opacity: 0; + scale: 0; + transition: + opacity var(--nv-duration-fast) var(--nv-ease-standard), + scale var(--nv-duration-quick) var(--nv-ease-spring); + } + + /* The tick is drawn from two borders so it scales with the control and needs + no asset. */ + .nv-checkbox::after { + inset-block-start: 45%; + inset-inline-start: 50%; + inline-size: 0.28em; + block-size: 0.55em; + translate: -50% -50%; + rotate: 45deg; + border-inline-end: 2px solid var(--nv-color-on-accent); + border-block-end: 2px solid var(--nv-color-on-accent); + } + + .nv-checkbox:checked:not(:indeterminate)::after { + opacity: 1; + scale: 1; + } + + /* Indeterminate is its own mark rather than a variation of the tick: the two + have to be able to cross over each other when the state changes. */ + .nv-checkbox::before { + inset: 50% 25% auto; + translate: 0 -50%; + block-size: 2px; + background-color: var(--nv-color-on-accent); + border-radius: var(--nv-radius-full); + } + + .nv-checkbox:indeterminate::before { + opacity: 1; + scale: 1; + } + + .nv-radio::after { + inset: 50% auto auto 50%; + translate: -50% -50%; + inline-size: 0.4em; + block-size: 0.4em; + background-color: var(--nv-color-on-accent); + border-radius: var(--nv-radius-full); + } + + .nv-radio:checked::after { + opacity: 1; + scale: 1; + } + + .nv-checkbox:disabled, + .nv-radio:disabled { + background-color: var(--nv-color-background-subtle); + border-color: var(--nv-color-border); + box-shadow: none; + cursor: not-allowed; + } + + /* --- Switch -------------------------------------------------------------------------- + The track is a slot cut into the surface and the thumb is a knob riding in + it: the physical relationship does the explaining, so the control reads as + on or off without a label. The slot stays recessed when it fills with color + — switching on lights the slot, it does not raise it. */ + + .nv-switch { + --_track-inline: calc(var(--nv-space-6) * 1.5); + --_track-block: var(--nv-space-6); + --_thumb: calc(var(--_track-block) - 6px); + --_inset: 2px; + --_travel: calc( + var(--_track-inline) - var(--_thumb) - var(--_inset) * 2 - + var(--nv-border-width) * 2 + ); + + position: relative; + flex: none; + inline-size: var(--_track-inline); + block-size: var(--_track-block); + margin: 0; + background-color: var(--nv-color-surface-inset); + border: var(--nv-border-width) solid var(--nv-color-border); + border-radius: var(--nv-radius-full); + box-shadow: var(--nv-elevation-inset-md), var(--nv-ledge); + cursor: pointer; + appearance: none; + transition: var(--nv-transition-control); + } + + .nv-switch::after { + content: ""; + position: absolute; + inset-block-start: 50%; + inset-inline-start: var(--_inset); + inline-size: var(--_thumb); + block-size: var(--_thumb); + translate: 0 -50%; + background-color: var(--nv-color-knob); + background-image: var(--nv-sheen-knob); + border-radius: var(--nv-radius-full); + box-shadow: var(--nv-outline), var(--nv-elevation-2); + transition: + translate var(--nv-duration-travel) var(--nv-ease-emphasized), + background-color var(--nv-duration-fast) var(--nv-ease-standard); + } + + .nv-switch:checked { + background-color: var(--nv-color-accent); + border-color: transparent; + box-shadow: var(--nv-elevation-inset-md), var(--nv-outline); + } + + .nv-switch:checked::after { + translate: var(--_travel) -50%; + } + + .nv-switch:disabled { + cursor: not-allowed; + opacity: 0.55; + } + + /* --- Inline control + label --------------------------------------------------------- */ + + .nv-choice { + display: flex; + align-items: center; + gap: var(--nv-space-2-5); + /* Labelled at control size, so a row of switches and checkboxes sits level + with the buttons and fields beside it. */ + font: var(--nv-font-body); + font-size: var(--nv-font-size-sm); + cursor: pointer; + } + + .nv-choice:has(:disabled) { + color: var(--nv-color-text-disabled); + cursor: not-allowed; + } + + /* translate has no logical equivalent, so the thumb's direction is flipped + explicitly rather than travelling the wrong way in RTL. */ + .nv-switch:checked:dir(rtl)::after { + translate: calc(var(--_travel) * -1) -50%; + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Card + -------------------------------------------------------------------------- + .nv-card resting surface, elevation 1 + .nv-card--elevated separated from its context, elevation 2 + .nv-card--inset recessed into its parent + .nv-card--frosted over imagery or scrolling content + .nv-card--interactive the whole card is one target + .nv-card--lit lit along its top edge in its tint + .nv-card--glow gives off its tint — the one card that is on + .nv-card--spotlight catches a light that follows the pointer + .nv-card__header / __body / __footer / __media + + A card is a container, not a look. If a card needs a shadow that is not on + the elevation scale, the answer is a different elevation — not a different + shadow. + ========================================================================== */ + + .nv-card { + /* Content surfaces are mostly solid: enough of the canvas comes through to + tie a card to the light around it, never enough to compete with what it + holds. The blur keeps anything busy behind it (a bed, an image) from + reading through as texture. */ + --_bg: color-mix(in oklab, var(--nv-color-surface) 90%, transparent); + --_border: var(--nv-color-border-subtle); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1); + --_sheen: var(--nv-sheen-surface); + --_padding: var(--nv-space-5); + /* Light layers the variants switch on. Kept separate from --_shadow so a + lit or glowing card can still be elevated, floating or interactive. */ + --_lit: 0 0 transparent; + --_glow: 0 0 transparent; + --_spot: linear-gradient(transparent, transparent); + + position: relative; + display: flex; + flex-direction: column; + min-inline-size: 0; + + background-color: var(--_bg); + background-image: var(--_spot), var(--_sheen); + color: var(--nv-color-text-primary); + border: var(--nv-border-width) solid var(--_border); + border-radius: var(--nv-radius-lg); + box-shadow: var(--_lit), var(--_shadow), var(--_glow); + backdrop-filter: var(--nv-backdrop-glass); + -webkit-backdrop-filter: var(--nv-backdrop-glass); + + /* Children are clipped to the corner radius so media and inset regions + cannot square off the card. */ + overflow: hidden; + transition: var(--nv-transition-surface); + } + + .nv-card--elevated { + --_bg: color-mix(in oklab, var(--nv-color-surface-elevated) 90%, transparent); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2); + } + + .nv-card--floating { + --_bg: color-mix(in oklab, var(--nv-color-surface-elevated) 88%, transparent); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3); + } + + .nv-card--inset { + --_bg: color-mix(in oklab, var(--nv-color-surface-inset) 85%, transparent); + --_shadow: var(--nv-elevation-inset-md), var(--nv-ledge); + --_sheen: none; + --_border: var(--nv-color-border-subtle); + } + + .nv-card--frosted { + --_bg: var(--nv-material-frosted-bg); + --_border: var(--nv-material-frosted-border); + --_shadow: var(--nv-material-frosted-shadow); + --_sheen: none; + backdrop-filter: var(--nv-backdrop-frosted); + -webkit-backdrop-filter: var(--nv-backdrop-frosted); + } + + .nv-card--flush { + --_padding: 0; + } + + /* --- Interactive ------------------------------------------------------------ + Rises on hover and sinks on press, exactly like a button — one physical + language for anything that responds to a pointer. */ + + .nv-card--interactive { + cursor: pointer; + text-align: start; + text-decoration: none; + } + + @media (hover: hover) { + .nv-card--interactive:hover { + box-shadow: var(--_lit), var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3), var(--_glow); + translate: 0 calc(var(--nv-lift-hover) * 2); + } + } + + .nv-card--interactive:active { + box-shadow: var(--_lit), var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1), var(--_glow); + translate: 0 var(--nv-press-depth); + transition-duration: var(--nv-duration-instant); + } + + .nv-card--interactive:focus-visible { + outline: none; + box-shadow: var(--_lit), var(--_shadow), var(--_glow), var(--nv-focus-ring); + } + + /* --- Light ------------------------------------------------------------------ + Three ways a card can carry light, each stated once and combinable with + every elevation above. They all take the card's tint — the accent unless + --nv-card-tint names another color, the way --nv-bed-tint does for a bed. + + Lit: a strip of light along the top edge, spilling a little way down + the face. For a card that belongs to something with a color: a + project, a status, a category. + Glow: the card gives off its tint. For the one card that is on — the + current plan, the live item. Two glowing cards side by side + cancel each other out. + Spotlight: a soft light follows the pointer across the face (niveus.js + tracks it). A showcase effect; a list of work items does not + need one. */ + + .nv-card--lit, + .nv-card--glow, + .nv-card--spotlight { + --nv-card-tint: var(--nv-color-accent); + } + + .nv-card--lit { + --_lit: + inset 0 2px 0 color-mix(in oklab, var(--nv-card-tint) 85%, transparent), + inset 0 18px 28px -22px color-mix(in oklab, var(--nv-card-tint) 70%, transparent); + --_sheen: + radial-gradient( + 120% 70% at 0% 0%, + color-mix(in oklab, var(--nv-card-tint) 12%, transparent), + transparent 70% + ), + var(--nv-sheen-surface); + } + + .nv-card--glow { + --_border: color-mix(in oklab, var(--nv-card-tint) 40%, var(--nv-color-border-subtle)); + --_glow: 0 0 var(--nv-glow-blur-md) var(--nv-glow-spread-md) + color-mix(in oklab, var(--nv-card-tint) var(--nv-glow-strength), transparent); + } + + @media (hover: hover) { + .nv-card--glow.nv-card--interactive:hover { + --_glow: 0 0 var(--nv-glow-blur-lg) var(--nv-glow-spread-md) + color-mix(in oklab, var(--nv-card-tint) var(--nv-glow-strength), transparent); + } + + .nv-card--spotlight:hover { + --_spot: radial-gradient( + 22rem circle at var(--nv-pointer-x, 50%) var(--nv-pointer-y, 0%), + color-mix(in oklab, var(--nv-card-tint) 14%, var(--nv-color-sheen-top)), + transparent 70% + ); + } + } + + /* Cards whose whole area is clickable via a link inside: the link's target is + stretched over the card, so the markup stays semantic and only the link text + is announced. */ + .nv-card__link::after { + content: ""; + position: absolute; + inset: 0; + } + + /* --- Parts ------------------------------------------------------------------- */ + + .nv-card__header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: var(--nv-space-4); + padding: var(--_padding); + padding-block-end: var(--nv-space-3); + } + + .nv-card__title { + font: var(--nv-font-title); + letter-spacing: var(--nv-letter-spacing-tight); + margin: 0; + } + + .nv-card__subtitle { + font: var(--nv-font-caption); + color: var(--nv-color-text-secondary); + margin-block-start: var(--nv-space-1); + } + + .nv-card__body { + flex: 1; + padding: var(--_padding); + color: var(--nv-color-text-secondary); + font: var(--nv-font-body); + } + + /* A header already opened the block, so the body should not open it again. */ + .nv-card__header + .nv-card__body { + padding-block-start: 0; + } + + .nv-card__footer { + display: flex; + align-items: center; + gap: var(--nv-space-2); + padding: var(--_padding); + padding-block-start: var(--nv-space-3); + border-block-start: var(--nv-border-width) solid var(--nv-color-border-subtle); + margin-block-start: auto; + } + + .nv-card__footer--plain { + border-block-start: 0; + padding-block-start: 0; + } + + .nv-card__media { + display: block; + inline-size: 100%; + aspect-ratio: 16 / 9; + object-fit: cover; + background-color: var(--nv-color-surface-inset); + } + + /* --- Group --------------------------------------------------------------------- + Equal-height cards on one rhythm, collapsing to a single column without a + media query. */ + + .nv-card-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(18rem, 100%), 1fr)); + gap: var(--nv-space-4); + align-items: stretch; + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Dialog + -------------------------------------------------------------------------- + Built on the native element, so focus trapping, the top layer, + Escape-to-close and inertness come from the platform rather than from + script. + + … opened with .showModal() + .nv-dialog--sheet enters from the block end + .nv-dialog--wide | --compact width + .nv-dialog__header / __body / __footer / __close + + The dialog is the system's highest material: elevation 4 over a blurred + scrim. It enters by rising and settling, and leaves the way it came — the + motion is what tells the user the surface was always there, above the page. + ========================================================================== */ + + .nv-dialog { + --_width: 30rem; + --_padding: var(--nv-space-6); + + inline-size: min(var(--_width), calc(100vw - var(--nv-space-8))); + max-block-size: min(42rem, calc(100svh - var(--nv-space-12))); + padding: 0; + + /* The dialog sits over a dimmed, blurred page, so it can afford to let a + little of it through: it reads as a pane lifted off the page rather than + a card pasted over it. */ + background-color: color-mix(in oklab, var(--nv-color-surface-elevated) 86%, transparent); + background-image: var(--nv-sheen-surface); + backdrop-filter: var(--nv-backdrop-frosted); + -webkit-backdrop-filter: var(--nv-backdrop-frosted); + color: var(--nv-color-text-primary); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: var(--nv-radius-xl); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-4); + + overflow: hidden; + + /* Closed state. [open] below is the resting state; @starting-style replays + these values for the entrance. */ + /* A dialog should look as though it came from the control that opened it. + nv.openDialog() sets --nv-origin to that control's position relative to + the dialog, so the entrance scale expands away from the trigger rather + than from the middle of the screen. Centred when nothing sets it. */ + transform-origin: var(--nv-origin, 50% 50%); + + opacity: 0; + scale: 0.97; + translate: 0 var(--nv-travel-md); + + transition: + opacity var(--nv-duration-normal) var(--nv-ease-standard), + scale var(--nv-duration-normal) var(--nv-ease-standard), + translate var(--nv-duration-normal) var(--nv-ease-standard), + display var(--nv-duration-normal) allow-discrete, + overlay var(--nv-duration-normal) allow-discrete; + } + + .nv-dialog[open] { + opacity: 1; + scale: 1; + translate: 0; + transition-timing-function: var(--nv-ease-entrance); + } + + @starting-style { + .nv-dialog[open] { + opacity: 0; + scale: 0.97; + translate: 0 var(--nv-travel-md); + } + } + + .nv-dialog::backdrop { + background-color: var(--nv-color-scrim); + backdrop-filter: var(--nv-backdrop-scrim); + -webkit-backdrop-filter: var(--nv-backdrop-scrim); + opacity: 0; + transition: + opacity var(--nv-duration-normal) var(--nv-ease-standard), + display var(--nv-duration-normal) allow-discrete, + overlay var(--nv-duration-normal) allow-discrete; + } + + .nv-dialog[open]::backdrop { + opacity: 1; + } + + @starting-style { + .nv-dialog[open]::backdrop { + opacity: 0; + } + } + + /* showModal() does not stop the page behind from scrolling. */ + html:has(.nv-dialog:modal) { + overflow: hidden; + } + + /* --- Widths -------------------------------------------------------------------- */ + + .nv-dialog--compact { --_width: 24rem; } + .nv-dialog--wide { --_width: 44rem; } + + /* --- Sheet ---------------------------------------------------------------------- + Anchored to the block end and full width. On small screens this is usually + the right form for anything with more than two actions. */ + + .nv-dialog--sheet { + --_width: 34rem; + + /* Flush to the viewport edges — a sheet with side gaps and square bottom + corners reads as a mistake rather than as a sheet. */ + inline-size: min(var(--_width), 100vw); + max-block-size: min(46rem, calc(100svh - var(--nv-space-10))); + margin-block-end: 0; + margin-block-start: auto; + border-start-start-radius: var(--nv-radius-xl); + border-start-end-radius: var(--nv-radius-xl); + border-end-start-radius: 0; + border-end-end-radius: 0; + scale: 1; + translate: 0 var(--nv-travel-lg); + } + + @starting-style { + .nv-dialog--sheet[open] { + scale: 1; + translate: 0 var(--nv-travel-lg); + } + } + + /* --- Parts ------------------------------------------------------------------------ */ + + .nv-dialog__header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: var(--nv-space-4); + padding: var(--_padding); + padding-block-end: var(--nv-space-3); + } + + .nv-dialog__title { + font: var(--nv-font-heading); + font-size: var(--nv-font-size-xl); + letter-spacing: var(--nv-letter-spacing-tight); + margin: 0; + } + + .nv-dialog__description { + font: var(--nv-font-body); + color: var(--nv-color-text-secondary); + margin-block-start: var(--nv-space-2); + } + + .nv-dialog__body { + padding: var(--_padding); + padding-block: var(--nv-space-2); + overflow-y: auto; + overscroll-behavior: contain; + color: var(--nv-color-text-secondary); + } + + .nv-dialog__footer { + display: flex; + align-items: center; + justify-content: flex-end; + gap: var(--nv-space-2); + padding: var(--_padding); + padding-block-start: var(--nv-space-4); + } + + /* A footer over scrollable content needs its own ground: the inset tint and + hairline tell the user there is more above it. */ + .nv-dialog__footer--divided { + background-color: var(--nv-color-background-subtle); + border-block-start: var(--nv-border-width) solid var(--nv-color-border-subtle); + } + + .nv-dialog__close { + flex: none; + margin: calc(var(--nv-space-1) * -1); + } + + /* A dialog laid out as a column keeps its header and footer fixed while only + the body scrolls. */ + .nv-dialog:has(.nv-dialog__body) { + display: flex; + flex-direction: column; + } + + .nv-dialog:not([open]) { + display: none; + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Navigation + -------------------------------------------------------------------------- + .nv-nav horizontal bar, frosted, sticky by default + .nv-nav--vertical sidebar + .nv-nav--plain solid instead of frosted + .nv-nav__brand / __list / __item / __section / __spacer + .nv-nav-tabs in-page tab strip with a sliding indicator + + Navigation is chrome: it sits above content rather than in it. That is why + the bar is frosted and bevelled — the blur is not decoration, it is the + signal that content is passing underneath. A sidebar that scrolls with the page is not + chrome, so .nv-nav--vertical drops the translucency by default. + ========================================================================== */ + + .nv-nav { + position: sticky; + inset-block-start: 0; + z-index: 10; + + display: flex; + align-items: center; + flex-wrap: wrap; + gap: var(--nv-space-2) var(--nv-space-4); + padding: var(--nv-space-2) var(--nv-space-4); + min-block-size: var(--nv-control-height-lg); + background-color: var(--nv-material-frosted-bg); + background-image: var(--nv-sheen-raised); + border-block-end: var(--nv-border-width) solid var(--nv-color-border-subtle); + + /* The travelling selection marker sits behind its item at z-index -1; the + bar has to be its own stacking context or the marker would fall behind + the bar's background and disappear. */ + isolation: isolate; + box-shadow: var(--nv-bevel); + backdrop-filter: var(--nv-backdrop-frosted); + -webkit-backdrop-filter: var(--nv-backdrop-frosted); + transition: var(--nv-transition-surface); + } + + /* The bar only earns a shadow once something is behind it. Set data-scrolled + from the application on scroll. */ + .nv-nav[data-scrolled] { + box-shadow: var(--nv-bevel), var(--nv-elevation-2); + transition: box-shadow var(--nv-duration-normal) var(--nv-ease-standard); + } + + .nv-nav--plain { + background-color: var(--nv-color-surface); + background-image: var(--nv-sheen-raised); + backdrop-filter: none; + -webkit-backdrop-filter: none; + } + + .nv-nav--static { + position: static; + } + + /* A navigation group used inside content rather than as page chrome: no bar, + no border, no blur — just the items and their travelling selection. */ + .nv-nav--inline { + position: static; + display: inline-flex; + min-block-size: 0; + padding: var(--nv-space-1); + + background-color: transparent; + border-block-end: 0; + background-image: none; + box-shadow: none; + backdrop-filter: none; + -webkit-backdrop-filter: none; + } + + .nv-nav__brand { + display: flex; + align-items: center; + gap: var(--nv-space-2); + font: var(--nv-font-title); + letter-spacing: var(--nv-letter-spacing-tight); + color: var(--nv-color-text-primary); + text-decoration: none; + padding-inline: var(--nv-space-1); + } + + .nv-nav__list { + display: flex; + align-items: center; + gap: var(--nv-space-1); + margin: 0; + padding: 0; + list-style: none; + min-inline-size: 0; + /* On a narrow screen a long list scrolls inside the bar instead of pushing + the page sideways. */ + max-inline-size: 100%; + overflow-x: auto; + scrollbar-width: none; + } + + .nv-nav__list::-webkit-scrollbar { + display: none; + } + + .nv-nav__spacer { + flex: 1; + } + + /* --- Item -------------------------------------------------------------------- + Items are flat until they are touched. The active item is the only one with + material, which keeps the bar quiet while still answering "where am I". */ + + .nv-nav__item { + /* Rides above a travelling marker once niveus.js has given it a name. */ + view-transition-class: nv-carried; + + position: relative; + display: flex; + align-items: center; + gap: var(--nv-space-2); + padding: var(--nv-space-2) var(--nv-space-3); + min-block-size: var(--nv-control-height-md); + + border: var(--nv-border-width) solid transparent; + border-radius: var(--nv-radius-md); + background-color: transparent; + + color: var(--nv-color-text-secondary); + font: var(--nv-font-label); + text-decoration: none; + white-space: nowrap; + cursor: pointer; + transition: var(--nv-transition-control); + } + + @media (hover: hover) { + .nv-nav__item:hover { + background-color: var(--nv-color-surface-hover); + color: var(--nv-color-text-primary); + } + } + + .nv-nav__item:active { + background-color: var(--nv-color-surface-active); + box-shadow: var(--nv-elevation-inset-sm); + transition-duration: var(--nv-duration-instant); + } + + .nv-nav__item:focus-visible { + outline: none; + box-shadow: var(--nv-focus-ring); + } + + /* Selection is a material that *moves*. The emphasis lives in a pseudo-element + rather than on the item itself, and carries a view-transition-name: when the + selection changes inside a transition, the browser interpolates the marker's + old box into its new one, so the highlight slides from the previous item to + the next instead of blinking out and in somewhere else. + + Only one item in a group may be selected at a time — that is what keeps the + name unique. A page with several selection groups must give each its own + --nv-selection-name, or the duplicate name aborts the transition. */ + + /* Selection changes color and gains material — but not weight. Bolding the + selected item re-measures its text, which reflows every item beside it on + each change, and makes the old and new labels cross-fade against each other + at different widths. The pill is the cue; the weight was costing a flicker + for nothing. */ + .nv-nav__item[aria-current], + .nv-nav__item--active, + .nv-nav__item[aria-selected="true"] { + color: var(--nv-color-text-primary); + } + + .nv-nav__item[aria-current]::before, + .nv-nav__item--active::before, + .nv-nav__item[aria-selected="true"]::before { + content: ""; + position: absolute; + inset: 0; + z-index: -1; + + background-color: var(--nv-color-surface-elevated); + background-image: var(--nv-sheen-raised); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: inherit; + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1); + view-transition-class: nv-travelling; + } + + /* The marker is named only while its own group is changing (niveus.js sets + data-nv-travelling for the length of the transition). A permanent name + would lift every marker on the page out of the page snapshot on every + transition, theme changes included. */ + [data-nv-travelling] .nv-nav__item[aria-current]::before, + [data-nv-travelling] .nv-nav__item--active::before, + [data-nv-travelling] .nv-nav__item[aria-selected="true"]::before { + view-transition-name: var(--nv-selection-name); + } + + /* Hovering an already-selected item should not restate the emphasis. */ + @media (hover: hover) { + .nv-nav__item[aria-current]:hover, + .nv-nav__item--active:hover, + .nv-nav__item[aria-selected="true"]:hover { + background-color: transparent; + } + } + + .nv-nav__item[aria-disabled="true"] { + color: var(--nv-color-text-disabled); + pointer-events: none; + } + + .nv-nav__icon { + inline-size: 1.15em; + block-size: 1.15em; + flex: none; + opacity: 0.85; + } + + .nv-nav__badge { + margin-inline-start: auto; + padding-inline: var(--nv-space-1-5); + min-inline-size: var(--nv-space-5); + block-size: var(--nv-space-5); + display: inline-flex; + align-items: center; + justify-content: center; + + background-color: var(--nv-color-accent-subtle); + color: var(--nv-color-accent-text); + border-radius: var(--nv-radius-full); + font: var(--nv-font-caption); + font-size: var(--nv-font-size-2xs); + font-weight: var(--nv-font-weight-semibold); + } + + /* --- Vertical ------------------------------------------------------------------ */ + + .nv-nav--vertical { + position: sticky; + inset-block-start: 0; + + flex-direction: column; + align-items: stretch; + gap: var(--nv-space-1); + inline-size: 15rem; + block-size: 100svh; + flex-wrap: nowrap; + padding: var(--nv-space-4) var(--nv-space-3); + /* A sidebar is a pane of the canvas rather than chrome over content, so it + stays mostly opaque — but it lets the light of the canvas through, which + is what stops it reading as a grey slab beside the page. */ + background-color: color-mix(in oklab, var(--nv-color-background-subtle) 72%, transparent); + background-image: var(--nv-sheen-surface); + backdrop-filter: var(--nv-backdrop-frosted); + -webkit-backdrop-filter: var(--nv-backdrop-frosted); + border-block-end: 0; + border-inline-end: var(--nv-border-width) solid var(--nv-color-border-subtle); + box-shadow: none; + overflow-y: auto; + } + + .nv-nav--vertical .nv-nav__list { + flex-direction: column; + align-items: stretch; + gap: var(--nv-space-0-5); + } + + .nv-nav--vertical .nv-nav__item { + justify-content: flex-start; + } + + .nv-nav--vertical .nv-nav__brand { + padding: var(--nv-space-2) var(--nv-space-3); + margin-block-end: var(--nv-space-3); + } + + /* Engraved, like .nv-overline: a section marks a region, it is not read. */ + .nv-nav__section { + padding: var(--nv-space-4) var(--nv-space-3) var(--nv-space-1-5); + font: var(--nv-font-engraved); + letter-spacing: var(--nv-letter-spacing-engraved); + text-transform: uppercase; + color: var(--nv-color-text-tertiary); + } + + .nv-nav__section:first-child { + padding-block-start: 0; + } + + /* --- Tabs ------------------------------------------------------------------------ + For switching views inside a page, not for moving between pages. The strip + itself is inset, so the selected tab reads as lifted out of the track. */ + + .nv-nav-tabs { + display: inline-flex; + align-items: center; + max-inline-size: 100%; + gap: var(--nv-space-0-5); + padding: var(--nv-space-1); + background-color: color-mix(in oklab, var(--nv-color-surface-inset) 80%, transparent); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: var(--nv-radius-md); + box-shadow: var(--nv-elevation-inset-md), var(--nv-ledge); + overflow-x: auto; + scrollbar-width: none; + isolation: isolate; + } + + .nv-nav-tabs::-webkit-scrollbar { + display: none; + } + + .nv-nav-tabs .nv-nav__item { + border-radius: var(--nv-radius-sm); + min-block-size: var(--nv-control-height-sm); + padding-block: var(--nv-space-1); + } + + /* Tabs are a selection group of their own, so they get their own marker name; + sharing the navigation bar's would mean two visible elements with the same + view-transition-name. */ + .nv-nav-tabs { + --nv-selection-name: nv-tabs-selection; + } + + .nv-nav-tabs .nv-nav__item[aria-selected="true"]::before { + border-radius: var(--nv-radius-sm); + } + + /* --- Panels ---------------------------------------------------------------------- + Switching tabs should feel like moving through one surface rather than + swapping the interface. nv.selectTab() gives the outgoing and incoming + panels one shared name for the length of the change, so they hand over + inside the same box — and slide with the direction of travel. The class is + what picks up the content animation in continuity.css. */ + .nv-tab-panel { + view-transition-class: nv-content; + } + + /* --- Breadcrumbs -------------------------------------------------------------------- */ + + .nv-breadcrumbs { + display: flex; + align-items: center; + gap: var(--nv-space-2); + margin: 0; + padding: 0; + list-style: none; + font: var(--nv-font-caption); + color: var(--nv-color-text-tertiary); + } + + .nv-breadcrumbs li + li::before { + content: "/"; + margin-inline-end: var(--nv-space-2); + color: var(--nv-color-border-strong); + } + + .nv-breadcrumbs a { + color: var(--nv-color-text-secondary); + text-decoration: none; + } + + .nv-breadcrumbs a:hover { + color: var(--nv-color-text-primary); + } + + .nv-breadcrumbs [aria-current] { + color: var(--nv-color-text-primary); + font-weight: var(--nv-font-weight-medium); + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Menu + -------------------------------------------------------------------------- + + +
    + +
    + +
    + + A menu has a spatial relationship with the control that opened it: anchor + positioning ties it to the trigger, and it scales out of the trigger's edge + rather than appearing somewhere unrelated. Both sides name the same anchor + through --nv-anchor, so the pair stays obvious in the markup. + + Light dismiss, Escape, and top-layer stacking come from the popover + attribute — none of it is scripted. + ========================================================================== */ + + .nv-menu-trigger { + anchor-name: var(--nv-anchor); + } + + .nv-menu { + position: fixed; + inset: auto; + margin: 0; + padding: var(--nv-space-1); + + min-inline-size: 12rem; + max-inline-size: min(20rem, calc(100vw - var(--nv-space-8))); + max-block-size: min(24rem, calc(100svh - var(--nv-space-12))); + overflow-y: auto; + overscroll-behavior: contain; + + /* Below the trigger, aligned to its inline-start edge, flipping to whichever + side has room. */ + position-anchor: var(--nv-anchor); + position-area: block-end span-inline-end; + position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline; + margin-block-start: var(--nv-space-2); + + background-color: var(--nv-material-frosted-bg); + background-image: var(--nv-sheen-surface); + border: var(--nv-border-width) solid var(--nv-material-frosted-border); + border-radius: var(--nv-radius-lg); + box-shadow: var(--nv-material-frosted-shadow); + backdrop-filter: var(--nv-backdrop-frosted); + -webkit-backdrop-filter: var(--nv-backdrop-frosted); + color: var(--nv-color-text-primary); + + /* Grows from the edge nearest the trigger. */ + transform-origin: center block-start; + + opacity: 0; + scale: 0.96; + translate: 0 calc(var(--nv-travel-sm) * -1); + transition: + opacity var(--nv-duration-quick) var(--nv-ease-standard), + scale var(--nv-duration-quick) var(--nv-ease-entrance), + translate var(--nv-duration-quick) var(--nv-ease-entrance), + display var(--nv-duration-quick) allow-discrete, + overlay var(--nv-duration-quick) allow-discrete; + } + + .nv-menu:popover-open { + opacity: 1; + scale: 1; + translate: 0; + } + + @starting-style { + .nv-menu:popover-open { + opacity: 0; + scale: 0.96; + translate: 0 calc(var(--nv-travel-sm) * -1); + } + } + + /* Without anchor positioning the menu cannot know where its trigger is, so it + falls back to the popover's own centring rather than landing somewhere + arbitrary. The relationship is lost; the usability is not. */ + @supports not (anchor-name: --nv-test) { + .nv-menu { + inset: 0; + margin: auto; + transform-origin: center; + } + } + + /* --- Items -------------------------------------------------------------------- */ + + .nv-menu__item { + display: flex; + align-items: center; + gap: var(--nv-space-2-5); + inline-size: 100%; + padding: var(--nv-space-2) var(--nv-space-2-5); + + background-color: transparent; + border: 0; + border-radius: var(--nv-radius-sm); + color: var(--nv-color-text-secondary); + font: var(--nv-font-label); + text-align: start; + text-decoration: none; + white-space: nowrap; + cursor: pointer; + transition: var(--nv-transition-colors); + } + + @media (hover: hover) { + .nv-menu__item:hover:not(:disabled, [aria-disabled="true"]) { + background-color: var(--nv-color-surface-hover); + color: var(--nv-color-text-primary); + } + } + + .nv-menu__item:focus-visible { + outline: none; + background-color: var(--nv-color-surface-hover); + color: var(--nv-color-text-primary); + box-shadow: var(--nv-focus-ring); + } + + .nv-menu__item--danger { + color: var(--nv-color-danger-text); + } + + @media (hover: hover) { + .nv-menu__item--danger:hover:not(:disabled, [aria-disabled="true"]) { + background-color: var(--nv-color-danger-subtle); + color: var(--nv-color-danger-text); + } + } + + .nv-menu__item:disabled, + .nv-menu__item[aria-disabled="true"] { + color: var(--nv-color-text-disabled); + cursor: not-allowed; + } + + .nv-menu__item[aria-checked="true"]::before { + content: ""; + inline-size: 0.28em; + block-size: 0.55em; + margin-inline-end: var(--nv-space-1); + translate: 0 -0.12em; + rotate: 45deg; + border-inline-end: 2px solid var(--nv-color-accent); + border-block-end: 2px solid var(--nv-color-accent); + } + + .nv-menu__shortcut { + margin-inline-start: auto; + padding-inline-start: var(--nv-space-4); + color: var(--nv-color-text-tertiary); + font: var(--nv-font-caption); + } + + .nv-menu__separator { + border: 0; + border-block-start: var(--nv-border-width) solid var(--nv-color-border-subtle); + margin: var(--nv-space-1) 0; + } + + .nv-menu__label { + padding: var(--nv-space-2) var(--nv-space-2-5) var(--nv-space-1); + font: var(--nv-font-caption); + font-weight: var(--nv-font-weight-semibold); + letter-spacing: var(--nv-letter-spacing-wider); + text-transform: uppercase; + color: var(--nv-color-text-tertiary); + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Disclosure + -------------------------------------------------------------------------- +
    + … +
    …
    +
    + + Content expands out of the row that revealed it, at the position it already + occupies, rather than appearing at full height. The height animates because + the continuity layer turns on `interpolate-size`, which is what lets + block-size: auto take part in a transition — no measurement, no script, and + no wrapper whose height has to be kept in sync. + + .nv-collapse in continuity.css covers the same relationship for markup that + cannot be a
    . + ========================================================================== */ + + .nv-disclosure { + --_padding: var(--nv-space-4); + + background-color: var(--nv-color-surface); + background-image: var(--nv-sheen-surface); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: var(--nv-radius-lg); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1); + transition: var(--nv-transition-surface); + } + + .nv-disclosure--plain { + background-color: transparent; + border-color: transparent; + box-shadow: none; + } + + .nv-disclosure__summary { + display: flex; + align-items: center; + gap: var(--nv-space-3); + padding: var(--nv-space-3) var(--_padding); + + font: var(--nv-font-label); + color: var(--nv-color-text-primary); + border-radius: inherit; + cursor: pointer; + user-select: none; + list-style: none; + transition: var(--nv-transition-colors); + } + + /* Both spellings are needed to suppress the native marker. */ + .nv-disclosure__summary::marker, + .nv-disclosure__summary::-webkit-details-marker { + display: none; + content: ""; + } + + @media (hover: hover) { + .nv-disclosure__summary:hover { + background-color: var(--nv-color-surface-hover); + } + } + + .nv-disclosure__summary:focus-visible { + outline: none; + box-shadow: var(--nv-focus-ring); + } + + /* The chevron turns rather than swapping to a different glyph — the rotation + is what says "this is the same control in its other state". */ + .nv-disclosure__chevron { + inline-size: 0.5em; + block-size: 0.5em; + margin-inline-start: auto; + margin-block-start: -0.2em; + flex: none; + + border-inline-end: 1.5px solid var(--nv-color-text-tertiary); + border-block-end: 1.5px solid var(--nv-color-text-tertiary); + rotate: 45deg; + transition: rotate var(--nv-duration-normal) var(--nv-ease-standard); + } + + .nv-disclosure[open] .nv-disclosure__chevron { + rotate: 225deg; + margin-block-start: 0.15em; + } + + .nv-disclosure__body { + padding: 0 var(--_padding) var(--_padding); + color: var(--nv-color-text-secondary); + font: var(--nv-font-body); + } + + /* The element the browser creates for a
    body. Transitioning + content-visibility as a discrete property is what keeps the content + rendered while it collapses, instead of vanishing on the first frame. */ + .nv-disclosure::details-content { + block-size: 0; + overflow: hidden; + opacity: 0; + transition: + block-size var(--nv-duration-expand) var(--nv-ease-standard), + opacity var(--nv-duration-expand) var(--nv-ease-standard), + content-visibility var(--nv-duration-expand) allow-discrete; + } + + .nv-disclosure[open]::details-content { + block-size: auto; + opacity: 1; + } + + /* Stacked disclosures read as one control surface, so only the outer corners + round and neighbours share a single hairline. */ + .nv-disclosure-group { + display: flex; + flex-direction: column; + } + + /* The negative margin collapses each pair of adjacent borders into a single + hairline, so neighbours are separated once rather than twice. */ + .nv-disclosure-group > .nv-disclosure:not(:first-child) { + border-start-start-radius: 0; + border-start-end-radius: 0; + margin-block-start: calc(var(--nv-border-width) * -1); + } + + .nv-disclosure-group > .nv-disclosure:not(:last-child) { + border-end-start-radius: 0; + border-end-end-radius: 0; + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Scroller + -------------------------------------------------------------------------- +
    +
    …cards…
    + + +
    + + A row of content that continues past its frame. Two things make that + readable rather than merely clipped: the edges fade, so the row visibly runs + under them instead of being cut, and snapping lands each item at the same + place every time — so moving left and right returns you to positions you + have already seen rather than to arbitrary offsets. + + Scrolling works with no script at all: wheel, trackpad, touch and keyboard + are the browser's. The buttons are an affordance for pointers that have no + horizontal axis, and niveus.js wires them. + ========================================================================== */ + + .nv-scroller-frame { + position: relative; + } + + .nv-scroller { + --nv-scroller-item: 18rem; + --nv-scroller-fade: var(--nv-space-8); + + display: flex; + gap: var(--nv-space-4); + overflow-x: auto; + overscroll-behavior-inline: contain; + + /* Room for items to lift on hover without being clipped by the scroll box. */ + padding-block: var(--nv-space-2); + + scroll-snap-type: inline mandatory; + scroll-padding-inline: var(--nv-space-1); + scroll-behavior: smooth; + scrollbar-width: none; + + /* The row runs under its own edges rather than stopping at them — but only + on the side where there is actually more to see. A fade at an end the row + has already reached is a lie about the content. niveus.js marks the ends; + with no script both sides fade, which is the safe default. */ + mask-image: linear-gradient( + to right, + transparent, + black var(--nv-scroller-fade), + black calc(100% - var(--nv-scroller-fade)), + transparent + ); + } + + .nv-scroller-frame[data-nv-at-start] .nv-scroller { + mask-image: linear-gradient( + to right, + black calc(100% - var(--nv-scroller-fade)), + transparent + ); + } + + .nv-scroller-frame[data-nv-at-end] .nv-scroller { + mask-image: linear-gradient(to right, transparent, black var(--nv-scroller-fade)); + } + + .nv-scroller-frame[data-nv-at-start][data-nv-at-end] .nv-scroller { + mask-image: none; + } + + .nv-scroller::-webkit-scrollbar { + display: none; + } + + .nv-scroller > * { + flex: 0 0 auto; + inline-size: min(var(--nv-scroller-item), 78%); + scroll-snap-align: start; + } + + /* Items that should size to their content rather than to the track. */ + .nv-scroller--auto > * { + inline-size: auto; + } + + @media (prefers-reduced-motion: reduce) { + .nv-scroller { + scroll-behavior: auto; + } + } + + /* --- Controls ------------------------------------------------------------ + Centred on the row's block axis and pulled half outside it, so they read as + belonging to the frame rather than floating over the content. */ + + .nv-scroller-frame [data-nv-scroll] { + position: absolute; + inset-block-start: 50%; + z-index: 1; + + /* Read by .nv-button--float, which keeps it through hover and press. */ + --nv-button-offset: 0 -50%; + } + + /* Belt and braces: the frame knows these controls float, so their centring + survives even if the markup forgets --float. */ + .nv-scroller-frame [data-nv-scroll], + .nv-scroller-frame [data-nv-scroll]:hover, + .nv-scroller-frame [data-nv-scroll]:active { + translate: var(--nv-button-offset); + } + + .nv-scroller-frame [data-nv-scroll="prev"] { + inset-inline-start: calc(var(--nv-space-4) * -1); + } + + .nv-scroller-frame [data-nv-scroll="next"] { + inset-inline-end: calc(var(--nv-space-4) * -1); + } + + /* At either end the control has nothing left to do, and says so. */ + .nv-scroller-frame [data-nv-scroll]:disabled { + opacity: 0; + pointer-events: none; + } + + @media (hover: none) { + .nv-scroller-frame [data-nv-scroll] { + display: none; + } + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Bed + -------------------------------------------------------------------------- +
    …
    + + A bed is ground that is visibly *not* ordinary background. Where a card says + "this content belongs together", a bed says "what sits here is different in + kind" — a feature being shown off, a preview, a sandbox, an empty state, a + region under explanation. + + It reads that way because of what it does to the materials on top of it: the + hatch and the soft color blooms give translucent surfaces something to be + translucent *against*, and give shadows something to fall on. A frosted panel + over a flat grey proves nothing; over a bed it is obvious. + + That is also the rule for using one. A bed is for regions the user should + look *at*. Put content they need to work *through* on a plain surface — + patterning behind a form or a table is noise, and the calm is the point. + + Everything it is made of derives from the accent, so it follows the brand. + Set --nv-bed-tint to lead with a different color. + ========================================================================== */ + + .nv-bed { + --nv-bed-tint: var(--nv-color-accent); + --_bloom: 16%; + --_hatch: var(--nv-color-border-subtle); + + position: relative; + padding: var(--nv-space-6); + + background-color: var(--nv-color-background-subtle); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: var(--nv-radius-xl); + + /* The hatch sits over the blooms, and both sit under the content: three + background layers rather than a pseudo-element, so nothing has to be + lifted out of the way. */ + background-image: + repeating-linear-gradient( + 45deg, + var(--_hatch) 0 2px, + transparent 2px 14px + ), + radial-gradient( + 60% 80% at 15% 20%, + color-mix(in oklab, var(--nv-bed-tint) var(--_bloom), transparent), + transparent 70% + ), + radial-gradient( + 50% 70% at 85% 25%, + color-mix(in oklab, var(--nv-color-danger) calc(var(--_bloom) * 0.7), transparent), + transparent 70% + ), + radial-gradient( + 70% 90% at 50% 100%, + color-mix(in oklab, var(--nv-color-success) calc(var(--_bloom) * 0.7), transparent), + transparent 70% + ); + + overflow: hidden; + isolation: isolate; + transition: var(--nv-transition-surface); + } + + /* Just the ground, no weather: for grouping a region without drawing the eye + to it. */ + .nv-bed--quiet { + --_bloom: 8%; + --_hatch: transparent; + } + + .nv-bed--vivid { + --_bloom: 26%; + } + + /* One color instead of three — a bed that belongs to a single state. */ + .nv-bed--single { + background-image: + repeating-linear-gradient(45deg, var(--_hatch) 0 2px, transparent 2px 14px), + radial-gradient( + 80% 100% at 30% 0%, + color-mix(in oklab, var(--nv-bed-tint) var(--_bloom), transparent), + transparent 75% + ); + } + + .nv-bed--flush { + border-radius: 0; + border-inline: 0; + } + + .nv-bed__label { + display: block; + margin-block-end: var(--nv-space-4); + font: var(--nv-font-caption); + font-weight: var(--nv-font-weight-semibold); + letter-spacing: var(--nv-letter-spacing-wider); + text-transform: uppercase; + color: var(--nv-color-text-tertiary); + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Badge + -------------------------------------------------------------------------- + In stock + 3 failing + Draft + + A small, non-interactive statement of state. Subtle by default, because a + badge is almost always beside something more important than itself; --solid + is for the one badge in a view that must be seen before anything else. + + If it can be clicked it is not a badge — that is a button, probably + .nv-button--pill --sm. + ========================================================================== */ + + .nv-badge { + --_bg: var(--nv-color-surface-inset); + --_fg: var(--nv-color-text-secondary); + --_border: var(--nv-color-border); + --_solid-bg: var(--nv-color-text-secondary); + --_solid-fg: var(--nv-color-surface); + + display: inline-flex; + align-items: center; + gap: var(--nv-space-1-5); + + block-size: var(--nv-space-5); + padding-inline: var(--nv-space-2); + + background-color: var(--_bg); + color: var(--_fg); + border: var(--nv-border-width) solid var(--_border); + border-radius: var(--nv-radius-full); + + font: var(--nv-font-caption); + font-weight: var(--nv-font-weight-semibold); + white-space: nowrap; + transition: var(--nv-transition-colors); + } + + .nv-badge--accent { + --_bg: var(--nv-color-accent-subtle); + --_fg: var(--nv-color-accent-text); + --_border: var(--nv-color-accent-border); + --_solid-bg: var(--nv-color-accent); + --_solid-fg: var(--nv-color-on-accent); + } + + .nv-badge--success { + --_bg: var(--nv-color-success-subtle); + --_fg: var(--nv-color-success-text); + --_border: var(--nv-color-success-border); + --_solid-bg: var(--nv-color-success); + --_solid-fg: var(--nv-color-on-success); + } + + .nv-badge--warning { + --_bg: var(--nv-color-warning-subtle); + --_fg: var(--nv-color-warning-text); + --_border: var(--nv-color-warning-border); + --_solid-bg: var(--nv-color-warning); + --_solid-fg: var(--nv-color-on-warning); + } + + .nv-badge--danger { + --_bg: var(--nv-color-danger-subtle); + --_fg: var(--nv-color-danger-text); + --_border: var(--nv-color-danger-border); + --_solid-bg: var(--nv-color-danger); + --_solid-fg: var(--nv-color-on-danger); + } + + /* Declared after the colors so it wins for --_bg; the color modifier is still + what decides which solid pair it reads. */ + .nv-badge--solid { + --_bg: var(--_solid-bg); + --_fg: var(--_solid-fg); + --_border: transparent; + background-image: var(--nv-sheen-filled); + box-shadow: var(--nv-highlight-top); + } + + .nv-badge--square { + border-radius: var(--nv-radius-xs); + } + + /* Counts read better without a border, and with room for two digits. */ + .nv-badge--count { + min-inline-size: var(--nv-space-5); + padding-inline: var(--nv-space-1-5); + justify-content: center; + border-color: transparent; + font-size: var(--nv-font-size-2xs); + font-variant-numeric: tabular-nums; + } + + .nv-badge__dot { + inline-size: var(--nv-space-1-5); + block-size: var(--nv-space-1-5); + border-radius: var(--nv-radius-full); + background-color: currentColor; + flex: none; + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Table + -------------------------------------------------------------------------- +
    + …
    +
    + + Rows of the same kind of thing. The frame handles the overflow, because a + table is the one component that legitimately refuses to get narrower — it + scrolls sideways inside its frame rather than forcing the page to. + + Numbers belong in .nv-table__number: aligned to the end and set in tabular + figures, so columns of digits line up and can be compared by eye. + ========================================================================== */ + + .nv-table-frame { + inline-size: 100%; + overflow-x: auto; + overscroll-behavior-inline: contain; + } + + .nv-table { + inline-size: 100%; + border-collapse: collapse; + font: var(--nv-font-body); + text-align: start; + } + + .nv-table th { + padding: var(--nv-space-2-5) var(--nv-space-4); + font: var(--nv-font-caption); + font-weight: var(--nv-font-weight-semibold); + letter-spacing: var(--nv-letter-spacing-wide); + color: var(--nv-color-text-tertiary); + text-align: start; + white-space: nowrap; + border-block-end: var(--nv-border-width) solid var(--nv-color-border); + } + + .nv-table td { + padding: var(--nv-space-3) var(--nv-space-4); + color: var(--nv-color-text-secondary); + border-block-end: var(--nv-border-width) solid var(--nv-color-border-subtle); + vertical-align: middle; + } + + /* The first cell in a row names it, so it carries the reading weight. */ + .nv-table td:first-child { + color: var(--nv-color-text-primary); + font-weight: var(--nv-font-weight-medium); + } + + .nv-table tbody tr:last-child td { + border-block-end: 0; + } + + @media (hover: hover) { + .nv-table tbody tr { + transition: var(--nv-transition-colors); + } + + .nv-table tbody tr:hover { + background-color: var(--nv-color-surface-hover); + } + } + + .nv-table__number { + text-align: end; + font-variant-numeric: tabular-nums; + } + + .nv-table__actions { + inline-size: 1%; + white-space: nowrap; + text-align: end; + } + + .nv-table--compact th { + padding-block: var(--nv-space-2); + } + + .nv-table--compact td { + padding-block: var(--nv-space-2); + } + + /* Rows that lead somewhere. Same physical language as an interactive card: + it responds to a pointer, so it must look like it can be pressed. */ + .nv-table--interactive tbody tr { + cursor: pointer; + } + + .nv-table--interactive tbody tr:focus-visible { + outline: none; + box-shadow: var(--nv-focus-ring); + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Window + -------------------------------------------------------------------------- + .nv-window a framed application window + .nv-window--inactive a window that does not have focus + .nv-window__titlebar controls · title · trailing actions + .nv-window__controls the three lights, at the start of the bar + .nv-window__control one light: --close, --minimize or --zoom + .nv-window__title the window's name, centered on the bar + .nv-window__actions trailing slot for a few ghost buttons + .nv-window__body the content area + +
    +
    +
    + + + +
    + Settings +
    +
    …
    +
    + + A window is a solid object: the content it holds never sits on glass. Its + titlebar is a raised strip lit like a control, and the controls are three + lights at its start — close, minimize, zoom — always in that order and in + those colors, because people find them by position and color before they + read anything. Their glyphs appear only while the pointer is over the + group. An inactive window greys its lights and steps back one elevation, + and the lights regain their color the moment they are hovered. + ========================================================================== */ + + .nv-window { + display: flex; + flex-direction: column; + min-inline-size: 0; + + background-color: var(--nv-color-surface); + background-image: var(--nv-sheen-surface); + color: var(--nv-color-text-primary); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: var(--nv-radius-xl); + box-shadow: var(--nv-highlight-top), var(--nv-outline), var(--nv-elevation-4); + + overflow: hidden; + transition: var(--nv-transition-surface); + } + + .nv-window--inactive { + box-shadow: var(--nv-highlight-top), var(--nv-outline), var(--nv-elevation-3); + } + + /* --- Titlebar --------------------------------------------------------------- + Three columns with the outer two sharing the slack, so the title stays on + the window's center line whatever the controls and actions measure. */ + + .nv-window__titlebar { + display: grid; + grid-template-columns: 1fr auto 1fr; + align-items: center; + gap: var(--nv-space-3); + /* Slim, as titlebars on the desktop are: tall enough for the lights and + a label, not a toolbar's height. */ + min-block-size: calc(var(--nv-control-height-sm) + var(--nv-space-1)); + padding-inline: var(--nv-space-3); + + background-color: var(--nv-color-surface-elevated); + background-image: var(--nv-sheen-raised); + border-block-end: var(--nv-border-width) solid var(--nv-color-border-subtle); + box-shadow: var(--nv-highlight-top); + user-select: none; + } + + .nv-window__title { + grid-column: 2; + min-inline-size: 0; + overflow: hidden; + font: var(--nv-font-label); + font-weight: var(--nv-font-weight-semibold); + color: var(--nv-color-text-primary); + text-overflow: ellipsis; + white-space: nowrap; + } + + .nv-window--inactive .nv-window__title { + color: var(--nv-color-text-tertiary); + } + + .nv-window__actions { + grid-column: 3; + justify-self: end; + display: flex; + align-items: center; + gap: var(--nv-space-1); + } + + /* --- Controls ----------------------------------------------------------------- */ + + .nv-window__controls { + grid-column: 1; + justify-self: start; + display: flex; + align-items: center; + gap: var(--nv-space-2); + } + + .nv-window__control { + --_light: var(--nv-color-window-close); + --_c: var(--_light); + + position: relative; + flex: none; + inline-size: var(--nv-space-3); + block-size: var(--nv-space-3); + margin: 0; + padding: 0; + + background-color: var(--_c); + background-image: var(--nv-sheen-filled); + border: 0; + border-radius: var(--nv-radius-full); + box-shadow: inset 0 0 0 var(--nv-border-width) var(--nv-color-window-control-ring); + + cursor: pointer; + appearance: none; + -webkit-tap-highlight-color: transparent; + transition: var(--nv-transition-colors); + } + + .nv-window__control--minimize { --_light: var(--nv-color-window-minimize); } + .nv-window__control--zoom { --_light: var(--nv-color-window-zoom); } + + /* The glyph is two bars drawn from the light's center: crossed for close, one + for minimize, a plus for zoom. They are always present and fade in, so the + whole group reveals at once instead of one glyph at a time. */ + .nv-window__control::before, + .nv-window__control::after { + content: ""; + position: absolute; + inset-block-start: 50%; + inset-inline-start: 50%; + inline-size: 55%; + block-size: calc(var(--nv-border-width) * 1.5); + translate: -50% -50%; + background-color: var(--nv-color-window-glyph); + border-radius: var(--nv-radius-full); + opacity: 0; + transition: opacity var(--nv-duration-fast) var(--nv-ease-standard); + } + + .nv-window__control--close::before { rotate: 45deg; } + .nv-window__control--close::after { rotate: -45deg; } + .nv-window__control--minimize::after { display: none; } + .nv-window__control--zoom::after { rotate: 90deg; } + + .nv-window__controls:hover .nv-window__control::before, + .nv-window__controls:hover .nv-window__control::after, + .nv-window__controls:focus-within .nv-window__control::before, + .nv-window__controls:focus-within .nv-window__control::after { + opacity: 1; + } + + .nv-window__control:active { + background-image: none; + box-shadow: + inset 0 0 0 var(--nv-border-width) var(--nv-color-window-control-ring), + var(--nv-elevation-inset-sm); + } + + .nv-window__control:focus-visible { + outline: none; + box-shadow: + inset 0 0 0 var(--nv-border-width) var(--nv-color-window-control-ring), + var(--nv-focus-ring); + } + + .nv-window--inactive .nv-window__control { + --_c: var(--nv-color-window-inactive); + } + + .nv-window--inactive .nv-window__controls:hover .nv-window__control { + --_c: var(--_light); + } + + /* --- Body --------------------------------------------------------------------- */ + + .nv-window__body { + flex: 1; + min-block-size: 0; + overflow: auto; + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Tile + -------------------------------------------------------------------------- + + + A tile is a small raised key that holds one glyph: the icon beside a + feature, the mark of a product, the symbol on a stat. It is the physical + version of an icon — something with an edge you could press — which is why + a row of features reads as a set of objects rather than as clip art. + + .nv-tile soft key: tinted face, the glyph in its tint + .nv-tile--solid filled key: saturated face, a light glyph + .nv-tile--glow the key is lit from inside + .nv-tile--sm / --lg / --xl + + Everything derives from --nv-tile-tint, the accent unless set. A tile is + not a button: if it does something, it is an .nv-button--icon. + ========================================================================== */ + + .nv-tile { + --nv-tile-tint: var(--nv-color-accent); + --_size: 2.75rem; + --_radius: var(--nv-radius-md); + --_bg: color-mix(in oklab, var(--nv-tile-tint) 16%, var(--nv-color-surface-elevated)); + --_ink: color-mix(in oklab, var(--nv-tile-tint) 70%, var(--nv-color-text-primary)); + --_sheen: var(--nv-sheen-raised); + --_glow: 0 0 transparent; + + position: relative; + display: inline-grid; + place-items: center; + flex: none; + inline-size: var(--_size); + block-size: var(--_size); + + background-color: var(--_bg); + background-image: var(--_sheen); + color: var(--_ink); + border: var(--nv-border-width) solid color-mix(in oklab, var(--nv-tile-tint) 30%, var(--nv-color-border-subtle)); + border-radius: var(--_radius); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1), var(--_glow); + transition: var(--nv-transition-surface); + } + + /* Glyphs take half the key; a mark that is itself a picture (an image, a + logo) fills it, clipped to the key's corners. */ + .nv-tile > svg { + inline-size: 50%; + block-size: 50%; + } + + .nv-tile > img { + inline-size: 100%; + block-size: 100%; + border-radius: inherit; + object-fit: cover; + } + + .nv-tile--solid { + --_bg: var(--nv-tile-tint); + --_ink: var(--nv-color-on-accent); + --_sheen: var(--nv-sheen-filled); + } + + .nv-tile--glow { + --_glow: 0 0 var(--nv-glow-blur-md) var(--nv-glow-spread-sm) + color-mix(in oklab, var(--nv-tile-tint) var(--nv-glow-strength), transparent); + } + + .nv-tile--sm { + --_size: 2rem; + --_radius: var(--nv-radius-sm); + } + + .nv-tile--lg { + --_size: 3.5rem; + --_radius: var(--nv-radius-lg); + } + + .nv-tile--xl { + --_size: 4.5rem; + --_radius: var(--nv-radius-xl); + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Avatar + -------------------------------------------------------------------------- + + NX + + A person, as a round raised disc: an image when there is one, initials when + there is not. The disc is lit like a knob — highlight above, shade below — + so a face reads as something set into the interface, not pasted onto it. + + .nv-avatar--ring a ring in the tint, set off by a gap of surface + .nv-avatar--glow the ring gives off its tint + .nv-avatar--sm / --lg / --xl + .nv-avatar__status presence dot; --online lights it + .nv-avatar-group overlapping row of avatars + + --nv-avatar-tint picks the ring color; the accent unless set. + ========================================================================== */ + + .nv-avatar { + --nv-avatar-tint: var(--nv-color-accent); + --_size: 2.5rem; + --_ring: 0 0 transparent; + --_glow: 0 0 transparent; + + position: relative; + display: inline-grid; + place-items: center; + flex: none; + inline-size: var(--_size); + block-size: var(--_size); + + background-color: var(--nv-color-surface-elevated); + background-image: var(--nv-sheen-raised); + color: var(--nv-color-text-secondary); + font: var(--nv-font-label); + font-weight: var(--nv-font-weight-semibold); + border-radius: var(--nv-radius-full); + box-shadow: var(--_ring), var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1), var(--_glow); + user-select: none; + } + + .nv-avatar > img { + inline-size: 100%; + block-size: 100%; + border-radius: inherit; + object-fit: cover; + } + + /* The gap is drawn in the surface color, so the ring reads as a separate band + sitting around the disc rather than as a thick border painted onto it. */ + .nv-avatar--ring, + .nv-avatar--glow { + --_ring: + 0 0 0 2px var(--nv-color-surface), + 0 0 0 4px var(--nv-avatar-tint); + } + + .nv-avatar--glow { + --_glow: 0 0 var(--nv-glow-blur-md) var(--nv-glow-spread-sm) + color-mix(in oklab, var(--nv-avatar-tint) var(--nv-glow-strength), transparent); + } + + .nv-avatar--sm { + --_size: 1.75rem; + font: var(--nv-font-caption); + } + + .nv-avatar--lg { + --_size: 4rem; + font: var(--nv-font-title); + } + + .nv-avatar--xl { + --_size: 6rem; + font: var(--nv-font-heading); + } + + /* --- Status ------------------------------------------------------------------ */ + + .nv-avatar__status { + position: absolute; + inset-block-end: 4%; + inset-inline-end: 4%; + inline-size: max(0.625rem, 24%); + block-size: max(0.625rem, 24%); + border-radius: var(--nv-radius-full); + background-color: var(--nv-color-text-tertiary); + box-shadow: 0 0 0 2px var(--nv-color-surface); + } + + .nv-avatar__status--online { + background-color: var(--nv-color-success); + box-shadow: + 0 0 0 2px var(--nv-color-surface), + 0 0 var(--nv-glow-blur-sm) var(--nv-glow-spread-sm) + color-mix(in oklab, var(--nv-color-success) var(--nv-glow-strength), transparent); + } + + /* --- Group ----------------------------------------------------------------------- */ + + .nv-avatar-group { + display: inline-flex; + align-items: center; + } + + .nv-avatar-group > .nv-avatar { + box-shadow: 0 0 0 2px var(--nv-color-surface), var(--nv-bevel), var(--nv-elevation-1); + } + + .nv-avatar-group > .nv-avatar + .nv-avatar { + margin-inline-start: calc(var(--_size) * -0.3); + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Stat + -------------------------------------------------------------------------- +
    +
    +
    Servers
    +
    1,204
    +
    +
    + + A number the user is meant to read at a glance. A group of stats is set into + one shallow well, like the readout panel of an instrument: the figures sit + behind the surface, separated by hairlines, so a row of numbers reads as one + display instead of as four loose labels. + + .nv-stat-group the readout well; wraps without a media query + .nv-stat one reading + .nv-stat__label what is measured + .nv-stat__value the figure, in tabular numerals + .nv-stat__delta change since last time; --up / --down + ========================================================================== */ + + .nv-stat-group { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(8rem, 100%), 1fr)); + /* The hairlines between readings are the well itself showing through a + one-pixel gap, so they stay continuous however the row wraps. */ + gap: var(--nv-border-width); + margin: 0; + background-color: var(--nv-color-border-subtle); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: var(--nv-radius-lg); + box-shadow: var(--nv-elevation-inset-md), var(--nv-ledge); + overflow: hidden; + } + + .nv-stat { + display: flex; + flex-direction: column; + gap: var(--nv-space-1); + min-inline-size: 0; + padding: var(--nv-space-4) var(--nv-space-5); + } + + .nv-stat-group > .nv-stat { + background-color: var(--nv-color-surface-inset); + } + + .nv-stat__label { + font: var(--nv-font-caption); + color: var(--nv-color-text-tertiary); + } + + .nv-stat__value { + margin: 0; + font: var(--nv-font-heading); + font-variant-numeric: tabular-nums; + letter-spacing: var(--nv-letter-spacing-tight); + color: var(--nv-color-text-primary); + } + + .nv-stat__delta { + font: var(--nv-font-caption); + font-variant-numeric: tabular-nums; + color: var(--nv-color-text-secondary); + } + + .nv-stat__delta--up { + color: var(--nv-color-success); + } + + .nv-stat__delta--down { + color: var(--nv-color-danger); + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Steps + -------------------------------------------------------------------------- +
      +
    1. + 1 +
      +

      Listen

      +

      …

      +
      +
    2. +
    + + A sequence the user moves through: a process, an onboarding, an order's + progress. The steps sit on a rail — a groove cut into the surface — with + each marker a raised knob set into it. Finished steps light their stretch + of the rail, so progress reads as something filling up rather than as a + row of ticks. + + .nv-steps horizontal; becomes vertical on narrow screens + .nv-steps--vertical always vertical + data-state="done" the step and its stretch of rail are lit + aria-current="step" the step in progress: lit marker, rail still dark + ========================================================================== */ + + .nv-steps { + --_marker: 2.25rem; + --_rail: 6px; + --_gap: var(--nv-space-4); + + display: grid; + grid-auto-flow: column; + grid-auto-columns: minmax(0, 1fr); + gap: var(--_gap); + margin: 0; + padding: 0; + list-style: none; + } + + .nv-steps__item { + position: relative; + display: flex; + flex-direction: column; + gap: var(--nv-space-3); + min-inline-size: 0; + } + + /* Each step draws the rail from its own marker to the next one, so a finished + step can light exactly its stretch and the rail never runs past the end. */ + .nv-steps__item:not(:last-child)::before { + content: ""; + position: absolute; + inset-block-start: calc((var(--_marker) - var(--_rail)) / 2); + inset-inline-start: calc(var(--_marker) / 2); + inline-size: calc(100% + var(--_gap)); + block-size: var(--_rail); + border-radius: var(--nv-radius-full); + background-color: var(--nv-color-surface-inset); + box-shadow: var(--nv-elevation-inset-sm), var(--nv-ledge); + transition: var(--nv-transition-surface); + } + + .nv-steps__item[data-state="done"]:not(:last-child)::before { + background-color: var(--nv-color-accent); + background-image: var(--nv-sheen-filled); + box-shadow: var(--nv-glow-sm); + } + + .nv-steps__marker { + position: relative; + z-index: 1; + display: grid; + place-items: center; + flex: none; + inline-size: var(--_marker); + block-size: var(--_marker); + + background-color: var(--nv-color-surface-elevated); + background-image: var(--nv-sheen-raised); + color: var(--nv-color-text-secondary); + font: var(--nv-font-label); + font-weight: var(--nv-font-weight-semibold); + font-variant-numeric: tabular-nums; + border-radius: var(--nv-radius-full); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2); + transition: var(--nv-transition-surface); + } + + .nv-steps__item[data-state="done"] > .nv-steps__marker, + .nv-steps__item[aria-current="step"] > .nv-steps__marker { + background-color: var(--nv-color-accent); + background-image: var(--nv-sheen-filled); + color: var(--nv-color-on-accent); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2), var(--nv-glow-md); + } + + .nv-steps__body { + display: flex; + flex-direction: column; + gap: var(--nv-space-1); + min-inline-size: 0; + } + + .nv-steps__title { + margin: 0; + font: var(--nv-font-title); + letter-spacing: var(--nv-letter-spacing-tight); + color: var(--nv-color-text-primary); + } + + .nv-steps__text { + margin: 0; + font: var(--nv-font-caption); + color: var(--nv-color-text-secondary); + } + + /* --- Vertical ------------------------------------------------------------------- + Marker beside the text and the rail running down between markers. Also what + a horizontal sequence becomes once its columns are too narrow to read. */ + + .nv-steps--vertical { + grid-auto-flow: row; + grid-auto-columns: auto; + --_gap: var(--nv-space-5); + } + + .nv-steps--vertical > .nv-steps__item { + flex-direction: row; + gap: var(--nv-space-4); + } + + .nv-steps--vertical > .nv-steps__item:not(:last-child)::before { + inset-block-start: calc(var(--_marker) / 2); + inset-inline-start: calc((var(--_marker) - var(--_rail)) / 2); + inline-size: var(--_rail); + block-size: calc(100% + var(--_gap)); + } + + @media (max-width: 40rem) { + .nv-steps { + grid-auto-flow: row; + grid-auto-columns: auto; + --_gap: var(--nv-space-5); + } + + .nv-steps > .nv-steps__item { + flex-direction: row; + gap: var(--nv-space-4); + } + + .nv-steps > .nv-steps__item:not(:last-child)::before { + inset-block-start: calc(var(--_marker) / 2); + inset-inline-start: calc((var(--_marker) - var(--_rail)) / 2); + inline-size: var(--_rail); + block-size: calc(100% + var(--_gap)); + } + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Deck + -------------------------------------------------------------------------- +
    +
    …
    + + +
    + + One surface in front of others of its kind: the current item of a set that + has more behind it. The layers are cards seen edge-on, stepping back and + dimming with distance, so the set has depth without anything having to + move. Use it where "there are more of these" is part of the message — a + showcase of products, a stack of notifications, a carousel at rest. + + Everything in the deck shares one grid cell. The front surface is any + element; the layers are decorative and hidden from assistive technology. + Panels that swap (an .nv-tab-panel set) can live in the deck together: + the hidden ones take no space. + ========================================================================== */ + + .nv-deck { + --_step: var(--nv-space-3); + + display: grid; + position: relative; + isolation: isolate; + /* Room above the front surface for the layers that peek out behind it. */ + padding-block-start: calc(var(--_step) * 2); + } + + .nv-deck > * { + grid-area: 1 / 1; + min-inline-size: 0; + } + + .nv-deck__layer { + --_depth: 1; + + z-index: -1; + pointer-events: none; + background-color: color-mix(in oklab, var(--nv-color-surface) 90%, transparent); + background-image: var(--nv-sheen-surface); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: var(--nv-radius-lg); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1); + translate: 0 calc(var(--_step) * var(--_depth) * -1); + scale: calc(1 - var(--_depth) * 0.05) 1; + opacity: calc(1 - var(--_depth) * 0.3); + } + + .nv-deck__layer + .nv-deck__layer { + --_depth: 2; + z-index: -2; + } +} +@layer niveus.components { + /* ========================================================================== + Niveus — Skeleton + -------------------------------------------------------------------------- + + + The shape of content that has not arrived yet. A skeleton is a shallow well + cut where the content will sit, with a slow band of light crossing it — the + surface is recessed and waiting, not broken. + + .nv-skeleton a block; size it with the layout + .nv-skeleton--text one line of body text + .nv-skeleton--circle an avatar or a tile + + Under reduced motion the light stops crossing and the well stays: the state + is still legible, it just does not move. + ========================================================================== */ + + .nv-skeleton { + display: block; + min-block-size: var(--nv-space-4); + border-radius: var(--nv-radius-md); + background-color: var(--nv-color-surface-inset); + background-image: linear-gradient( + 100deg, + transparent 30%, + var(--nv-color-sheen-top) 50%, + transparent 70% + ); + background-size: 220% 100%; + box-shadow: var(--nv-elevation-inset-sm), var(--nv-ledge); + animation: nv-shimmer var(--nv-duration-shimmer) var(--nv-ease-linear) infinite; + } + + .nv-skeleton--text { + inline-size: 100%; + min-block-size: 0; + block-size: 0.75em; + border-radius: var(--nv-radius-full); + } + + /* A paragraph of skeleton lines ends short, like the paragraph it stands for. */ + .nv-skeleton--text:last-child:not(:first-child) { + inline-size: 60%; + } + + .nv-skeleton--circle { + aspect-ratio: 1; + border-radius: var(--nv-radius-full); + } + + @keyframes nv-shimmer { + from { background-position: 100% 0; } + to { background-position: -120% 0; } + } + + @media (prefers-reduced-motion: reduce) { + .nv-skeleton { + animation: none; + } + } +} + +/* --- Utilities ----------------------------------------------------------------- */ +@layer niveus.utilities { + /* ========================================================================== + Niveus — Utilities + -------------------------------------------------------------------------- + A deliberately short list. Utilities exist for the handful of patterns that + appear in every application and have exactly one correct implementation — + not as a general-purpose styling language. Anything that needs a second + utility to look right is a component. + ========================================================================== */ + + /* Content for assistive technology only. Not display:none, which removes it + from the accessibility tree as well. */ + .nv-visually-hidden:not(:focus):not(:active) { + position: absolute; + inline-size: 1px; + block-size: 1px; + margin: -1px; + padding: 0; + border: 0; + overflow: hidden; + clip-path: inset(50%); + white-space: nowrap; + } + + .nv-container { + inline-size: 100%; + max-inline-size: var(--nv-layout-max-width); + margin-inline: auto; + padding-inline: var(--nv-layout-gutter); + } + + /* Vertical rhythm between siblings, on the spacing scale. */ + .nv-stack { + display: flex; + flex-direction: column; + gap: var(--nv-space-4); + } + + .nv-stack--tight { gap: var(--nv-space-2); } + .nv-stack--loose { gap: var(--nv-space-6); } + + /* A row that wraps instead of overflowing. */ + .nv-cluster { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: var(--nv-space-3); + } + + .nv-cluster--tight { gap: var(--nv-space-2); } + .nv-cluster--between { justify-content: space-between; } + + .nv-truncate { + min-inline-size: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + /* Long-form text at a readable measure. */ + .nv-prose { + max-inline-size: var(--nv-measure); + line-height: var(--nv-line-height-relaxed); + color: var(--nv-color-text-secondary); + } +} diff --git a/docs/Website/niveus/examples/ai-chat/index.html b/docs/Website/niveus/examples/ai-chat/index.html index f29d71d..fe59588 100644 --- a/docs/Website/niveus/examples/ai-chat/index.html +++ b/docs/Website/niveus/examples/ai-chat/index.html @@ -404,7 +404,7 @@ .forEach((el) => el.removeAttribute("aria-current")); item.setAttribute("aria-current", "page"); render(item.dataset.thread); - }); + }, { scope: list }); scroller.scrollTop = 0; }); }); diff --git a/docs/Website/niveus/examples/ai-landing/index.html b/docs/Website/niveus/examples/ai-landing/index.html index efeee92..0e71fd8 100644 --- a/docs/Website/niveus/examples/ai-landing/index.html +++ b/docs/Website/niveus/examples/ai-landing/index.html @@ -454,7 +454,7 @@ nv.transition(() => { nav.querySelectorAll("[aria-current]").forEach((el) => el.removeAttribute("aria-current")); item.setAttribute("aria-current", "page"); - }); + }, { scope: nav }); }); /* The bar earns its shadow only once content has passed under it. */ diff --git a/docs/Website/niveus/examples/dashboard/index.html b/docs/Website/niveus/examples/dashboard/index.html index 5ae8f42..ec9fead 100644 --- a/docs/Website/niveus/examples/dashboard/index.html +++ b/docs/Website/niveus/examples/dashboard/index.html @@ -560,7 +560,7 @@ nv.transition(() => { sidebar.querySelectorAll("[aria-current]").forEach((el) => el.removeAttribute("aria-current")); item.setAttribute("aria-current", "page"); - }); + }, { scope: sidebar }); }); document.querySelectorAll("[data-range]").forEach((option) => { diff --git a/docs/Website/niveus/fonts/InstrumentSans-Italic.woff2 b/docs/Website/niveus/fonts/InstrumentSans-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3266aeebcd8d6331bd9b23ab9d9ef860ecac3044 GIT binary patch literal 94832 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≧%A5w5%I`m3Ka9tTYX(g(bg3gHI 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⪻QTrWi_RVz((v!!Dhzd)3+ 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 literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/InstrumentSans.woff2 b/docs/Website/niveus/fonts/InstrumentSans.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..55fc75204a14680735807f75af4a05307d09644e GIT binary patch literal 88676 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 SB#ft?{3|B=yZ>eM9smH)pI>YM literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/JetBrainsMono.woff2 b/docs/Website/niveus/fonts/JetBrainsMono.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..863db7f1cfac3a5272080d319e0e57ac4a7ff103 GIT binary patch literal 71736 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Μ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 G&#VEb&{DAg literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/OFL-InstrumentSans.txt b/docs/Website/niveus/fonts/OFL-InstrumentSans.txt new file mode 100644 index 0000000..26bd2f9 --- /dev/null +++ b/docs/Website/niveus/fonts/OFL-InstrumentSans.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Instrument Sans Project Authors (https://github.com/Instrument/instrument-sans) + +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/docs/Website/niveus/fonts/OFL-JetBrainsMono.txt b/docs/Website/niveus/fonts/OFL-JetBrainsMono.txt new file mode 100644 index 0000000..821a3da --- /dev/null +++ b/docs/Website/niveus/fonts/OFL-JetBrainsMono.txt @@ -0,0 +1,93 @@ +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: 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/docs/Website/niveus/fonts/static/InstrumentSans-Bold.ttf b/docs/Website/niveus/fonts/static/InstrumentSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9a55c17e2f9a944a75af27905e75c09763126406 GIT binary patch literal 68740 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 j$xX7MTCq5*o?OeQ#e}1Ud$6OQ@_7FXKPKEV literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/static/InstrumentSans-BoldItalic.ttf b/docs/Website/niveus/fonts/static/InstrumentSans-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a04867cfeb06a4eb41a596938d2deff34eece44e GIT binary patch literal 70548 zcmbS!34D`9`v1(EHfhtlX_F>t(i~0FBW

    >3!cVP$;ytoQ0NBZb~VLiYJJQiWe&0 zD0m<1wXW;2uCCYWst5`QA|UE|t*fi6yEgfMXWpbuOIiK>+t1{E-{+m0NG~^$R zYefHwvzEN_-m7Xt5)Km5_vX^Rp57cyNF?S6?Dz!`+DAwPy9Y zq4&2BApi65IzDpEVBeah((PN2{u2OXgwX=Qw&m=j3*t(DAQB16A>^3+m(A?@>8A&0 z`_J<2j<{ZOm`I3}fHM3KX(Vs>rKnP`|E!Vg@&0r2S>T-*;Rlv4{edh;Da}a9N*enM z!*iH0U3iv+6CzwD%=Z6-w6H6gPUjOV1qH|c?jU3}o|Xk6Q>RU>BX<&mDN)2hau{g{ zxt6`BKH(i)3`8Pa=l@Cg*njl52FVAAdnwXqO+5c~LJww<_Z}q<`>_a>jrcMYm36*RH?43!%YyR&gdgA>bA)CDm zs|Id&ApI?f@4!8-);o zQg~i04dMph2}MNyTZ3dH;tmlixJlA!VTdFPONmx^A6Ir?K@`6h=q8dW4Eetp7nUP` z1R6(#GX)_r_|E?#jq{(y0_s3nps|6lhF$#+(*hDJd5Q?gbMi2kD1|cy|3BF~$&-jP zh>QITF6|X#ebCSArW)|DWcDkHNsK!y3hIFq|cEZNRx)N|Di6# z_du_0&GLUM`0(r^NwnVo>1f{1Al|uT7RpGGsK{*c z49TXS61T8`1(8wzUDuKtAW1i{|NWLAmB|tKPql{tMyXq!*zNxb!0Q3FX9z5KV`P6Cs+OAluPY#^Wc4@;D2GfWPd-r5I#%||=m4&4=m z*+``zhRl$w4)^7P4e@Pcog{(8OA1K@c-4&1iokftuK5TSgh-(iI(IhO%tA6>QbjgM zHjsIeY*LHo4S2ptG7NmP$?mY1$xO-B4D zq!s>CLIk-5dWq%1ED#Ao5`LLYkwn765^?P%m9Qn!iGvi8&A@06d4N1ho*++?KT;W0 zP%Sl68_lL3>ZRqhkxrp=Xb6`26^=^6BoUHmNune}zeRtW{(D1`L1WMx zOa`mLX(%>4XfzpbG9~)`D9u2eq?p`+QtlxSqm-v0eJ@ZsRZ=~*(kz-w3uqCoqRq68 z&ZoU}8GTDgK`E~Y2PH%zmB>+wRewH8`Ocs)q!>~Ir4;c}c8H}w1L2QbhJ?a~`z?RI z9eztNp6^ZH9|$=P>+tw;20LDPyx{ni#}^!ze0&LPyt_cZUVzW15v&x-EMO(o&{X;$ zeV)EX_tE|IeflvyLBFE^5s07^QU$$GFEp~egl1u;FjrW}@9~SC3;{YR|XL1d5Am$N&PeQ>I>vgW93~%-gXAM}i2j}& zB|ngVlJCjCs6dX>FxZZ_Lh^4Uk!VeE|R=A^A6%L%t)6$j@W} z`H}RHpU4t2LRL@-SxMGV85yLJWG&<^3~hNP`4U?DAM|Vb8U2QSNB=>;fW#f32k8-d zlpdz|O71Rf$wiJ$b5Ur0akkySLDUPrH|JLom^T6#788zl7&`X+sczDwVxuhYNM zw+MNf`nNn9b_El^WXMhhq^1+{vYMPtF2OkAcF^eq$of>s-V!T zVF_Wnu*|TQu;pP}!mbXxHSE5yC&NAq*M(<>=Z9B?PYLe|?+d>x{E_e=QKgWf|#mD8xofmgm+|Ib&aj(Yx5KrP`;#1<&;~nwE@pbXD;}^%TjXx)TSNs$4 ze~N!A{!sj>_-_-U6Iv72C7hRVS;EeQI}<)kj7`)eS`wX!C5iQk(-XHR-k`v^TCqX# zJH-LT$BHi%KPD9=)h10#>Q3rQdMxQ+(kDsZCZ{B)Cp(ghlk1Y(lIJ8ZNghnzoP164 zW694azmfcY@(HD&)GDn?m$FpZpj@O}sobc%NO`65Cgt7AN0fh5zN*}(JgWR$`CnC} zDoJHfWvjfZYSk3gY*nvnwd!ouR@K$2H&pMdj;p>>{X0cSiAhOGNl$U6l%({ftVuaL zWoydSDZfj3F6Fh9_fn3jv((Gfx2j*(Bx#mu_G-S;>a|_kA?+R7uTrB@TT*wWKA}t2 z_33WV?bH3BH|SUBFW3JyEj6tmZCBb?=x5k}k)h5o&oE$EZ`fkkWq8DJ!kBE-8?%j5 zjDyAtj8__OHr{J|&iJk=%;YuInWmchOqZIjH{EIao#|cEx8_{)a`TY+a`ScO2hC5K z|7?ESe8hap{Czr2k4w)^Z%n^9{l)bC>7QG|EJn*b%Pz}9mKQCrTMk%`TfVkRt!dV5 zYn^qLwb#1Fy2E;tb+7d?>+{x6Y>_sL?JnCd8QP3387DIvGlw$o%zPyCr>x?v9a)F7 zwb}LAS7iS^+h>oqr`xC7m)Os?Uu}Qd{zi@?=b4 z-EoiOCC5jO|2kDpkF&$M(Yf7ulk*C4&Da^g(Z8{4ar)CW{qD ziN&KZN9++Cdwg5}yZXPvJ0s3v3de^8mMIag2*iv+T$lw$iAO<=GNYO9y~?+mu4}w# zzAuGdm+D)=(y>5Q8;Re~)4nTtN^0fyhm0P8X4)5kKN$i)49y;dzZU{OM6MczKN12z z7y^GI1ila2KA6uHA@Kd=>QVSJl6yw+If@>T$MG|4`Z5rVg zjZdZ(W@v*H93G|xLqjxucsRhV>yWP%{U%xG^|%WP^7E`_^SC=@a#E~d^D1$bO3g-; zxnBK*tuW1QeMJ4BHBW0ZKcaqX>Ox!P^sK0snYA0I`R>`XYtJfOetNcNmC_EGUe(={ z+mf%8CP&U~tmyGFRA7{lJpYdpsc;yjlRA^t>MalVxb=d}T#zf6O|g>XBqb2?dSV5- zeEt=!l#FjFQ0yGPw~LK7OyV5rLV+T zn4OYV*wW>kJJ8@T`7$pK2NTsl?Ad2vq5#hcNc|=PeFNu+RckP7;zN7VR(9(yr zz8kdkWiEmt;)n8BK4SY*i5!95#o7Ub|BmA!!VkfA3BvCSfgd~rd>a> zKkSk*IBUmZxkt(QA{^})^&N#Dr`f<)!s&I>C>=NzB!RXV0fr`O>8)DdLt6R-uRB$t z_BCjDuwT89eFs6tVOX$YMJEmr}_Mcl{y`n9L z?vki%MV9R5GPHoUnvT@VD|Rdx(N&9c^X=WBCK3b7q5Pfzt!)Ngq@ zZP@ou@RVb~X=&uNKTKX_btPWkZiX4^D#DLZC71e%@!z8cNIj>4Bw{=bn2un2oY8=K z@#CvvqQEsc*W!|3~3{;hium#xcy_?t}%)bTCWtcV2%EM<0?DlmYr`2>hV`o>BOT z5cocfuLCkemxaLJgZ&?bcZb0D`|lft@8f-iSng5(GaSCxpTTMXx-+s|kk z^dRa5>U5f{Obaueh#E?zP1f32ZGy|>Dvlf4wNbrU9u+YxlV?@ZpGN+@dpqFKV(I=K(f6~|8=_mKmB+iu;wAZ)ScNrb_UB>7GIY4UQv6 zvI>bzCIJmt-}k#m)sG6t)yE$bHO_-tT35ZITHdju!}mK@D>OGQ9g^RRRD^UW%oJ%A z9%_~_N%_jwO$UD3dn0#>$p>k@nTQ zvv=;?`|6(T>yhf>XkiQIs!9B(Hx_p#CF4{*QwnB0EGl=#4T^e=+_sjPwF@ zM0{owi0~sAKe68Cdw-@Roa2PvhGAt3V5J(96R%1pmB#G-(}~&JckbPB!g1}l277F3 zluoI&M8$0nQ}qMuD-(r{53h1kqbi;xj(<|5R>{xWo^s03?w&u;Lx7pjgd0n;EtZDM;*DUC~ab4B)t8p2s z+LSwed1?6^cTU@~@`^cb)~ho8qUQ9f5a~tDj4r3a55lJ~8GIkc?vugyW7Hjl7lh>h zK1SR@xSF>|vD~8=jYF@IY=#f&F2VQ}Ewa-_RTNeV^z<1iuxXmGa++_){~|+^aC6g0 z-~S}WXq_3)MVyW>J67y9!p=gkVT7+Eq}NcYWH2*EO{M}bxb9Uz0SEr+1^w4e%WNCI zX}+~BB~4YIS-!a0nKHj$>2@mgY0d3>=_gv>Q<>DG^}S`M9a{N}s~6UvyRfKLvHJ@FFBIg~^{WAQjwr9}kfljELire{xEUODJtf;=rC$eM7vOIz93*%2bq)f*R} zKMC)+x=O10OV*~k4L1A8-hhr~G<%xMbZbDzoMbZ1Y57bD{7}Fi`W`wKm_V+?_{ZRd zLN7xSFu!&)CKRT)%l{S#P5aE+SKTR(ih9Y#Z!qZ8$$Ny|Ob8)<|M*mM$aCnbuiZ+viOy zZgZyPY7)&FwKXos+*#W=Pz3pB_}t0yZwu7xP2N@+{H_rAA^5mh8&2@s82+f282@8< z_?S*fKz&2u$H*a8U;j_Y$A|i6h*A;gR>k^Scw3U8gJ88r)3OC>dcCfqM4g&C&6ruN zFRjX=#FE_Nx+Z;K*HXiS+Xf!W`zC8ycjLK{5%Kb&m;|-cWUtaBd{=Kwzs*-d|8n`| zt#yZ++yix0{l$#p%vbw8WI~3Kf`av9X31-pf2kGLXurH%=pG(Mn*jbi7O!syr^6w# zk=J)A>V?#(uLwT|+l}RFgRL`yToq!yxSbGUG0@hPm*r|^?V2B(P+eR*Q_;Vx*L;_} z^R7X<%GY1k`Sx-D&an zlS_l~C9;rm--ow$EFWf>i})Oc2UmobvKo)VkHf>6G+HjRV#W9$l24&QDVs}?cmi}s zn}a1lkIlWQL`B=~^38_cxL24B-9ZT)mtmJ69_)>EVmt|p3yXn1X1O8WLvtSwE1*@k z`L22}EW`H>Qmz!P<-sXz9oYm7cn-WK%m>d#n@@0zC&CZXhDqW3XxpUl{j`boPku;fIbPq(=fY;jHseh%Tk?UHHQNn_l((d*m_Su=1zJ;O{S?*ZV&3b-|yW;p+_Z z9i?|OiGd=QWFVJFCWirnNRHIp_ux5QH2Z1a)is#2dB}GWJ=fRnJBnKI_`FtZEeL7_ zKQrUQMEF6neNy;7a{Z+6{p3oDZZ#o z`iOR^kX6EWVNF za}r}Nh7a>nn<~EUkK#CY# zl&%v2f1Jo)Mjw&CCowa^+5qSi7~$|X04rF+MmI89xWubqW0G)s{|CNq&HJ?Tp)CiP zSwL&)cHd^%OBd7arM^Po5;D%&!f7mybNHA+coLFm3ijE|{U!6lK_xSL3(yflYX|*h z%+P7An&T`UXbP{aRmih zzW;OdEIR8ivu~VT=6mi=q3BbPqd<5ArvD#C8idD3rog_;hs7ip4xwMn8MT+fLY;D9 z==zzL(5s3Sc(+A2&AGNSHLq#TKylU3Y!^CxwWHEzZz#x6M=zRLJijXT%9MdyZat!< zQ)A>)u3YRLm_M~R&05=)my(m7lKd3C*MD;-O&w;vKgWXCdON4aVay~l z>Bxt413T1Ogdd~u98MDdJsQq+eTx5I+&;zJv}n~xL;J$i>b@F{{Mra*VRlJ#!gBQD zcSL72^_4klEln--EnnGXS8*G110Myj5s+<^CTAQ0c)beQ{~QMyS6{g*#B!WuEVMhr z*OxJgT!yygP~HdI)I{o>!b*uT>aeyWQtc%9FQ_9BIcx<3X7y7r7fE`o1zu6AO;R{u znc<_9VHBYXH*xdN>t#fa^|hUP=#~&1%4)c_Gll_8@dd2=q{F5SkkTJva(&3W4rZ1>+h*p!?&4&?4c$ zC=N%BA~b_hD*%d92}Wt59P+f^aPvl?bh~jtfuOOu|U#D!D3HhS_?}Yi#MaiT7eUHox1#RQf#pe`62SQ-rN}Js+)-aj= z+Pym)B9rD-bS=$l?QJ*Y+mgL@O^#U;EdQmj{eBc&pfR`;81HefYO;C!oC4?-*08cPt*~{D+tpEJxtgYArmF4f+E{mv zxj=cf=?ZztK&`v0*{j#**JmV|k`qli1v+nu#X4sR<1j0yoy*Q$qNHvPLT80Q4<(3D z8^a0GAjbW8Q82D+G_H)k$Jg`-BpEs1#pz~2yYzzpX4VEpuY*WIce#X3(}*K6x=ax=81u7RRiH0-bGYX--wm^481+l4)1=I#;jkE*MTs%gj~T zTq>m{Cr6Qw-ek)4Qy8s46G=Pw;oi%8gb##VT;Z7kt5RKzky<gEzwCapJg(8 z%*x1OS7shs;N|jPX^pTk@i9Aa~~f=nU- z|1vLBESaOqQfVSoF&P%w<{cW^t`R)#Gs9(TC1L6Mk&o#1!9nR;{YOJls?0sf$XE9M^iJ`fG-jJE}w4&j+@a`~;=LIXko+ zZ5#Pz@hVyw+LF*`i#Ra~J;gb4xE8b!p^`ZPsEmGuG4m*#Q=i3VbiNf=XiofKEDEW{ zIDQ>erbhuM5jqMlSDi8m-Me$|TXj)Jd;XO8xU|9Yj%mqF+_-hPU9}Zw7uBtq>wB5C zkFlI&Y$Ot#UzwO+3vUm3ljX|W!0CBI&IE9>nq!YK0Q&0peq{QWL1VDKP$FV3tlznw z`g}ql{)-{;4}8VsgvGyo6e^D+y8pfFyF&8sdj+hoRGDq0Ev;3K~hL`rLSZ_8+ z&NArFnXQ-%B{Z#VR8R%mj|Erpy8tdxFE zo%aJ&yN1(2ES+gh2A9%<7DgQgT{s#W8Xz|aZ3uzxw*{elLZIcd1eZHxIHErbyI z|LOk&v_iY4%55mJtE*qi6YBFOR2#$kYHLxo z)>&ySt~9zcLJv)~_tfZC_E|u(I6Q zzS6C6T9x^kT9-vxKzEfbt<-v&y7NnyR>1IBoJ?&nJQP;F!C_2}^kx~|Fg&(RsLnVp z4*!Z#0$K9!^Lt?ThlSexY_e7MzwLhcl%0F7QH7t;?)N<+{Iz$q1Du6S*PA=(^Y zRxWBW&8EWAaLMIi;cm1qoo_-GOo@rwp1L0zLFDp#BHY7obeEP%-YY{{jjB z&;IY}PrwAeB4&SK)`%Nm<7SO8gfKH_nJIMA=D(tPPUR;PZ z;L0q0W`@>0tF)}RKPG#sM`=jVs1uZt8cmhU(~@bc%SlLyRx0C@qIF3P9?z64;07#& ze2(#FVm%fzj2YA$0zLG-2(>YcQ4cZh$E6&K+J!=oZAR@-zkg!w@nNjY<~kyvhDX=O ziBp^~$^sKbe1tT*OpeZucjm;X<1EVDd}W?9M{87P84?^>SgWym=UUArYqC2Uv(05Q z95J&yi`K-2N6FX7PY}8&1iGJljaa_-hd|%27>mn%J`4*fJz6G0 zGgw^%Q0DV-^8SkB#(h2_&L3j#ib+fn2s9V8k->@!Or>mZ-{t6{^80)*!U|5OM|`aP z)3JQ{ z48gMlSl>Sx{2JxL-*Nlw2mbNM z!@eVNe|(5KKBoHDeSf88FZ$k(c$4O%2RH_;$mqb*lLiGugnB^_Qs2Y5gDfwWs)A!96|q?sgjR(>4~+z&>JaFALx6IR zWvTETBxfhj;Y7d>#C%iV19}&Sp5#6wCQT(gt~h=^!M%_S>f~`n=t(xVKW!xW3H#jp9&z)jl*#XYmIL}$s2q$tFRBU;SuVTwPA<{V@ zeSin#_e2!KgG(Q)IThvTP8GY#IHK>83#5 z=P^4vkjs%Q(A571q;v_|c_P->gshXS5TJTu1*Uuw<1^xQvZNSYhN3(B;BMcbuB4`8 z`YqlM!o$v$NR(;Un(4BU+w7jC<4{S}C`rtd)4|TEb6~?{(1Y^Hp!*b)LH9>9o1a-& zJ$wYs=Pa3j$3{Kj@U$w-+_R&l_CNUi(f7Z+{YL)X!x+^Oj2i`O+#Nhz0RT4 zlmtp)wH)(}2I?5BQ$|RYuF}xv@ihoRn%fu=*P}&XZZE{fV0K1m;5G-dJ3_;9>#ndc z*dP-_B(q7bf=zP8gb-q*1Z|bzmD?=LZV3$}AZgzT$52;M(mVmKvISQG$vP8f6?{q( zlVO;Ur-Kv7?K4gQ>|o-y1%g*)$||xNv++Ux7^6QL_aG9GaYbK^9d#y$eK(A|(b6PBDy6dd0Fe2(-L?V^wlSSzB*O`=;vT%(Cgdh329h zgHm2pVlJ|$CCdvVr*56)=vzFy#@2fAtlTBNU3Iqejo!NEy432~hWy&5I$doyv)aL8 zc$(i~YpB*Ku&hDmW$PO}lFb*#D689YOy-U$stfiCO$oZ(RLS*vw~nn3^M3?{TfrN+ zaTa@n({Vw@Frvt?YRQy(*51AxOGZX@{0;hDJ!J!xc`NTj$XZmq^jb$na%gV2S1@vV7a%>rAA8CXv{x+r!`1~~osw^>-Y8d2F-lPcdS ziBf0j%sJ{PM`4ww+*+ERmu9O-*lD<-zpB5?R9IsStEkRuT@q!f>2#^FCRc6AicilQ zQstWLX^wn`P+4}PM;(?N(NX1@Rc>OIG)5T0W|2xgSmdChsGiY_b@a5<9=)K}cVVLt znL6@9Dt+t5z0W7nn~lD6^YOLIKIZ+UBoa0S`ZD&FS;$I^F|x6>%HDv7h;ds&rQZ3q z>0vvmGRK%~HKfGkS~WRImt8<_)B0|lRqxi%@7$-WZXK>MmCy1dIT~#l4fDN?tIE=fXXHiYG-hVE_7`j5yC}$2XXE#*B(pXy z$HIPd<@s|W2~eR6|1YHoE6!%d0<6y z*%SxkMdPyimW_2uw$kbSsX8aP;m|rPV2#|}+XPzQJwI~2z3l$;XS&T4&5N=OTb_@jkO#R>P279Or*EnF2-);4=qZKmC7EsMV)?fS(f z%W6FBy^Gp%!y?em7Z%Q{%FA_l&FMB*-r8lhS#_mz8;U%hVoNc;za)CzE)M@DjVEte z=1tBlow}f~b$OvOvuxUeEWOjFQ$%Li^)73wA~H)p<-+NX{w3Y@87&t~cPw2pry=8f zOZk+xMs0abdTGnFMr}!*f%x!CqfJOhp$i8P1Jxv1xPh(Zs@Y5q*^lL?nu3Q z(cIOZfjd^l&}Ev9GcQ`wX3`m${+qiXsQ!?r8Tzjox&D9YKSjy>a&_cwf;2HrsWv4? zW@hE99r}D@npW$Hy-j!N3h$gkLtdF)Qe1AUpFgVq6vm9Ctb(BwSB6=C2K~o;I@nu- z_YxEIpOx#s-Hr4}>d05A^r6Z0Upn}_=>Meusk57w%poc`cGV8!aI}+`Y)quRZYCPpmkAs zMq8yhe5XWdR#-}M(CU)hbve#Xuc2zul#~p8yed3P==_|Ij#Q7f4(l6D+&$tH_&xI!}Q?1vaE(YU7V%bZf}7e>?pQXj?;r#>a;9Xq9I$O&r&i?Xi2u%a0*Ev|qz%wD>D(bSyNv>~(x5t@J_v>{si z8ML9GiY;tvYb~=F^rqbS8?;w0teEF zyBmu0@=BOCq-2Z#bICg4ZtUtp+Od$wL#Y`nz_$n&&+*;&0-fi(>jm05XXG5Zy_|OV zcEg?1Q7-Bs?3uC$^1!~imQm{->z+N(-$(qjIUK&f2F#DJk7zyckEbWNGv!5>S@)zV z7TntuTaX>U=aOj)*|-{Av5J0yk@9RluAWU=D83qJ`7n5xm3D=~S$yF^vIlS$--ch& z8$6qSjAw!Q9O+!)6W|5i(T))!JgBmT9eXc)8yM0=y3d#E`v#Z_D8WOm7_0G^4T!10 z3gh&1HnrW2m~YWP_!@-2A|mpfi=QFkYwUPqM4sj0!A@yRIApApzem{%ytz7;)76-` zBYFBzW6SDNLtbf7cEsOU*^0c{97C#EYp~=N)b->!W)@@?Wt!7-jlQorK1Z>_;alLt zOM!=qxv0YM9ez043>#qJi+qOR-&$4_r+JFKnX;?oS$X+6sdlHkA#q32jCGfylnb_#%bh2nlG#fW3r+r7oyg)$pH32^ZWnfKOA_|75XM1MY94}k4n*kw!P(1iGohk0h?cuA%FRrK(5z}FK=)s zN|BFcn^hKCoN$=62durr9&29QFM3`rC=^Prft5j~c>R>LKGoe@fpZXV(7ZDrtT%!I6EW`|^l4=s{ zZn-l`7h|^Ta#GTruAbYPBHURrnJmYYmaEQjxRy=<9w?Q@(SJd&tmgV-bwICt>tDp+ z&>w4{@EDd{-|)GEyU8Pfv-mdrih5;rK(D~^r*pVofkbn?!aV@YDTlf&fPxte)+eB4 zJ{hYPw9Ti`HW~0gOIVBG+J+~T@>QkGpnMrMzK7zJ~}y8G%)9S37G5HIPwg7DYPzUR#1*$4bQBlj*S*QsVvPRpJDg3 zFPJQC2(9ny&f1J>i?eR#XJrK$)z&I^aR<_;&?V%g5XE(!3ilMdZdrvNg+Hpx=JGMmmNr-WoK%|@Pso9xGaYpq=NVYj8jNI z8#f~FJaS0z;HxsOM~$*PHT_h5Xw@q5jbuUS8%ZL20}XVWzXQA7zKr}g`W3b zS+~L*E!-4SJzM0h-`2aM|I)gW!c|lD%v|*6M{1@%@nTQs9aU(Hhx|L~&BAvqU6uGX zrp(NT=-5s$B%$zK>)x3?FFjn#Q{Gt#Yz+SEgb0*q6(z=tHTS^}Z`q;=?qJ2YtWp{O z-a!e#vDPUODTXAa+mvcFW~->MYE8d(fgytmLPLQgO=C$^8s=(O6wfcH&v6Z_+!@VX z^M{@3Q)}BIk~=(&ri@`w!T*u}I{J!OZWTu0_QmIyE2<+F9<2xY-4*J{1T`!td0iwRp8l`g}p-S zwNLMOTDwBhJv?#^i^cH!0{9_TmBi>pN9CnoyyAO?M-#sJW$&=CirHkH{)51Q!cR!q{nTxR zqbW%yN{m9v(>TV+HO8hh1iuy*fh*mSyN2j3VCv<9Ebz$8(H{#~8yxIVKG)7{=xJ zf^*XY1q(loE7@&A$(iA!C6kyyjlqk~0LNmUW*oclX>EqYFg)^R5Wla0Uns}EdYW+z z(S)CV`FL2!8%9gs=g+`ShU>$mwCl%r__K}PNQPi_bdfjxZ)2XX>&LgDQF`eELKfD? z;zMozRkRdWrfK>B&*t#!1Mut74`H85?9hmH<;<>aXZAG2SOz1kH#Mn z>Q(_-vQ~(uj}f-(BdJosu(6r>FMYi0mRlZdZQ{T5vDfxK%LBs~dC{dj4cWjZr&O2n zNVO~udyhP^2Pw;wY(Rb<)vhZant5q=?K4mO9++&WcMEaCH^Ag(j>*k@Z6alGT7-7P zEK!@N!bA@>YuGy@C{4D*tr3%$5?MpMVTA2J zFC3`InYN_ZQyQ%Z*G|vOt5s%}G-g?gRB>^(3;QD@ViYNPIofF#v~*oKGsDv{;7xBx zkFiW`iq~rrqf%ALR$Y9W+%omt*<~9Brst+NEN>`XHr-(kAF~;%s5Y zTZ!o@rsDeas;(UGoK@bs`NbM}$+k{&ui z&fuvL2Ywijsc1MhY~Vd9oTkjF!Rn7*RU)ML{+^mt(o^i7S5~p4*lnt|J2V;Tx-6RJ zTbSS1=9qGRtJ6Ls-%#arES_5ze_7)Ei+9mmvdVRZ?YZeqg@v7k(eq?_r@^dqrKZ%B z_*To+o~e0FJ;gB#B2zug<~7&#*L7U8yaZgH>EA3o4SOFpWv4>)-J*LnVsVpMa`Qlp zvpKVPStH%}^0g0m9=MRc=9-pM)K~G#!@?&csi<$5|8H2W$9BVNV&BDypVf|SJs~b4 zMCZvWEXp#by|CbruX+P50#QA(37b>MrEU*8hG{L;qe~23Ihh%1b7xuU)_baY*_y*K zz-Fl{FBtpDIdR(f1YKmRw#DUX&a^c+bvm^&UK5k1Z1PN*_t`|ioH$KFydKe;-R>4P zjZP~4|CHon)=&YjTg|8hLmUGu1-Y2=uhPIaz2N2JY|sodpl0rq3y!w&t=jLWZtE{D z?%y^wc&%JL%jul8x-xKWEMMgH_Efa3kk6GBXBO1fd96i}^P*SAg{EO?tDGHcDl6A? zID^;jqQ1(?MTK*kGaXYZE2ld%TDm9T-u&yh+Y-1|kmVOBlNpPEe?F5?b3Pg$ze)Jj zD)hZlKXuSkC=uofg4uf6tvW-RzVFxZUqBzODC|s$7u>lGa&>%!Ix#oX)}+;_HNM*z z7l!Ck$+Ezxn0*10;7O3=8%Z(oWSS46HfIXq)kybc9wPQ>Pwv3*P4K?qXX(F zY35AdS9Gaw51r$?k@k3uUmzc8}?9KU^O*ySe#$=5t$&{ov!wxy@-%OnnC9|#B=*+tR z!u=OYZv15_D;29-BnGsT9JW)-I$kPVKdQ0f1C!^hp(s7@X^1E=s|i^hDd~3E>bhL= ztQu?i+Ez!0Q)_53Vh2aHT}$s%``lS2X>Qkl)E(#UIybMYz%{K%ugYq)d)pncNrUk* zDVZ8ghH{nGW6myICFn;^F#0C>uf>|SrMQ!^o$RX6(Mr%gizo&3wV6x#=zfln=k&Bq zY0LDR^v(bK8%%m)>sFupf(!Kj<6BIWoB$kd#$N6W2XtOzIQ-vsvRMVBRsgAn-@2oX z@buQLBXcjfK$rd-cecUT2P4qzUx0%dnA3N%mc=BeoPT4Fo&V6U@#$?SadBwGR+X?> z8G3HlB`ugv?^;&sUC@|`>Ka_S%-Z}6b&R>%Y0kIB-kLgl$T!q0g&sY&7Igv#T;vD(AWBwndA!FIoht@_&J!bAXeLaS(G|eD0H( z4_sG?Sh22!Z-9VFFNTy-o8wl*#aSEsE6aNuELTx&UZ%lmh*ztM^A&Wb-e=a+cl5(W zQwvj4Jzj%-Mzt-yqRpP_&?ls2s;yJ)X|1!I`txb>`RBtoX9EUbp_Q@~Q3=fE7~6}) zg2F6jZwdAVeZJ=M2j_Run5TV@)cD?33Pnoaksnlles{0xAk2!b*fPv@o%wdyR;z&{&#xL<^_`l&q~1c0`pi$S zSix+@N_;PtO7BBV?lGuj?`au($G-dAfp7R{i@EgS0Dy4zWzAK-&$?)e@6rbPa>EXK zajkE2eFq)vK&(nKgi;4_7sqB8nFqqg{UoA}m4w{$a-K@HxXn6?XE<7)g`bTJ#&`tlu zzQ?SBX=-L}Mb_}8G7szh^#Z-3daY(fj9sVB%r45T!hLL(UXz*SrBUs(HClyQ5xB6D z*U>MrFTp1a$97C`sLVFcx97fh_JYNWyXcoc|NIVHYZVVmnps!S*08YndI9G94iEMp z%x8ujenq=EFgF&m)!peYIjZC2rq*vIIvukp_)0NrP8AXSgtaciw)MYm}n(*6^V$D{hThvy&BHc`NXMTr~4v9cbqEHiY)tCo%RXg^S4~}-Y zXiTh#M69W(&L*j7V7L&dHu|lQnD4o3l-cDOo+?#Vxh2`4j7m;PN=uR}o)&tRjNCyx zvn!RE#p(7ug~h9n(P06|c5Tug#vOwY!x% zn(^txb zs<9T@s-{OqTWA4V=UxvnRID z#SGVxA34UOE!2W`S3bUlT6FZBaNiSZEL#X|p^=CwpU^_(leW-scpHDjE_tlID6ra; zNg3a58|@`THpVv>u8;UE-07{wCT!>#xs=XvRH?EnG8|RP>wva#6~8@N6X?~ zad_jj>Dj7DUj6ZmiD+`e&IVsgdA_waPcQyf$EuC#ilmfSwZWoDR#lhhrxiNPib-G6 zb^jwJ)132RzG~p%fM22~K}GZ7x}n|#Iy~lum^kswQf+rC}t&9qclJoRy z=}BtgqhD?v9Oy0BO!57VnDeOJAes%bZM$#jUb*I+`&sJq&J!^cYEcGk3x*jAkx^;) z8brBlHzJ*P9xvlAp$s!DpD@o)6}M`|ReW&HNNGcMb!KejB5AZK)toI|6w@!1>6|5L z@w&t`L-RaFzgq+s9h5|X2kJmS&RrmEsDWYhsGDmfv(S*AmQ`rXSH~vDMaL$`3odV_ zp}^?PO!FF>ljCFKl{oE$)$DTYi84$0lN}R8M6v)SYrQt;40MFO&R#EJfk>x z1wC&9$2*1ZS*sKCVJqf>w*|Kj3s%%3#ce_*r!vkS;3>dOPUt|w zFVi!P-um=7i(PJ4X>^%xp)$v2X(%$)*fOOt*?JROul;9G{v!W#uz&-U56pK5`nvKs zYnD8Rr%pE`yE?EzOl@|EnZfTKXzQ3+*~k6xfi{ij_xN+5CF6NNe-5->JRb-?vo?$8 z_eY;$yW?5(>mxmDZ+Je$-v?S2o)7cqKwH7{hx|Dp>3BZEp97ML=cDX7C_Q-om_G+( z0MEyH{9Ev4A9#vqxN=ax0B7)g67va!*aao1&;BTz{|nr+l}&Mhd$#YACU75yahfM^ zFAagmhonsyOG~3MGMOsIr!hFot37ZZi~Fv?eG={$1nyHv7*3$V_fuh!z~yC}J0{*! zqNh25dw9rbOW{j9*f6!*&m_cGjH5V()P{SATpNZbeTp>kpkdno{qBI#j&58Ou+c{m#d zgPx#&bhs*TAB%f);64fWj=+5ii3l%gTD5LyaQ(`@RYQjMo>l9rSFh+bG!6Bv7+5^^ zhP}vPZzjIrNem%rItO}(mUi|H^e-I}<4#>YxUy#jivgp1HCaQ>B7q z;Fi0y_QmYz9jsxj=Uk@pH5pvP)4 zgfuIV-{MKr1nZMSf@yv&#aJnZ(KO@B=>Sa_4F-V4D&XKkZJqqT1TP0>>9*c zg0$-qm!&@oC2Yj+rqS4gcz=3cL9Q?v7~ov2M=n9muSS|7A^;~J;-kbeiz}F zmAwJaOzsSTv2v?$v>&@4f?OI-lhSpN6h`qic)t#1GCr=rmC1EKw z#{f#L<|VWv|5eCY#I+qTR?=AG@?o+AtKF^G?}4q~kiu{N zcMR(ypvL-WBs*gh+WxOJ3Vka(3G*lH#1@N{V{ybzb3fMSYH2FYIAf<{day%C9?7RVoUfXO{?vf8 zl>Un$mx*{W^h$?n*iS7usd6cKAFG*dG=pYBX%yom)@-aK%fU&OrQ}PRi?d)Iq>MVr zr_@E=7`NqN*i`_Ba3M}>Eygb8r8xDooL10ET7_L^YiKR4qxG}_Yc-m1mTL=b#ksLl z=``9#r_&jx! z&tYuFdb+hZ6?HzEd^7nO=bkRa`pX_Pnh(IxVGQmUk@YwuwU_phDRc>$O8dz)ObQOr zWms*|MyAu{7;CR28|f-2z_W0wa-i@v2Ld4(et5n=aR4J1>_leA(=-n z!fHcyX6sgrySL$-)ywGRbUVF*UP-UQDV$gHb2!Wx?{y$fG!-a>Dsx6#|_ z9at5zo8E9Eh>gw|(qhV1k71^Oq1zhKrT4*qgIPW24K?iMDD z>|es()Xc6+Bo*`(`YO%{eI2KS{uSqhzJ(J*-{z-@i ztdHZ|R(1mEN3a*8;i*{&4|^rf2mKiP1DwE^_7m8Df5GXh?0nhZV=wdj`N^%}L{3l9 zPw8j$bNY9jWcnq%cahjtbt_IWyA1nFTtpVoudtV;jDAhFke%?>`~&m1|G@g%r=hZp zSZ&dRW*A&a?^hf${`V;+`{)hgT{z6BnkNO27U^Sp15yFIU?5i%r z_%{;X#V8?Kh!JA3ZYW+z5E8MwQWEx3QetQOBQR&Kz^b#-9-qKfgfQ&Y?V0x2up{ zU3Eou(wSqi+^#C=EKZJ?S>rOE6+m~Eh;I0-!GTr%(oUXXROjM>!Nu!WE?LpHF|xCF zpl`5m-M~6&Xa8W&a9>o{*h^^_2T8kmGI{qXRbs1xsdCq?bGqWjNY0;Q>&Cwxqd0#Z z%{k|Gi)qJbEv9W6pSEeV(2%sAg3yQRkcYf{F_&rMauG|+4@m`jj->(>#ZFiRJz-bwv2ZQ8^kU(7-BwvIC=*=MBr2kjjdBAB^T>byfHnvm6hBd|{ z#-O4>&1)1viAH1m8((~5Oq8-xTuPRuhz$`eSP%;;0wN#+BBCO!fJpCUDZ4BSY-54l zr7slUPTtC4z5^XN2Kta~j^=pM8lml2fDs8Rm6*T(g< z)R4ulkISsiZFW`5xLyHk^{UliuMpf`A#3$A*6L#oCH1N1o`gOT@`>vcu-2p1nQ@N> ztkut|CHAYrPiospEltW*b*r&%@zk{1+10qW?2vM<4(e88-QsbbgC;uHY9h62E-bfB z=Pu?ahqDpX4ATN)yEZ5gL|WB|ToW)@YWG?lghXGXR;<`x z*2=A0jWElOYb&o=Qd>i37_MTdW&sGTZncbhZL6oj5^AHIMr>*-C>FcQqTMH1U; z+AWyWHnVejhcpYvJu2_&q(`d&xw>ABX}8SOT4SMXRex8QEE}c(!I@AAa!R2Rqw6J(>_MJ+aS&TuswEcWj$z*(!NeJh?$2vrl&dS6x}B zUs^`@rkM}Nv8KvXdgjCNnVmAy6tDAe_g)$1ckXTZJv;YReot2BZVH%?ZJ*2X>BvpG6JC5cTex$t!ewVJ=0QqrgiOH9ZgE>+djQ* zSIep!ggbQa6BJGPXRoxLnVrLm^&_#W{G@ih($mv2t#0EUX&IfncaVa>%GbdpQLCHp zO$w3?3yJN!ckOBSUD{-0-bVdLT4o-@L0*(&?&#+X%Hzb z0z1DOaDcM9 z7R`{^$%>}7Lz<>lXIr#7yPo2Yq-9nWs2?U&7isvibqSUvA`Vlo4^lMN zFr|5r(yn`Ery$g;M+Ym-Ddnay;$NF!0tT9HmtbN^A=M|ZWm4d`YT7p4+9a)6nAa-w zn}`0*2`1-i)V?OjxhkyDEG*e9Si7%ocAW`cAhG!kBQ+L+tFH=_z#yktuzaM{lJu!n zE2Fict-roB>YGJ9N?+GzSL3;Bun?R}P7*GaeTidtas~IR_@}%6C;NNuH?gPXjShC1 z4pUS+?j6{BJB*!!xxd88Nse!(jpjbqo4|b%Ej#v0tGQ=;8@T7PFLCTc3b=3cc5&as zXx!ib`O zpe3BPqrXozd8aGR3)yycienG_doslPVV>o`A^*MwOsT(!uG_3XMzSp^do5*-MmI! z+h#oCozwM^u8*(-R*rsARziL>BaQWvJM`|Eo;fP>7%B0%#Pe@q{4>e(yu9dc(b>`Y z(M8df(Z^!WiMcZ7u9y)qB{7F$6JyVcJwNu6*ygb}B#w?9ANR|+rg5F(2Eb_Aozg~R3yXtkQ*QH)j z{iyo!^;7F#SO3QPx76=a|M~h;>Sx!_uU}OENd0f>f72kUL9)3^8{Ed#twG-ggBxsV z*tlVfh65UAHOy_ezfo$VUp8vps7Ip#jh=5bv(el}dm9})BkqiA&baZ6PG|HxW9k`; z&&WO__l&Z}sf}ASzN_)Qjqh)q+4#xE(;CljoY%PW%-hbq=gf!B9DnAtvz|O_#97nN zT6$K+*_WK%{OsG#zU%CV&VKgnH_o1NcJ|o?XP2IH|2Y%RnRCwmb1y#khI9XMZvS)V zoLko9oF0LtZ=`^EPE9ewX0=4gKJxx#pw?CQ1-RVTI%WvG=>bxd&ura}T+8vZc9)T}QK`rMqsj zmId}Pm+5-RD&`)K*uUJS%{!w!Bh|PCH{5kYh$r~9j^6l-G zma~+cEOI^us-r;lITZM7|2SW9-bdeuDS2FdQF;$!JI>hlFs^-!>j1rYj4Ru9VjN@r zLR#1rj%Nj9S;|;uVA*R;k1zU#-n)!xKCo^je#kFy=iyrVdueqitrpViZdyI)Zs+^d z9sDh{Rs^(pv@#zI%<@k$jvO1uM1M9TbACCt>~pr$t_Q{qz_^}Kk9Xbtaqe;482y9MaBKXr~vw&4YHHuIh0(U)Xrhzrv07 zGw8h|y)U8nZS+2m8T=V@@DUIU0fNOq@FyU+4G7L)#J{HZRPQE#wRg9_#rvyY?A?zW z1}672`UAKV{&IH_Sh~-D-F1h4pYY!VTSMF+&Y6!hx@qmNU>0UVGgIkpIxVk8dR^&n z^k(}f?91pU{FBb%?t>n>L)$(4uV`l{ZOpJXb}`Z=;Bzk{J>eek+XHoS zFBx|wZ(FqYmwR3OPrXNQ!}y=UTey+9_i>Z`lk|7cTMRYj65fd0&pe-?#VFkW_!H@S z1bvUB-`7mrNTk2@!2B^ZF^=)a2fV}FAA-7CddculDpXyUGON&2ASLR4iPb;Je}`FH z!T2`;#f#8Pj`yDbE_^xI``CZq`_v!meTM&)|A99L9u++;gf>_ECEgnU4KEwF34Yv4 z-6Fyz)Z2!?-9P1(`B`2$yuRNb&kT(B4nl*6{8ipze~EX*pXD6|8^=gL4$Vd3qWxUx zG7qXA4-c(kwg$V4{g>R&{LkDa{sQ-NIQ>%a`wRSELJ_|r|1$p_cRA&MgKG*Gwe%~Q zgXfuptx#GyJa-bFn+v6_Gb$V7cY~_F0!y=?s)cSc{Y`=Pr<0cDPlmGcp{%}8)`QId z5@t0rN{vnE&czWZ+^h~!O2_<9!OyddO(Y*O>RxBa=^aDNUMUEz)JS2Dkg!R#mA zXyS9o4=@=;``KVI8w^edgW2?v4b}?5)H*OR$0ho!8C5Z(niNWtB1W|>l($(xy#R=( zpeeuTZ=knTA80x$4IwY+J)iRH zC|?3j3+VZuhQkT8F%jyY4rE#WSa3HJNcw}fkNEf3i%|Y&oXfh#p9~a}fnqXHOa^}w zpoR%h!>2&A9BNo2N?^uU(o+sSJrT~HBvL*QZea$e(Q8k7{S0VX%lt3taVovN4CZ^% zqxkRpdQuOu-t4oph+YrV+cWgGik`BekKz!^Bk1XC>HUGU zWj)gxC7D`>J_2qyjZQ?phTYm&a8UYMRxiEfs@&+ro-W#2FSLP?6DHj#S++IB_Kl+Xz>*I+lw5_bAQEkXU==z{s|{N zLHZ#0>jnRFT3F^rF}l%EZ4x>f>nqsc+x7H3k#QbHzHX=YFX{a~dOyUNb_2mwlWkdc z=X+PQBW*+VuH~W4J;{j8#&q4ZNs zKlwIN$4u;|)rruN%0I_EWWigr;H%ll(HOMQ3+VYAG{_5i8r_Izc*CGI4=u^D2FEd$ z`)KQbpzy!q()`U}BOh$!gN@x_VvgWLV-r~@f;?brW0n-t06mBfvL!E$|jGKm=4qXfLxr8_3_MpA7 z`vbmRjCw7jUJIP781X7byBesLLao~wr7#9^v0*x$E zi#@Jp1iVx@)sD<$%@)S`$81KcTM1_siunpWy?`ECAD(-W`TaH+1&}-DPy7&2eio&s zQhq8>PldpSw-<5Dk5fm75t3f8MH^Qk&^t^-IqxO}Ct&CW5ytV%+yfXrN{fN2U zLg`t|Z4MMLfs*TRJE5&TUJ4Kl1A<}n{sO(fK<_Joc^DGoE!W_VHC~KOBFY zdAbPxycl;Mbn<~0#6(*U5iw>9``%q|Al`8j<3Nm%3^R;46aIO zu>=m@M$g;m=OZ|Hy?Y0TF2IcCAk%W7lr_xxSbCU@)N6(GYmE-_oblSn;pnmX*q1&8 z<9;Ml8?>;A$mdyb9TJNglc}+sb{B%PvEXYX_*z0Ol|r6DQ3-^%)5m^l9ATdJ!|ht{ zHd1>$wLhlj=ip@)<6mei;>j>)3OQ3k%2Otzi zPAE=N%C)C{PjJ*9K6{-oBc|UrXpx;6MHhBdtD!#i-;=)k8;Oce7qioU0lcOP7oW)wewlv&6){?>pjDR(z{Nyw8E?p8GF)@TQR z04nWFJFcVgwtLb8zK9wROYrbBk*v)M_SxS>F1#7Ar@T8YN(<0LtD=%?-%2J=ESn?e##tnikg5LJlpgq=nsZ7+-v&bU8dw zMvc{!&ZhK6N@r6#m(sbEUPtL2jO!yehkaKaYL$a?^-)6UyfH#m{n74&J^$CF7E`x^dK18n-+O{b-pN)ChO>yMl$DUU%lGH9LYq{zGW5n)lzc^SlxFAeN2S z{S0VP_hf1gq~=U&jdeGH=@z(_tYWR06Il*gBe4cTmxIt$hx-eRhLv`l9v%a?RN7CPC^!FaEq_PXU33mtXZnU;G zKCi_350U#fZzySF*;h=)mB0g0rw?**DYG&Y4txe^pMig$L6!|-)fqVdcc(c!*MM(DXN8s!j#*@QXawz!%Z9fBl@=pXH9Y@MI zW@j9!=`C)x$`D$7{n7)u<`W`Zd=*l2$v99jXq<=#d3H{subyPG*`!!G%+ zXpQaJb$9V!bG@iFoE>j8^-HOL#Pwls9Sfzr2Hu}!mdB9ajy`%K%N%nXjQ4XJZ+BKc zjghy@;JQow_1IJjuxb>rrz~Kna*P?;=}Fpsjhl;;6o1f9r>8FT^a^8t!40La*Rg91 z_g`d8FEX3YFq?UdNu@?Io6%wU7b!P{??2u|i56HyT4KFxBTFSzVY50_!lZN$pf7%Yp%Gun;EO7kJs$qBeg?500vd{fY6KS9z@ zg_=JnJROOWg)QMr#yS&9nB{julD*3NaGB_(y;)nIqtxr{N2VkHvP`?jW(4lO0(Tq1 z+Xt){gIPUZ06!CuBHh`2^}r3XHE=E~RAWCE94un2YZ&8D#r;@ef;x+N4WR4-l-MEQgbik??9Pfe1Y1oEP^|*0xvX#- z;XS^R2K4nwe*mfT5TosnKa`XN;C>&?B?HYR!`)Afzu{Es3Fzf1EO1(hqe*$p>J9ZD zW89JQPf%wNGd~RfZKPy8v%QrulrY1&;4Yh)$_9V$F;goT%Mx1ZgpBMBjz=Kvo!!r4 z}MRrwx55TGaU_KvW)#$(ogK@8S=}>=9@-o3#FV^ke ztT}y<>Q8{Fr);!!!Qw(NsM%W$zTd(Yd>Q9Zsn?*#eptJvVy~ELJAfG= z;T=|74_r^2dg+6&9{M9^VreDMYXc72=qt1iv05Ksr9Qxpq0*!t zPl(WiYD(F=!B878(jJN3!Ji0DAGex&kg_e%5u<1~o4Ripw|&XX%v6k3=5=IlghJEc z_U=H`gRy9hd73^pd9o090E%Jo>R2?#3CJWY%jm}AY1d)1YlGyDLI#ef%~4SNeQLTCthmFV zs-0+-9(2-zJzijO-$jesA$&=Tdx2sSP)tHT<2V4@PN&Dm=<#KGe2tzK(z3X}A5t?L{p(6rDQOvOqZg_O!6cNmf? z+g8-24mp6v+!E>8ihgCmybtU|W~x0hESxEqft-HAzZF=sXyaAEX>Dj#{uG(j-hZ63 zWsIkc{Bh)e2^S4y3~!@}3`7&*Ir)v3qi1+GUD|Ry&kXP2sq|j|C|}<^!Iy@%;|>wt z?X$P@kNAhl`+ywIM)l{DyN~;R(zp8A{vLl9-yzROdV8E^m&=81)?ZB8dg>l!P4@gR zeJrfVEst`=@Vy7mC|rqlpnj)X8a7^QB~LNZ=kbihqtEUBG1@HiPjZUkQNNV7D*O_@ zhq#&WNq;BjGUw99aiIE^az*r81We`Rmib@t&Fyl34rPz~Yy4uq(69mRBnElv(fc<* zx}8uNY3lK7O0Oc&nD9x;>fex?aV5ANDuF+b{isLHlZ^iWSoj=w3JjglUd&1yVDx+8 zUEyOY>Ep@qfb$SA9Pr2alJkns_wyLfHpX(2Qs4NWTKZ;MJOPh-{#(Kw{!(0tX2D{7 zS||8nOYopP`}xnZALpMTjB&d#WHr_k&gZMm>-;bLSzw?)eeUsR_(SRMfd4W%^ZXC} z!KCe=VPJCGP~uopOwkoFDZJjrfTtsMu0qO()VAznuKAfqmZ#t7NKk6&=hW-al~=(lLLe+EN4G0 zRRZ4pK(Ufo5zqQIViod`L(_qg_o=|4@x7H64Z&sH-$XycHUJ(ZJr*eq zzpu%PgTN8Yx+vffxY-9KOG=6=UIN-v%-$^O?qSXk(r=-^0Dl*ASit(=G1h!wJ^}Sl z;Vj9yz<1K<_fv2+P4bCyHh$}G6VTHiRP~ubF$1cT#IQNWHz^9=ox;M(S3Lq85*B?Q z0U}AkA?Rn(KtNgGSwhYMsCpI9?*Y0kMyq9vBac@0fSVPpyHV7Z1e#8NpRoENDZ?2Q zW$&U5^^wcdAmL^*m*|bzwfLJBlgv6o|ECzS!u!EPfIHP)M$Q59wtx}Qv+$n_g!{nX z24Kiz)^>1h1>>dU9H2xr@TsMIe-U#wpU{d>isnHj{QExmA?e1D$J`p9E(=o!u||Uz z+)-=_(Qrnr!cglm9P*0Tax_XooddLck*&(v0W4TTfwTzNwlgE8VB;uI^OOLLtHv?h z22!`6J$aN1#wp1w8UkkSVj}QL;G)>Ae+;K01qF!B=UdLh$q7!_uPJ-E6X8 zd6@dNs82tW@uzG&NL1i}UP%=ek*vf|LCHsjAC(1y0%)#`Ih6zz_3mNrPU3F?SEa(Z zwOS00%Ge8P?F(?V7YGWFqEVLrxzU^`U#n|GUcD>MV5a8L-m9!&{n4jAY{DM2vWQh} zKD%j;RcaVoq6f4SxjzSwy#!XqlAgiU!5;u5Y5t4A`2p!UXcSBQ;eL-0vMnaJ?+bY_ z&3^`6P+vI^)$cNB@}LJvqCR1b_UO)9v$V3r^Nrq8oUJm*=A+Q9cyK5qiv{X=M(r<= zQwe6UH#3KlnBuB(<~5(PyU`JriL=0)XmSR07T{xRFmJ)?Lat^a9}AP9`;1GH0U2ZQ zkv2bC!6 z-n2f%Ra)~uQ4D`XsFxf9FTq+Qn%)a6rIZxjcCqg6Ab!HQL~GL7!PV4Tm<~f$Pak%0NBnpX;X^_ z)hA{4hWgcNW>s?%@*p8F$XcUc1HSZmkY{g_Z&9}L9J5tpIBD@P+OG!kN~J5*w!!lT?~-}q zNyE-Ur4jC7G^yEPrDyzF;not~4Arh+{ZO0#geLbQeP0H~eg5O*Wcj^VX(Shft0Df+ zfoU4_vx5=z^B?ms0Xs2T)zB)x@qZcO3T%+_rvDrNI_hbT#xW-0@p<+JSK?RWO8kNR z4{>$Oq?9xnG-h&yrOl*?mv&O-Tkt^+u*(9lpZj*^V=Xg_PD&p70+6#4LMzf9N2Mxl zl&i^~yAPv0~NwUs=pQlLt7!Nume!EZ??dXja6h%t2uWM1`uMZCGRWCW`zzsBcHMw@r-r`A+K#hwMa%B5Tpt4|RYgr1Zh3vMgO$up=Vv1ES;pb~W# zX%)wR$H(q0y^Zi%=6wtPS6rL%Ye6Nu5qbx2t~0ZV7S? z)&X{C^MP|RSe=eV#QFn@^_0URVRg1MhCaM^7XE1YJ^J9Hf6czEE7%^HMXgE^eYJuV zS$;~%#bS$$*hy?BA;Gop@Ipy= zl~JNs1wYds%BhES#U#CSmr81g@-}OoBhEUaA6S|WY|=MYn1mQ_E6f_;W6#b^mSX!= zsc}Ga5L~Pwja88}jaRf)ZnDHA6tQ=4tLOnKO=zy&C7HBd9ajuL&}5F$P9^P2>Py~8 z1Gdo--vM2enlxD&LM2Rzd$iBm3qHmWFK1oa1XMZX2%jw(K)2ZAIS>AJKz$&*bceigKW|foL*|!Q3lI zfP-K`;{y*!kAYyn49RskvL`k?jDS~{DWo6k(9|GgG4L4t{37}Ej(rt>hH;LpAH0#o zbDI=;T7b+x!RgsWP~u5!I^@_o{Vn|sgQ~?ngT}{h5vq-sI-lG*?$Sy9s(kIlP2e#oB(q)@Q zFA#@uKM;XJG2)|eMf9rqmuxM8R<=+-(6EK$jkqQ7)l||m$k`2!2GVLVu~ON0@ZnOc z{RQD%IDR$pS%fq2vw>`hOm!_Zj~N5>0#f zJotLL@!=k35Dg>pBL|tGpV?W~Sy0lufORsE&fkhp!gN`kzVm}8ER`p*Rrb$Xh2lsL zcV4y9e?kN)U1eubHE@ZY!Ti9^5MA9Ew5>PIR7!i-z|NqUv?SYC2W63zn+U}OyM031 z_49pxp66Ha{*%IWpxkeu`V+)Fa_WXs?*Q`}>=V|*AxF`!^iH(o^bxR(WgK453oMC- zSEz_wcF2^28u3+H{|Ab~uaMmWe;yZWQXmg3g}H%RW;1%(?REgM0PBn&YWy5bbRPWxQKC$^}AcS9J{Z# zeV&5+z>9RM9zl#ySN~n~p!c=+&=0E6Ze6sv!>B>p(gCRIs8(w7PqG4v9H&IAk1yPE`ev1wy-r?W<}&o1oT)5Gor-fOVyqcCeM! za-q#ltofVZ!d#=&osuA=@LwXNe=c%98!q@eG4aM?aFY*pFNezc&kM4Dz463kQoce) z?}GCR;o&9hRA!(#ET^w^l$om1*7G)~?=|G``Vg`=phWE#plhSit=8)v=<6$75q(OR zUBb1TSQ=Ee35oJH+Vu=}Q0oaV_g^P>77}F&rI*2t`M@O}e4O3IAf(eW+$KgenqBMD zVE<$KDw3>am9%+-0zbwk^t5yfgK_}y??AhjG-gfYjjjujzCY*Pdk@z{QWRT={terJ z_dT?CYhv$mo{2n-CapoRbCT6W9ARzBdY2$xA?+CL)r+hB+71KCOf-v2JyC?! z_}1UsOlJ0vEtMbQ&>QcB5w`)!EtlQysWpg83mU^Wgy{i~SAGU$Wn zr=*-?gAJC(fd|>;3qO`14<+x#15=Z;ILR(=M z(XO8V>$zGvR9(ti@gX@%`x0rs2?<$9%Q@)7#n94Bc6_UWM0T-7z?H-5uoAl42W4-f z?o4RqYiKLbuk;*Mr31PuCuX(+gVCeqENZa21Cij9W?l?;d;*>FrY=1$r@azt71GKs zBrfk|1A8GfTnSZ|P_hUf%c5=uYs`nNC6BXSl+bc9oXZm=^#on-0&;8#p`>L!B319m zD7O?zk`1?qguS?>w30)75o_mU#{4)vl>zsY^if8vgz-NP zG#Zm+<`8091<~IO&d2bzOIynf%dYe|ap@?M|68#XJ+2gDIRW=cW?1|^<|z+IwTh_i z&8%0Ofo37_F9c^BkVZLh{ZQcg+W!k!-2|5U0$l-?iyWvSSpRaUy9H=7!02n#L?f{F zGg!wDQD39pX)EPY+a)ccwWou+9Nyjsb0xM%(Aqo%tZrwwgCm}AN z?=^v|#o^xhATnbeRL1iv%hhvQ?b7x93a(>3dUiFRkvt2f?gm$Rj6_zU{XnAkI#vNy z5$VhXrS?*aHP|$D(G~w}rp3ARk0wQWVL&U4r4-B-!d=0Nvew=LnJG&ur79W!O6J8CmVQ_#9r^d0oIiW2KcmpnZTM%9m=RP8cN7h3jhTF$a9<_XceVknSaB<1^pz;XgYX~^O(_vw18b92fXP&?02-z)j#?^ z_rbI(iVG<$$QAv7Y3%|sG`)qh9^4&b-j0wey-PmQg|IBQdEh|% z*5$~S<*dcgW?j+_YK`r%c~YR>taL=z+XqhxS9(`XxQNjGykIS-*JEJo1R9ShPd2tt zTZN{0Kf?6&GD6Z=$$^ga&ciRq32p{r?>+l~a&KXpC--jJ?l zg)_)r8O>*^p5#yu+Y9~&A(m1MzS!U$E7K?JohMoq){bzUkUfJMhmewbM`RIB`Z@dp z)#?2`p1D(Qvq?YAp{%2)yoN@9iz&6v#>88K){aUShI{E#U{&0-ig638M?bm_5z=3@*KIa==P!=QB=?DI_q=y3*gzX}X!^#M=T2Nok@=sy-S zdplZXDrrUFNc@U!W876uSLmi-e>J0<3I_TUlg6d>e>bze2Q1D&lbHn_eGM*G()X0e z8eyH*xJ9I(_1^2$F;={>?A%+xwFvF7Sg)tQBQ8Ll|d&1iD`eFhua5L@3lGq-0b>=gg4RBCq@HB^f}My>PaYS z6A*s}tw~QSXDmgm+4oVRnAzM3^l&yUu178nU`9T%*db^oOK+qEKUy9LBuHvX%0ef~ zEkgs&GW#9tm7Z~;anE3^i-2w;YiRK9<~k^Jadk_P7Q=R_8Trx2Bt}v3uVy<^?)!aP zgETv3Mn5HBSWij5V1{PFi^D>w=G1^{4yB)Ew$_lp4A+YhPY z%LS(MF2<_bo6=~j+&40pMfj#q;2)&tb@k){%0O*%BVlqfz!th7p)KHIJaJZ5Vmaum zOCl>W@e#Pts;2z^A8X=%aC}Iy|KvwM1#rtwcuntm<}gz{8=>Ew&}Y$~S|c&}h?` z4g<>!_+0YkApEO0=!ytSSN#^boMrW8)2$?Ra)1Mq`jiTOp}apB*a#wcLq|Z5`sqKU z(t0F@-h12vY|2KyC|y~!@D9G=|B zoDL;6fal-XImyWZCh-MpH}?&!Z?;}3M*Jyeu7Ez&#_PC(VE;jA94;7DP?YD6{CCrS z)On5E&WbQ+3(SwKgNqr#8q(KbMOebhSHa$H8MCQfw)8q+;lAGRX<=&vc~K3Q&liuN z{c+M3tu*frLEoVbnbohR4O#E?m<^dZ(mqIg3fYj+I&78R5?VI&9^+AXl3g;RlqI#C zklt0^ZqnD@`ywR|7onshReLbxIqBgHGOys4K4d$Q4n7{o{DKSZPDMAXSZ8^Ek}{t# z8!K7m*BO;Bq)aZD$h7vfPG;LGGzlEdq{efU-GH^GH}xJ1wFFsCrFmKJv{+jGgr3wM zST$zDtI{~hXSqXe-yz#6snp8!cyizE1TZ7`OZHSA{IXK#GCrsWc+yBQjwvI@w2*UxZYcV=Gb?_s{Gt=s9RID*dPsgjAVkYe7guv|K<6 zPvyu%7la1i3J_^hm|aKpj~+rvLC?~g;b!iAgLgK7Rc-Lq7xXJ67f`K2HhjPeTnOz- zgW6*D4SFMYmOq+%IOkfeh!q6V%R+h!AV0#1)iC_{5K>80tZOrxVlfx8owk>NzezRQ zVf;w4$PXxa`?M;yy!wq4>aLHZ%V%a@<^DM{cLaYF?lat6+JBFc|BZ2HF=IX9up+Dk zbAp{-%@%@i%~s*M3C#UNk@q>iTl$Am3=S+zU~&vN@6Skfv65)dB>T4Zo0aHwpD@e% zhmPK59UaW#54FmeUiANqRL&`*)CcGntdQXmos+jkIiJp`Pwe zgo-s+^BMo}P(S+q2E$Y|d%ZDWJM|wd_`R8-jZ(JnFQ9-|SsV4v@-pVLg!$s_CdNG- z%4C&5&aGh8p8(FLu$C;OymZkQSi5$?T_3X&%_CiJFzp2MuiL&rcAUfD>=Ejh@uYMx zyf9Iqm_1N?G^oaYap3nbn%Otx*(w{R|7Z`mwlK4SE~&HN_w4V`wg|33dm^E(&E3K>_ z8^DMDDRhK=-Uj4FF>|ap(K5mB7)rjxnztQorkGjR^OHBZR)Zti0QW+jtd~&1`$(~| zfklY1=zo;hzC);vAO+PY`g8Ekt-;D$F~n_WW!h|w^(cI=!K#CCdqPFos<(F{?Vu+l z5Iz<3Q*{?s_Uma9zT_5q!*_nEq@#!bZ+_5y3G|}3CATqNz3EqBHlN*K0Ly62wkfrN zXLj}+0Gh3Uivn$#T?2FQWn_m5Uh{Yw8OIw||KX2$s(|*78YM3P>&M|*?Kq?{>z{Kq zum$~VcY7E|Dm;=O&RGg?f-k9-GVlszf;Zp)Gq9i*yG4oG{~O@yM$VA$AB$)v z@&gM)Dc!DSS|sn^`$m1W{$m1swf6M z??b*mJ&7+&zr%T3bNIH{JihDjv3*zib30k?3%)JAg}eezxLU+FrML0L=^cFOX*u5n z+(n5!oItn6HQ-B+2c5nQ{cFAo{dc}5{UBFU&RJ{kuHfs?Y3@o+SnJHmaF1{`;|tN5 zoDiokLtoFAp`Yb+xaYZUwe!zf^G)biI2Guk!4;Wkli06=Y z4(Eu~%!|R6Ui0#ZInD(0_-=l~@Jhvk99$l6O6ZFHp6gcLP>Woxd2=mtox%GTx}q6} zAQz;9O%SQ~hP15~>r&=?u5-hyC6X|>Vkvb#brjS0Hokl5U5ffum&W%itTOeu8r$`2 zzR=v5*xkyqUjpmLe-rwx#q|Aiy?=3y*>WznZ{!DU=<97YuS8^F^(D!uzAvDapIb{m z=dBVCr_19T((Q3Ie@K1%McEr2daI*>*BSbcTxanOa9weXMiA?#I)YBu#e@^+RsE>t z2Gl$Y|NDNCHlsLg?q?K`e+6HBm+J&iU1?u;Z*E6KcHoQe|BqAV9^$*z&H2{*5B+}0 z_v3@#MR=El;oI@sh2fg%mwSKWG{|4T(?ROr!!q*z!dJ9^!*}KHh0mLEO2f6BcEzrmnp{$x58woe9;=V@AuxLNHBK*g9wXD4W&Y?Q`ud`;( zv$JL{x3gxhwzFogv$JMywzFpbXlKpbXJ^ekU}w!dVQ0-e&9_S@a7L}pni*zi&Ae|X zPRz8kX1=zwW)`Cx?BY~goi&qfXU%N2vt~-{Jkm4u26nv`xYju2QoRAVdw}mA{Qn8v zKkz%?y5M@?dV5iIC*h_t_bT%^PW7HAZ8~*7jMBG{XM=>Z<8xU~8YP|+zx*fq*W}n?h2gR>=0@|#=mHr!lKX7cI%#nZNe?vZFNsKzp zj}POi`0z>Mh4`1^E@#ZpWn#0?zmc?CaDT+zjcbDw{X7u(HRoUR9GS<&XRGla!E*$U z!dv3>V7!T|2{Vqwd>n9|PFG3wNC)qUyKDPOS35~fa81cO7WfvwnE0tM9)q8Vt684> zq+f>lE%>nAlgR^guZ z|LkA*l&hKV*^lyBVR|HgA@Ks*Tpsu-OBwe#oP6d!xiq;VDVO~0z>mb`C+{bHOHxTv z8Rd=;K7rd?+gExrG@f)QNaxdg@hPb(jgsSjq@Ns?YY_M;=g{8yxU*{eN>8~E2ahCQ zhP$M;Z|PSC`6-vxzYSM+~KQg~5QPuMknTH6Th1Zl@0(_((mxPa$PB_M!(hbLW zQl7<4O_`q3?A(G5Rn@xMTB>N zB^OmE8r>!;I{HIta?)_3>PF{VdKULo<+@EucW3%oexedAWwn)zw(uX+jw`V;f3t9r zrEj-;v9&za%3owD4Nr}sohBA;YUQ_CUGPjh=UDo=R_g+Vy+f9})$US!TvWW$xdWm5 zjiofTl*_EvaqFw8sp$j*We=g}=7kQmebhQerG+ zqQb7g!kcuDN{n7e%I^%4m+f9ZdJ!pqvASiJTV^RcEoHa05NCL}#L_!h`o&iAVx_RV zV5Hs?cCS!*Z;Hyh^%mY@b+1zS=uB%3P9^ssny+(TTABGOueJ7nrZChZJisB` zpN%TzJ|HTG`~P#NxW5w3Zi4h3++R>GUl!Hu478FHb&tximVIkskflFuE!=G_bhi5_ zOMl1i4=BaXpK_c}Nx$BFOF61s@1W{>m0?&Z3#^4-Xhdeg;G8gn{~7D|A?tURwLHt< zjIoqXR%@iCzhm%>wA|aRW!YEwdbfpFD$EyZWi>6b^f6Xzl-25L?MyN}tXDWH-g57- z^!^s^W%nL-e<7-pc92}OuP05;y%cqj`}0cYP8f@+(w_<_A^LBG-?#Mj{?+6@uUzkh zwR6JK|70mh8q!Z%%K28Z((uq-cmJf#?6ZQ(``p5#)k4$&OVRToX3ctRq!j;{m1%Cd zk16csDeM+THzqv9azC&Z23r}d>g4X$Ju1n@BHNR5&seyxLABgcJ~BLfXxQs*ZGLXp z`^fPBCrcTiGG2+5pJFW#q_tCaAEXp7$HFgL$)N_%y#`68rH`?(Yu_xJMP%1|F}vK$ zJ@$!wtu}HtXc1q~E#bV-RND(*=Wd{U1F9gk9a7gJb)%pe2Q4~QG;>Ax%#z0I=+7Mk zw##wN2m_*VPqWPXrO3>t@c7} z0&4Gl!-m1l$()U{F ziG<^T(g7>=40;F5%?U?`C#y=fq~aRk&LRCSE6GYvxDEGcYz!KQ^S?F9xz~6nmT;tH zS-pf8hgD@tt=XtPskJUGX+^mO_eWfR+}$|!Aje8>Hc*YV8%{Ec)!WKF3+{er)UeVp zc(dJ`+P#(Cf3CY%YT-NWex;=>v~UXx=h}T0_qySXG{bsxBiAiJbT?2u00f=r-MQ|D z$!`pYz3rZ4_x5)0YxiJ2E;4F=+Niy)aX};F@xDgqsp1rO9x1{m8x^-Zx`X$x&#HaM z&Z>RI&Z?blXVq5dtXg-L&Z>2-byls*)LFHhz3Xwpu&t!RIM|n6t}b(3A9`=deDO7Y zY(QsWYdgovYJO$4ls)aIlorkZ__pJIQt3KBsdW5LDxL6?N=Ht5{c#vf`ZsN#+m^Gc zy>U7s-kaRMeb*k|XFAv0%hI{%-W2)zv$s zlf=Cf+?%-=?pM21?$@}pxc}B&%)Pn0ocpz|Irr;a3+~suKXPLDmF`|0Bkum8)5Be- zOj>gpP(xHmmCkrSuxLBzMsyNq_Y}L=v3tDTlkG0MA}2!IJ&-K*EZl&4k}upW#FHGS zwj6Ybz_QTUgrY43UAhQ? z4Us>sqxwewF*=uPcT9ZM)g-1#OtY9yF}-63$E@Szgu}s zJUMOX8o4ugGJ2*v%iZYCcISAz+_|oaJI|eO=khk?+3AHmE&Z*#hUcU=xIel(+@IWC z?$7RSbhdlkU))Wug{yr|uTJ3Y=^k_aIC=MJH^4n(PgY-YFY{z|h#TQXx>4>uH=5OG zvipqZs$aXgZl0U(7Py6Okz4GRxM@6Voz9ci;Dp_;+#FWaZLZX9cL$wLW_lhMhm<*& zweKQu{%cmZE3qv%N1on*UAZOCq3-0_)m=QLx)JC>n&;3{y-)3&9!Tkqv^qVWz+Fy6)K#fQ98;i<*3F2NFM+Xt}EvgbMAqA(mhq8_K17Kz3Il8#rnG#_%4># zx%IAqHFSsDiA)VB#xa_PU?W&rPG46tp`HGm_xuvHF&yseXkfthEyKgBuk zQSKsWE{YLeO3FN*u|tRGB2kR@3huYNJGtNN?&aRm{gZnqxH*a^?3vuVxL({JacD&@ z-SuIW@8g0O0A^y4ZG&%Df`loDk04wrhCYlX$!p5etsHIrBEC=wCrAjL3aSF3J7Jkor#`@t>-e^l)jl zM6XvvrZ+a3jzq7L=NGsOO@@E>g!I1dQRMaGwPbT`iF*t56v$gWMU=d421nk2r2TUZ z3HxphNjlrBmZi%~mP(RF5|6%8R=*{)!1yM`Q2)wHwdV_dAepms^t*=N1iSRb3Y->M{Q zOfzPIlkZuXtJ|yxj|Xe;VDEL(W5d5$pU up>6f)*eTN?V>)NHO?TSWiW1JZcA{J(p4kesz~s(~nr&gEGUWuN_x}MPIJ9H{ literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/static/InstrumentSans-Italic.ttf b/docs/Website/niveus/fonts/static/InstrumentSans-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35a3df93bed07d821f26ddfe39ae24408752ba3d GIT binary patch literal 70440 zcmbrn2YeGp+CM(CvL#zCl3XNL*^(^DUAAOP?v~se?qCcCY_I_nFoYhGkV+uEU3haL z^^$P8w9A`I2q~A`U3zkb5Rw3aK;Y7QuU`GXGrO{714-WB-~Nnt_t`1WJo7xyJoC)# z455S&Eq+1>X{@VnC_Fpw?}S|OF(GtLV`oRtO_3L0M#xo7gsflO*fX=nZFd<7RX#vS zWJ*Vm!#Si(JqvNSA(z3PUSID5T3bkH%s=rwXVHqGRqtI|kVi=P6DYv8WN6JQRvPmE zFRo!rmY=csSoZPX5u)2q$jIwUM}~%T_a!Vvevx?ZUJ5|u+3KJ0T!-h3r7PBMbnNdN z#Pj=vsP-*ixoBvW;bJu*QNUO6@rt31s{|E!1n-dtNgo?pG4dz<_7Xxi0AH1D)yg$% zU%za$n2^mVPaD2!^~kEF%FDJOJ;O&u7%dR!$Px9=o7wf(#o!+i_RxD3JOmC-Ac$xJS_`A+B@3o$$2E*93$bNIEXZaT+7~5 zQP_h^I#CFBkQ8CR|AXHe6n7!+SxEB^nQ=n+9PrPH7D2jhCdtCDg*k{jPMW5Kqkth0 z5$T^L$?SUa;J=kV?>{6wgm^5poe;tmmjHJ3Kzmm>xpVgJF)zilRTamOT*#@+A^NR3%@Zah7fl? zk8eYosbM~`3!NlGxD;1*@A~yX7m`Y0zW*-s8cmDgx=l-=U z2nM7>AfHQtrn0O585%;u6*mw)@;rHH0-mP~{x8@&#e=L){&#s;K%dC{-1+`+?KWp`pfj4LcfEIeiH2@ zn)zSi^g&(e2LDUEF2J4R%Wy%ttPI|+tZjcwi15E5Ob>D!@$~E+o)x!}O2y46s~2H_ zRED`pAA<=?LAy0%3B8$|DcnHn=vLA%nEamzRU`p=H44{6;9Modkx`+6n1qF(FMB_m zI1oGtS_CHoi|;~cMYs&17@+_`M_zz#MNrHo>xm!Fe*YKp^-JMOqN6&JM0Nfj1P@s* zc>G7m5)wmQq>t_(n}mN7Gkx6u6@8rCk2DSh4UHwqGzK!@Axnf3qJi$tA!~>corNBG zf5Wac)c+IYS&z8s)EJcaI>c*42}_7xkwBJ`b;$om;M_vm6zfSFz1x2`o)_SG5YK~j zJDEkd`;XyTi0cQqD(V05>kytl$8#yJ-_!pg2Ee~3-}^tJS0LO#E<)G}TrNV`Nrme=&xud zVQ8yC9{NbLeBXkr4$PU0*xE{|h(npcsYvfuwOzuV4 zMqfktkcWHeKgjL0gWO2JAeYm zQG_WX6)}oT;}+x1#;?-j(v#AS>E?7>dO>G$RszaOQglLAskZbd171UElK zc9F-(Q&dg$)JSbKo90tDEu}u%LObbvI!u?*e+daF1?#X9JIt^ zbT@sJE}#sjC=yL#i2*b=5i7BS(uKrDO3<#=q?xpmHquFEk$$oW*pI?0TuHal#q?tO z1U;9&Pqvdkp!M$puRhFMGeC+PKlBtKC?DOJ*o=sk2R zeVoohTir(=pgZZi^pCWXZl`zA&*|OtPH@T>;F|xTgRo`=@L2>bS~ZD;223RhBnehr z9?2rv&|Yz*lGK71eWa1p&|Rc~%qNg2G7pw;3;7sw@;~GTaLx{L3%QN#BoC7N$e+Qf z{~%A2r^w&PpU6IPki0?mlefqL`Up8pzClm)75SP9B2!~#jMk;h3sc?L4_EXgH*C7I-D;v_GU zBJwhElYfz7@=xL+{|0BjLMq6sq@3&}Rgl$sa){KCH%SvYLS~Tvk`D4NX(#WHF6g}; z@*(LaACNxsDH$Z+k-6kcvXJ~h7Laer5c!@gCgWr|Rge{A6;+YdG@P6cehVSLC%xn& zGMjuxKcVl@PwAKRGx{Mo?lrof9-@coLHa5<@J(>w0qAx=86iJI(~D$`hSJ~B>*!VV z8hS0gn*JM{`V##o-9ulY|Di9^m!T`jZtCCiK*;5c{q(4v7d$f?+_H+C1>N*JQ2$=C zpBiWfIByAEL(f6`9|f0x4H?Z43WN%w3EVv>EEhHk*9or+$AnLX9~A~grJ_YKOR-Qf zrr4yoNO6tgX2qWr&nwljPUC4*6_aYMd2&M&kWxh zer@ao9GMqc5?LGB9@!r`9Jw;`%*cx(uZ{|fs*PG7b$-<4QP)S^ z5p_5^Ke{aXtmsFhpN-xV{buyL(O*W7Yr-^fno`Y$nkzLsG=J3mQ}d%XR2!pB)n;m4 z+A3|cc0jvCyH0zq_Gay)+Gn+UwQp%Z)PAGW>AH2BbQkHa*4?DLOLr_LKE@Q28{>(o ziJ1{IJLcM$n`2e6HL;sxcgG%zeJ}RQ*zq`TTx;B{xS_ZeagW6vjr%z6`}p+u+;~rX zP5g}b+3}0w$Kp4|Z;AhX{G;*D#=jDOIQ|2DxZa}A*O%(+^d0(T`gQtq^_S`YM}NEi ze*I(m=k$B^hxPC4zcMHdafUQQj=^oHG0ZT`HVhk98O}6pHC$u3+3<$pxZzX74+$X& znuMeTYeHc{WkOTJ>V&fswk2GfaC5?w2`?qQmT)xT<3vy5hQzxQUr910ZAkh{(htcw z$%~WEOTI7phZI9fU&_vuzonW|Pfxu)^(`Yc<{CE|w;Nwiv#0se?o9hGJ&XU>rFW(; zO<$XSZu(W}cced>{*lROvYU!bvrK22E;0R&=?>HXnw~WsFh`iH%x&hG=H=$A%r~0v zGVeCOVgA+KC=9fp~{HQD9mWjxFqBGjDs1UTGdv& zb&>T}>tC$TTmNHy)B2wED_f+^YAdw0+UDAp+1A^(+itPlYujym#`eBF(w=GGY4>NQ zWnP^5URGPy#;l!L4`uzFU6p-p_Te03PIJyxIUnVc+~{0eZcpyg+_Q79&3!EQpLvCO zPvpIlcO>t-{EYn4{Pz6e{AV3~j@6DU9Di~=>p1EdFGwsXE|^`gso;u&9R+_X*j4ai z!RrO@7yMM1R9IVhTHzUm*A(7UxTo-QXS_4t+2vg0JkxoB^HS%v&K=I%o%cBZ;(Xls zwDV=>tIju_$DJQRFQ=dn+6^000WD3|#F`XVQ>-cFPWs)Q;&R$^p?IILXS|?E@WO)d ze}K4W$Z;bGSp>ttq;SPjlgebEkF|?4=trkDuNEulMyqo6zBbe0D4Dn1CNbFSVD1vid5Xo}iTmy|YBG zSeL@$F{!8=WV#LA(S1jzmd@9Xzn~L_bmAPX5UveSu&IgmAQU$>$?bJM^0lGoBx^h_ zr`ugzWV2YN-09=vq6NE0kE>E?F`>*Z?J;*pj<@8H=2drlcA4`n?V--0jH=GOh{o>P zjh*7rJG<|!vo<(NeKqFFoPv_NftK9nqNI>G)j*?nu$Z9&vxLm>e=B?@97O4)-fXiK z7gdG0oJK)qapwybbF?BpP7jPcu4sWS?>nzC)!ov+*j=@_*%I0%BosC|iWYQ~rmq~H zb8bp^!q7$P8JEnf7#nIYHQF18%5xi?NoMct(<)b;JuPHQmB(8z8vPRE8a<=> z3Gf532qbtG!w;etS4xQA+9);>M^f|km$>-xkuL9!%zJCgwwTP6@URZg7e0Fd-mf){qOgIT=`a^>6gC#f#XL2mT50k4TIOG`hoq)eh znRi&h>2>J@9XJ(YWm!x?gBo@8LY?@Mj^4`a&V-H$A1X(h!29ok_cLIz2Do3rxZhyO zR|GM?L8=@%ZXH?gtz6V-r`?Lw!n$l(1X|Xbo1NR&yA1!0p@vHJj7#S? zp0~Us$KsvkvXy7+WkJZzGL!~zgI)dqOMgw{!e#DvdkXFnH=pecSGzekTQ#dD5VywkE8)*aS zYqY{q?ax0>&n304Zv6O^yeQ)s8q4$It-$z?#bCSyN*@*WgxD~WVIKDa*s!cVEXCuz z{v3``uqD6)^r0a5e*a?=@W(hWN%8mk_fEj;g5a-Ws_|v?vkn%a~ ze~!WZxB4?#4M1N8SJJmJfT#XL{%`3q)C<(0iTGC?I8( zJYNa^25pgAMBLBvMR^kZ2swas@P-DJ7r`jeqpDV@R0>(=?6^jAC4Euz+b?HlF|#`AU!MSFn+5< z0pS}?fl`SAlAXf!TQFRb(w?Kk^ zgs##-LIS!w=c5u`9aJvsI5>*;ci3Rw25&sujJC;sxri zE9cGn{kqzY%jeCyVMASuXXu>9=H->{!Ocz0W0j0&cv+lc)iTBMInPXo@5cz5@sb2* zT1kq(7vuFwIMeVFd>{M{CxgF^k@F;+X?`jGVT{0;cB_)>uE6*na@l8x@JP1GDJihZ zDGWQs-~SRBvV_O8#_NBP7!!44tuEno2tEpCXQ0j@4QLM&d>(=JK;NM^s9(E{K(kUmb#tvIh}Z!htAfD zcU94|wCbKK=hkmt){zqy)~Sv(SI=Bhvg%T$TG<&ErWW=zebOX;BTJTWD=w`E8hLhe`%$C`9ip?N>z|xz&w_v_~pt7uKz76K{p^-`bSf>?o{l%J1>iomL5) zU}h>fhx`O;!OIPwOMqSzt*4sKzy`Zj1zx6Ovn~W5U&;8`F>8HeLx7RT7$cV}=~8WF zcU?;mM>m`|+8AY-%F-?FlqPsJWvvNc#vb@Xk^+=c!6KAxZ8ywBg$ddj#EPux&!e<< zL)ZJd_g!t-w6^}y>*%2P>M$)8_7wEGeGA=98NRF{-}pv4BJPm&%ynF9+GI`pG3RP% z1>v?J_yKZ(1c#mhF5oOF{t;%`Ld#kG-@)th7Ss3j=6s>p6=wvY*qFd>X9l|4Et@E? z&y`AuyTKq03uu1j!g_0GQek6WTTfQ*ie_KcSfjhQJRL5cjE16udTW+rt*@$LEZpqv z_heS*8fwbyZoS9aU0N~6m0H?WTv%gDDYBW13}xxFDy!xdp;jClj(w+Gt7ka&3@(kr zB=`aNyqFAIp$&mOY9+ysGJiOOqqf2DKy6d}UkdLFZ<0)jE9A~qs;!mFk_w#!tFzt^ zYL_c|gQ>AHHpV!ZQ`lf@>W8~lo3f(*vHa2QWofrvIB-Rg_=9G_+=>;^YMpvUOoGLm zQ`}-#e_NL4d|51^doJ2i*YIv-_E?j5&<%QTM*HjmPpBA2u#ucaarC<@Gc7H}KMa4X1g~HEe;3hk* z91(xlN*m}U;!Zk8TrWO`TJiY2R%}fOY6V|2YlrFZ{p9i>IIEQue=q#yCyT$2`AvWi z1wJRCa`DA>Sz0>*xoX@mG!XKe{SmO;%IY_~lvL-sGt`Rx4$!4)Ic^ z!w+DFla(&P8CFvKS1}_2IQK3|qejF)?T*1)&Ej)^1-JC2asP2D*(OZO29Gk2VSbIp zpAJ7xLpi)jJTPU1^$vw)f%r^%-sAb3c)7=^H;@l~BxrTj!Jb2`BoXr=oa*=d4s0bB-wJrJo(;e^10JlW z-oZ=qIPG@PH!)1W^BJ4~8RH0yHHZIW# z#xun8;@_d$_Re~fnFS)z2Fki*A zzY4mo4>&WOHEpD$`eaQ`8eO(&e%H(-@wPSggttMAsUsc9Gx3$MAHCwFbt(Jhinw1c zMDokIJ%(t3cUpAQyo=jXiktdJ+!agPb7@z4SzAtaM}0}A{;bia)0$#t7=|wY`v+QT z3s<*YHot87V0&p=hHqwpsVp}!G2h!hyI}P>6=%!|U$K1#Eo#aQ@Wxl18tB6zg9jxK zEcZ?TJJec&AE8wfyz~{95efb(&ElFQ4>GkC)W8fivuHdnWpGazUeZ?*AKs}>sVi)p zAGfl5P4YIi#W%ai(U#NSPu~(_)||mD$jc_iKX$24g|BkLf}CzZdOWeJ3G1B9%%pSc8V+e!F%uPR!hds$oS=`Zfs#1oQ zghdna}FbGdf;BYuef@U&m$xs!28~S`A4@Cg3 zq;Jj%!r!&`un!&ZDs86m5kK72HHx}oO3D+dGWPwYjdSFA*a02-qM?u-PQ_qhT49I zH5Yp@c9wnoc8>~f7loa37oS&YG*2*o~rLk@r9Y+OR&43QFd!fX|H0D{#+h zyk+XNf>QZeZY&<_FUXJw3}9h=A?qCGe1g(Zu&Ekp7)G}xgr*KxadMTq+H$l# zojc#)1Z%D;nN!rT7{ppV#E50D&!=>Fyr4oRm-jSZLl5{e11(j96;NqdkKhib8`A+E zOvu>L>!HB{1qV1U)^0V7mo2JDF0AX$FYhlD(luIL{ignel{a)HINL_6Gb#&AG1+xl z_R5@;sIKx@>WvL|ENIN{Yw@Hxx?B!l!}@-gqFT|ib%AT$>iH$jiP@gYG&UM^lvXA; zHqryd*A_Dhf+mUx?#I20)B6np9s*#_X!RIqrNC;7EJA$T|NiR~n-@(xqQyhMOgEvY ztZe+gU!xx7IK)A!QNBErHC0llGae-v!>1O3^Qz{#AcBiD^fYrgO)hbmD!}FKb@_D( zZPwN5UlB2hDnc6PwtG2MUSrmP46m4ggA0uTsH8<%Y$e@40X1^XC_(qS199Ufpen4e zymKPwxS*W(l?P(mxyF?8IGim(D+JI5{4HVkHhCVN9RVwJ2z>%R89tM_Mjm4G5w}vM zP@n~?FOHtsrn5zB!%{T4j_`}RHMB@0^j0+~L#skU^K9df(#PuRh~WPQa@C9#_-61e zmv*~L>fomdjX~vMK6AwsvDxb#DhYuLr_{GVX9zV8l}iFt*pjPIn_D*+ww46R&>OY} zM}fVqWl>atOOmAwZ?^i%@$um?8XGK47(qx_v0h~tr}M#5P(y+$tTI%ExnOW|0M04R zVlzrJYC(JAr+{-dM)J(6HO0bBgwEN+)u&1kzq4~EO>NQ^RWy#qY3!$!&*_bCX7(*D zt!tdyakjgBY@YZu>vbk_Qn8t>$$6Hk`L%PI*m%-hxg?yBH#kj?wv6J~|CQJERW-9h z0VQuz5oL4C_3JvbDhG2;|;j`Zvx=>7{Bl;wRvP~LlY1fbJOl;cW# zDdoHGRvy=%MStR2gF$VSVP^*yeu^hX>F+sDvvMxu+$*I$d?nKQ@57ADWI0k=%*(vY z-mOKx(!1v;Yt5j%*08-BCq3|JIi<2H+M$aMGilS(RhM*L9##8>GOQ{jEZr#djo;)c zms=YW3yJ|n-r5SQi`rx3@9DgUh8?Cw8^u3{ekuHSJcWjTBYy1=kFfg1!v`eE`3t;8 zN3i0I(H|{Np)CXSXPm+skEOsHX@2V^p5isk!?E!MgWtp{CBfgoSe(`L8O+KcCvYu; zE9ns>)4FU0Zkc-@?aC7o~jf1 zdMcmmRSNyO*5uGRRMn&{DE2On)!0re?`ThKrePegBtF!(+T&?S(KJ(Wqqu2;`v*@G zpJopOoolMAoO7!n3j)IcQYB$+QY6XZ#WBg6nmHFO(2eCci*xQCnVwGucuH6^ z0fz>j$=XYg_Co2PrWE@KR{n7~a#_i(MFv;WLog13E3{i7a7|`&uIO1N=KrS3tx{>_ zbfo!{Og4{e1qt_=`k|;=@m@~E0N>GTCRN0IPx%|Xa;!|&pPEpnPA+rO?qJJ6Cd@T9 z*+YqUp(n3nX+_OKcYfzmPgYAwdaEzH*^}O;E?rz(jnNKzu10DmM3X>KZ?sCN!q~Qnf4c=xYWz2z6U;D)|hj^Rfrc)0( zxZJp~CR>HtGERz}Zh^x5m}-2`nGNb-n>`|<_0B&9*&F|&t|?agHRHuJJlM`anM`Nj z01AgPU%#YFVsyVXvwhJ?L*=>zRZN&khU4UXQgc zY~l#A6qq+UP&wcfW>8b9)mfQtY4#Ks^tg+=9kdOrTg-XxbW3ANv167xyVaSNmzZl! zG)1QwDs%Gc?Y7$dWLsRO#bDAH6TG>OMn0NnSp3W}eov~$FslckLShi~z)uo1i(!m< zNO6x=aVUDbNvMh*;on=JKgIZHHZ0a6NlVCzcw)7jG}Q^yOr9{}VI~GW4NU-E>*3GF#lCUJ2l~b&Gaqf`1e`%(2%;2Q2KOT9Vo@}`bH56ntZ~w z@*7kj6$}olpo|Il5wZpE1&nIH6-r>`X&A5YvSI23%Jz7e*uB!%t8eaX(z;6PmY_Ep z9ZLzF)45(fHjh?{&(}6_D^w?h>=h~QUfwHA%~?tJbp+xr2+HC0SpjG{?<=Gn4s*`1VGS7SD(B0*KlTaSO1Sq& ziv1?0>#(*Fc-Vo(E8P zdi;HCY=R#09n_;7_yy*d>5KKiFYf_8BL18}!}~>7?^ySof6?$1x^ukv1wkRY7%n^w zs}p7OFYo|vIvI37`}j?ci~7iM_hwB(Cv(`Bk2dlDjGwQ83+&ZJL9OqCcQH_!wXP9#+)?FaBGy*zybpU#jxET9jwh$}oq%jq8;A5%}dHKiL z*a~<}A3d>Hry4y;IK;zy9XytK2jAkboL<7bRqzPp9m;V->|jg!9eiiR;EYb$LAK&C z=AYns1ov7}9?{4-SlhqDW-yUQCE&sO?j3S2hf7+7QAv{ZV_p_pk{t$>Wa=2ctzmG9 zj{%o?^H>_ggmYmKj~thEDZ`t2GPwN!T{`LRgXv&l?u@BEzjr6ReejpAXBN|NW{~-y zp7i%!BMQu3YM5d?$dqd4JS@#OzJ}Gl3~vb&COr%eZOe5fgZ59v#&~AJ?=zVPbZ`)q z)m+M9Z_ml{-8Xv@3SYY%_i&>G&1BS&p(?D-YL5jPV%`Th}cV7Xs|CzOg^*wxS z9VK}Hpe;k;eT}tnPmh__jftPD@A=o2GtXgT`S+;d1A4{X;vSm7D8@ViNRP4tt2N;X zm}t$(wm8;2iNhpj$4pWl2d3n~B@nv15(qxU{dH;Zs@vI`<>_8K*EBDl3w=L@^4usWZ%wVS^IVFDA&N&Gy008SzE^RL6f%e(xh!*&Xz42XH&LD zEJjQZjjL4hF+PNnHZDjG?iGd zh>BM$^G%tq2wlE5Bre&SW-hd08KXeX1TGH)7cEH#EhiKprmD4S)8q`Z9#EfQ%P1*RCi-uvnMktvOT={ z+-}Fx#d9078aDShmM$4+%4)LL_Rg7U8CY!hb@%sL=B{8Cd_R6}gxqmmjHM1LPZgFA zD0W^I7t=B1&=t(@Of26itP4xbOT}>2SZrl0#{8cE;S#K#z_$&HJb@{?K*O*JPZicN z#cH=adU}zs+&f_CO}%2cdal#G_ODyjbce2C&Sj_1&vuozHZDCqr@gp%?96NW?QE58 z0-sepfG>mt>loMoTV7#1u}pT72l(77AAVvfYk29r>J(MCA~vhSno*u>sB+HMV9GSJ zuBxghc2?2_^L-0F8C5f~X>*UYb|AuB*;{BS&DI;TOD&%I26IJbQCVH>q7}LAML8|S z392~t+~&gWN_6e)TXBMZnp0^A3m@RH#$sdiTM9ZOSGm9>u1cgwb>r`A=$qX;pNykB z#6eS275$j6u1kbPfu-l{+q0mx8Iwd~YnMH;--fldf(m8*<;kJFLV8VMx+f=1+g6iV zuW#N!&(?|$S>{9-S{;=Gt|UiIm)cU^Vz*S;;;hc{^v0&tbh@d@D86M#PAgjA%kQi$ zNCIC~fu@7P8}Qe-rBOXhF3wkIFE+J~r9QH+ij^MleX^NP?)*%vAMxliJgtM}H47Zd zSs@7}`9=M8@zL6(4fXDUl8pKxcV2a7jJ?{L>CH>%jwn05J9pWN;m&;c+>**NE6yJD zMpQOA=F}F=#{wa1SxriQc}j}2+EUZWC_4(uj)FRo(A4f24_^ca_8Bey_wC{0TrGV! z`m`IDneV1E?oVy1SasI|)Kt=(rO2$wwARln$*9OnoLOzF$T7^i)a0?pw|LUsS^5^W zV|IC7TSlt*h9kvY8D}j> zEvjI$&c;N|XcHU0gO@!?(uy57K7)#e_lVEu2PzUW6=VGmwSxu9SqejGVQHT?E=sGb z>CG#iTar;XR8c?d)|%ZdLuik@gs$q`YCG;C%7&}#wb|bDhrAJ)6{h@tuXCU&yKH55 z_R_J%T?KR~rLfXe)nP5IPR=QXNK5kV0)??64Dzj%rr?9*JCw_JY_zX$aG*7>+EXzU zKQs06!IF8Nf{vj@eU;&H^hRArS#Pz|QB;>-T-Mw&w!+rstLUpKDsA1 z%J?n%F0y`6ajdPRdBEK;?2fgUv<^6P>WXcNkqy3_`XXCGM2))P?5={*rSqDy>(A_R zEE@&0HDx#S&FeGI8p^DnIWWsSld&43H@tmJl66>lA3Le>Sg-Z-RWaIzxlUdF>}I|9 z4)H@B-K~oeR;u)lbYX_VSZEygsQ7m_TIA9M+>^nz)Ae6K{b{x5KCrx?s<^D((4Vqx zaL#D)>RsoD(~GsT_A6^^T)JkkGobt+3(o&P+AqN~yD~}HuZXr3o6|j+dY7wH)1F&v zD=#gb5!0V|L4Va;r@6c(lQwi%ynPeeFFv!}`fJ(`D-f`1;$+&dfos3>6Y29hk!t9R zCu%{wSuO-kTg4X_6W>;1irtW(0->}h4)qt~ z?aC_b^JLV_b7qxWV{8>Bb9qieM?~4G?!3`4=)ZJNqb;@6#uZ>zxoL_9EK8l#fR}-~ z80l~gh`yI=K&7C%EMwV@)568|TDm8C`xAw$-+Fs3G~l1bfBX>|uozUW=Niz1{XYWr z`gIK$(CYfB8ii`hhbsa)Fr&IBzjVM8(1G^4xp`?NISIC^40CCg-d?pjwa^-0Q=V36 z)-?rb!R+i{E!gVF@07J*R;iJx!K`vPotPeU`rtgD z^dP>@2&@N!6*LuV{df6o#R;rUigSy4s+c15b!2ALxzjUh21={ZaHis>c?NS?c0zlZ zt<)N8tB5d{cjX7E!X#Hq!AW(Y$z5&CFNb(jrYFGtTo*#tPoWESvC&n%b7wc^R60xg zpbIY;D4yfaYa3Y5TLxXYHJ}S?^WBrW&{tgG;kuBL_5Pm~o!EU!jX7p40C!Pp!FurZ z!ZjB0Z^N`v+&xTvmhmyVECuV?cZs`bO^SpWxeB|LD3}&7XVbGV zg8vfv03Kq)9y&pAPLXu71aKDLj$dh3em1=d&jS1Mhg$d?Km5WQFlNE36xIBdv$mcO z4EG8#)wjEKl_Iez8~pI{dp zm}48NLIWMrgy4q2f#6bo9$oD7dCc7v^@|fb<2qK?moF^0l-1P~Me&k-Gd-CZc_2pp zjHaPNYg?tGIybYRp;*G^2>gBj1U9@3cu|;ZDg>Y9hr-~NKhS6RJys=q*Z4K)F+W3cbk)pS<~ zqcX)k#;VvYDxN;aTCoRp=*zevgXZkmfj675ThSAsBig6O0~dqcV?YFa>1e=qF0U1C zh(CXu zkGF2=Z4U<7_t)0f3ZMS`I%@177f>Z!bBs@n@I11bucu%yqQNe0(wqL^H)wArc_NpVSKB9qcoS zR@i`@M{+I{+!wA8JmW8do<>?vuAz^Dw^ouc&Rcr_x8xFhjRNbM`%smd0;F(y@O zFxu29`nXhGsv*gS7XHS+20IOmG9Mk+8(3@07i0!fDI?UWnGp#pU6?*elN1x5YVls4 z8IkKygr>x6Q)5!h8SNE}$62Yz=)2G-E4e;dDeIG;kU!wi8>=vJz_8?chQ$|>$TGlL zd^>(6eX>&4C+V2)%;5S2b{FRc?gL?tFE~LKK(RCj>ch3mp~*_gTIL7L+43DGxR&9` zxfzokH^jV{>X1G-CqCQ|Y0pcyoOO zym`r|&_}^FIkjSH4b<<{+UdwdolnX~OR!s8Jbj7rQBQDfA2#PE=Omi)OKD2BDHU_q zW;m%^ zJuC+^?IYXi%bb@Zc@C}QL;47HbIymY-Wo&a#C+J+hP>Ozr-G6?18>^2^lt5^@FDRx z3TN;e;dS-~%I9wXC3M*TZ{)w(KVQ5NaTm}U?CNy|%Z05RT)^_DH7Ee@25Ezkgm1{? zcY~}1w#SJ4PJ!>nCf}iqz`I%gYv`-cidZSv$2t^r#@OeDtqgd!)Lp-AxNUS>ZJB3m z#?IbF|G2NV^}(kG`~J`fNj&D?P8SGYvUEMt7nv#x_k!3zm(yKbQ(7W?+4jfYg-^4D ze_POZdjrF!(EmI7Pn2kr$CX%lFMoXNVM`_?mnw__760l%55S*`OH?twxWsHMt4gtA zc0lOsoU7@}%%%!jm}QPnE{`*0_G*?p+cK}r%kgS$>9=`jc^!FIRaQjA)|YM0ad?68 z2PpSKsazjM-S~!r1RfRgP zPA-`!4*=z}i>zFd{^IZ8CU?%JhUu9)K;w*~O~Gw?$!p8}t4bb=qoQ5zHh#@YtDl=Ro4IEfxey_YgvnxBIUo4@`M({$H;PnVI4_ui~YU0 zJUp(8yPBtf{7aNi@XKFG*x7BDdYvC5}OmBYvnylh9 z6ZZUrs3I6`w6p0WjJLOUrCE;nd2;)2h{b|Tot;!0`Do_j~11UV3 zWkf~mBO~IX)ahyJbI}^#__yF2wzbf+xB1tMUnD`O9T2+&L9K5i(d-R+jF0H^!a?A` zsG!0xZ~=TP_0!!Px7$J){5G~G0JyRExv=VBukc<8qi5Dg()<7{gXi@raFScYP5BWC zO07CE)j~f?F(s83XM|)bvmGI!Df$FE@;M**C!&rlAJ)beai!XEb|4jYDu5Q@DDE7Y$MiMV^qTX1bI-;Jmu~w z6X=oy_o4dpmsaLQYG`MFrLv;-G`vvQ(?F zxu^u2XB2l~bzw+FVPTQoTIKevx`6{i%K=EWH3Bdkl2e{)v^E!e3VQApYQ)vis}Hx)E>eGfop9sn6yqoEN19z8?DqUSedvRVCJ{}=e)?+Dgs z+OaEbfQP}5@(MxDsC?lr8qO$q_~@DsD<&(;$Jm&>d%1nvlCrWT+u8%y`b`5xMFX4a zq;6_h3bWx;500)t#}?wG_N>tU01ru>s?gZ*H~P+u)Slb z3STBo!@cF#akuNZR>0RO`gqnvXslx9j<6J?0{lkz>s7d=wtbD#;Sm&0LCDM6e1^m2 zaxDM#3T&eHSG#8?Y6VwbV??4RJV{$=&&tfUTJ7T5sL5u!R54o~4I7}#bS|Bu*c2bD z%OUZlonbSoo-zA6=pxVAuA2Ouv$m@FkE6r?5$Fkp52sJT9@5uPt8lpw&5p-{@q-j zk=>ZvSd!hG>q^N_h8HkDC4;Y46aAZMf77g_18 zT5*P}*Xe8cNRxYB_jx6=3vye_(&O`*GE4fL(Xq8!O-_|Dwb)!^u5lK%)CrF9SAe0- ze=SD%Y|k+jTN~m-C#yi$Y>+UMH1-K!Us4x#UR`GN8EwD(874h;(M6*3yz|md{W&I+ zG%IizR8(;s;4_`X;s3Oc%{gf`X=fR0j5)t?KO159MHh_^oOfR8Z{61hYbyO1IsY52 zmx=lN0w!0CZ=}61r4`bADx101q|Gle=3;X&bXohl8bf|f?~?Mo?wU+RZ-~vC?d+{} znsj+RB{?nbs9t^Va`8+feFqDBjr1j>dd8OSf~CX#b@l{DL!PxT$z0ajJJaS}n`rt0~X z?wJ+o?KHbSC#yPF58ts_L2uHDeOh{_w#hQ1uQ0u$B0aa$XEhc#=VX_pCgiw{nez%O zM>~^Zu@@;&2w{7^36DcY*&Yr$W^qjJL}Eu_R*R<`TZ8Uty?)>vJ53uAA8h?hD-f;t z)gJA=kKCkvF?frTp9A%p;7ki!@gn;QPQi~V%wK!JxnNz@uY4JNb4uulGTDdUkW{s2 zVNKCI>}ZfwP-8b2rX=Q7wq!N5mlbslEjlxvK4RE#X1v%Ia}KIE!J~z2RnPxzhoxZb zPQBYwC$(U=r3P!ZwA<3Il+gbPP4T6MZVyQf|E(N4d}h3GIm3EL|f0t@Vwu*lV+@Tdp$tOY#{XxQn<;$dN3By(NXy^_NeYmdf1t3ka z-sE0ptu%zW=-^V_9dndhN*>_u>8Xam5cTKMuBcCX^XE=+mnp0!qN;6 z?j!7p>COTV%`EdIC&VPil$P)dEBQRw`XYRQD7gpD1cSxydZF>v)&-@Dvgk)Y{IG|u zs!GDQMR|~J1-`z`kk$q;Z@2sv5t~g9THp{^-w^0lPWCcM_*>7omp*3o+T-);3d+0n zx%CCcoaCsibYpf>q+NXfRBxE$Ty3f;FwLmXX=yU!*JE*)>T@0JH>ZGBocbL`I3x@; zNk&aHe8ry&HdPPKAqb3ePFfMR8xm?NDYKJQR30qI)kdEc6mwsZFFv~pTdnDHDy;@{ zLS$mH!J>~aJS41aAHRk!DX5Oe9H#?Q@NRQ#njz9)h&AdX;$IKCkIVPOT0K@rwLZI) zj<(ijbfDsOwvM`NRJXNE0e7bQ*mVqeuM5k&Gq(< zx~!HuJ7O`tGDv=puj!^q=;tHNBL}qf$te;#NV|mmNeP9&?#T%WZH9!_ogkr4iLX}B zJn@2J`dsl;2^}QYqSW6cp}d?&ezSzOKtk)MOXx-|{i{}t*HC=GG9jTpa={Z?ieOooWW7=uZ#Hav9-IA@3kucfOwzpmQS-Qp<8uBwX9Fz0xy z<4q=7e#%#nlTy^6L#_c^-_(Tj7nVUzuw4V4!r>E(%A?tS+Y5?t~f! zy{ifpbfMyf)+#okZL3PicBe!q>viD?anVV7ZMgnF)+$YkH4k&;C%k&}l!<6k<@QRk zp~7oxEH#z;Y)vJm5^YLGR=g=gn_|t@X+;iZ>U(-fHN=}AT0T7=qq_R zsYP@&(&s}(m>!hO#7ws1gqiG_(~FoklYKt%3AYJ@eEu6BgBui~tOXyQn!PY6=7-Yf z8bk*x9q0BiZ|%2yXINnAbLs4;8S1B^Tbm~5$-!Q5zxam5-L!F7{F?=-wvy9@of3{d z$~rLx+sjDUIW>D>p6Fn;qpviIrJ?i{R=fW<4-ds2KdXd?adH*#9H9n1?Cl z9SG$7qii=wW`k^Zs>fNrM~!L2{W8H#BB?P84yrWJ&)4!AR=9SF)!nGp@x2o zSn&J!V8~4DvBh>I^4hDjqQk4hVjSlDl5n49P^d}FD>q?otiaJWi`C;sp^&atgrN-* z<$j#IKiEJ6LuhF|12oe(mJJrCWtW(WlM^#i;|l;&3GbvFsGKUx1gHM7DWR$>nMD59Orqm)wsWHRodm}zGMHi>jMeEfID%812 zS@}GtOn8pt*luVT3&CT^yrLkk%gJtvY`L>r^%d2cC~dS}ld|7x%AIYFv)83YX(IB& z!_Zbcgav%(?+Ct&2+u*X#$7@8FUKcalMn(|VL_@sDI?jCWDQ(FQkjE=xS-RrYc(ye!#xew9DV@{H$w{8^S^JiiurW|E6%ED%9{>^&qA&-(-EnbhGK zf{ORDeBt>Zf0iW%&u{YQ%fatPVK1H!@h{_Ke#P@)_CCNrcs?pWb1uO1+dRG8s(3y& z@r<^?^Kr~3u)kbEj}~Bmm_Fpc?4F%RtC8XC`=xmKJ_MYaE#E7H;M$D?qo`S!FW*NKx8hv+ zUK@muZW135GET8eii0l$Qxq@B_n6&M$YoLNl!EjBIGz;r42hBNLvf!e-z#y?{9ULE zRpFjl;_N;Q_sit_aNNuIP&KiIY?t8?BqM}rG!{RSs6&p*_faG=ur``b;Medj=h}<5S+N{1!M%*W-^9dT-PGjI-G1a zf+rTQ2Pd8}csh1~UX6T~;msoc#)o)ok#;5E?0qKBc`Zs>gVWX=_+NtZSd4WzJuM%p zRw7@=Ny~8{=82`}At$Nytdpji#I70T3}NNoC`vh5Jp#4J!`okuIhiM;$Yk7Es5h(U zC~7f=+7_Zl1^mAp^<0dYEAhV^G3ElA506Mbs9S%&uK?v)JC6cC zRwAo|)VeE?W-W3ULXM0Jq!7dj~UP2G@A4AR(u04RUlFr~5 z`T$*vI;=(vhA*ql8NmNUXzNL#-6w_4I4QL8q|la=Lc2~1b)FRJV`m@oI!F>ae9~C8 zpv!9fGd@~`I`)Ao!>I96+>PK~(nal@HY-4j<&cdLK-b}p@gwUGiT^8vHnw8r#6O(K zPT+le5zA5(*nw;zxsQg>P?U8)xe8zG*l(FPJ((7E;lFTR(oZ=G?QjQTa@91)f}2j^RVM|1^Ed3U_VYBIQ_VQyh{tI6JxO=45i#~@|NHf)-qa7 zD{z`;6|JUT>ceWXT3SczF;;EFIk3$bW3|#YoCn*E!vZ?tLGGqKv=`@Hj^gCfSva+G zIax;gur_uK?RYD6QUehwPNb*(SmFO6PA|od_c+^fF4|xX9U!OUwA1;J^%n92&NCe( zt#k;|@&;ORJqGLx$vT{UI!s5%47!-K(lYFDtW&JqxT^Bu#E~hKVMmmPpJ%gNy z^C~ydm9Q9YBWL4G&mQb;&`W00)9GruhRmXCaR%qlbRAaN^uYtL0hY*Sx{;iV9h%Rf zXV6XbOnMgd=p3B0x*2C&o(pX|Kt87Dk;ic6@H~0}d5@pPdJ)}<6I3szm(WY;W%P1v z&3+|L*SwmaugOl@+>UckucyDq8Lm6p#>uWv!$-huv=~xNpQF#??9UhJ zOIRKFPx>#M1o|J!P66GElSA1#qOa38aF*x+oFw`t#)c2#jDQ+`vglhF`$WR~GKjNH zz4Qn@im&^R(c|>Lu;re`sj2MT*hjGU!`=Ku)=;9R@6dPYd-Q$!0Zu6W2p+j`?8agyn0n2-GoJ2dQut}?+-JOp_UBhTR^*)MR)=~vhT zT5f52?TPxNOxPDQLdAeh4x1ceZS{XX!Wi4X=WU5$M^B84a+8ha9J1)UHh z#9|kYc-X^N;7rz9>~DVrC&j*vvsn*g59Wj9Epk*a2nkBx!qp?|M^x*^MhgmS>r}oK zLyK0g98>vLE?GG?a+7_V>t_b%9)%TQ8TAx zJX1z@ri5j}pQG!izMiBwe;vtN&gqoWPSRRR+dMUG^F*OR zX=qGBnRjw!iFB^C#z0zD^Ffr?V9nNw0l_fL7$OxB;rR<^QBk(9TDQIWEn z!HOfK_LT2=bMgCNJc^Yw7|g9~WEW3FBX352A50*RW-5U^$`%%gW?x^lxsLt7P0@Yw(|hoQ2`MV5pV(NWohC9()$7nTUc1?E}fJYzw^wQKJ(7oX68NTcjlJ(^orc3H?)lJ6^K@^Dh>7u!R-}_RxcB+ zKGslDp9<+o=o7I|e4jwHo~y`=e=ZQM=dD`e^X2$SZ5!1RQEsSNfpv?gcC4CRfqTmi zIj31rw*u=HkMA5b(YZKMa5bnCiGHSK0 zAcG}TMLCTaX)G%_6oN1kP~0MkZAEqqCbdoP+@(WD3&%evuUXP_<$yG+Rf+7DnObEm zlr8VCS^P695$O~|S@XJ8Il{WBTcrt;-)5mI2=HvpRD1IACm-)@_b#!7a9tAnJkE7p zm(EYMO|)#4yrBlUK_IkF@L3pNwZtm8bOdCu^j4>d{g0>QAQi>S2E8 z-j?69^RvqD$;{kM0kb}+K)24;KvK{^(6(5o$(>E=c6zRRr;gnof2v2vw&@*v1VFV< z>yp;(y7p~*c1-Qrv1{jwXi~>#+jnW()v{^^;SOnif}$yZ?$xnpdgriW?I>2BpVY2b zmo6RCt!{(v9eZ?6>!1Y!GhYYOM0ef!P*RX=SV(N2*0rm#)C~j$kC0Re9z|0+cInc& zJ2R(cM$jpzGIUllg2zf$g--c(&w)s35yT2#bWXl>ClK3cYE>GUHGkPZDI7o=VBKmb zb?nxmZO=|&xNCVhwR_th9lLeu_+)^xnilOLgOU|ZZHG4PSdnefitJj7KhrV2yg={?wq_U!q1 zIA*bZYTK@$sAt=59q9Fj8{+Qi)gvuI+@NUFqz-9aFqK)jdiO59dWxC5cJ5|@q^`ZX zq<8M#E;AW5)+3hw*)B~YnXClkkT$Ky;BhC)xCq2ZqlrYtr+odN-zZj zPq#}jwWN^hlh-mS@b9{=Z5L~kw5DO+U7>$t=--)OdahFK=0VO4VU4C?$)>^F-K^=& zrg(wG=o>~VO$5zu2o`}sPSareNU5UfQ_E*YYeQRq&alFAFY9;=yAh9FjmIuo|KD`% ze)vlV`x3|Qt^S?$5ck&D2pl$uPTZenufvlq{=MwH_t*tH z_G6>DkELbDerYB5)tu+#ILU7-_dG7go^~Ji63%mSe4CCFl=%IO`;G2aHaicyhq;e% zBe=6`Bz>(b!p7Tx{nbNQ!ER)K){0O&dhbCC3FqwSA68B5Qt_UP=}dkcEy(UKUt^8u zsjiEe?=^So;86?a$} zi~#h|hMi!{-L39_$V=_gHoY4=)0;_e?$x;Sv3oA_nxlhs|DEo?zVk8e|MQ#sx&Q7r z|HJ(u%Vmv6*q(jFQddyKKGU&BH?LmTwmqKlF6{bD*Jt#9VRH22&nyNfrGUGdm)xNP zrs#*#$CIk3WQmtF1p~9l^Sn*5-C|eA=EN4n9*#W`cVS$UxCi2f#udgLt(I7=VYN%D zU0LnMYPTkisx~VAC-K+CcZz>8J|lin^((74t$uU$$ErV3{mB}yC4OCFM2#s4O%u9@ z*NX}B6PqU9pSY5%UE}NE(_nD=8~EHThPqmdW=f zKalcD?Q4@eCBK*aQSzkZtd#haTT@!4+@I1q<%yJ6QU<0BPAN{kBDGU$x7761S*ckK zTBfe7S+C}GHQUsDvF3L*OKaU)>vy#tskO4!!CIxY&eXoD_O-Q})_$aR@7hCa&#nDk z?Ul86)ZSbBVC~X6o?M*^>)guKu1=RaFVtCGH?eN>y1naW)LmM4N4=POjqClqUWa;1Js%X;JMZLPPn-qHG3)W5cV>-wGQ534_={@nUm^|R}rX>eVGTN|`&aBqWl4Z1WK z(ctR_iy9PMaN`9nE_mRAzh5w-VV8z)G#uG*TEk6^>NL8t(T$C6ZS+8+^hPf>8ro=X zqveg(UU=_?gD%XtFz=#T7hQeP{TFq+DC45+#x)w(X?$hlpErJ@@zagd8^6^!qw%c9 zS&jEz{KUnBE}nAn+>1|KBHC^;`igs#v2~V^gY0YFgLtCrii-Z>BfP%j8_dx!yc)zV{7hz-IBK%kR7;d^vulx5}h`15&>c z`-7|y1xWo4>{7eD-JET^*DFT;_nSTB5T_lS!ny}@$_DA;T@Bgr&XMZKPIs=A4htM# zJ9y0fuWKU7FtRS{K(%ma@P$##z$6WD#?Jjci}8eleBw{a4*n{z~_ZKgx~pC%ci98RK_x``lkk3u_q<`10p5mTwr#M67zPXyHwN zsW$|O7ho04^>e+Wl)M<%(qB)j-_dF|t>zoH?(=i?pI};BLQ9KjWjYwhWZq~641#uy zKbw*1`$+n7(;(g_&p`X3v(b^e{L}7X#@p9l1(yDsZzDSw@9(CCYxn}f!?e)XU*`Jz z%gDVBX}S=&ih=8L@LlX}_SXU58E-o^icrDTfTJa?-38|E2CiR1O^y61sM`(L{)!vn zKhEf90&lh(4Hd`xYk>O;H`D(bs{RQ~bTUj_2H)iKy`>#sWE&XS<7I)FT>qfE&Hp96 zY^0aT^sK!Y(r z&;kg?0l`&3P#*|V8Synhkm}vxFZ3St^Snp><-8rT91QOA4l?pX{s!+9bi15>ANGg1 zG)CLk|1H@1&<%is@j!hH=+;1mZ{e9K^frr@^|mtx8R;R~+Q~WaWr7~P=lsR|J7BSwjBDb5?X~w;cu)J&yk~HO{A1pS zxKD7O;WD7oZ2yF}h_4)E6W)kBNL+o#(Dx%yAPv_YnH%5_x0S|)^tVwk!xJO@t;kOn zbN@;-?@?&o68B555wg>eGOM6t85mOuM+>X4`zQIIL%S7>U=6U0hI8`0PyM+_=SSW+ ze}XrW{7L>4Z;t<&Hcj!HgdQ%3a3@Tl(9e#7j^j4}RN?JeMGOU&3z- zjMql^FNT~w2i}_RGW-ItvH|{@1b+>Ozb3<9T|*9^18t*GYIGVIqY-3C-yi(L;(6NM zLHP}=NUukJTlt$w&GtTmGX}#0L;Nk?Q26N+B;-?nkvE+5xk!rSGmB>ftNa|Wm;(kg z!C(%31%ZYxe>FNazyxz0x&-?jq{#rhFmg7gK&Gz3-vt0pM^E z_>1iw4q5udBq2LsH{eWJl0_{wC&ZNgl^fm&_zeJC-jZ)w5Nj+3M zFAS;PO*Y3B(Q6UC&Irf1k6!oD+sEM;7sDT0>1_(Vjie`O?NH}3t4WrmS*z1WAPwj6 ziMZFWTNO43r|Uh_EObNyIy;3>BCC&@q0Ba5&a02y)@8hB*<0wl)~)@)`l2`UhGft~ z$~|;LvEv`qjG-7!Fb!;-K)+5xx)-6*Hn_pSJp}hDd7t6NASW}xYNo%LvCIGhwHOnX zBd%7fqsPmDCYko79jDM%7Ih~WZIye1)T#6`k(^9&rqJq6qeBcj>`0(;HiNQ zK1|PFGtPsq4dZ(i86HD?1}$d7t2QRun2d%S%sim+)PXmK_=lMDcOn}XfV(S@wqj_$ z5S(YBsdCwy1sI%c*n5?E{QH>7q+~p;2s0`4yxYc{$?P^8TE>CNWO}R3s_{aeKG))6 z9@mz~apSqP$GEpL?hTB4z3a%_n}**V_h+Pt*&Vo#xDU}_gS{WQAv~u`p@lQ(;xhDV znax8bz;FufaGEuN$NKE&;o2Z-NoxeHwQNkL<<~>q0rage6U4Cc^^C3w-sjBJ8MrL} zB--LA*vJC2v*EWq#y%Nr&K7@?8_W4tC(%XwT@5ryJv&!)80~zH8x5~$rNaIk3a2ps zi)_`hk$4GsaID%MhFcy%uRn@Q!*$2?^;a|6jqv7SY6-Ie9TMH`@I)*6zmKytp2Ux6 zF%7P*;M|$uIjW^q5)?F9xSdf%lnh#!WG#H|pE8P8Z3X^^OBQi|9sO7v2^(bcAS!CV z%-1)7WeSjvqZRSxILc21>WN6yWF%@btxgEJZx?(pRoDj}wGf1O2a)h-I4uM2pN2mh z94M-&;jF?pet>$_c0oh!j zS`9=~!Cf&><%7E{^$Bi1N7s$SW#Go+W+VS=7=1S3gW&HZ?ljcV3&g@-n!gvQr9C!+ zv*qZT>#6YteWFuIDTZc65VJd{y)Ebt5h2AiD+hoKHXBAiKNV$G9P2V;FPUaNK9;uNvS`>$_vng?~7p zvtC8hi5@d(HIwtmoqd@~FluzIS#3#%Gl?OA)R;<*HMFZ4cM>%=fG^cjDQ8lhK)9Gb zj!@$`bUK2LJ3@ci)c(SFU<`9tb=o{biPO-+BWDyjb7^xXZEl7$vaHTZ=E7a%YR!I( z5}PR@9lM8Kvl)$g3hI9WhkZqfIp~c7N@dc{M$t~2gwTnYVnwCh;$-A1k3;icYa;aB|?wD2u0 ztfYmLXktNGf_$F>5)X>r#*B44SnEwcuR@!*;pnk&zQ)F0*v+MEb!wH+ub|sc>4RXa z9wk>(a=#bv?xFXmsN0YA`dDWFX|$E;kF$Ek)Y~oj3+o=B-Wp1kQ15nD6#e}1^s9aT zY*GuTyN`OK!D9yeA}H?hlE^tl&S6?zV)&ZOUTX*~zXT>GgN2vC!UtZOKNSA^01Efh zS{1tA#%}X=+~e#D-uL^%k-8^Sb09V6P-}v_1L#{IZ^52<8IqAtD-+$z;Bf%Ez`>MD zqDFh>!gh(9_qnlFAP34*yH< z*SH6PytV%fxgCL{jrT5TpR=;gz!kD`iy^lweZ6ZV&SJzFq|EgO!L@gx4e!RaLSLl$ zpTVV{QF1bClveC{bAkF3zc1@r{ePgf{~~?#gI@;F&kNpEN|d0X+9MBx!PF3cAiC^j z=DUIDvzO6l1CeKkY`3QMJK)kc7}uNrB*xVrUGOH7>97ms&|9j%ow01EKaZ zCb-tP&bX&>Y0$R?(s>_l0P*Bv{Uep>4o@1$h$n}PE`}kjBRd0coy$cTekTtT48uEt%1yB>EF($oqoMkZQm9&SD^7v1o|@=#=qYiQtR|w*C+u9u zQ#Qs*eZnp)HZ1>{%6YY+Qw9)@go~#EMbN)YtEHe%5wd0 z*@G6b>zj>!naFCgz|{wTZQ#ep;kb7GyX^GF*gicSJ<|&b>kW_fLBGi=^)6cRed-KF zlYN340VJQp*(1>rqgXS23HOc0jYWfuW2H8pHYd=}*Kp5d!qdo`fzF?aRL}C?L|gPn zhq1SUl6mwb8_;BWSV+k&l-x@0d^qS1^m+^Wm&NR1+UpAiUY0Z=TXT`Exlr^Q>VC`I z)PQleGJD8(jBzw$n`2{|!M-@te;qB}0Lj2cKpXskVNN)pgJb|X`hySjB2fLex z;mk)E@1wZKSkeA3PNn+d{)QU>?P5uJ#p=E5zrwhq@_nf@fH`0g{zvG?8t`l`V<>^b z+rXVDl>`39L#Z6b!WT_|b2BNQL93}irTfK69c4nEmV?N#18=)!sIa&ob$?tubP ze{JCEKOxUg&|e2|{}dSN#0a}EhMwe!TD`z}ZzQ7+JkXc4zv24fK8H@@fkIZ+OjfaV zjWe5|BZ3|WV%3_6U1Fm3yZ{NMXI8UW^ga;m3Uo>DnaW(FG=Fpq)RjR$;1^jGQ2_St99cp?9$c9^ud~neg95iEGgXpap zLJipjlI~FbY^JDfa4!VLv~~bmWIaYZnM!`dScZKET_?( z+9l6Lcjlry_fl^su;^Xij%bE7zR20#f6sLAmr!|qINP;m&S=59s3mKayU=8Jo26zJ z+P0M1W04E~(+FM)80nk9ybY*^gO3Hkz6fki(5wSSCoqn!V6u>vQa&x_(W0zn`)IKM zSjL+Ej&^V_qrC>8>t09iyor@;F!C@2_bJ$%!RkqK-c)*QPmjy!u`4~!pvT$t_%S_> zpvU3#w49b@DSrd4xr~*UY}lAJ{$xrafRa zqnuLhfij5tN`WK^1=h4PE;LNZ#4${U#bXI%nr!gmW#|>cp_a-`EnEyUw7{p5C zeO4layqMdsWu4*OaaBuJ82rPHe-QYm`TlnqR|)PI;j{i3+;P$m`;#oE)L-J~`TPBO zmb2AgNVv$~;IBt3dHybc8`oLB_xPQ^$j2^08+oM9^Y{8|!GcG*-OOp8mEMYf5?6q= zTWPCl`#bziipgg$qTG$Nryh3Wa*3_+clbG!UPWp#@qB+J|1@NN?Er5mCSGaqs-v7fMOEqBb5Wp1>_v`$8gQJ-d6$BNubE* z+6H!K!p$Bdn@#P}gff^X_z64kw#V+rqqT{awu|v9ZL(tcW7)51M4O@AF06GPUy|5B zcpH7>0OMl%e}mqO{aOBCgZ5=|)&Sp!l-ddISQ&G2;vQ&F;2$7oAUUrw-*`sBkAU%8Pz1HJQf4o117J-q_5`*S*#`-bwJqDEcK~NpS9Ru>y^nRAm5!x!l9RrRta7Gz9 z$DqYtD7=rf6Oh<0#;^=YLe{y7Q-bI9Ay z=u{`7ApAt^816I_ISHQ5Sm+e3o`setxbNeB7^n__n{C{WkhYc37IJsegGH^hmiT+at2iuxN~QC| z-d3|K;fKu5Lq8eKExy&bPPmdb2sDFmrm!U76!?<1D8t{!wVz(3Gq!-MLqM{giQsfo3?sIQE%Dt!M5M1kxkm&caaF{6bn1KB1z;j|FAfP4T1eO<1Eu%`@ho zB~%7h1l1YvvKpK$v7G&AhdtnZ8X6%Nh$Ii<-(%ov6VhJOUuUpvMt^N*-Vg=RLHK!; z-p|t^-VkD>ORwEMzj5 zduY~xf-1$6U&Hun=0&y5n*hw36*4$gl0uxPB*rhfHp)Y2z7v)%dWye=!+a!E8tE|M zwZOC!Y|TfTZ$_`}2F@L{vInl-W?0HY+j>xaBfOYNXkLh`&4d>4gkQa4Z?F+SeXGN) zW9j3K8$_`HSI7-vAfks;P_`5(HPVw@>Tef(C3@#Uxh=r699(RGhs0y~@OW{^S8;@d zl}(hC1;V2qyn?TJEsr%t4B=z`M1y!IqmtfQr4sm)q=kbY{YwuCLdl>}6^ob$zn&FU zp;tD2uOzn&UsAXYEX^T(3uE1Hqdh{OTacv~T0#>5(^`5IRCB@^XB%lnJc&%TekN&_ zf!f8U-JKnQkASMXiRY7tc7~3J$l2+|f!lm2 zyOZbrXKYolo&HLAzK-=xe1@OPyvmLrxYW;L%R34`3bV}6RwmP^zZdB*_J{kQGUsI@ zd6Otn2ra(x=h~e9ng5l|ss~I`M#E{tk6pv<5}pZVP?~5@i2Wt(4%D{h zEy?X##qej?tSFuq=agCb{e+KO>@d3FOt`K%44rmBzfUda0PP$E3z`f01P@~_f;-ND z@fqaIvGyc`nb3EEarCB;+v%AxoiK@78O(fWnK|q#JZV0ID${hI)|{H1OQEx7WO4dY z_MFuzd4#bZhexWzzq1I9fIs4aVJkE&0W*_LgB6?BD5Jm4TzNpXP-{E%!U9G*n$V;W zS4h8UeaX>5X?=Xj%@%w#sl~rGnJY6&?KCMWqPN4eq}5Fsv^oYhO29!GH4hQrYPw4+ zQ>_#8;fQf)pd(PU09aTrkh7g93c-vgj@a)Pa4%q-{8&?IE&5X%aTyY;HA@Nf)?9A$ zH-4aR_t94|9KR5*Va<$gSwYG!94i(|EwXqCur5X~WRa5zR_25EH{r~$z*wO)5B)Es zodO&CIP50U^;&tT$Cq@+&!F@y?=s%L&}wssa9WEcEIh0T-*G=F*g=Kp;b`iTT-_$7STicpcMSd z8YU{4X7mRz^5N18q=_2~@L4AsbkUljAjDQ>8HB4SSuTUBPy8@Ek_*Mqvs#S-rP_>S z@JJ|wrC=3(PktbS1#sC~o*+mD1AS#Os5KvHn}U4>quywHoRHhe3E-=ajj*m)2d=II zO!~4?ZSn+N85~*1OT=Fd)=ptlRgQLGnvXPBNUDxPspEX3@GMl-Jf|`zaf^X&xg?Ep z0bdD1y>$_XzgasD{BNPW%GhcPf2B$29x%b!z_sRA>2NsS%Cn+`kM|kxFNYeEL2?+| zQs|`}NP%gi9mwZ)Y88OP4N$n0GNRy8>f~eb5Vva<@wBV4wW;R&J(^?jH-I(a*EkQ~ zq=k%FMyZvZ-ty8s$a)iBR4ij8LEaX|u$P!hM6153KC2FRWW}P!c|( zw}p%gT}e6e@q<<01=wlCbzfm~5X8Zb!(b#n!d6H5jI`7Qhe@G%+wDMGgm^k4CtnGRzG;QtkPn;Xv*2CH@d zFMg8WkXn+<&!P7w{Gsg5Zo$tJ-1vo}4Zj4Np=}LAEJjq<56-Ht6@Z0z(ZlgjlD5Jp zN1$v060jOgSxUT!vPXbyH+)lzx@aHx?l|}pFXaY17O0!Wish%QWz_yM!Agl>%^1nx z7UO_@XaLO*gZ!7NbwDdbsPY|q#}PIoedK>a3j0HAX)u~^1`7?}y&-KqV-U^?D1(IZl)-+~9YO2}{T!6OBD{{V z?nF9v)AA%Jm<=ar<+cLOk=8#A)|$O<<>CrDVGd$zqPpD!alx&KJxFAB9k@rDfr94Hyy5 zBFzv$rJ1r!++(~S>?ZhJF}BP~f=rmu-8CFUYBed~Sta2Z44EwqLD9cpm`WTL^T5Ry@J1 zCMyf==5S|R2FsU(nP+T1I-|7#VXdjr3c;L=f57$@tPJ5~FhYuEAFcXMN&6B%2FIgw z2+=n8FUYBe^a!ex;P`;;$xB(|7m>0XsI_5{wPz*>ge`%NzzNLjlCux6dd*s&T3B6X6OX$ChH>a6xiEC|L2O4RnkX?`+ z7@=dxs$`%9Ib;=1nHVdfmFx+lj;JPNSHkn)-zn*V*LmMcOh+na9{qpeypg)HdLq8)$9f zi)^onwx-lRt#B%Sw#L!=9GF7gI-TBE!oyn2&crRl%|qi%q3!_i8()PvhEprX9>8+0glZ+=FThz`IoDps`lDV@vhtmB@z$1bnN^#=K8g4Zuuo_WPv&=Gh zaup-rNv)mm_A1s$OW@4;aO^s4E<1s8uGZLGk1EG{p3Kg4FfeH)ya0%%(DzDPAq$o_ zDYqEyCT-R)v?wB#f;#vyYrW$4jbfA~+k6t+aIhka0v5;nJ<164Rf zN>V6M6)LUdW$mZqMm$gpW2%qTrT?ulv2^oFLa&nNE z0%USIQZt3So&(xm6V1U}7nIgYe;c#?Iymzy<}6lv^s|MO6``gtVXdJZr(u%Zamdsb z&2B1*%d?fH)-y|RnqRf6lZAf+H0gjAFQn&*>}50AVeLlJmazty2PBiYHWFHgoX%z} zd8~*(K{88_Sv?gS3(P$GW2M9DfVPfPdSUoXX&=xIWXz^b$Q?`Td#J}OY1&JxigF4< zHCeWG$p&~5N*M*gk!+5^)1|o6#1y@uX?z9q7fx@QKZFati}#WDLjH|4a^c`m~vk)NV=KJ=a4i4lfXgS4J_lDs%;s5S>M*UT9kd&x-(<7HD6N=@VG#!I z+`xK4yo{C#z`{Pl3vnChwSckdDbYG4K~}>e;LBkCU&ZqZJ(rxxT&m|>Z;&&adw-ij zwN4&lPc){OU11LKSJWzftN^+JnScTR(!%_!fT>{bYkbcC-dn9@xnPf+=X0EZPwT7r`acIQ&-@h-MSs z3%4)jK7*XGz&W4V>hTpQxP{)Nk+Q(H#+gUzE5LS$knHAx4$^7ov|l`N;AP$ zFq6ml$I`OABq5z(Y z3)d#n`N1103$zxXwe!7^qGt&O&7JjefHC~vQo4ik^#jksl`PwB@l8g89AbJ?;20Rv6T%bpb{K6S zE0EsBIR=EM!Ot!z%D<>>PTI$ar9q@oa?tnR!UJ2t(Q*1-N-WEIgdd@ep6qCCk`q3g zSVDfdGk`M|*-A>Y(6^L{RuEf4+lbz3k`-wpG&)W1SYiX1;X|cs2UiSy`@xFz(RL^) zJD~VV`hPD{yA=ouN!1*B8Z3>XoZi(stscu*ry8u&8P`_61Y+_;EzJhn2?(dAG4QXk zvhlpfngsu)Qco_)RyM5Ht)0dE50^HAkpy-DxP@mcCV7X&W906qv^ZGr$?(L4wGS&| z)9AciMF@>;t!efu;mypNq?J-vI&(Lp5+zxMTNxlERstmsplfEbyUT%|%Xw;r)`vnH zO)t$tbILlU@sw#z3w{p46K3l`vyTUNW0?UCA(e-rrrs&|IJ7wA zvt3D=-WZeCl{S$s=qG6K)2)BO!S^V@Z7Cy_ZC39_=$UbrJtNvdFAIR@1bJtHU=1_! z9{d8vnuqorK&zTDOW_&KFTp#6%V__M^{gJzkJjTz?8YBMi$J#>IT0 z;6M1;-b0wl2Af6fT#B>TG!HZ2Fmj}uX83=nAO25en&~TQY!J7rQy^YId^0J5 zy?qaFQ|Mj7DZGIpd%H;;WB-=%Z3u8eixXJYychxPzsSrsjh)U!+LH|EO{#t1B-5TE z?Is0$aX$*3WQ*tDl7#m{nJr*&zUA#gk1sSC>~M)8!|`lWR}gMGfE8-!&8ZEhSJ#rB6Y-?YGvKP?2OPFapp@B$16^2=|Bph9WhRiLiT+WE|1@2? z1Za$(&uyb3RaP}hO_JOOKe%mH6jpuYm^p{gDzN-v+)G2qQ%xq&y%+m-S!fE!djZxG3KH*m2AkR{@X|gPn4AV zpZwsx?Ob|$dn0{)hn%6^=&2Ms^Gqsuiy~;5oRwa~^0%1s;4YJJy*UAYu$~CZ9S*D_ znz!^rUk6W$iqSCQKb|8n1ElCJQudcgNIcKEtem8l9OFp6Q=~Tsrjm9Hy;jKBrJ+mB zsHldd7ndM+Z)Y_1;|*ZV<{H1QTRX$OP6|Kv{3i;=KR$gy_$^H|dy zw|Tq-*q%`YG{on_7+!auvVe;u`C;Db4PHWh8HsgH* z$E;%R*hy?28vH9<8_SsspHD&VhH8&aTe2Zfg{xN*eucaOW~aqK`~^DyZ`hE7o!AP} znR@~)OzvA%Y{;Lmx?4dF^uLgBGT8Ns(`=U2@xZ7Xv6)QU4~AMHAp*mFVag!pd{@;N$qT1ET>P8?sxDob1^ zo>nZduIV|Pc5C~Qg2V8SO6J*$RO_bfU?$UCN{oMaaL;GIcG}j0he%!C&1fTB zt%Q5BskMdieu>-fw`bg|pz24^<-KsW*Nh?_v-y%1$MO%t@*gE9aE;bH6Ii>-vwmQJ zapW?`Rs2I?7k%W?TKPW|DjH&BTK!4}d2bya=Km>{TMfM1KNNzpXcYd5P*Lwc4@J28 z&s+HaQS<*NRPfO_s4*U?S&WX(gO|o3FVm6y3B>iD#AJ9x`+miy5qkp}pN<}xij4jh z+T>uT`--$LD6$)e5!juKU-h}kPUJ$G!UJb1Vyjw`lbF|0Tkk{Q-Lpd!+DfjG*^__m0f%0dKOh^Iv3IG9 zf7&=R(=CkaK%^)CY2oi>8W(0m&kg9luaGIdWv&1D%m;!6q_2WHd~<~GcC^$i_#h)# zS$?mnDhZNKFwEQ1Rg!;TL~9ymlkM0HWYPaSJ)eg1OW>QmaEzX))BsZ6i=lehir+{x4>z#>#aviAG4W}^$faTr{1lNe&B0`*ErhuQ7_vsu)IWefQuM^ zSx^#)*dOz&AI7z6-3kt-F>mXAXxSDQgQs=SZ#8qM{-Gr674~$nGKC!3i+O+FaP>K( z-vpIqFP{#KdMk`C#etQ@&|6O`^iE_N7+6oqkw{R0E7>D7+lISHM%IJ=SaVa7eOd@x z@b-?LnO1sxC(PsRov0js9UO5e5Wc;`Dte*vnd^D(6^&jg(GN>eio(&`J7Idm&`-3y zV`1z+^cbV865Ehm{@)3HOToX^FegPnC@8qYA319{rJmKVe(0-Z5v9bZ(Yllz-tVVC z%=zADv8w;_22Hd_(*Ft%pyjjzWsl8WZ@^=xHrrg-3K-qa{^Nk6jAka(4fer}kR0q5 zvKd)k88s`tofD+~J9o8K4i)c*&>zoAxE~6ks#ejOL6sCjwE>PS$CW{~Ur#vo19JzB z_93spVWUW$ZnM`^Yr(PbHM&%Qnl~Ex*upJvvOna z4SwbCdDvbo+7Hs&S)ASwm#w%!*hYKm{|4c1AI&$NzO?(41^Eo`OOpe>HW;-EDE}34 z{SPM>o-bg&TuYuLnH>Zg=LGz{mJt7~5+r8B$MS7f+5^FUjG8?CAZ=d=YYBb~?{zy_ zPw{_>e=Xmi*4gei@zva)b1qsFz8!xb=dt~oZ?@mTSE!#Q_B>yU@8bR4`;u=>kL8K*i69rG>R%A4_qw#L z7Hd-G60VEFt0j6oxT;a=66z=xf8MJWUwExueo+)Is*YWz7SA4ZUBlIY*n`TlUjpw} z{DIKVET*rWSLbSu^Y|b26_#rMjiOxTE0L#-6_>u!uf8v({Ew~9k4;Biz+JlPD!!C{ zm8C~FwXa_cb3}A?CKg={c~4MRJfjiB`l*hf(n-e97fU zI;(CS2y%W;xg{qDoHvryIa zYxyene{o$Kmi}W{M&9rFX7+#c75Rsd^Xt6FkoRAa`fJ?(64vj2+$~(c;8eX|c#qq+ z>Ggg3o4J0@bt`8}$hEf86}Jb%;ML_xS9_OndFGUOFFK`-I1>3gKUeXMsB*f*s0#7m zUR45x+2FElwOOg02k!+ngIX13f_PLnYC*or^Bt71rAU%$k{)nYWr>Z#*Og0OJt!>R z53Wf5;=>lB_M_fCB<}(wtQPX8H1)0Pzr!)bK)C=G)f8`5=%l1DCJvNNsBZT-V$v@` zinun)ORgfLKZcWIq2Vt~`$>MJ1@+TC(1;eTB!Lxes$I#2)(<+ZLUIv{i=?U!;Xq?n z$ZJJNryoSuugWz|ifIdJj3nAs+tMl#G!aY*jpAo(r4!;%N{KvmrOiM}&OH+BFKKGDjkC`&~DLwj0J4yfR zOb5?v86}&46Vjmbm2XBiFGru;9_HRa_>L+if5M#b6EyRWkasyrw0=J&P40*Mq8X^7 zYzw2CvpI)vH4z)>#AU&GEs`s~(+(~4T=`ObohoxN+Uq8GQm4u^vr}bmwo_&9L8^UprN%Ki@7L&1tkcRc4T#D)X70FENX6m+~zoJ5^>8YlD59U#nAP zR`az{-^;aAWeV-&(F?RPuT=w=ic^^RwAN+7_d9%avAJvUo8oT9fz4WXdoeY8;GTu{ zj}S+{)nXQ^)ta;ysQYEiYVJc2x<-klCmc*DO?d2|`-v;7=GS2DrFv2Q8mq(nCj!3) z_L4+&N)2|1ReaKG6yn&eS^81J>}qR7K5M_q@dS1?Nxc(O6XMVBCxRQxhg?<4G2dG} zte*((62VsjT0_3#3C!;a%p{hM&Q5@v6CxjJ;8d8K6C(fCFdq7e;N0?WteTzxuUD>@ zxSseloctWz?TL3MJVZYa1b!5kp9r1G6;Av{%CPH>&zdPk1NDSGmM~#E0Sr1-{~m zDl=9zn?hp{OJj!!}O^BlrTPvHkacTo#W3xC%%^cN0PRws-HNlYCIv2 z_}7%%agM(?h?n#K8RGDD#CPR>J<=}3U52{~7xG8Bzn-)lTtw%PjuD+I<2k~k@D|}E zf;Vw2X~6kCzA7MX0dDp=zS4K%ig9JQ??PYk!#L#H(j)jPmskFYAU~-VF9>t)QBvGL z_mh#2D&-QxcvQbZ7;hZ-Dez26KV)(qEHbPI`;{7w})K>LkK*!^7m+?VX?W5o$_*tv z1D8?NS9Pf6C9R#p7u(N*K+`Afs})q$TppLPUKc2!^Lf+u-7>AP`- zReej}ALJ*m#ov^imvpqMpNtG9$0r|5E=@j@bn5(m^4@=t?gi;l{p92@UI$#(pxuU5 z{gjxh@#IU0ccR>tRsEFIs`2Eji6igHP0sOe4CA+wXXk_w??*V~!*XAI0ly`834QU) zv&k<6?G_I6-0o*Cq;%*j=RXm&J&XmJHqZtUvKGmfm`PalGmQqV)Vqz`q$Bv{;?f6~H)k=xE+Uu%&!%;Y}7^WiZ2^z@VpUE+)lN z9=2LLEUc&8&KbPTdwkMrG*b!-5;xb?9)~T zI+9z+de*tgR%VHnpJ3sI7WS?DrB;5Ll`K(;lU2jHbqae}6AAy+?mKN<^%ah(Zs9U3 zztGw&vNk7Lc#VbETFW;m%)#_(xtF!mGiC?jr(-zb!rksT6UqH07K@Zii{VTb_quX9 zt4DO{XDtjHV$DbCwdPTI>#V-)-&ZtCly} zavN$aUWt|eU+d+U*2^qwXPQBU-lE?>TKV@Z{dMd2EzA9-wRxMBdBVc;tgn|e3OnP# zxeu+@TUM)`wezWsI@7`jE%#0f_qK3z3wO5g69!v1gKdNLGTiPjTlx!@o@XiTjE*12 z{upQnSo#XS7VX#xQloHd`Qg&O*ovh_LO7Txx znQJWfFA95y6n0}`lLnFaizF3Y-HgPb2adpzhcnwG0a&p zmr?Tp+(U%X+cD_u7@e{C7`-QB6MN8mksT{1Z(^Tmz@DGei45+?1Y6AYhLM*ES1wWA zO0=;OKeH0dQtUrdq0)uy_pf3k&V6k7`jJY-wN^N`K;i0j6^{SpJT;Q6-6vEkriHcp zfx@x96pmR+xH1%pR{C)(eY=%@pKv_maEyj}W&v@G>PEt`;fbiR*N8aQ+eFt$QRz{t3cS%d%a`w&Jjk2y+$msyJa)mNfDE-MC-jq!C-=gfls2 zIIIXBCt7-5I*t{v*AMp!ZXmd8X#6t9FlhMl7F#&k?oI68Sa)xSg`3&^N=q4M;VUdW z!S0i|*9_^>6kE*gTz3Q4gTT}VSULfRbN3qWZZPh=*Km8ruzIK6JKFuXcE8-DqJv4r zgQm+4nauyrTFAG1DJh}>TMAbk+rj(C=gdA~=ghuk=giKwb7uGIoLSdU=ghiRI%n3U z>zrB6%=I`KxURLU6J&!kMr%Ux+Q>y+sK&STvFJ3!at7~HR#dh#X|eqLJEbKXvf%x& zw)M}-A6~lpzg4=%zg0Tn-zpuQ()zGV<|>Y>QGPX! zYaG`!u2Wp^xHsa~a%%F;)n2T&DZWMZcGW+szMy(>jXE{1s_|fr4mF;w@m3A3wrG;^ z#<&LFYwk9WW0}2P%tr&g|KrTv=e>7$3i?;?O|P%J-Fv}%m$P?Y^IqqR!i_(93xC`7_s?r=GXEU%6kq|8Wnv-?#_eZ{6?Q@7*1)g=^{V za(DAQw3YiMPeOHiZcq0Y_dKWO_IEG3m+U#|K=*$x-BpF9+w> zFvm5)QhX!&^j56IEqSVRKTo0_;F;4ySYrRkdBr`vK0HbOi}yE9DgKD($AdYm_!CYm z{?r@JQ{}I{iFQWue4Z$O%adcBOuWKd=Vfym@lH-3-p9$qN4>J}#Nlc#!6mu|?o!Si zzWF>D_&%2OthtTr%GtuthbIZY>;~{8`Bk1Hzs|GccinsLefM|wfg5S|=kH_S`&e4* z*10@p(w%M>`ZwSh$7t$;jbLUucV0<{clt4}4TLuaBYl0mx41vcY3wmzhV#e4&Kq#u z3F9rO)l06I7J zE`zqQ(DVU2!9A9GqLK86=APMHj+BMO7IE1uV`r^9r?b}CZMtn?>G)9B1kb&+#!x@@ z90Fg@vUG~O(xMWavSV>QE0DgiL!HQ8isg@%M=FnH=8mh0gf915GmEXfz(KsDz z0F!xA8W38F3+`GYIi7wfuDhP$RkT%)*{&iMk9MP+YisRlg?1$)bXo&~M~zCS;AsR7 z{41vp4xPtcIi$nS_gXv#Ny@hL0IpQde$c7fI8ueDJ7}YFiEBA0Q~Kb}b2P&DxS4)p z&?W3{k^aR%8I3^e?z*OB?mtJ*e2@QWBQ}5)eKCub4SK@Hrm^V!`k!##PH?98)9_;# z`0x4e>m$n6uEKlm;MczH1^2f~=X}4;XhmbWhX|+gbgc#SiUaaGT4g(N=TvXDyUF~e z?q>R*?QY>NI>x!5lYW{@;fERfObd-5)K?+uo~GAXgd^zRVpSOFeQ7S~{lB2~`=asx zR-x&U(h7}UtCCJ{U^*R*UarqCb(fhA|NiOb&${Q(*MF^|o2zQvyWyum-|Bgw^leil z@>VqMZz^fnA(b@gY_CF>E-_syO&aOZI5enqr}SdQS?rK4i#LAkk0z;Q@Le=Fi zn&GahG{-dq?=kS^aFChEEUkA@BD}If2xqqIncJF^6CY~zI9JVGTD7E|Z2unfV^b_i zlKvYQ_h0nB5i@f|o3+@#1#|El-ut9i3um9-K&hydYX6>?V~&c_^j=83&FXKVgEeQX zlx8$xSyYcoD*Xv!j(M(fS}RNYb(J)6sr2*x-%I6e>MCi{Ofi~o@WtKIh4t*tTL67J zq<3m&X*4rs1*!M{09S)r AF8}}l literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/static/InstrumentSans-Medium.ttf b/docs/Website/niveus/fonts/static/InstrumentSans-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e67ed5d7f77bcc80a0cb9d188498ea83e0585909 GIT binary patch literal 68948 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 literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/static/InstrumentSans-Regular.ttf b/docs/Website/niveus/fonts/static/InstrumentSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0eb2260680c88dcb401d38af211258346657fa4b GIT binary patch literal 68708 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 C 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 literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/static/InstrumentSans-SemiBold.ttf b/docs/Website/niveus/fonts/static/InstrumentSans-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5c3a09212ff8264368da174b3e8df278636090a5 GIT binary patch literal 68920 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

    FMIF={1=Q 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 literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/static/InstrumentSans-SemiBoldItalic.ttf b/docs/Website/niveus/fonts/static/InstrumentSans-SemiBoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..073510f2f036f0c183bda6313e067bc2f222be13 GIT binary patch literal 70704 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 gn*E9s&bNAETs?Mpg#}=8XU5oC3OPLT2}!jQ{`u literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/static/JetBrainsMono-Bold.ttf b/docs/Website/niveus/fonts/static/JetBrainsMono-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..373df2902f42a5c5e2873ffa8d0dbd981674a1b4 GIT binary patch literal 115100 zcmce<2Yg(`5kLO+y_3$8ELrW;%SorZQ!iI_>b(~ib*nd9wj>wH-Lg$JV4GqvH30*m zmyqC4LU$+$#dKm!NQ^N(2@t@h>Gc23zPr;|2$KKj|NH$Vuim@4eY3N(voo`^v(Ew( z1i>GF6oOD$R$kHjdhf#m>jsdGRxWN__L#coPXg;16$Ib5%4N+ZRm$ZT;;W|xp=od9 zvJ69Dv}YgcUVsOBmo*hPeWrggNnlSc#^<_$vA(sREE_&s5Q3Wo!MkKd-^5yKO<-N$ z;<{kP=$7H(<|X$Dg8rz$gv~35`UYbUetReIEyVYhl>o4pJoe&q89pbh9Gl#1^4>It z&mRjy;OOX@fxcqfuFC}>=Aa;WWsmi3Uh5GguEF;!QC~gYH#W4`pxi95M9|~0cI}#p z$t$zp&k$JJlY)?GUAum0?MlzR=i&LQQC|rf1VOYYR#~q-*0U(@8$puLjv&1A+O5~p z^}`R3wttsre?zff`VnM0{gHr4A$Ew53LYTfBC!o$)yh{4g@F|TiVn&T92CSEf8pED@M!@-YD)0upx|qt zk!g^AWT|R_-SCgU;whbY4Bx5+58&)T(fnU53xS(TJxbNjlv=>OQJmK{-2a~_i+`p) zCmlo+wM$px!~dHSgZfnJ9A$;$dAd4FFz&NaobCPpbqz(ERH(gp6zX3CN*RiiUgy;Y z*nFiLaC$y{p7MXPA0&JJ^OPvSoc;KvYa{Bp7vlH-t>T;~#LtRfC? zJ0}jhS{yikj{iiLAhylCj;nKg|KD7f;yGubxkF_MO5~iPbbO|MQky6{)a;I z*1g<;&-b8EzX?u#A95=+SDd=j2lr_xPI+<4LI7YiN9bAl&WVTa(@~sqo``#zhj}Pe zhh#d-agWb4Kgh6|Z*iq|NRJSXVicz?B^?Qw6f#k$4&4)tRF7z&E77sVt%T#=Ird(- zH=|JdR7f7F5Dt2tU{sf`gr^*ZXms+H#+P_qfI@ZL`#`cz^Z+(9eCp|eH#ktBZATQ#0SDd-#PnRiF^9aNwXFA=_u5vL=@sVU5T#G zQMS32>u}$Tf-A>O&k%mXM>0)x(Y&PoI_D>SNBD_vL?`WP7EmY50m*k(G zAzG3h_w?CW=zC`&90aFlsa@)O0}Az>Y|b*2Tt^|L{CW?L?tEccGBnMmRnboq2*V z6Na)C_qU-;pwKu|c^G9k$~X$)A3?bsh3Kb3{2-a3d%{I^oZ~~+zoJ}*LNrowK1V$G zRBW?j9Dn#5%1yWjjnm)D_s*+*0pK|(H;QfFQGL*8&p>%jZ2NH&${_AHqF@|2>BG3rSB|6J1)v3OIKTg4 z74A<0hv>lTjeF4e!^faOff6r&FHE7 JB%8YAKxFXYwYo_I;}lZfKfH-5OM?}&G$ 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 QNcCm|*2FlNqYUH!0gM{GMgRZ+ literal 0 HcmV?d00001 diff --git a/docs/Website/niveus/fonts/static/JetBrainsMono-Medium.ttf b/docs/Website/niveus/fonts/static/JetBrainsMono-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d4c69c220a8b09cb9bab05b04e6951805308c413 GIT binary patch literal 115200 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 c2!HgA*zO)`@4

    Design system

    -

    Surfaces that feel understandable.

    +

    Surfaces you could press.

    - Niveus is a calm, adaptive interface language built on clarity, depth, - material and consistency. The same components carry their hierarchy from - light to dark, because nothing below is defined in terms of an - appearance — only in terms of a role. + Niveus is a tactile, adaptive interface language. Controls are bevelled + keys with light falling across them, fields are wells cut into the + surface, and glass is kept for the chrome that floats over everything + else. The same components carry their hierarchy from light to dark, + because nothing below is defined in terms of an appearance — only in + terms of a role.

    Overline - --nv-font-caption · uppercase + --nv-font-engraved · mono, uppercase
    @@ -762,6 +764,58 @@ +
    +

    Window

    +
    +
    +
    +
    + + + +
    + Appearance +
    + +
    +
    +
    +

    Style

    +
    + + + +
    + + +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    + + + +
    + Inactive — hover the lights +
    +
    +

    A window without focus greys its lights and steps back one elevation. The lights take their color back the moment the pointer reaches them.

    +
    +
    +
    +
    +

    Dialog

    @@ -1315,7 +1369,7 @@ previous.removeAttribute("aria-current"); }); item.setAttribute("aria-current", "page"); - }); + }, { scope: group }); }); } diff --git a/docs/Website/niveus/niveus/base.css b/docs/Website/niveus/niveus/base.css index 5bbcf1a..5c752e3 100644 --- a/docs/Website/niveus/niveus/base.css +++ b/docs/Website/niveus/niveus/base.css @@ -24,6 +24,14 @@ body { margin: 0; min-height: 100svh; background-color: var(--nv-color-background); + /* The canvas is lit, not painted: a wash of the accent falls in from the top + corner and a fainter one pools at the opposite foot. It is what gives + translucent surfaces something to be translucent against, and keeps a + page of solid panels from reading as one flat field. */ + background-image: + radial-gradient(120% 80% at 0% 0%, color-mix(in oklab, var(--nv-color-accent) light-dark(10%, 16%), transparent), transparent 60%), + radial-gradient(90% 70% at 100% 100%, color-mix(in oklab, var(--nv-color-accent) light-dark(6%, 10%), transparent), transparent 60%); + background-attachment: fixed; color: var(--nv-color-text-primary); font: var(--nv-font-body); letter-spacing: var(--nv-letter-spacing-normal); @@ -175,10 +183,11 @@ textarea { color: var(--nv-color-text-secondary); } +/* Engraved: small mono capitals that mark a region the way markings mark an + instrument panel. Not for anything that has to be read as a sentence. */ .nv-overline { - font: var(--nv-font-caption); - font-weight: var(--nv-font-weight-semibold); - letter-spacing: var(--nv-letter-spacing-wider); + font: var(--nv-font-engraved); + letter-spacing: var(--nv-letter-spacing-engraved); text-transform: uppercase; color: var(--nv-color-text-tertiary); } @@ -195,3 +204,32 @@ textarea { .nv-text-success { color: var(--nv-color-success-text); } .nv-text-warning { color: var(--nv-color-warning-text); } .nv-text-danger { color: var(--nv-color-danger-text); } + +/* Lit text: type cut from the same material as the surfaces — bright along + the top, warming towards the accent below, the way light falls across a + raised face. Each line is lit on its own. For one display line on a page, + not for running text. */ +.nv-text-lit { + background-image: linear-gradient( + 180deg, + var(--nv-color-text-primary) 30%, + color-mix(in oklab, var(--nv-color-accent-text) 30%, var(--nv-color-text-primary)) + ); + -webkit-box-decoration-break: clone; + box-decoration-break: clone; + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: transparent; + color: var(--nv-color-accent-text); +} + +/* The accent alone, lit from above: for an accented phrase inside a display + line, where flat accent text would read as a link. */ +.nv-text-lit--accent { + background-image: linear-gradient( + 180deg, + color-mix(in oklab, var(--nv-color-accent-text) 55%, var(--nv-color-text-primary)), + var(--nv-color-accent-text) 60%, + var(--nv-color-accent) + ); +} diff --git a/docs/Website/niveus/niveus/components/avatar.css b/docs/Website/niveus/niveus/components/avatar.css new file mode 100644 index 0000000..20f5f36 --- /dev/null +++ b/docs/Website/niveus/niveus/components/avatar.css @@ -0,0 +1,113 @@ +/* ========================================================================== + Niveus — Avatar + -------------------------------------------------------------------------- + + NX + + A person, as a round raised disc: an image when there is one, initials when + there is not. The disc is lit like a knob — highlight above, shade below — + so a face reads as something set into the interface, not pasted onto it. + + .nv-avatar--ring a ring in the tint, set off by a gap of surface + .nv-avatar--glow the ring gives off its tint + .nv-avatar--sm / --lg / --xl + .nv-avatar__status presence dot; --online lights it + .nv-avatar-group overlapping row of avatars + + --nv-avatar-tint picks the ring color; the accent unless set. + ========================================================================== */ + +.nv-avatar { + --nv-avatar-tint: var(--nv-color-accent); + --_size: 2.5rem; + --_ring: 0 0 transparent; + --_glow: 0 0 transparent; + + position: relative; + display: inline-grid; + place-items: center; + flex: none; + inline-size: var(--_size); + block-size: var(--_size); + + background-color: var(--nv-color-surface-elevated); + background-image: var(--nv-sheen-raised); + color: var(--nv-color-text-secondary); + font: var(--nv-font-label); + font-weight: var(--nv-font-weight-semibold); + border-radius: var(--nv-radius-full); + box-shadow: var(--_ring), var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1), var(--_glow); + user-select: none; +} + +.nv-avatar > img { + inline-size: 100%; + block-size: 100%; + border-radius: inherit; + object-fit: cover; +} + +/* The gap is drawn in the surface color, so the ring reads as a separate band + sitting around the disc rather than as a thick border painted onto it. */ +.nv-avatar--ring, +.nv-avatar--glow { + --_ring: + 0 0 0 2px var(--nv-color-surface), + 0 0 0 4px var(--nv-avatar-tint); +} + +.nv-avatar--glow { + --_glow: 0 0 var(--nv-glow-blur-md) var(--nv-glow-spread-sm) + color-mix(in oklab, var(--nv-avatar-tint) var(--nv-glow-strength), transparent); +} + +.nv-avatar--sm { + --_size: 1.75rem; + font: var(--nv-font-caption); +} + +.nv-avatar--lg { + --_size: 4rem; + font: var(--nv-font-title); +} + +.nv-avatar--xl { + --_size: 6rem; + font: var(--nv-font-heading); +} + +/* --- Status ------------------------------------------------------------------ */ + +.nv-avatar__status { + position: absolute; + inset-block-end: 4%; + inset-inline-end: 4%; + inline-size: max(0.625rem, 24%); + block-size: max(0.625rem, 24%); + border-radius: var(--nv-radius-full); + background-color: var(--nv-color-text-tertiary); + box-shadow: 0 0 0 2px var(--nv-color-surface); +} + +.nv-avatar__status--online { + background-color: var(--nv-color-success); + box-shadow: + 0 0 0 2px var(--nv-color-surface), + 0 0 var(--nv-glow-blur-sm) var(--nv-glow-spread-sm) + color-mix(in oklab, var(--nv-color-success) var(--nv-glow-strength), transparent); +} + +/* --- Group ----------------------------------------------------------------------- */ + +.nv-avatar-group { + display: inline-flex; + align-items: center; +} + +.nv-avatar-group > .nv-avatar { + box-shadow: 0 0 0 2px var(--nv-color-surface), var(--nv-bevel), var(--nv-elevation-1); +} + +.nv-avatar-group > .nv-avatar + .nv-avatar { + margin-inline-start: calc(var(--_size) * -0.3); +} diff --git a/docs/Website/niveus/niveus/components/badge.css b/docs/Website/niveus/niveus/components/badge.css index 7cf80a1..600c858 100644 --- a/docs/Website/niveus/niveus/components/badge.css +++ b/docs/Website/niveus/niveus/components/badge.css @@ -76,6 +76,8 @@ --_bg: var(--_solid-bg); --_fg: var(--_solid-fg); --_border: transparent; + background-image: var(--nv-sheen-filled); + box-shadow: var(--nv-highlight-top); } .nv-badge--square { diff --git a/docs/Website/niveus/niveus/components/button.css b/docs/Website/niveus/niveus/components/button.css index 1353aab..9c4bb4d 100644 --- a/docs/Website/niveus/niveus/components/button.css +++ b/docs/Website/niveus/niveus/components/button.css @@ -10,6 +10,9 @@ .nv-button--icon square, for a lone icon (needs a label) .nv-button--block fills its container + A button is a key: a bevelled face with light falling across it, a contact + line where it meets the surface, and a press that sinks it into an inset. + Every variant is defined purely by reassigning the private --_* properties below. Interaction — the lift on hover, the sink on press, the focus ring — lives once in the base rule, so a new variant can never drift from the way @@ -23,9 +26,10 @@ --_bg-active: var(--nv-color-surface-active); --_fg: var(--nv-color-text-primary); --_border: var(--nv-color-border); - --_shadow: var(--nv-highlight-top), var(--nv-elevation-2); - --_shadow-hover: var(--nv-highlight-top), var(--nv-elevation-3); - --_shadow-active: var(--nv-elevation-inset-sm); + --_sheen: var(--nv-sheen-raised); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2); + --_shadow-hover: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3); + --_shadow-active: var(--nv-elevation-inset-sm), var(--nv-outline); /* Size, overridden per size modifier. */ --_height: var(--nv-control-height-md); @@ -46,6 +50,7 @@ border-radius: var(--_radius); background-color: var(--_bg); + background-image: var(--_sheen); color: var(--_fg); box-shadow: var(--_shadow); @@ -83,8 +88,11 @@ } } +/* Pressed, the face is pushed below the light: the sheen goes and the inset + takes over. */ .nv-button:active:not(:disabled, [aria-disabled="true"]) { background-color: var(--_bg-active); + background-image: none; box-shadow: var(--_shadow-active); translate: 0 var(--nv-press-depth); transition-duration: var(--nv-duration-instant); @@ -98,6 +106,7 @@ .nv-button:disabled, .nv-button[aria-disabled="true"] { background-color: var(--nv-color-surface-inset); + background-image: none; color: var(--nv-color-text-disabled); border-color: var(--nv-color-border-subtle); box-shadow: none; @@ -113,6 +122,13 @@ --_bg-active: var(--nv-color-accent-active); --_fg: var(--nv-color-on-accent); --_border: transparent; + --_sheen: var(--nv-sheen-filled); + /* A filled key gives off a little of its own color: the glow is what makes + it read as lit rather than printed. */ + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2), + 0 6px 16px -8px color-mix(in oklab, var(--_bg) 80%, transparent); + --_shadow-hover: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3), + 0 8px 22px -8px color-mix(in oklab, var(--_bg) 85%, transparent); font-weight: var(--nv-font-weight-semibold); } @@ -122,6 +138,11 @@ --_bg-active: var(--nv-color-danger-active); --_fg: var(--nv-color-on-danger); --_border: transparent; + --_sheen: var(--nv-sheen-filled); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2), + 0 6px 16px -8px color-mix(in oklab, var(--_bg) 80%, transparent); + --_shadow-hover: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3), + 0 8px 22px -8px color-mix(in oklab, var(--_bg) 85%, transparent); --nv-color-focus-ring: var(--nv-color-danger-border); font-weight: var(--nv-font-weight-semibold); } @@ -132,11 +153,20 @@ --_bg-active: var(--nv-color-surface-active); --_fg: var(--nv-color-text-secondary); --_border: transparent; + --_sheen: none; --_shadow: none; --_shadow-hover: none; --_shadow-active: var(--nv-elevation-inset-sm); } +/* A ghost has no material to lose, so disabling it only dims the label — + it does not suddenly grow a well its enabled siblings never had. */ +.nv-button--ghost:disabled, +.nv-button--ghost[aria-disabled="true"] { + background-color: transparent; + border-color: transparent; +} + @media (hover: hover) { .nv-button--ghost:hover:not(:disabled, [aria-disabled="true"]) { color: var(--nv-color-text-primary); @@ -150,6 +180,7 @@ --_bg-active: var(--nv-color-accent-subtle-hover); --_fg: var(--nv-color-accent-text); --_border: var(--nv-color-accent-border); + --_sheen: none; --_shadow: none; --_shadow-hover: var(--nv-elevation-1); } @@ -159,6 +190,7 @@ --_bg-hover: var(--nv-material-frosted-bg); --_bg-active: var(--nv-material-frosted-bg); --_border: var(--nv-material-glass-border); + --_sheen: none; backdrop-filter: var(--nv-backdrop-glass); -webkit-backdrop-filter: var(--nv-backdrop-glass); } @@ -205,9 +237,9 @@ through every state. */ .nv-button--float { - --_shadow: var(--nv-highlight-top), var(--nv-elevation-3); - --_shadow-hover: var(--nv-highlight-top), var(--nv-elevation-4); - --_shadow-active: var(--nv-highlight-top), var(--nv-elevation-2); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3); + --_shadow-hover: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-4); + --_shadow-active: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2); translate: var(--nv-button-offset, 0 0); } diff --git a/docs/Website/niveus/niveus/components/card.css b/docs/Website/niveus/niveus/components/card.css index 78a3adb..4dd9646 100644 --- a/docs/Website/niveus/niveus/components/card.css +++ b/docs/Website/niveus/niveus/components/card.css @@ -6,6 +6,9 @@ .nv-card--inset recessed into its parent .nv-card--frosted over imagery or scrolling content .nv-card--interactive the whole card is one target + .nv-card--lit lit along its top edge in its tint + .nv-card--glow gives off its tint — the one card that is on + .nv-card--spotlight catches a light that follows the pointer .nv-card__header / __body / __footer / __media A card is a container, not a look. If a card needs a shadow that is not on @@ -14,10 +17,20 @@ ========================================================================== */ .nv-card { - --_bg: var(--nv-color-surface); + /* Content surfaces are mostly solid: enough of the canvas comes through to + tie a card to the light around it, never enough to compete with what it + holds. The blur keeps anything busy behind it (a bed, an image) from + reading through as texture. */ + --_bg: color-mix(in oklab, var(--nv-color-surface) 90%, transparent); --_border: var(--nv-color-border-subtle); - --_shadow: var(--nv-highlight-top), var(--nv-elevation-1); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1); + --_sheen: var(--nv-sheen-surface); --_padding: var(--nv-space-5); + /* Light layers the variants switch on. Kept separate from --_shadow so a + lit or glowing card can still be elevated, floating or interactive. */ + --_lit: 0 0 transparent; + --_glow: 0 0 transparent; + --_spot: linear-gradient(transparent, transparent); position: relative; display: flex; @@ -25,10 +38,13 @@ min-inline-size: 0; background-color: var(--_bg); + background-image: var(--_spot), var(--_sheen); color: var(--nv-color-text-primary); border: var(--nv-border-width) solid var(--_border); border-radius: var(--nv-radius-lg); - box-shadow: var(--_shadow); + box-shadow: var(--_lit), var(--_shadow), var(--_glow); + backdrop-filter: var(--nv-backdrop-glass); + -webkit-backdrop-filter: var(--nv-backdrop-glass); /* Children are clipped to the corner radius so media and inset regions cannot square off the card. */ @@ -37,18 +53,19 @@ } .nv-card--elevated { - --_bg: var(--nv-color-surface-elevated); - --_shadow: var(--nv-highlight-top), var(--nv-elevation-2); + --_bg: color-mix(in oklab, var(--nv-color-surface-elevated) 90%, transparent); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2); } .nv-card--floating { - --_bg: var(--nv-color-surface-elevated); - --_shadow: var(--nv-highlight-top), var(--nv-elevation-3); + --_bg: color-mix(in oklab, var(--nv-color-surface-elevated) 88%, transparent); + --_shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3); } .nv-card--inset { - --_bg: var(--nv-color-surface-inset); - --_shadow: var(--nv-elevation-inset-md); + --_bg: color-mix(in oklab, var(--nv-color-surface-inset) 85%, transparent); + --_shadow: var(--nv-elevation-inset-md), var(--nv-ledge); + --_sheen: none; --_border: var(--nv-color-border-subtle); } @@ -56,6 +73,7 @@ --_bg: var(--nv-material-frosted-bg); --_border: var(--nv-material-frosted-border); --_shadow: var(--nv-material-frosted-shadow); + --_sheen: none; backdrop-filter: var(--nv-backdrop-frosted); -webkit-backdrop-filter: var(--nv-backdrop-frosted); } @@ -76,20 +94,75 @@ @media (hover: hover) { .nv-card--interactive:hover { - box-shadow: var(--nv-highlight-top), var(--nv-elevation-3); + box-shadow: var(--_lit), var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3), var(--_glow); translate: 0 calc(var(--nv-lift-hover) * 2); } } .nv-card--interactive:active { - box-shadow: var(--nv-highlight-top), var(--nv-elevation-1); + box-shadow: var(--_lit), var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1), var(--_glow); translate: 0 var(--nv-press-depth); transition-duration: var(--nv-duration-instant); } .nv-card--interactive:focus-visible { outline: none; - box-shadow: var(--_shadow), var(--nv-focus-ring); + box-shadow: var(--_lit), var(--_shadow), var(--_glow), var(--nv-focus-ring); +} + +/* --- Light ------------------------------------------------------------------ + Three ways a card can carry light, each stated once and combinable with + every elevation above. They all take the card's tint — the accent unless + --nv-card-tint names another color, the way --nv-bed-tint does for a bed. + + Lit: a strip of light along the top edge, spilling a little way down + the face. For a card that belongs to something with a color: a + project, a status, a category. + Glow: the card gives off its tint. For the one card that is on — the + current plan, the live item. Two glowing cards side by side + cancel each other out. + Spotlight: a soft light follows the pointer across the face (niveus.js + tracks it). A showcase effect; a list of work items does not + need one. */ + +.nv-card--lit, +.nv-card--glow, +.nv-card--spotlight { + --nv-card-tint: var(--nv-color-accent); +} + +.nv-card--lit { + --_lit: + inset 0 2px 0 color-mix(in oklab, var(--nv-card-tint) 85%, transparent), + inset 0 18px 28px -22px color-mix(in oklab, var(--nv-card-tint) 70%, transparent); + --_sheen: + radial-gradient( + 120% 70% at 0% 0%, + color-mix(in oklab, var(--nv-card-tint) 12%, transparent), + transparent 70% + ), + var(--nv-sheen-surface); +} + +.nv-card--glow { + --_border: color-mix(in oklab, var(--nv-card-tint) 40%, var(--nv-color-border-subtle)); + --_glow: 0 0 var(--nv-glow-blur-md) var(--nv-glow-spread-md) + color-mix(in oklab, var(--nv-card-tint) var(--nv-glow-strength), transparent); +} + +@media (hover: hover) { + .nv-card--glow.nv-card--interactive:hover { + --_glow: 0 0 var(--nv-glow-blur-lg) var(--nv-glow-spread-md) + color-mix(in oklab, var(--nv-card-tint) var(--nv-glow-strength), transparent); + } + + .nv-card--spotlight:hover { + --_spot: radial-gradient( + 22rem circle at var(--nv-pointer-x, 50%) var(--nv-pointer-y, 0%), + color-mix(in oklab, var(--nv-card-tint) 14%, var(--nv-color-sheen-top)), + transparent 70% + ); + } } /* Cards whose whole area is clickable via a link inside: the link's target is diff --git a/docs/Website/niveus/niveus/components/deck.css b/docs/Website/niveus/niveus/components/deck.css new file mode 100644 index 0000000..3131d0b --- /dev/null +++ b/docs/Website/niveus/niveus/components/deck.css @@ -0,0 +1,55 @@ +/* ========================================================================== + Niveus — Deck + -------------------------------------------------------------------------- +
    +
    …
    + + +
    + + One surface in front of others of its kind: the current item of a set that + has more behind it. The layers are cards seen edge-on, stepping back and + dimming with distance, so the set has depth without anything having to + move. Use it where "there are more of these" is part of the message — a + showcase of products, a stack of notifications, a carousel at rest. + + Everything in the deck shares one grid cell. The front surface is any + element; the layers are decorative and hidden from assistive technology. + Panels that swap (an .nv-tab-panel set) can live in the deck together: + the hidden ones take no space. + ========================================================================== */ + +.nv-deck { + --_step: var(--nv-space-3); + + display: grid; + position: relative; + isolation: isolate; + /* Room above the front surface for the layers that peek out behind it. */ + padding-block-start: calc(var(--_step) * 2); +} + +.nv-deck > * { + grid-area: 1 / 1; + min-inline-size: 0; +} + +.nv-deck__layer { + --_depth: 1; + + z-index: -1; + pointer-events: none; + background-color: color-mix(in oklab, var(--nv-color-surface) 90%, transparent); + background-image: var(--nv-sheen-surface); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: var(--nv-radius-lg); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1); + translate: 0 calc(var(--_step) * var(--_depth) * -1); + scale: calc(1 - var(--_depth) * 0.05) 1; + opacity: calc(1 - var(--_depth) * 0.3); +} + +.nv-deck__layer + .nv-deck__layer { + --_depth: 2; + z-index: -2; +} diff --git a/docs/Website/niveus/niveus/components/dialog.css b/docs/Website/niveus/niveus/components/dialog.css index 3c048a0..8bdf3d9 100644 --- a/docs/Website/niveus/niveus/components/dialog.css +++ b/docs/Website/niveus/niveus/components/dialog.css @@ -23,11 +23,17 @@ max-block-size: min(42rem, calc(100svh - var(--nv-space-12))); padding: 0; - background-color: var(--nv-color-surface-elevated); + /* The dialog sits over a dimmed, blurred page, so it can afford to let a + little of it through: it reads as a pane lifted off the page rather than + a card pasted over it. */ + background-color: color-mix(in oklab, var(--nv-color-surface-elevated) 86%, transparent); + background-image: var(--nv-sheen-surface); + backdrop-filter: var(--nv-backdrop-frosted); + -webkit-backdrop-filter: var(--nv-backdrop-frosted); color: var(--nv-color-text-primary); border: var(--nv-border-width) solid var(--nv-color-border-subtle); border-radius: var(--nv-radius-xl); - box-shadow: var(--nv-highlight-top), var(--nv-elevation-4); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-4); overflow: hidden; diff --git a/docs/Website/niveus/niveus/components/disclosure.css b/docs/Website/niveus/niveus/components/disclosure.css index f5fca76..ecd7e77 100644 --- a/docs/Website/niveus/niveus/components/disclosure.css +++ b/docs/Website/niveus/niveus/components/disclosure.css @@ -20,9 +20,10 @@ --_padding: var(--nv-space-4); background-color: var(--nv-color-surface); + background-image: var(--nv-sheen-surface); border: var(--nv-border-width) solid var(--nv-color-border-subtle); border-radius: var(--nv-radius-lg); - box-shadow: var(--nv-highlight-top), var(--nv-elevation-1); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1); transition: var(--nv-transition-surface); } diff --git a/docs/Website/niveus/niveus/components/input.css b/docs/Website/niveus/niveus/components/input.css index d84eae6..cb880f3 100644 --- a/docs/Website/niveus/niveus/components/input.css +++ b/docs/Website/niveus/niveus/components/input.css @@ -8,9 +8,9 @@ .nv-checkbox / .nv-radio custom marks on the native controls .nv-switch binary control with an inset track - Inputs are the system's inset material: they read as recessed into the - surface that holds them, which is what distinguishes a place to type from a - thing to press. On focus the recess stays — only the ring and border change, + Inputs are the system's inset material: they read as wells cut into the + surface that holds them — shaded inside, lit along the lower lip — which is + what distinguishes a place to type from a thing to press. On focus the recess stays — only the ring and border change, so the field never appears to jump forward. ========================================================================== */ @@ -59,12 +59,14 @@ min-inline-size: 0; block-size: var(--_height); padding-inline: var(--_padding); - - background-color: var(--nv-color-surface-inset); + /* A well in dark, where recess reads as shade; paper in light, where a grey + well reads as a field that has been switched off. The inset shadow and + ledge carry the recess either way. */ + background-color: light-dark(var(--nv-color-surface), var(--nv-color-surface-inset)); color: var(--nv-color-text-primary); border: var(--nv-border-width) solid var(--_border); border-radius: var(--_radius); - box-shadow: var(--nv-elevation-inset-sm); + box-shadow: var(--nv-elevation-inset-md), var(--nv-ledge); font-family: var(--nv-font-family-sans); font-size: var(--_font-size); @@ -87,7 +89,7 @@ .nv-input:focus { outline: none; --_border: var(--nv-color-accent); - box-shadow: var(--nv-elevation-inset-sm), var(--nv-focus-ring); + box-shadow: var(--nv-elevation-inset-md), var(--nv-focus-ring); } .nv-input[aria-invalid="true"] { @@ -134,7 +136,13 @@ textarea.nv-input { padding: 0; } -.nv-input--color::-webkit-color-swatch, +.nv-input--color::-webkit-color-swatch { + border: var(--nv-border-width) solid var(--nv-color-border); + border-radius: calc(var(--nv-radius-md) - var(--nv-space-1)); +} + +/* Separate rules on purpose: a selector list that names another engine's + pseudo-element is invalid as a whole, and each browser would drop both. */ .nv-input--color::-moz-color-swatch { border: var(--nv-border-width) solid var(--nv-color-border); border-radius: calc(var(--nv-radius-md) - var(--nv-space-1)); @@ -227,13 +235,16 @@ textarea.nv-input { .nv-radio { position: relative; flex: none; + /* The marks are drawn in em; pinning the size keeps them the same whatever + the label around them is set in. */ + font-size: var(--nv-font-size-md); inline-size: var(--nv-space-5); block-size: var(--nv-space-5); margin: 0; background-color: var(--nv-color-surface-inset); border: var(--nv-border-width) solid var(--nv-color-border-strong); border-radius: var(--nv-radius-xs); - box-shadow: var(--nv-elevation-inset-sm); + box-shadow: var(--nv-elevation-inset-sm), var(--nv-ledge); cursor: pointer; appearance: none; transition: var(--nv-transition-control); @@ -247,8 +258,9 @@ textarea.nv-input { .nv-radio:checked, .nv-checkbox:indeterminate { background-color: var(--nv-color-accent); + background-image: var(--nv-sheen-filled); border-color: transparent; - box-shadow: var(--nv-highlight-top), var(--nv-elevation-1); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1); } /* The marks are always present, at zero size and zero opacity, so checking a @@ -323,8 +335,10 @@ textarea.nv-input { } /* --- Switch -------------------------------------------------------------------------- - The track is inset and the thumb is elevated: the physical relationship does - the explaining, so the control reads as on or off without a label. */ + The track is a slot cut into the surface and the thumb is a knob riding in + it: the physical relationship does the explaining, so the control reads as + on or off without a label. The slot stays recessed when it fills with color + — switching on lights the slot, it does not raise it. */ .nv-switch { --_track-inline: calc(var(--nv-space-6) * 1.5); @@ -344,7 +358,7 @@ textarea.nv-input { background-color: var(--nv-color-surface-inset); border: var(--nv-border-width) solid var(--nv-color-border); border-radius: var(--nv-radius-full); - box-shadow: var(--nv-elevation-inset-sm); + box-shadow: var(--nv-elevation-inset-md), var(--nv-ledge); cursor: pointer; appearance: none; transition: var(--nv-transition-control); @@ -358,9 +372,10 @@ textarea.nv-input { inline-size: var(--_thumb); block-size: var(--_thumb); translate: 0 -50%; - background-color: var(--nv-color-surface-elevated); + background-color: var(--nv-color-knob); + background-image: var(--nv-sheen-knob); border-radius: var(--nv-radius-full); - box-shadow: var(--nv-highlight-top), var(--nv-elevation-2); + box-shadow: var(--nv-outline), var(--nv-elevation-2); transition: translate var(--nv-duration-travel) var(--nv-ease-emphasized), background-color var(--nv-duration-fast) var(--nv-ease-standard); @@ -369,6 +384,7 @@ textarea.nv-input { .nv-switch:checked { background-color: var(--nv-color-accent); border-color: transparent; + box-shadow: var(--nv-elevation-inset-md), var(--nv-outline); } .nv-switch:checked::after { @@ -386,7 +402,10 @@ textarea.nv-input { display: flex; align-items: center; gap: var(--nv-space-2-5); + /* Labelled at control size, so a row of switches and checkboxes sits level + with the buttons and fields beside it. */ font: var(--nv-font-body); + font-size: var(--nv-font-size-sm); cursor: pointer; } diff --git a/docs/Website/niveus/niveus/components/menu.css b/docs/Website/niveus/niveus/components/menu.css index 35f6636..8bddbef 100644 --- a/docs/Website/niveus/niveus/components/menu.css +++ b/docs/Website/niveus/niveus/components/menu.css @@ -43,9 +43,10 @@ margin-block-start: var(--nv-space-2); background-color: var(--nv-material-frosted-bg); + background-image: var(--nv-sheen-surface); border: var(--nv-border-width) solid var(--nv-material-frosted-border); - border-radius: var(--nv-radius-md); - box-shadow: var(--nv-highlight-top), var(--nv-elevation-3); + border-radius: var(--nv-radius-lg); + box-shadow: var(--nv-material-frosted-shadow); backdrop-filter: var(--nv-backdrop-frosted); -webkit-backdrop-filter: var(--nv-backdrop-frosted); color: var(--nv-color-text-primary); diff --git a/docs/Website/niveus/niveus/components/navigation.css b/docs/Website/niveus/niveus/components/navigation.css index c9b7f0c..267ed61 100644 --- a/docs/Website/niveus/niveus/components/navigation.css +++ b/docs/Website/niveus/niveus/components/navigation.css @@ -8,8 +8,8 @@ .nv-nav-tabs in-page tab strip with a sliding indicator Navigation is chrome: it sits above content rather than in it. That is why - the bar is frosted — the blur is not decoration, it is the signal that - content is passing underneath. A sidebar that scrolls with the page is not + the bar is frosted and bevelled — the blur is not decoration, it is the + signal that content is passing underneath. A sidebar that scrolls with the page is not chrome, so .nv-nav--vertical drops the translucency by default. ========================================================================== */ @@ -20,18 +20,19 @@ display: flex; align-items: center; - gap: var(--nv-space-4); + flex-wrap: wrap; + gap: var(--nv-space-2) var(--nv-space-4); padding: var(--nv-space-2) var(--nv-space-4); min-block-size: var(--nv-control-height-lg); - background-color: var(--nv-material-frosted-bg); + background-image: var(--nv-sheen-raised); border-block-end: var(--nv-border-width) solid var(--nv-color-border-subtle); /* The travelling selection marker sits behind its item at z-index -1; the bar has to be its own stacking context or the marker would fall behind the bar's background and disappear. */ isolation: isolate; - box-shadow: var(--nv-highlight-top); + box-shadow: var(--nv-bevel); backdrop-filter: var(--nv-backdrop-frosted); -webkit-backdrop-filter: var(--nv-backdrop-frosted); transition: var(--nv-transition-surface); @@ -40,12 +41,13 @@ /* The bar only earns a shadow once something is behind it. Set data-scrolled from the application on scroll. */ .nv-nav[data-scrolled] { - box-shadow: var(--nv-highlight-top), var(--nv-elevation-2); + box-shadow: var(--nv-bevel), var(--nv-elevation-2); transition: box-shadow var(--nv-duration-normal) var(--nv-ease-standard); } .nv-nav--plain { background-color: var(--nv-color-surface); + background-image: var(--nv-sheen-raised); backdrop-filter: none; -webkit-backdrop-filter: none; } @@ -64,6 +66,7 @@ background-color: transparent; border-block-end: 0; + background-image: none; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; @@ -88,6 +91,15 @@ padding: 0; list-style: none; min-inline-size: 0; + /* On a narrow screen a long list scrolls inside the bar instead of pushing + the page sideways. */ + max-inline-size: 100%; + overflow-x: auto; + scrollbar-width: none; +} + +.nv-nav__list::-webkit-scrollbar { + display: none; } .nv-nav__spacer { @@ -169,14 +181,23 @@ z-index: -1; background-color: var(--nv-color-surface-elevated); + background-image: var(--nv-sheen-raised); border: var(--nv-border-width) solid var(--nv-color-border-subtle); border-radius: inherit; - box-shadow: var(--nv-highlight-top), var(--nv-elevation-1); - - view-transition-name: var(--nv-selection-name); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1); view-transition-class: nv-travelling; } +/* The marker is named only while its own group is changing (niveus.js sets + data-nv-travelling for the length of the transition). A permanent name + would lift every marker on the page out of the page snapshot on every + transition, theme changes included. */ +[data-nv-travelling] .nv-nav__item[aria-current]::before, +[data-nv-travelling] .nv-nav__item--active::before, +[data-nv-travelling] .nv-nav__item[aria-selected="true"]::before { + view-transition-name: var(--nv-selection-name); +} + /* Hovering an already-selected item should not restate the emphasis. */ @media (hover: hover) { .nv-nav__item[aria-current]:hover, @@ -226,11 +247,15 @@ gap: var(--nv-space-1); inline-size: 15rem; block-size: 100svh; + flex-wrap: nowrap; padding: var(--nv-space-4) var(--nv-space-3); - - background-color: var(--nv-color-background-subtle); - backdrop-filter: none; - -webkit-backdrop-filter: none; + /* A sidebar is a pane of the canvas rather than chrome over content, so it + stays mostly opaque — but it lets the light of the canvas through, which + is what stops it reading as a grey slab beside the page. */ + background-color: color-mix(in oklab, var(--nv-color-background-subtle) 72%, transparent); + background-image: var(--nv-sheen-surface); + backdrop-filter: var(--nv-backdrop-frosted); + -webkit-backdrop-filter: var(--nv-backdrop-frosted); border-block-end: 0; border-inline-end: var(--nv-border-width) solid var(--nv-color-border-subtle); box-shadow: none; @@ -252,11 +277,11 @@ margin-block-end: var(--nv-space-3); } +/* Engraved, like .nv-overline: a section marks a region, it is not read. */ .nv-nav__section { padding: var(--nv-space-4) var(--nv-space-3) var(--nv-space-1-5); - font: var(--nv-font-caption); - font-weight: var(--nv-font-weight-semibold); - letter-spacing: var(--nv-letter-spacing-wider); + font: var(--nv-font-engraved); + letter-spacing: var(--nv-letter-spacing-engraved); text-transform: uppercase; color: var(--nv-color-text-tertiary); } @@ -272,13 +297,13 @@ .nv-nav-tabs { display: inline-flex; align-items: center; + max-inline-size: 100%; gap: var(--nv-space-0-5); padding: var(--nv-space-1); - - background-color: var(--nv-color-surface-inset); + background-color: color-mix(in oklab, var(--nv-color-surface-inset) 80%, transparent); border: var(--nv-border-width) solid var(--nv-color-border-subtle); border-radius: var(--nv-radius-md); - box-shadow: var(--nv-elevation-inset-sm); + box-shadow: var(--nv-elevation-inset-md), var(--nv-ledge); overflow-x: auto; scrollbar-width: none; isolation: isolate; @@ -307,12 +332,12 @@ /* --- Panels ---------------------------------------------------------------------- Switching tabs should feel like moving through one surface rather than - swapping the interface. The panel carries the shared content name, so the - outgoing and incoming panels cross-fade inside the same box — and slide - with the direction of travel when the application supplies one. */ - + swapping the interface. nv.selectTab() gives the outgoing and incoming + panels one shared name for the length of the change, so they hand over + inside the same box — and slide with the direction of travel. The class is + what picks up the content animation in continuity.css. */ .nv-tab-panel { - view-transition-name: var(--nv-content-name, nv-content); + view-transition-class: nv-content; } /* --- Breadcrumbs -------------------------------------------------------------------- */ diff --git a/docs/Website/niveus/niveus/components/skeleton.css b/docs/Website/niveus/niveus/components/skeleton.css new file mode 100644 index 0000000..a79aec6 --- /dev/null +++ b/docs/Website/niveus/niveus/components/skeleton.css @@ -0,0 +1,60 @@ +/* ========================================================================== + Niveus — Skeleton + -------------------------------------------------------------------------- + + + The shape of content that has not arrived yet. A skeleton is a shallow well + cut where the content will sit, with a slow band of light crossing it — the + surface is recessed and waiting, not broken. + + .nv-skeleton a block; size it with the layout + .nv-skeleton--text one line of body text + .nv-skeleton--circle an avatar or a tile + + Under reduced motion the light stops crossing and the well stays: the state + is still legible, it just does not move. + ========================================================================== */ + +.nv-skeleton { + display: block; + min-block-size: var(--nv-space-4); + border-radius: var(--nv-radius-md); + background-color: var(--nv-color-surface-inset); + background-image: linear-gradient( + 100deg, + transparent 30%, + var(--nv-color-sheen-top) 50%, + transparent 70% + ); + background-size: 220% 100%; + box-shadow: var(--nv-elevation-inset-sm), var(--nv-ledge); + animation: nv-shimmer var(--nv-duration-shimmer) var(--nv-ease-linear) infinite; +} + +.nv-skeleton--text { + inline-size: 100%; + min-block-size: 0; + block-size: 0.75em; + border-radius: var(--nv-radius-full); +} + +/* A paragraph of skeleton lines ends short, like the paragraph it stands for. */ +.nv-skeleton--text:last-child:not(:first-child) { + inline-size: 60%; +} + +.nv-skeleton--circle { + aspect-ratio: 1; + border-radius: var(--nv-radius-full); +} + +@keyframes nv-shimmer { + from { background-position: 100% 0; } + to { background-position: -120% 0; } +} + +@media (prefers-reduced-motion: reduce) { + .nv-skeleton { + animation: none; + } +} diff --git a/docs/Website/niveus/niveus/components/stat.css b/docs/Website/niveus/niveus/components/stat.css new file mode 100644 index 0000000..7a140f0 --- /dev/null +++ b/docs/Website/niveus/niveus/components/stat.css @@ -0,0 +1,74 @@ +/* ========================================================================== + Niveus — Stat + -------------------------------------------------------------------------- +
    +
    +
    Servers
    +
    1,204
    +
    +
    + + A number the user is meant to read at a glance. A group of stats is set into + one shallow well, like the readout panel of an instrument: the figures sit + behind the surface, separated by hairlines, so a row of numbers reads as one + display instead of as four loose labels. + + .nv-stat-group the readout well; wraps without a media query + .nv-stat one reading + .nv-stat__label what is measured + .nv-stat__value the figure, in tabular numerals + .nv-stat__delta change since last time; --up / --down + ========================================================================== */ + +.nv-stat-group { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(8rem, 100%), 1fr)); + /* The hairlines between readings are the well itself showing through a + one-pixel gap, so they stay continuous however the row wraps. */ + gap: var(--nv-border-width); + margin: 0; + background-color: var(--nv-color-border-subtle); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: var(--nv-radius-lg); + box-shadow: var(--nv-elevation-inset-md), var(--nv-ledge); + overflow: hidden; +} + +.nv-stat { + display: flex; + flex-direction: column; + gap: var(--nv-space-1); + min-inline-size: 0; + padding: var(--nv-space-4) var(--nv-space-5); +} + +.nv-stat-group > .nv-stat { + background-color: var(--nv-color-surface-inset); +} + +.nv-stat__label { + font: var(--nv-font-caption); + color: var(--nv-color-text-tertiary); +} + +.nv-stat__value { + margin: 0; + font: var(--nv-font-heading); + font-variant-numeric: tabular-nums; + letter-spacing: var(--nv-letter-spacing-tight); + color: var(--nv-color-text-primary); +} + +.nv-stat__delta { + font: var(--nv-font-caption); + font-variant-numeric: tabular-nums; + color: var(--nv-color-text-secondary); +} + +.nv-stat__delta--up { + color: var(--nv-color-success); +} + +.nv-stat__delta--down { + color: var(--nv-color-danger); +} diff --git a/docs/Website/niveus/niveus/components/steps.css b/docs/Website/niveus/niveus/components/steps.css new file mode 100644 index 0000000..6aa4598 --- /dev/null +++ b/docs/Website/niveus/niveus/components/steps.css @@ -0,0 +1,157 @@ +/* ========================================================================== + Niveus — Steps + -------------------------------------------------------------------------- +
      +
    1. + 1 +
      +

      Listen

      +

      …

      +
      +
    2. +
    + + A sequence the user moves through: a process, an onboarding, an order's + progress. The steps sit on a rail — a groove cut into the surface — with + each marker a raised knob set into it. Finished steps light their stretch + of the rail, so progress reads as something filling up rather than as a + row of ticks. + + .nv-steps horizontal; becomes vertical on narrow screens + .nv-steps--vertical always vertical + data-state="done" the step and its stretch of rail are lit + aria-current="step" the step in progress: lit marker, rail still dark + ========================================================================== */ + +.nv-steps { + --_marker: 2.25rem; + --_rail: 6px; + --_gap: var(--nv-space-4); + + display: grid; + grid-auto-flow: column; + grid-auto-columns: minmax(0, 1fr); + gap: var(--_gap); + margin: 0; + padding: 0; + list-style: none; +} + +.nv-steps__item { + position: relative; + display: flex; + flex-direction: column; + gap: var(--nv-space-3); + min-inline-size: 0; +} + +/* Each step draws the rail from its own marker to the next one, so a finished + step can light exactly its stretch and the rail never runs past the end. */ +.nv-steps__item:not(:last-child)::before { + content: ""; + position: absolute; + inset-block-start: calc((var(--_marker) - var(--_rail)) / 2); + inset-inline-start: calc(var(--_marker) / 2); + inline-size: calc(100% + var(--_gap)); + block-size: var(--_rail); + border-radius: var(--nv-radius-full); + background-color: var(--nv-color-surface-inset); + box-shadow: var(--nv-elevation-inset-sm), var(--nv-ledge); + transition: var(--nv-transition-surface); +} + +.nv-steps__item[data-state="done"]:not(:last-child)::before { + background-color: var(--nv-color-accent); + background-image: var(--nv-sheen-filled); + box-shadow: var(--nv-glow-sm); +} + +.nv-steps__marker { + position: relative; + z-index: 1; + display: grid; + place-items: center; + flex: none; + inline-size: var(--_marker); + block-size: var(--_marker); + + background-color: var(--nv-color-surface-elevated); + background-image: var(--nv-sheen-raised); + color: var(--nv-color-text-secondary); + font: var(--nv-font-label); + font-weight: var(--nv-font-weight-semibold); + font-variant-numeric: tabular-nums; + border-radius: var(--nv-radius-full); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2); + transition: var(--nv-transition-surface); +} + +.nv-steps__item[data-state="done"] > .nv-steps__marker, +.nv-steps__item[aria-current="step"] > .nv-steps__marker { + background-color: var(--nv-color-accent); + background-image: var(--nv-sheen-filled); + color: var(--nv-color-on-accent); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2), var(--nv-glow-md); +} + +.nv-steps__body { + display: flex; + flex-direction: column; + gap: var(--nv-space-1); + min-inline-size: 0; +} + +.nv-steps__title { + margin: 0; + font: var(--nv-font-title); + letter-spacing: var(--nv-letter-spacing-tight); + color: var(--nv-color-text-primary); +} + +.nv-steps__text { + margin: 0; + font: var(--nv-font-caption); + color: var(--nv-color-text-secondary); +} + +/* --- Vertical ------------------------------------------------------------------- + Marker beside the text and the rail running down between markers. Also what + a horizontal sequence becomes once its columns are too narrow to read. */ + +.nv-steps--vertical { + grid-auto-flow: row; + grid-auto-columns: auto; + --_gap: var(--nv-space-5); +} + +.nv-steps--vertical > .nv-steps__item { + flex-direction: row; + gap: var(--nv-space-4); +} + +.nv-steps--vertical > .nv-steps__item:not(:last-child)::before { + inset-block-start: calc(var(--_marker) / 2); + inset-inline-start: calc((var(--_marker) - var(--_rail)) / 2); + inline-size: var(--_rail); + block-size: calc(100% + var(--_gap)); +} + +@media (max-width: 40rem) { + .nv-steps { + grid-auto-flow: row; + grid-auto-columns: auto; + --_gap: var(--nv-space-5); + } + + .nv-steps > .nv-steps__item { + flex-direction: row; + gap: var(--nv-space-4); + } + + .nv-steps > .nv-steps__item:not(:last-child)::before { + inset-block-start: calc(var(--_marker) / 2); + inset-inline-start: calc((var(--_marker) - var(--_rail)) / 2); + inline-size: var(--_rail); + block-size: calc(100% + var(--_gap)); + } +} diff --git a/docs/Website/niveus/niveus/components/tile.css b/docs/Website/niveus/niveus/components/tile.css new file mode 100644 index 0000000..f8083b7 --- /dev/null +++ b/docs/Website/niveus/niveus/components/tile.css @@ -0,0 +1,83 @@ +/* ========================================================================== + Niveus — Tile + -------------------------------------------------------------------------- + + + A tile is a small raised key that holds one glyph: the icon beside a + feature, the mark of a product, the symbol on a stat. It is the physical + version of an icon — something with an edge you could press — which is why + a row of features reads as a set of objects rather than as clip art. + + .nv-tile soft key: tinted face, the glyph in its tint + .nv-tile--solid filled key: saturated face, a light glyph + .nv-tile--glow the key is lit from inside + .nv-tile--sm / --lg / --xl + + Everything derives from --nv-tile-tint, the accent unless set. A tile is + not a button: if it does something, it is an .nv-button--icon. + ========================================================================== */ + +.nv-tile { + --nv-tile-tint: var(--nv-color-accent); + --_size: 2.75rem; + --_radius: var(--nv-radius-md); + --_bg: color-mix(in oklab, var(--nv-tile-tint) 16%, var(--nv-color-surface-elevated)); + --_ink: color-mix(in oklab, var(--nv-tile-tint) 70%, var(--nv-color-text-primary)); + --_sheen: var(--nv-sheen-raised); + --_glow: 0 0 transparent; + + position: relative; + display: inline-grid; + place-items: center; + flex: none; + inline-size: var(--_size); + block-size: var(--_size); + + background-color: var(--_bg); + background-image: var(--_sheen); + color: var(--_ink); + border: var(--nv-border-width) solid color-mix(in oklab, var(--nv-tile-tint) 30%, var(--nv-color-border-subtle)); + border-radius: var(--_radius); + box-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-1), var(--_glow); + transition: var(--nv-transition-surface); +} + +/* Glyphs take half the key; a mark that is itself a picture (an image, a + logo) fills it, clipped to the key's corners. */ +.nv-tile > svg { + inline-size: 50%; + block-size: 50%; +} + +.nv-tile > img { + inline-size: 100%; + block-size: 100%; + border-radius: inherit; + object-fit: cover; +} + +.nv-tile--solid { + --_bg: var(--nv-tile-tint); + --_ink: var(--nv-color-on-accent); + --_sheen: var(--nv-sheen-filled); +} + +.nv-tile--glow { + --_glow: 0 0 var(--nv-glow-blur-md) var(--nv-glow-spread-sm) + color-mix(in oklab, var(--nv-tile-tint) var(--nv-glow-strength), transparent); +} + +.nv-tile--sm { + --_size: 2rem; + --_radius: var(--nv-radius-sm); +} + +.nv-tile--lg { + --_size: 3.5rem; + --_radius: var(--nv-radius-lg); +} + +.nv-tile--xl { + --_size: 4.5rem; + --_radius: var(--nv-radius-xl); +} diff --git a/docs/Website/niveus/niveus/components/window.css b/docs/Website/niveus/niveus/components/window.css new file mode 100644 index 0000000..9551359 --- /dev/null +++ b/docs/Website/niveus/niveus/components/window.css @@ -0,0 +1,192 @@ +/* ========================================================================== + Niveus — Window + -------------------------------------------------------------------------- + .nv-window a framed application window + .nv-window--inactive a window that does not have focus + .nv-window__titlebar controls · title · trailing actions + .nv-window__controls the three lights, at the start of the bar + .nv-window__control one light: --close, --minimize or --zoom + .nv-window__title the window's name, centered on the bar + .nv-window__actions trailing slot for a few ghost buttons + .nv-window__body the content area + +
    +
    +
    + + + +
    + Settings +
    +
    …
    +
    + + A window is a solid object: the content it holds never sits on glass. Its + titlebar is a raised strip lit like a control, and the controls are three + lights at its start — close, minimize, zoom — always in that order and in + those colors, because people find them by position and color before they + read anything. Their glyphs appear only while the pointer is over the + group. An inactive window greys its lights and steps back one elevation, + and the lights regain their color the moment they are hovered. + ========================================================================== */ + +.nv-window { + display: flex; + flex-direction: column; + min-inline-size: 0; + + background-color: var(--nv-color-surface); + background-image: var(--nv-sheen-surface); + color: var(--nv-color-text-primary); + border: var(--nv-border-width) solid var(--nv-color-border-subtle); + border-radius: var(--nv-radius-xl); + box-shadow: var(--nv-highlight-top), var(--nv-outline), var(--nv-elevation-4); + + overflow: hidden; + transition: var(--nv-transition-surface); +} + +.nv-window--inactive { + box-shadow: var(--nv-highlight-top), var(--nv-outline), var(--nv-elevation-3); +} + +/* --- Titlebar --------------------------------------------------------------- + Three columns with the outer two sharing the slack, so the title stays on + the window's center line whatever the controls and actions measure. */ + +.nv-window__titlebar { + display: grid; + grid-template-columns: 1fr auto 1fr; + align-items: center; + gap: var(--nv-space-3); + /* Slim, as titlebars on the desktop are: tall enough for the lights and + a label, not a toolbar's height. */ + min-block-size: calc(var(--nv-control-height-sm) + var(--nv-space-1)); + padding-inline: var(--nv-space-3); + + background-color: var(--nv-color-surface-elevated); + background-image: var(--nv-sheen-raised); + border-block-end: var(--nv-border-width) solid var(--nv-color-border-subtle); + box-shadow: var(--nv-highlight-top); + user-select: none; +} + +.nv-window__title { + grid-column: 2; + min-inline-size: 0; + overflow: hidden; + font: var(--nv-font-label); + font-weight: var(--nv-font-weight-semibold); + color: var(--nv-color-text-primary); + text-overflow: ellipsis; + white-space: nowrap; +} + +.nv-window--inactive .nv-window__title { + color: var(--nv-color-text-tertiary); +} + +.nv-window__actions { + grid-column: 3; + justify-self: end; + display: flex; + align-items: center; + gap: var(--nv-space-1); +} + +/* --- Controls ----------------------------------------------------------------- */ + +.nv-window__controls { + grid-column: 1; + justify-self: start; + display: flex; + align-items: center; + gap: var(--nv-space-2); +} + +.nv-window__control { + --_light: var(--nv-color-window-close); + --_c: var(--_light); + + position: relative; + flex: none; + inline-size: var(--nv-space-3); + block-size: var(--nv-space-3); + margin: 0; + padding: 0; + + background-color: var(--_c); + background-image: var(--nv-sheen-filled); + border: 0; + border-radius: var(--nv-radius-full); + box-shadow: inset 0 0 0 var(--nv-border-width) var(--nv-color-window-control-ring); + + cursor: pointer; + appearance: none; + -webkit-tap-highlight-color: transparent; + transition: var(--nv-transition-colors); +} + +.nv-window__control--minimize { --_light: var(--nv-color-window-minimize); } +.nv-window__control--zoom { --_light: var(--nv-color-window-zoom); } + +/* The glyph is two bars drawn from the light's center: crossed for close, one + for minimize, a plus for zoom. They are always present and fade in, so the + whole group reveals at once instead of one glyph at a time. */ +.nv-window__control::before, +.nv-window__control::after { + content: ""; + position: absolute; + inset-block-start: 50%; + inset-inline-start: 50%; + inline-size: 55%; + block-size: calc(var(--nv-border-width) * 1.5); + translate: -50% -50%; + background-color: var(--nv-color-window-glyph); + border-radius: var(--nv-radius-full); + opacity: 0; + transition: opacity var(--nv-duration-fast) var(--nv-ease-standard); +} + +.nv-window__control--close::before { rotate: 45deg; } +.nv-window__control--close::after { rotate: -45deg; } +.nv-window__control--minimize::after { display: none; } +.nv-window__control--zoom::after { rotate: 90deg; } + +.nv-window__controls:hover .nv-window__control::before, +.nv-window__controls:hover .nv-window__control::after, +.nv-window__controls:focus-within .nv-window__control::before, +.nv-window__controls:focus-within .nv-window__control::after { + opacity: 1; +} + +.nv-window__control:active { + background-image: none; + box-shadow: + inset 0 0 0 var(--nv-border-width) var(--nv-color-window-control-ring), + var(--nv-elevation-inset-sm); +} + +.nv-window__control:focus-visible { + outline: none; + box-shadow: + inset 0 0 0 var(--nv-border-width) var(--nv-color-window-control-ring), + var(--nv-focus-ring); +} + +.nv-window--inactive .nv-window__control { + --_c: var(--nv-color-window-inactive); +} + +.nv-window--inactive .nv-window__controls:hover .nv-window__control { + --_c: var(--_light); +} + +/* --- Body --------------------------------------------------------------------- */ + +.nv-window__body { + flex: 1; + min-block-size: 0; + overflow: auto; +} diff --git a/docs/Website/niveus/niveus/continuity.css b/docs/Website/niveus/niveus/continuity.css index 772a754..98fde02 100644 --- a/docs/Website/niveus/niveus/continuity.css +++ b/docs/Website/niveus/niveus/continuity.css @@ -60,9 +60,9 @@ The fix is to capture the labels too and order the groups explicitly. The marker travels below; the items ride above it, exactly as they do at rest. - niveus.js assigns each item its name — they have to be unique per document, - which no stylesheet can guarantee — and items it has not named simply stay in - the page snapshot. + niveus.js names the items of the group that is changing, and only while it + changes — names have to be unique per document, which no stylesheet can + guarantee — and every other item simply stays in the page snapshot. Because the layering is now correct, the marker needs no trick to stay out of the way: it travels at full opacity, like the solid object it is. */ @@ -71,6 +71,16 @@ z-index: 0; } +/* The marker changes shape as it travels — a short label's pill becomes a + long one's. By default the browser scales each snapshot to the group's + width and keeps its aspect ratio, so mid-way a 40×26 pill stretched to + 80px wide is drawn 52px tall, hanging out below its strip. The marker is a + plain surface, so its snapshots fill the box instead. */ +::view-transition-old(.nv-travelling), +::view-transition-new(.nv-travelling) { + block-size: 100%; +} + ::view-transition-group(.nv-carried) { z-index: 1; } @@ -101,40 +111,56 @@ Moving forward and moving back should not look the same. The application sets data-nv-direction on the root for the length of the transition; content then leaves towards where the user came from and enters from where they are - going. Without a direction, content simply rises into place. */ + going. Without a direction, content simply rises into place. -::view-transition-old(nv-content) { - animation: nv-fade-out var(--nv-duration-quick) var(--nv-ease-exit) both; + Content hands over; it does not cross-fade. Two blocks of text at half + opacity on top of each other read as a rendering fault, not as motion, so + the outgoing content is gone (fast) before the incoming arrives (delayed by + that same beat). The box itself never empties for longer than a blink. + + Any element whose content changes in place takes part by carrying the + nv-content class: .nv-continuous and .nv-tab-panel both do. + + The box clips what it holds. When a tall panel gives way to a short one, + the page around it has already reflowed to the new height, so unclipped + outgoing content would spill out below its own card. */ + +::view-transition-group(.nv-content) { + overflow: clip; } -::view-transition-new(nv-content) { - animation: - nv-fade-in var(--nv-duration-normal) var(--nv-ease-entrance) both, - nv-rise var(--nv-duration-normal) var(--nv-ease-entrance) both; +::view-transition-old(.nv-content) { + animation: nv-fade-out var(--nv-duration-fast) var(--nv-ease-exit) both; } -:root[data-nv-direction="forward"]::view-transition-old(nv-content) { +::view-transition-new(.nv-content) { animation: - nv-fade-out var(--nv-duration-quick) var(--nv-ease-exit) both, - nv-exit-to-start var(--nv-duration-normal) var(--nv-ease-emphasized) both; + nv-fade-in var(--nv-duration-normal) var(--nv-ease-entrance) var(--nv-duration-fast) both, + nv-rise var(--nv-duration-normal) var(--nv-ease-entrance) var(--nv-duration-fast) both; } -:root[data-nv-direction="forward"]::view-transition-new(nv-content) { +:root[data-nv-direction="forward"]::view-transition-old(.nv-content) { animation: - nv-fade-in var(--nv-duration-normal) var(--nv-ease-entrance) both, - nv-enter-from-end var(--nv-duration-normal) var(--nv-ease-emphasized) both; + nv-fade-out var(--nv-duration-fast) var(--nv-ease-exit) both, + nv-exit-to-start var(--nv-duration-fast) var(--nv-ease-exit) both; } -:root[data-nv-direction="backward"]::view-transition-old(nv-content) { +:root[data-nv-direction="forward"]::view-transition-new(.nv-content) { animation: - nv-fade-out var(--nv-duration-quick) var(--nv-ease-exit) both, - nv-exit-to-end var(--nv-duration-normal) var(--nv-ease-emphasized) both; + nv-fade-in var(--nv-duration-normal) var(--nv-ease-entrance) var(--nv-duration-fast) both, + nv-enter-from-end var(--nv-duration-normal) var(--nv-ease-emphasized) var(--nv-duration-fast) both; } -:root[data-nv-direction="backward"]::view-transition-new(nv-content) { +:root[data-nv-direction="backward"]::view-transition-old(.nv-content) { animation: - nv-fade-in var(--nv-duration-normal) var(--nv-ease-entrance) both, - nv-enter-from-start var(--nv-duration-normal) var(--nv-ease-emphasized) both; + nv-fade-out var(--nv-duration-fast) var(--nv-ease-exit) both, + nv-exit-to-end var(--nv-duration-fast) var(--nv-ease-exit) both; +} + +:root[data-nv-direction="backward"]::view-transition-new(.nv-content) { + animation: + nv-fade-in var(--nv-duration-normal) var(--nv-ease-entrance) var(--nv-duration-fast) both, + nv-enter-from-start var(--nv-duration-normal) var(--nv-ease-emphasized) var(--nv-duration-fast) both; } @keyframes nv-fade-in { @@ -171,6 +197,34 @@ .nv-continuous { view-transition-name: var(--nv-content-name, nv-content); + view-transition-class: nv-content; +} + +/* --- Reveal ------------------------------------------------------------------------ + Content arriving as it scrolls into view: it rises a short way and fades in, + once, so a long page is read in the order it was written instead of all at + once. .nv-reveal-group does the same for its children one after another, + --nv-stagger apart. + + niveus.js marks what is waiting. Without the script, and under reduced + motion, nothing is ever marked — so nothing is ever hidden. */ + +.nv-reveal[data-nv-reveal="pending"], +.nv-reveal-group > [data-nv-reveal="pending"] { + opacity: 0; +} + +.nv-reveal[data-nv-reveal="shown"], +.nv-reveal-group > [data-nv-reveal="shown"] { + animation: nv-arrive var(--nv-duration-slower) var(--nv-ease-entrance) + calc(var(--nv-reveal-index, 0) * var(--nv-stagger)) both; +} + +@keyframes nv-arrive { + from { + opacity: 0; + translate: 0 var(--nv-travel-lg); + } } /* Collapsible region for markup that is not a
    . The 0fr -> 1fr grid diff --git a/docs/Website/niveus/niveus/fonts.css b/docs/Website/niveus/niveus/fonts.css new file mode 100644 index 0000000..16f861e --- /dev/null +++ b/docs/Website/niveus/niveus/fonts.css @@ -0,0 +1,42 @@ +/* ========================================================================== + Niveus — Fonts + -------------------------------------------------------------------------- + Niveus ships its own faces, so it reads the same wherever it is used + instead of depending on what a machine happens to have installed. Both are + variable fonts under the SIL Open Font License (fonts/OFL-*.txt), free to + bundle with anything. + + Instrument Sans the interface. Crisp, slightly narrow, warm at small + sizes — the voice of every label, control and heading. + JetBrains Mono code, figures, and the engraved labels (.nv-overline) + that mark sections the way markings mark an instrument. + + The paths are relative to this file and to dist/niveus.css alike: both sit + one level below the root, where fonts/ lives. + ========================================================================== */ + +@font-face { + font-family: "Instrument Sans"; + src: url("../fonts/InstrumentSans.woff2") format("woff2"); + font-weight: 400 700; + font-stretch: 75% 100%; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Instrument Sans"; + src: url("../fonts/InstrumentSans-Italic.woff2") format("woff2"); + font-weight: 400 700; + font-stretch: 75% 100%; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: "JetBrains Mono"; + src: url("../fonts/JetBrainsMono.woff2") format("woff2"); + font-weight: 100 800; + font-style: normal; + font-display: swap; +} diff --git a/docs/Website/niveus/niveus/niveus.css b/docs/Website/niveus/niveus/niveus.css index fa1425f..3f198b2 100644 --- a/docs/Website/niveus/niveus/niveus.css +++ b/docs/Website/niveus/niveus/niveus.css @@ -1,5 +1,5 @@ /* ========================================================================== - Niveus — a calm, adaptive interface language. + Niveus — a tactile, adaptive interface language. Made by Nexoniarz. -------------------------------------------------------------------------- The single entry point. An application links this file and nothing else: @@ -22,6 +22,9 @@ @layer niveus.tokens, niveus.theme, niveus.base, niveus.continuity, niveus.components, niveus.utilities; +/* --- Fonts: the faces Niveus ships, so it reads the same everywhere ---------- */ +@import url("fonts.css"); + /* --- Tokens: the values, appearance-agnostic ------------------------------- */ @import url("tokens/color.css") layer(niveus.tokens); @import url("tokens/typography.css") layer(niveus.tokens); @@ -54,6 +57,13 @@ @import url("components/bed.css") layer(niveus.components); @import url("components/badge.css") layer(niveus.components); @import url("components/table.css") layer(niveus.components); +@import url("components/window.css") layer(niveus.components); +@import url("components/tile.css") layer(niveus.components); +@import url("components/avatar.css") layer(niveus.components); +@import url("components/stat.css") layer(niveus.components); +@import url("components/steps.css") layer(niveus.components); +@import url("components/deck.css") layer(niveus.components); +@import url("components/skeleton.css") layer(niveus.components); /* --- Utilities ----------------------------------------------------------------- */ @import url("utilities.css") layer(niveus.utilities); diff --git a/docs/Website/niveus/niveus/niveus.js b/docs/Website/niveus/niveus/niveus.js index 5eb959a..144187e 100644 --- a/docs/Website/niveus/niveus/niveus.js +++ b/docs/Website/niveus/niveus/niveus.js @@ -13,7 +13,7 @@ state (a router, a framework) should call nv.transition() around its own update and ignore the rest. - nv.transition(update, { direction, kind }) run an update continuously + nv.transition(update, { direction, kind, scope }) run an update continuously nv.setTheme("dark" | "light" | "system") cross-fade the appearance nv.openDialog(dialog, trigger) open it out of its trigger nv.selectTab(tablist, tab) move through the same surface @@ -27,9 +27,16 @@ [data-nv-close] button that closes its dialog or popover [data-nv-scroller] frame whose [data-nv-scroll] controls move its .nv-scroller a page at a time + .nv-reveal / .nv-reveal-group content that arrives as it scrolls into + view, once (see continuity.css) + .nv-card--spotlight card whose light follows the pointer - Wiring also names every navigation item, which is what lets a travelling - selection marker pass *behind* the labels rather than over them. + Only what changes is lifted. A transition names the selection marker and + the items of the groups it is given as `scope`, and only for as long as it + runs; everything else stays in the one page snapshot. Naming every item on + the page permanently made every transition — a theme change included — + tear the page into dozens of layers, which is both slow and what pulled + items out from under frosted chrome. Reduced motion is honoured by skipping the view transition entirely: the update still runs, it simply arrives instead of travelling. @@ -51,7 +58,10 @@ /** * Run `update` so the user can follow the change. * `direction` ("forward" | "backward") tells content which way to travel; - * `kind` ("theme") marks a change the whole surface takes part in. + * `kind` ("theme") marks a change the whole surface takes part in; + * `scope` (an element or a list of them) names the selection groups whose + * marker should travel. Without a scope, nothing is lifted and the change + * cross-fades in place. */ function transition(update, options) { options = options || {}; @@ -63,11 +73,20 @@ if (options.direction) root.dataset.nvDirection = options.direction; if (options.kind) root.dataset.nvTransition = options.kind; + var groups = [].concat(options.scope || []).filter(Boolean); + var lifted = []; + groups.forEach(function (group) { + group.setAttribute("data-nv-travelling", ""); + lifted = lifted.concat(liftLabels(group)); + }); + var view = document.startViewTransition(update); function clear() { delete root.dataset.nvDirection; delete root.dataset.nvTransition; + groups.forEach(function (group) { group.removeAttribute("data-nv-travelling"); }); + lifted.forEach(function (item) { item.style.viewTransitionName = ""; }); } view.finished.then(clear, clear); @@ -146,16 +165,32 @@ } if (next < 0 || next === current) return Promise.resolve(); + // The outgoing and incoming panels carry one name between them — the old + // one in the old state, the new one in the new — so the browser treats + // them as one surface whose content changes. Named only for the length of + // the change, so any number of tab sets can live on one page. + var panelOf = function (candidate) { + return candidate ? document.getElementById(candidate.getAttribute("aria-controls")) : null; + }; + var outgoing = panelOf(tabs[current]); + var incoming = panelOf(tab); + if (outgoing && canTransition()) outgoing.style.viewTransitionName = "nv-panel"; + var done = transition(function () { tabs.forEach(function (candidate, index) { var selected = index === next; candidate.setAttribute("aria-selected", String(selected)); candidate.tabIndex = selected ? 0 : -1; - var panel = document.getElementById(candidate.getAttribute("aria-controls")); + var panel = panelOf(candidate); if (panel) panel.hidden = !selected; }); - }, { direction: next > current ? "forward" : "backward" }); + if (outgoing) outgoing.style.viewTransitionName = ""; + if (incoming && canTransition()) incoming.style.viewTransitionName = "nv-panel"; + }, { direction: next > current ? "forward" : "backward", scope: tablist }); + + var settle = function () { if (incoming) incoming.style.viewTransitionName = ""; }; + done.then(settle, settle); tab.focus(); return done; @@ -240,29 +275,84 @@ } /** - * Give every item in a selection group a view-transition name, so it is - * captured as its own layer and rides *above* the travelling marker instead - * of being painted over by it. + * Give every item in `scope` a view-transition name, so it is captured as + * its own layer and rides *above* the travelling marker instead of being + * painted over by it. Returns the items it named, so the caller can take + * the names back off; transition() does this for its `scope` and clears + * them when the change is over. * * This cannot live in CSS: a view-transition-name must be unique across the - * whole document, and a stylesheet cannot count how many navigations a page - * happens to contain. Items already carrying a name are left alone, so an - * application can assign its own. + * whole document, and a stylesheet cannot count items. Items already + * carrying a name are left alone, so an application can assign its own. */ var carried = 0; function liftLabels(scope) { - var groups = scope.querySelectorAll(".nv-nav, .nv-nav-tabs, [data-nv-travel]"); + var items = scope.querySelectorAll(".nv-nav__item"); + var named = []; - for (var i = 0; i < groups.length; i++) { - var items = groups[i].querySelectorAll(".nv-nav__item"); - - for (var j = 0; j < items.length; j++) { - if (items[j].style.viewTransitionName) continue; - carried += 1; - items[j].style.viewTransitionName = "nv-carried-" + carried; - } + for (var j = 0; j < items.length; j++) { + if (items[j].style.viewTransitionName) continue; + carried += 1; + items[j].style.viewTransitionName = "nv-carried-" + carried; + named.push(items[j]); } + return named; + } + + /** + * Reveal content as it scrolls into view. Elements are only marked as + * waiting here, so a page without this script — or under reduced motion — + * never hides anything. Each element arrives once and is then left alone. + */ + var revealer = null; + + function arrive(target) { + var items = target.classList.contains("nv-reveal-group") ? target.children : [target]; + for (var i = 0; i < items.length; i++) { + var item = items[i]; + item.style.setProperty("--nv-reveal-index", String(i)); + item.dataset.nvReveal = "shown"; + item.addEventListener("animationend", function settle(event) { + if (event.target !== this || event.animationName !== "nv-arrive") return; + this.removeEventListener("animationend", settle); + delete this.dataset.nvReveal; + this.style.removeProperty("--nv-reveal-index"); + }); + } + } + + function initReveal(scope) { + if (prefersReducedMotion() || typeof global.IntersectionObserver !== "function") return; + + revealer = revealer || new IntersectionObserver(function (entries) { + entries.forEach(function (entry) { + if (!entry.isIntersecting) return; + revealer.unobserve(entry.target); + arrive(entry.target); + }); + }, { rootMargin: "0px 0px -8% 0px" }); + + scope.querySelectorAll(".nv-reveal, .nv-reveal-group").forEach(function (target) { + if (target.dataset.nvRevealWired) return; + target.dataset.nvRevealWired = ""; + var items = target.classList.contains("nv-reveal-group") ? target.children : [target]; + for (var i = 0; i < items.length; i++) items[i].dataset.nvReveal = "pending"; + revealer.observe(target); + }); + } + + /** + * The light on a .nv-card--spotlight sits under the pointer. One listener + * for the whole document, so cards added later need no wiring. + */ + function trackSpotlight(event) { + if (event.pointerType && event.pointerType !== "mouse") return; + var surface = event.target.closest && event.target.closest(".nv-card--spotlight"); + if (!surface) return; + var box = surface.getBoundingClientRect(); + surface.style.setProperty("--nv-pointer-x", event.clientX - box.left + "px"); + surface.style.setProperty("--nv-pointer-y", event.clientY - box.top + "px"); } function wire(scope) { @@ -282,7 +372,7 @@ scope.querySelectorAll("[data-nv-tabs]").forEach(initTabs); scope.querySelectorAll("[data-nv-scroller]").forEach(initScroller); - liftLabels(scope); + initReveal(scope); scope.querySelectorAll("[data-nv-close]").forEach(function (control) { control.addEventListener("click", function () { @@ -314,6 +404,8 @@ prefersReducedMotion: prefersReducedMotion, }; + document.addEventListener("pointermove", trackSpotlight, { passive: true }); + if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { wire(); }); } else { diff --git a/docs/Website/niveus/niveus/themes/dark.css b/docs/Website/niveus/niveus/themes/dark.css index 0b79aeb..0c41e85 100644 --- a/docs/Website/niveus/niveus/themes/dark.css +++ b/docs/Website/niveus/niveus/themes/dark.css @@ -5,11 +5,13 @@ light-dark() in tokens/color.css. Like the light appearance, almost nothing here is a literal color — every role is derived from --nv-brand. - Dark Niveus is not the light theme inverted. Surfaces get *lighter* as they - rise, shadows deepen rather than disappear, and the top highlight thins to a - faint rim so elevation still reads without glare. The accent moves up its - own ramp too: a mid-tone that reads as vivid on paper reads as muddy on a - dark canvas. + Dark Niveus is warm graphite, not the light theme inverted. Surfaces get + *lighter* as they rise and each step is large enough to see; shadows are + deep and every raised thing carries a near-black contact line, because on a + dark canvas a shadow alone has nothing left to darken. The bevel is what + carries depth here — a lit top edge, a shaded bottom one — and filled color + stays saturated: a vivid accent with a light label reads as a lit key, not + as a hole. ========================================================================== */ :root[data-theme="dark"] { @@ -19,20 +21,20 @@ :root, [data-nv-brand] { /* --- Canvas and surfaces ----------------------------------------------- */ - --nv-dark-background: color-mix(in oklab, #0b0e14, var(--nv-brand) var(--nv-brand-tint)); - --nv-dark-background-subtle: color-mix(in oklab, #10141b, var(--nv-brand) var(--nv-brand-tint)); - --nv-dark-surface: color-mix(in oklab, #171c24, var(--nv-brand) var(--nv-brand-tint)); - --nv-dark-surface-elevated: color-mix(in oklab, #1e242e, var(--nv-brand) var(--nv-brand-tint)); - --nv-dark-surface-inset: color-mix(in oklab, #10141b, var(--nv-brand) var(--nv-brand-tint)); - --nv-dark-surface-hover: color-mix(in oklab, #222835, var(--nv-brand) var(--nv-brand-tint)); - --nv-dark-surface-active: color-mix(in oklab, #2a3140, var(--nv-brand) var(--nv-brand-tint)); - --nv-dark-scrim: rgb(3 5 9 / 0.62); + --nv-dark-background: color-mix(in oklab, #0f0f12, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-background-subtle: color-mix(in oklab, #18181b, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-surface: color-mix(in oklab, #1f1f22, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-surface-elevated: color-mix(in oklab, #2a2a2e, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-surface-inset: color-mix(in oklab, #111113, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-surface-hover: color-mix(in oklab, #313136, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-surface-active: color-mix(in oklab, #39393f, var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-scrim: rgb(6 6 8 / 0.62); /* --- Text --------------------------------------------------------------- */ - --nv-dark-text-primary: #e9edf4; - --nv-dark-text-secondary: color-mix(in oklab, #a3aebf, var(--nv-brand) 8%); - --nv-dark-text-tertiary: color-mix(in oklab, #7a8494, var(--nv-brand) 8%); - --nv-dark-text-disabled: #58616f; + --nv-dark-text-primary: #ecebe8; + --nv-dark-text-secondary: color-mix(in oklab, #a9a8a3, var(--nv-brand) 8%); + --nv-dark-text-tertiary: color-mix(in oklab, #7d7c77, var(--nv-brand) 8%); + --nv-dark-text-disabled: #58585c; --nv-dark-text-inverted: var(--nv-palette-neutral-975); /* --- Borders ------------------------------------------------------------ */ @@ -41,30 +43,38 @@ --nv-dark-border-strong: rgb(255 255 255 / 0.2); /* --- Accent ------------------------------------------------------------- - Lifted up the ramp and slightly desaturated: saturated mid-tones read as - muddy on dark canvases, and fully saturated light ones read as neon. The - floor also puts every filled color above the pivot, so on a dark canvas - the derived label is always the dark one — which is what makes an accent - button read as lit rather than as a hole. */ - --nv-dark-accent: oklch(from var(--nv-brand) clamp(0.72, calc(l + 0.12), 0.86) clamp(0.02, calc(c * 0.92), 0.2) h); + The same derivation as light: a fill is pushed out of the mid-tones until + its label clears 4.5:1, so the brand keeps its full saturation and a light + label. Earlier Niveus lifted the dark accent into pastel to avoid neon; + with bevel and sheen doing the shaping, a saturated fill reads as a lit + key instead, and the pastel was what made the whole system feel washed + out. Only the accent *text* (links, subtle labels) moves up the ramp, + because text on a dark canvas needs the lightness that a fill does not. */ + --nv-dark-accent: oklch(from var(--nv-brand) calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); --nv-dark-accent-hover: oklch(from var(--nv-dark-accent) calc(l + 0.05) c h); --nv-dark-accent-active: oklch(from var(--nv-dark-accent) calc(l + 0.09) c h); - --nv-dark-accent-subtle: oklch(from var(--nv-dark-accent) l c h / 0.15); - --nv-dark-accent-subtle-hover: oklch(from var(--nv-dark-accent) l c h / 0.22); - --nv-dark-accent-border: oklch(from var(--nv-dark-accent) l c h / 0.38); - --nv-dark-accent-text: oklch(from var(--nv-dark-accent) clamp(0.72, calc(l + 0.08), 0.9) calc(c * 0.9) h); + --nv-dark-accent-subtle: oklch(from var(--nv-dark-accent) l c h / 0.2); + --nv-dark-accent-subtle-hover: oklch(from var(--nv-dark-accent) l c h / 0.28); + --nv-dark-accent-border: oklch(from var(--nv-dark-accent) l c h / 0.5); + --nv-dark-accent-text: oklch(from var(--nv-dark-accent) clamp(0.74, calc(l + 0.2), 0.9) calc(c * 0.9) h); --nv-dark-on-accent: oklch(from var(--nv-dark-accent) calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) calc(c * 0.2) h); /* --- Success ------------------------------------------------------------ */ --nv-dark-success: oklch(from - color-mix(in oklab, var(--nv-palette-success-400), var(--nv-brand) var(--nv-brand-harmony)) - clamp(0.72, calc(l + 0.1), 0.88) clamp(0.02, calc(c * 0.9), 0.18) h); + color-mix(in oklab, var(--nv-palette-success-500), var(--nv-brand) var(--nv-brand-harmony)) + calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); --nv-dark-success-hover: oklch(from var(--nv-dark-success) calc(l + 0.05) c h); - --nv-dark-success-subtle: oklch(from var(--nv-dark-success) l c h / 0.15); + --nv-dark-success-subtle: oklch(from var(--nv-dark-success) l c h / 0.2); --nv-dark-success-border: oklch(from var(--nv-dark-success) l c h / 0.35); - --nv-dark-success-text: oklch(from var(--nv-dark-success) clamp(0.74, calc(l + 0.08), 0.9) calc(c * 0.9) h); + --nv-dark-success-text: oklch(from var(--nv-dark-success) clamp(0.76, calc(l + 0.2), 0.9) calc(c * 0.9) h); --nv-dark-on-success: oklch(from var(--nv-dark-success) calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) calc(c * 0.2) h); @@ -72,49 +82,78 @@ /* --- Warning ------------------------------------------------------------ */ --nv-dark-warning: oklch(from color-mix(in oklab, var(--nv-palette-warning-400), var(--nv-brand) var(--nv-brand-harmony)) - clamp(0.74, calc(l + 0.1), 0.88) clamp(0.02, calc(c * 0.9), 0.18) h); + calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); --nv-dark-warning-hover: oklch(from var(--nv-dark-warning) calc(l + 0.05) c h); - --nv-dark-warning-subtle: oklch(from var(--nv-dark-warning) l c h / 0.15); + --nv-dark-warning-subtle: oklch(from var(--nv-dark-warning) l c h / 0.2); --nv-dark-warning-border: oklch(from var(--nv-dark-warning) l c h / 0.35); - --nv-dark-warning-text: oklch(from var(--nv-dark-warning) clamp(0.76, calc(l + 0.08), 0.9) calc(c * 0.9) h); + --nv-dark-warning-text: oklch(from var(--nv-dark-warning) clamp(0.76, calc(l + 0.2), 0.9) calc(c * 0.9) h); --nv-dark-on-warning: oklch(from var(--nv-dark-warning) calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) calc(c * 0.2) h); /* --- Danger ------------------------------------------------------------- */ --nv-dark-danger: oklch(from - color-mix(in oklab, var(--nv-palette-danger-400), var(--nv-brand) var(--nv-brand-harmony)) - clamp(0.72, calc(l + 0.1), 0.88) clamp(0.02, calc(c * 0.9), 0.18) h); + color-mix(in oklab, var(--nv-palette-danger-500), var(--nv-brand) var(--nv-brand-harmony)) + calc( + clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1) * min(l, var(--nv-contrast-dark)) + + (1 - clamp(0, (var(--nv-contrast-pivot) - l) * 100, 1)) * max(l, var(--nv-contrast-light)) + ) clamp(0.02, c, 0.25) h); --nv-dark-danger-hover: oklch(from var(--nv-dark-danger) calc(l + 0.05) c h); --nv-dark-danger-active: oklch(from var(--nv-dark-danger) calc(l + 0.09) c h); - --nv-dark-danger-subtle: oklch(from var(--nv-dark-danger) l c h / 0.15); + --nv-dark-danger-subtle: oklch(from var(--nv-dark-danger) l c h / 0.2); --nv-dark-danger-border: oklch(from var(--nv-dark-danger) l c h / 0.35); - --nv-dark-danger-text: oklch(from var(--nv-dark-danger) clamp(0.74, calc(l + 0.08), 0.9) calc(c * 0.9) h); + --nv-dark-danger-text: oklch(from var(--nv-dark-danger) clamp(0.76, calc(l + 0.2), 0.9) calc(c * 0.9) h); --nv-dark-on-danger: oklch(from var(--nv-dark-danger) calc(0.14 + clamp(0, (0.68 - l) * 100, 1) * 0.84) calc(c * 0.2) h); /* --- Depth and material -------------------------------------------------- */ - --nv-dark-shadow-ambient: rgb(0 0 0 / 0.3); - --nv-dark-shadow-penumbra: rgb(0 0 0 / 0.4); - --nv-dark-shadow-umbra: rgb(0 0 0 / 0.35); - --nv-dark-shadow-inset: rgb(0 0 0 / 0.5); - --nv-dark-highlight: rgb(255 255 255 / 0.07); - --nv-dark-highlight-strong: rgb(255 255 255 / 0.12); + --nv-dark-shadow-ambient: rgb(0 0 0 / 0.5); + --nv-dark-shadow-penumbra: rgb(0 0 0 / 0.5); + --nv-dark-shadow-umbra: rgb(0 0 0 / 0.55); + --nv-dark-shadow-inset: rgb(0 0 0 / 0.65); + --nv-dark-highlight: rgb(255 255 255 / 0.15); + --nv-dark-highlight-strong: rgb(255 255 255 / 0.24); + + /* The contact line is what separates graphite from graphite: a raised + surface over a dark canvas has no shadow to show, but it always has an + edge. */ + --nv-dark-lowlight: rgb(0 0 0 / 0.5); + --nv-dark-outline: rgb(0 0 0 / 0.72); + + --nv-dark-sheen-top: rgb(255 255 255 / 0.09); + --nv-dark-sheen-bottom: rgb(0 0 0 / 0.18); + --nv-dark-sheen-strong-top: rgb(255 255 255 / 0.3); + --nv-dark-sheen-strong-bottom: rgb(0 0 0 / 0.2); + --nv-dark-glow: oklch(from var(--nv-dark-accent) l c h / 0.5); + + --nv-dark-knob: #f4f3ef; + --nv-dark-knob-shade: rgb(40 32 20 / 0.3); /* The higher a surface sits, the more light reaches it. */ - --nv-dark-elevation-tint-1: rgb(255 255 255 / 0.025); - --nv-dark-elevation-tint-2: rgb(255 255 255 / 0.042); - --nv-dark-elevation-tint-3: rgb(255 255 255 / 0.06); - --nv-dark-elevation-tint-4: rgb(255 255 255 / 0.078); - --nv-dark-elevation-tint-5: rgb(255 255 255 / 0.095); + --nv-dark-elevation-tint-1: rgb(255 255 255 / 0.03); + --nv-dark-elevation-tint-2: rgb(255 255 255 / 0.05); + --nv-dark-elevation-tint-3: rgb(255 255 255 / 0.07); + --nv-dark-elevation-tint-4: rgb(255 255 255 / 0.09); + --nv-dark-elevation-tint-5: rgb(255 255 255 / 0.11); - --nv-dark-material-frosted: color-mix(in oklab, rgb(23 28 36 / 0.72), var(--nv-brand) var(--nv-brand-tint)); - --nv-dark-material-glass: color-mix(in oklab, rgb(30 36 46 / 0.55), var(--nv-brand) var(--nv-brand-tint)); - --nv-dark-material-border: rgb(255 255 255 / 0.1); + --nv-dark-material-frosted: color-mix(in oklab, rgb(34 34 40 / 0.5), var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-material-glass: color-mix(in oklab, rgb(44 44 52 / 0.36), var(--nv-brand) var(--nv-brand-tint)); + --nv-dark-material-border: rgb(255 255 255 / 0.14); + + /* --- Window controls --------------------------------------------------------- */ + --nv-dark-window-close: var(--nv-palette-window-close); + --nv-dark-window-minimize: var(--nv-palette-window-minimize); + --nv-dark-window-zoom: var(--nv-palette-window-zoom); + --nv-dark-window-inactive: var(--nv-palette-neutral-700); + --nv-dark-window-control-ring: rgb(0 0 0 / 0.35); + --nv-dark-window-glyph: rgb(0 0 0 / 0.6); /* --- Interaction ---------------------------------------------------------- */ - --nv-dark-focus-ring: oklch(from var(--nv-dark-accent) l c h / 0.5); - --nv-dark-focus-ring-contrast: rgb(6 8 12 / 0.9); - --nv-dark-selection: oklch(from var(--nv-dark-accent) l c h / 0.3); + --nv-dark-focus-ring: oklch(from var(--nv-dark-accent-text) l c h / 0.55); + --nv-dark-focus-ring-contrast: rgb(8 8 10 / 0.9); + --nv-dark-selection: oklch(from var(--nv-dark-accent) l c h / 0.4); } diff --git a/docs/Website/niveus/niveus/themes/light.css b/docs/Website/niveus/niveus/themes/light.css index ddee15f..357cf13 100644 --- a/docs/Website/niveus/niveus/themes/light.css +++ b/docs/Website/niveus/niveus/themes/light.css @@ -10,9 +10,12 @@ how much of the brand bleeds into the greys. See tokens/color.css for the inputs. - Light Niveus reads as paper on a cool, slightly recessed canvas: surfaces are - near-white, depth comes from soft shadow rather than from contrast, and a - crisp top highlight gives raised elements their edge. + Light Niveus reads as soft paper and enamel on a warm grey desk: surfaces + that hold content stay near-white, so documents never look yellowed; the + canvas around them is a few steps warmer and darker, so a window sits *on* + something. Raised controls are bevelled — a bright top edge, a soft shade + along the bottom, light falling across the face — and shadows are warm, + the color of shade on paper rather than of a grey filter. ========================================================================== */ :root { @@ -32,14 +35,14 @@ Paper stays paper: the two surfaces that hold content are left untinted so text keeps its contrast. Everything the surfaces sit *in* picks up a trace of the brand, which is what stops an accent from looking stuck on. */ - --nv-light-background: color-mix(in oklab, #e9ecf3, var(--nv-brand) var(--nv-brand-tint)); - --nv-light-background-subtle: color-mix(in oklab, #eff1f6, var(--nv-brand) var(--nv-brand-tint)); - --nv-light-surface: var(--nv-palette-neutral-0); - --nv-light-surface-elevated: var(--nv-palette-neutral-0); - --nv-light-surface-inset: color-mix(in oklab, #e4e8f0, var(--nv-brand) var(--nv-brand-tint)); - --nv-light-surface-hover: color-mix(in oklab, #f4f6fa, var(--nv-brand) var(--nv-brand-tint)); - --nv-light-surface-active: color-mix(in oklab, #e8ebf2, var(--nv-brand) var(--nv-brand-tint)); - --nv-light-scrim: rgb(16 21 30 / 0.32); + --nv-light-background: color-mix(in oklab, #e8e5de, var(--nv-brand) var(--nv-brand-tint)); + --nv-light-background-subtle: color-mix(in oklab, #eeece6, var(--nv-brand) var(--nv-brand-tint)); + --nv-light-surface: #fbfbfa; + --nv-light-surface-elevated: #f8f8f6; + --nv-light-surface-inset: color-mix(in oklab, #eeede8, var(--nv-brand) var(--nv-brand-tint)); + --nv-light-surface-hover: color-mix(in oklab, #f1f0ec, var(--nv-brand) var(--nv-brand-tint)); + --nv-light-surface-active: color-mix(in oklab, #e6e5e0, var(--nv-brand) var(--nv-brand-tint)); + --nv-light-scrim: rgb(28 24 18 / 0.34); /* --- Text --------------------------------------------------------------- Primary text stays neutral — it carries the reading contrast. The quieter @@ -52,9 +55,9 @@ --nv-light-text-inverted: var(--nv-palette-neutral-0); /* --- Borders ------------------------------------------------------------ */ - --nv-light-border-subtle: rgb(16 21 30 / 0.06); - --nv-light-border: rgb(16 21 30 / 0.11); - --nv-light-border-strong: rgb(16 21 30 / 0.2); + --nv-light-border-subtle: rgb(28 24 18 / 0.07); + --nv-light-border: rgb(28 24 18 / 0.13); + --nv-light-border-strong: rgb(28 24 18 / 0.22); /* --- Accent -------------------------------------------------------------- Every filled color is pushed away from the middle of the lightness range @@ -132,13 +135,27 @@ /* --- Depth and material ------------------------------------------------- Three shadow colors build every elevation level: an ambient contact shadow, a soft penumbra, and a deeper umbra for high elevations. */ - --nv-light-shadow-ambient: rgb(16 21 30 / 0.05); - --nv-light-shadow-penumbra: rgb(16 21 30 / 0.08); - --nv-light-shadow-umbra: rgb(16 21 30 / 0.06); - --nv-light-shadow-inset: rgb(16 21 30 / 0.12); - --nv-light-highlight: rgb(255 255 255 / 0.85); + --nv-light-shadow-ambient: rgb(40 32 20 / 0.08); + --nv-light-shadow-penumbra: rgb(40 32 20 / 0.1); + --nv-light-shadow-umbra: rgb(40 32 20 / 0.16); + --nv-light-shadow-inset: rgb(40 32 20 / 0.14); + --nv-light-highlight: rgb(255 255 255 / 0.9); --nv-light-highlight-strong: rgb(255 255 255 / 1); + /* Paper already has a border doing the contact work, so the outline only + softens it; the bottom shade is faint for the same reason. */ + --nv-light-lowlight: rgb(40 32 20 / 0.09); + --nv-light-outline: rgb(40 32 20 / 0.05); + + --nv-light-sheen-top: rgb(255 255 255 / 0.9); + --nv-light-sheen-bottom: rgb(40 32 20 / 0.07); + --nv-light-sheen-strong-top: rgb(255 255 255 / 0.32); + --nv-light-sheen-strong-bottom: rgb(20 16 10 / 0.16); + --nv-light-glow: oklch(from var(--nv-light-accent) l c h / 0.3); + + --nv-light-knob: var(--nv-palette-neutral-0); + --nv-light-knob-shade: rgb(40 32 20 / 0.13); + /* Light surfaces are already lighter than their canvas; the shadow alone carries elevation, so there is nothing to add. */ --nv-light-elevation-tint-1: transparent; @@ -147,9 +164,17 @@ --nv-light-elevation-tint-4: transparent; --nv-light-elevation-tint-5: transparent; - --nv-light-material-frosted: rgb(255 255 255 / 0.72); - --nv-light-material-glass: rgb(255 255 255 / 0.5); - --nv-light-material-border: rgb(255 255 255 / 0.55); + --nv-light-material-frosted: rgb(252 252 250 / 0.56); + --nv-light-material-glass: rgb(252 252 250 / 0.4); + --nv-light-material-border: rgb(255 255 255 / 0.72); + + /* --- Window controls --------------------------------------------------------- */ + --nv-light-window-close: var(--nv-palette-window-close); + --nv-light-window-minimize: var(--nv-palette-window-minimize); + --nv-light-window-zoom: var(--nv-palette-window-zoom); + --nv-light-window-inactive: var(--nv-palette-neutral-300); + --nv-light-window-control-ring: rgb(0 0 0 / 0.16); + --nv-light-window-glyph: rgb(0 0 0 / 0.55); /* --- Interaction ----------------------------------------------------------- */ --nv-light-focus-ring: oklch(from var(--nv-light-accent) l c h / 0.4); diff --git a/docs/Website/niveus/niveus/tokens/color.css b/docs/Website/niveus/niveus/tokens/color.css index 9c3d7b9..9d35ca8 100644 --- a/docs/Website/niveus/niveus/tokens/color.css +++ b/docs/Website/niveus/niveus/tokens/color.css @@ -53,25 +53,37 @@ } :root { - /* --- Neutral ---------------------------------------------------------- */ + /* --- Neutral ---------------------------------------------------------- + Warm graphite to warm paper. A grey that leans very slightly towards + yellow reads as a material (metal, enamel, paper); a grey that leans blue + reads as a screen. The lean is small enough that the brand tint still + decides the family. */ --nv-palette-neutral-0: #ffffff; - --nv-palette-neutral-25: #fbfcfe; - --nv-palette-neutral-50: #f7f8fb; - --nv-palette-neutral-100: #f1f3f8; - --nv-palette-neutral-150: #e8ebf2; - --nv-palette-neutral-200: #dfe3ec; - --nv-palette-neutral-300: #ccd2de; - --nv-palette-neutral-400: #a7b0c0; - --nv-palette-neutral-500: #7c8797; - --nv-palette-neutral-600: #5b6574; - --nv-palette-neutral-700: #434b59; - --nv-palette-neutral-800: #2d3340; - --nv-palette-neutral-850: #232936; - --nv-palette-neutral-900: #1a1f29; - --nv-palette-neutral-925: #151a22; - --nv-palette-neutral-950: #10141b; - --nv-palette-neutral-975: #0b0e14; - --nv-palette-neutral-1000: #06080c; + --nv-palette-neutral-25: #fcfcfb; + --nv-palette-neutral-50: #f8f8f6; + --nv-palette-neutral-100: #f2f1ee; + --nv-palette-neutral-150: #eae9e5; + --nv-palette-neutral-200: #e1e0db; + --nv-palette-neutral-300: #cfcec8; + --nv-palette-neutral-400: #aeada7; + --nv-palette-neutral-500: #87867f; + --nv-palette-neutral-600: #63625d; + --nv-palette-neutral-700: #4a4945; + --nv-palette-neutral-800: #343337; + --nv-palette-neutral-850: #2a2a2d; + --nv-palette-neutral-900: #1d1d20; + --nv-palette-neutral-925: #18181a; + --nv-palette-neutral-950: #131315; + --nv-palette-neutral-975: #0e0e10; + --nv-palette-neutral-1000: #08080a; + + /* --- Window controls ---------------------------------------------------- + The three lights at the start of a titlebar. They are the one place the + system uses fixed colors instead of the brand: their meaning is learned + from position and color together, and re-coloring them would unteach it. */ + --nv-palette-window-close: #ff5f57; + --nv-palette-window-minimize: #febc2e; + --nv-palette-window-zoom: #28c840; /* --- Accent (indigo) --------------------------------------------------- */ --nv-palette-accent-50: #eef2ff; @@ -198,6 +210,33 @@ --nv-color-highlight: light-dark(var(--nv-light-highlight), var(--nv-dark-highlight)); --nv-color-highlight-strong: light-dark(var(--nv-light-highlight-strong), var(--nv-dark-highlight-strong)); + /* The bevel's other half: the shade along a raised surface's bottom edge, + and the contact line around anything that sits on another surface. Light + along the top and shade along the bottom is what makes a control read as + something pressable instead of a painted rectangle. */ + --nv-color-lowlight: light-dark(var(--nv-light-lowlight), var(--nv-dark-lowlight)); + --nv-color-outline: light-dark(var(--nv-light-outline), var(--nv-dark-outline)); + + /* Sheen: the light falling across a raised face, top to bottom. The plain + pair is for neutral controls and surfaces; the strong pair is for filled + color (primary buttons, checked marks), where it has to read through a + saturated fill. Both are laid over a surface's own color, never instead + of it. */ + --nv-color-sheen-top: light-dark(var(--nv-light-sheen-top), var(--nv-dark-sheen-top)); + --nv-color-sheen-bottom: light-dark(var(--nv-light-sheen-bottom), var(--nv-dark-sheen-bottom)); + --nv-color-sheen-strong-top: light-dark(var(--nv-light-sheen-strong-top), var(--nv-dark-sheen-strong-top)); + --nv-color-sheen-strong-bottom: light-dark(var(--nv-light-sheen-strong-bottom), var(--nv-dark-sheen-strong-bottom)); + + /* Glow: light a surface gives off, as opposed to the shade it casts. It is + the accent seen through air — strong enough in dark to read as a lit + edge, faint in light, where paper does not emit. */ + --nv-color-glow: light-dark(var(--nv-light-glow), var(--nv-dark-glow)); + + /* A knob: the thumb of a switch or a slider. It stays light in both + appearances, the way a physical knob does not change color with the room. */ + --nv-color-knob: light-dark(var(--nv-light-knob), var(--nv-dark-knob)); + --nv-color-knob-shade: light-dark(var(--nv-light-knob-shade), var(--nv-dark-knob-shade)); + /* Elevation tint: on a dark canvas a shadow has nothing to darken, so a raised surface also has to gain light. Transparent in light, where the shadow does all the work. */ @@ -211,6 +250,14 @@ --nv-color-material-glass: light-dark(var(--nv-light-material-glass), var(--nv-dark-material-glass)); --nv-color-material-border: light-dark(var(--nv-light-material-border), var(--nv-dark-material-border)); + /* --- Window controls ------------------------------------------------------- */ + --nv-color-window-close: light-dark(var(--nv-light-window-close), var(--nv-dark-window-close)); + --nv-color-window-minimize: light-dark(var(--nv-light-window-minimize), var(--nv-dark-window-minimize)); + --nv-color-window-zoom: light-dark(var(--nv-light-window-zoom), var(--nv-dark-window-zoom)); + --nv-color-window-inactive: light-dark(var(--nv-light-window-inactive), var(--nv-dark-window-inactive)); + --nv-color-window-control-ring: light-dark(var(--nv-light-window-control-ring), var(--nv-dark-window-control-ring)); + --nv-color-window-glyph: light-dark(var(--nv-light-window-glyph), var(--nv-dark-window-glyph)); + /* --- Interaction --------------------------------------------------------- */ --nv-color-focus-ring: light-dark(var(--nv-light-focus-ring), var(--nv-dark-focus-ring)); --nv-color-focus-ring-contrast: light-dark(var(--nv-light-focus-ring-contrast), var(--nv-dark-focus-ring-contrast)); diff --git a/docs/Website/niveus/niveus/tokens/elevation.css b/docs/Website/niveus/niveus/tokens/elevation.css index 66c00d9..d185b73 100644 --- a/docs/Website/niveus/niveus/tokens/elevation.css +++ b/docs/Website/niveus/niveus/tokens/elevation.css @@ -22,34 +22,35 @@ --nv-elevation-1: 0 1px 1px var(--nv-color-shadow-ambient), - 0 1px 3px -1px var(--nv-color-shadow-penumbra); + 0 2px 4px -1px var(--nv-color-shadow-penumbra), + 0 6px 14px -8px var(--nv-color-shadow-umbra); --nv-elevation-2: 0 1px 1px var(--nv-color-shadow-ambient), - 0 2px 4px -1px var(--nv-color-shadow-penumbra), - 0 4px 8px -4px var(--nv-color-shadow-umbra); + 0 3px 6px -2px var(--nv-color-shadow-penumbra), + 0 10px 20px -10px var(--nv-color-shadow-umbra); --nv-elevation-3: - 0 1px 1px var(--nv-color-shadow-ambient), - 0 4px 8px -2px var(--nv-color-shadow-penumbra), - 0 10px 20px -6px var(--nv-color-shadow-umbra); + 0 1px 2px var(--nv-color-shadow-ambient), + 0 6px 12px -4px var(--nv-color-shadow-penumbra), + 0 18px 36px -12px var(--nv-color-shadow-umbra); --nv-elevation-4: 0 1px 2px var(--nv-color-shadow-ambient), - 0 8px 16px -4px var(--nv-color-shadow-penumbra), - 0 20px 40px -10px var(--nv-color-shadow-umbra); + 0 10px 20px -6px var(--nv-color-shadow-penumbra), + 0 30px 60px -16px var(--nv-color-shadow-umbra); --nv-elevation-5: - 0 1px 2px var(--nv-color-shadow-ambient), - 0 14px 28px -6px var(--nv-color-shadow-penumbra), - 0 32px 64px -14px var(--nv-color-shadow-umbra); + 0 2px 3px var(--nv-color-shadow-ambient), + 0 16px 32px -8px var(--nv-color-shadow-penumbra), + 0 44px 88px -20px var(--nv-color-shadow-umbra); /* --- Inset --------------------------------------------------------------- Recessed surfaces: fields, wells, tracks, pressed controls. */ --nv-elevation-inset-sm: inset 0 1px 2px var(--nv-color-shadow-inset); --nv-elevation-inset-md: inset 0 1px 1px var(--nv-color-shadow-inset), - inset 0 2px 5px -1px var(--nv-color-shadow-inset); + inset 0 3px 6px -2px var(--nv-color-shadow-inset); --nv-elevation-inset-lg: inset 0 2px 3px var(--nv-color-shadow-inset), inset 0 6px 12px -3px var(--nv-color-shadow-inset); @@ -64,6 +65,29 @@ inset 0 1px 0 var(--nv-color-highlight), inset 0 0 0 1px var(--nv-color-border-subtle); + /* --- Bevel ----------------------------------------------------------------- + The highlight's other half. A raised face is lit along its top edge and + shaded along its bottom one; together they are the bevel, and the bevel is + what makes a Niveus control look like something a finger could press. + Raised controls and surfaces take the full bevel; the highlight alone is + for things that sit flush. */ + --nv-lowlight-bottom: inset 0 -1px 0 var(--nv-color-lowlight); + --nv-bevel: + inset 0 1px 0 var(--nv-color-highlight), + inset 0 -1px 0 var(--nv-color-lowlight); + + /* --- Outline --------------------------------------------------------------- + The contact line: a hairline just outside a raised surface, where it meets + whatever it rests on. In dark it is near-black and does most of the + separating; in light it only softens the border beside it. */ + --nv-outline: 0 0 0 1px var(--nv-color-outline); + + /* --- Ledge ----------------------------------------------------------------- + A recess catches light on its *lower* lip, the edge facing the viewer. + Paired with an inset shadow, it turns a field from a dark rectangle into + a well cut into the surface. */ + --nv-ledge: 0 1px 0 var(--nv-color-highlight); + /* --- Focus --------------------------------------------------------------- A contrast ring sits under the accent ring so focus stays visible on both light and dark surfaces, and on accent-filled controls. */ @@ -71,4 +95,30 @@ --nv-focus-ring: 0 0 0 1px var(--nv-color-focus-ring-contrast), 0 0 0 calc(1px + var(--nv-focus-ring-width)) var(--nv-color-focus-ring); + + /* --- Glow ------------------------------------------------------------------ + Light a surface emits rather than the shade it casts. Glow is for things + that are *on* — a live status, the selected item in a showcase, a lit key — + and it always sits beside an elevation, never instead of one: a glowing + surface still rests on something. + + The geometry is a scale like elevation. The color is the component's: a + tinted surface glows in its own tint, mixed down to --nv-glow-strength. */ + --nv-glow-strength: 40%; + --nv-glow-blur-sm: 12px; + --nv-glow-spread-sm: -2px; + --nv-glow-blur-md: 28px; + --nv-glow-spread-md: -6px; + --nv-glow-blur-lg: 64px; + --nv-glow-spread-lg: -12px; +} + +/* The accent glows are declared on every branded subtree as well as the root: + a var() inside a custom property resolves where the property is declared, so + a root-only declaration would glow in the root brand everywhere. */ +:root, +[data-nv-brand] { + --nv-glow-sm: 0 0 var(--nv-glow-blur-sm) var(--nv-glow-spread-sm) var(--nv-color-glow); + --nv-glow-md: 0 0 var(--nv-glow-blur-md) var(--nv-glow-spread-md) var(--nv-color-glow); + --nv-glow-lg: 0 0 var(--nv-glow-blur-lg) var(--nv-glow-spread-lg) var(--nv-color-glow); } diff --git a/docs/Website/niveus/niveus/tokens/materials.css b/docs/Website/niveus/niveus/tokens/materials.css index 2da6487..c718859 100644 --- a/docs/Website/niveus/niveus/tokens/materials.css +++ b/docs/Website/niveus/niveus/tokens/materials.css @@ -8,29 +8,50 @@ solid opaque, stable. The default. Content lives here. elevated solid with depth and a top highlight. Separated from context. inset recessed into its parent. Fields, wells, tracks. - frosted translucent, heavily blurred. Chrome that sits over content: - navigation bars, toolbars, sticky headers. - glass more translucent, less blurred. Contextual layers where the + frosted translucent, moderately blurred, bevelled. Chrome that sits + over content: bars, docks, launchers, notifications, menus. + glass more translucent, lightly blurred. Contextual layers where the content behind should stay legible: overlays, hover cards. - Translucency has a cost — it tints whatever is behind it and forces the GPU - to composite. Use frosted and glass for layers that move over content, not - for content itself. + Niveus is a solid system with glass used sparingly. Windows, cards, dialogs + and everything that holds content are solid; translucency is reserved for + the chrome that floats over them. Translucency has a cost — it tints + whatever is behind it and forces the GPU to composite — and used everywhere + it stops meaning "this floats". + + Sheen is the light falling across a raised face. It is laid over a + surface's own color as background-image, so a surface keeps its role color + and gains the gradient; anything that does not draw gradients simply shows + the role color. ========================================================================== */ :root { /* --- Blur ---------------------------------------------------------------- */ - --nv-blur-sm: 8px; - --nv-blur-md: 16px; - --nv-blur-lg: 28px; - --nv-blur-xl: 44px; + --nv-blur-sm: 12px; + --nv-blur-md: 24px; + --nv-blur-lg: 36px; + --nv-blur-xl: 56px; /* Backdrops lose saturation when blurred; a touch of saturate() puts the - color back so frosted surfaces do not read as gray films. */ + color back so frosted surfaces do not read as gray films. Moderate on + purpose: the blur says "this floats", it is not the look itself. */ --nv-backdrop-saturate: 180%; - --nv-backdrop-frosted: blur(var(--nv-blur-lg)) saturate(var(--nv-backdrop-saturate)); - --nv-backdrop-glass: blur(var(--nv-blur-md)) saturate(var(--nv-backdrop-saturate)); - --nv-backdrop-scrim: blur(var(--nv-blur-sm)) saturate(120%); + --nv-backdrop-frosted: blur(var(--nv-blur-md)) saturate(var(--nv-backdrop-saturate)); + --nv-backdrop-glass: blur(var(--nv-blur-sm)) saturate(var(--nv-backdrop-saturate)); + + /* --- Sheen ------------------------------------------------------------------ + raised neutral controls: buttons, the selected tab, a titlebar + filled saturated fills: primary and danger buttons, checked marks + surface large surfaces: windows, dialogs, cards. Brightest along the + top edge, easing through the middle and settling into a faint + shade at the foot, so a panel reads as a curved, lit body + rather than as a flat sheet. + knob a round thumb: lit from above, shaded towards its rim */ + --nv-sheen-raised: linear-gradient(var(--nv-color-sheen-top), var(--nv-color-sheen-bottom)); + --nv-sheen-filled: linear-gradient(var(--nv-color-sheen-strong-top), var(--nv-color-sheen-strong-bottom)); + --nv-sheen-surface: linear-gradient(var(--nv-color-sheen-top), transparent 7rem, transparent 55%, var(--nv-color-sheen-bottom)); + --nv-sheen-knob: radial-gradient(circle at 50% 22%, var(--nv-color-highlight-strong), transparent 45%), radial-gradient(circle at 50% 30%, transparent 40%, var(--nv-color-knob-shade)); + --nv-backdrop-scrim: blur(var(--nv-blur-sm)) saturate(140%); /* --- Material recipes ----------------------------------------------------- Each recipe is the full set of properties that defines the material. @@ -41,19 +62,19 @@ --nv-material-elevated-bg: var(--nv-color-surface-elevated); --nv-material-elevated-border: var(--nv-color-border-subtle); - --nv-material-elevated-shadow: var(--nv-highlight-top), var(--nv-elevation-2); + --nv-material-elevated-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-2); --nv-material-inset-bg: var(--nv-color-surface-inset); --nv-material-inset-border: var(--nv-color-border-subtle); - --nv-material-inset-shadow: var(--nv-elevation-inset-md); + --nv-material-inset-shadow: var(--nv-elevation-inset-md), var(--nv-ledge); --nv-material-frosted-bg: var(--nv-color-material-frosted); --nv-material-frosted-border: var(--nv-color-material-border); - --nv-material-frosted-shadow: var(--nv-highlight-top), var(--nv-elevation-3); + --nv-material-frosted-shadow: var(--nv-bevel), var(--nv-outline), var(--nv-elevation-3); --nv-material-glass-bg: var(--nv-color-material-glass); --nv-material-glass-border: var(--nv-color-material-border); - --nv-material-glass-shadow: var(--nv-highlight-top-strong), var(--nv-elevation-4); + --nv-material-glass-shadow: var(--nv-highlight-top-strong), var(--nv-outline), var(--nv-elevation-4); } /* Where translucency cannot be honoured — reduced transparency, or a browser diff --git a/docs/Website/niveus/niveus/tokens/motion.css b/docs/Website/niveus/niveus/tokens/motion.css index b9075d8..b271e56 100644 --- a/docs/Website/niveus/niveus/tokens/motion.css +++ b/docs/Website/niveus/niveus/tokens/motion.css @@ -82,6 +82,15 @@ --nv-travel-sm: 4px; --nv-travel-md: 8px; --nv-travel-lg: 16px; + + /* --- Sequence --------------------------------------------------------------- + The gap between siblings arriving one after another. Short enough that a + group reads as one movement, long enough that the eye sees an order. */ + --nv-stagger: 60ms; + + /* A loading shimmer is a slow, constant sweep — slow enough to read as + "waiting", never fast enough to read as an alert. */ + --nv-duration-shimmer: 1600ms; } /* Reduced motion is a system-wide contract, not a per-component opt-in: cut @@ -103,5 +112,6 @@ --nv-travel-sm: 0px; --nv-travel-md: 0px; --nv-travel-lg: 0px; + --nv-stagger: 0ms; } } diff --git a/docs/Website/niveus/niveus/tokens/radius.css b/docs/Website/niveus/niveus/tokens/radius.css index 13a2143..927416b 100644 --- a/docs/Website/niveus/niveus/tokens/radius.css +++ b/docs/Website/niveus/niveus/tokens/radius.css @@ -2,18 +2,19 @@ Niveus — Radius -------------------------------------------------------------------------- Corner softness carries as much of the Niveus character as shadow does. - Radii grow with the surface: controls stay modest, containers get rounder, - and only pills and avatars go fully round. + Radii grow with the surface: controls stay modest and machined, containers + get noticeably rounder — a window or a popover is a soft object, a button + is a key — and only pills, knobs and avatars go fully round. ========================================================================== */ :root { --nv-radius-none: 0; --nv-radius-xs: 0.25rem; /* 4px — tags, swatches, nested chips */ --nv-radius-sm: 0.5rem; /* 8px — small controls, menu items */ - --nv-radius-md: 0.75rem; /* 12px — buttons, inputs, default control radius */ - --nv-radius-lg: 1rem; /* 16px — cards, panels */ - --nv-radius-xl: 1.375rem; /* 22px — dialogs, sheets, large containers */ - --nv-radius-2xl: 1.75rem; /* 28px — hero surfaces */ + --nv-radius-md: 0.625rem; /* 10px — buttons, inputs, default control radius */ + --nv-radius-lg: 0.875rem; /* 14px — cards, panels, menus */ + --nv-radius-xl: 1.25rem; /* 20px — windows, dialogs, sheets, popovers */ + --nv-radius-2xl: 1.5rem; /* 24px — docks, hero surfaces */ --nv-radius-full: 999rem; /* — pills, avatars, switches */ /* Nested radius: an inner surface inset by N should be N smaller than its diff --git a/docs/Website/niveus/niveus/tokens/typography.css b/docs/Website/niveus/niveus/tokens/typography.css index 476c09b..caabfef 100644 --- a/docs/Website/niveus/niveus/tokens/typography.css +++ b/docs/Website/niveus/niveus/tokens/typography.css @@ -7,11 +7,13 @@ :root { /* --- Families ----------------------------------------------------------- */ + /* Both ship with Niveus (fonts.css); the rest of each stack only covers the + moment before they load, or a context that cannot load them. */ --nv-font-family-sans: - "Inter var", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", - "Helvetica Neue", Arial, sans-serif; + "Instrument Sans", "Inter var", "Inter", -apple-system, BlinkMacSystemFont, + "Segoe UI", "Helvetica Neue", Arial, sans-serif; --nv-font-family-mono: - "SF Mono", "JetBrains Mono", "IBM Plex Mono", ui-monospace, "Menlo", + "JetBrains Mono", "SF Mono", "IBM Plex Mono", ui-monospace, "Menlo", "Consolas", monospace; /* --- Size scale ---------------------------------------------------------- */ @@ -46,6 +48,8 @@ --nv-letter-spacing-normal: 0em; --nv-letter-spacing-wide: 0.02em; --nv-letter-spacing-wider: 0.06em; + /* Engraved labels: small mono capitals, spaced like markings on a panel. */ + --nv-letter-spacing-engraved: 0.1em; /* --- Composite roles ------------------------------------------------------ Applied as classes in base.css (.nv-display, .nv-heading, …). Kept as @@ -65,6 +69,11 @@ var(--nv-line-height-normal) var(--nv-font-family-sans); --nv-font-code: var(--nv-font-weight-regular) var(--nv-font-size-sm) / var(--nv-line-height-normal) var(--nv-font-family-mono); + /* The engraved label: section markers, the clock, anything that names a + region rather than being read. Paired with uppercase and the engraved + tracking (see .nv-overline in base.css). */ + --nv-font-engraved: var(--nv-font-weight-medium) var(--nv-font-size-2xs) / + var(--nv-line-height-snug) var(--nv-font-family-mono); /* --- Measure --------------------------------------------------------------- */ --nv-measure-narrow: 44ch; diff --git a/docs/Website/niveus/tools/niveus_css.py b/docs/Website/niveus/tools/niveus_css.py new file mode 100644 index 0000000..d3fee97 --- /dev/null +++ b/docs/Website/niveus/tools/niveus_css.py @@ -0,0 +1,944 @@ +"""Evaluate the subset of CSS that Niveus's token layer is written in. + +Niveus derives its entire color system from one input with relative color +syntax, `color-mix()` and `calc()`. None of that survives a copy-paste into +another platform's resources (Android XML, a Qt header, GTK CSS), and +re-stating the results by hand would fork the system: the CSS would change and +the port would quietly keep the old values. + +So this module implements the language instead, once, here — every port's +generator imports it rather than carrying its own copy. + +It is deliberately narrow — it covers exactly what `niveus/tokens/*.css` and +`niveus/themes/*.css` use: + + #rrggbb / #rgb / #rrggbbaa rgb(r g b / a) transparent + oklch(L C H) oklch(from L C H [/ A]) + color-mix(in oklab, , ) + light-dark(, ) var(--x[, fallback]) + calc(...) clamp(min,v,max) min(...) max(...) + +Inside `oklch(from X ...)` the identifiers `l`, `c`, `h` and `alpha` are bound +to X's own OKLCH channels, which is what makes one brand value re-colour +everything. + +Color math follows CSS Color 4: sRGB <-> linear sRGB <-> OKLab <-> OKLCH, and +out-of-gamut results are gamut-mapped by chroma reduction against deltaEOK, +the same approach browsers take. `color-mix()` mixes premultiplied, in OKLab. +""" + +from __future__ import annotations + +import math +import re +from dataclasses import dataclass + +# --------------------------------------------------------------------------- +# Color space conversions (CSS Color 4) +# --------------------------------------------------------------------------- + +def _srgb_to_linear(v: float) -> float: + return v / 12.92 if v <= 0.04045 else ((v + 0.055) / 1.055) ** 2.4 + + +def _linear_to_srgb(v: float) -> float: + return v * 12.92 if v <= 0.0031308 else 1.055 * (v ** (1 / 2.4)) - 0.055 + + +# linear sRGB -> LMS -> OKLab, per Björn Ottosson. +_LSRGB_TO_LMS = ( + (0.4122214708, 0.5363325363, 0.0514459929), + (0.2119034982, 0.6806995451, 0.1073969566), + (0.0883024619, 0.2817188376, 0.6299787005), +) +_LMS_TO_OKLAB = ( + (0.2104542553, 0.7936177850, -0.0040720468), + (1.9779984951, -2.4285922050, 0.4505937099), + (0.0259040371, 0.7827717662, -0.8086757660), +) +_OKLAB_TO_LMS = ( + (1.0, 0.3963377774, 0.2158037573), + (1.0, -0.1055613458, -0.0638541728), + (1.0, -0.0894841775, -1.2914855480), +) +_LMS_TO_LSRGB = ( + (4.0767416621, -3.3077115913, 0.2309699292), + (-1.2684380046, 2.6097574011, -0.3413193965), + (-0.0041960863, -0.7034186147, 1.7076147010), +) + + +def _mul(m, v): + return tuple(sum(r[i] * v[i] for i in range(3)) for r in m) + + +def srgb_to_oklab(r: float, g: float, b: float) -> tuple[float, float, float]: + lin = (_srgb_to_linear(r), _srgb_to_linear(g), _srgb_to_linear(b)) + lms = _mul(_LSRGB_TO_LMS, lin) + lms_ = tuple(math.copysign(abs(x) ** (1 / 3), x) for x in lms) + return _mul(_LMS_TO_OKLAB, lms_) + + +def oklab_to_srgb(L: float, a: float, b: float) -> tuple[float, float, float]: + lms_ = _mul(_OKLAB_TO_LMS, (L, a, b)) + lms = tuple(x ** 3 for x in lms_) + lin = _mul(_LMS_TO_LSRGB, lms) + return tuple(_linear_to_srgb(x) for x in lin) + + +def oklab_to_oklch(L: float, a: float, b: float) -> tuple[float, float, float]: + c = math.hypot(a, b) + # Below this chroma the hue is meaningless; CSS treats it as `none`, and + # carrying a garbage angle through a derivation produces garbage hues. + h = 0.0 if c < 1e-6 else math.degrees(math.atan2(b, a)) % 360.0 + return (L, c, h) + + +def oklch_to_oklab(L: float, c: float, h: float) -> tuple[float, float, float]: + rad = math.radians(h) + return (L, c * math.cos(rad), c * math.sin(rad)) + + +# --------------------------------------------------------------------------- +# CIELAB, for the Android system palette +# --------------------------------------------------------------------------- +# +# Niveus works in OKLab, but Android's tonal palette is defined in terms of +# *tone*, which is CIE L* — the same scale Material You's HCT uses for its T +# channel. Generating those ramps in OKLab lightness would put every tone at a +# slightly wrong luminance, so the palette gets its own, correct, colour space +# rather than an approximation. + +# sRGB (D65) -> XYZ +_LRGB_TO_XYZ = ( + (0.4123907993, 0.3575843394, 0.1804807884), + (0.2126390059, 0.7151686788, 0.0721923154), + (0.0193308187, 0.1191947798, 0.9505321522), +) +_XYZ_TO_LRGB = ( + (3.2409699419, -1.5373831776, -0.4986107603), + (-0.9692436363, 1.8759675015, 0.0415550574), + (0.0556300797, -0.2039769589, 1.0569715142), +) +# D65 white point +_WHITE = (0.9504559271, 1.0, 1.0890577508) + +_EPS = 216 / 24389 +_KAPPA = 24389 / 27 + + +def _f(t: float) -> float: + return t ** (1 / 3) if t > _EPS else (_KAPPA * t + 16) / 116 + + +def _f_inv(t: float) -> float: + t3 = t ** 3 + return t3 if t3 > _EPS else (116 * t - 16) / _KAPPA + + +def srgb_to_lab(r: float, g: float, b: float) -> tuple[float, float, float]: + """sRGB to CIE L*a*b*. L* is 0-100 and is what Android calls tone.""" + lin = (_srgb_to_linear(r), _srgb_to_linear(g), _srgb_to_linear(b)) + x, y, z = _mul(_LRGB_TO_XYZ, lin) + fx, fy, fz = _f(x / _WHITE[0]), _f(y / _WHITE[1]), _f(z / _WHITE[2]) + return (116 * fy - 16, 500 * (fx - fy), 200 * (fy - fz)) + + +def lab_to_srgb(L: float, a: float, b: float) -> tuple[float, float, float]: + fy = (L + 16) / 116 + fx = fy + a / 500 + fz = fy - b / 200 + xyz = (_f_inv(fx) * _WHITE[0], _f_inv(fy) * _WHITE[1], _f_inv(fz) * _WHITE[2]) + return tuple(_linear_to_srgb(v) for v in _mul(_XYZ_TO_LRGB, xyz)) + + +def lch_to_srgb_clamped(L: float, C: float, H: float) -> tuple[float, float, float]: + """A tone at a given hue and chroma, reduced until it fits sRGB. + + Tone is fixed — the whole point of a tonal palette is that tone 40 is the + same lightness in every ramp — so chroma is what gives way, never L*. + """ + rad = math.radians(H) + lo, hi = 0.0, max(C, 0.0) + best = lab_to_srgb(L, 0.0, 0.0) + for _ in range(28): + mid = (lo + hi) / 2 + candidate = lab_to_srgb(L, mid * math.cos(rad), mid * math.sin(rad)) + if all(-1e-4 <= v <= 1 + 1e-4 for v in candidate): + best = candidate + lo = mid + else: + hi = mid + return tuple(min(1.0, max(0.0, v)) for v in best) + + +# --------------------------------------------------------------------------- +# Values +# --------------------------------------------------------------------------- + +@dataclass(frozen=True) +class Num: + value: float + unit: str = "" + + def __repr__(self) -> str: # pragma: no cover - debugging aid + return f"Num({self.value}{self.unit})" + + +@dataclass(frozen=True) +class Color: + """A color held in OKLab plus alpha. `none` means fully transparent.""" + + L: float + a: float + b: float + alpha: float = 1.0 + + @staticmethod + def from_srgb(r: float, g: float, bl: float, alpha: float = 1.0) -> "Color": + L, a, b = srgb_to_oklab(r, g, bl) + return Color(L, a, b, alpha) + + @property + def oklch(self) -> tuple[float, float, float]: + return oklab_to_oklch(self.L, self.a, self.b) + + def to_srgb(self) -> tuple[float, float, float]: + return oklab_to_srgb(self.L, self.a, self.b) + + # -- gamut mapping ---------------------------------------------------- + def _in_gamut(self, eps: float = 1e-4) -> bool: + return all(-eps <= x <= 1 + eps for x in self.to_srgb()) + + def gamut_mapped(self) -> tuple[float, float, float]: + """sRGB triple, chroma-reduced into gamut (CSS Color 4 §13.2).""" + if self._in_gamut(): + return tuple(min(1.0, max(0.0, x)) for x in self.to_srgb()) + + L, C, H = self.oklch + if L >= 1.0: + return (1.0, 1.0, 1.0) + if L <= 0.0: + return (0.0, 0.0, 0.0) + + lo, hi = 0.0, C + clipped = None + for _ in range(32): + mid = (lo + hi) / 2 + candidate = Color(*oklch_to_oklab(L, mid, H), self.alpha) + raw = candidate.to_srgb() + if candidate._in_gamut(): + lo = mid + clipped = tuple(min(1.0, max(0.0, x)) for x in raw) + continue + clip = tuple(min(1.0, max(0.0, x)) for x in raw) + # deltaEOK between the candidate and its clipped form: once the + # clip is imperceptible we accept it rather than desaturating more. + cl = Color.from_srgb(*clip) + if math.dist((candidate.L, candidate.a, candidate.b), (cl.L, cl.a, cl.b)) < 0.02: + return clip + hi = mid + if clipped is not None: + return clipped + return tuple(min(1.0, max(0.0, x)) for x in self.to_srgb()) + + # -- output ----------------------------------------------------------- + def hex8(self) -> str: + """#AARRGGBB — Android's order.""" + r, g, b = self.gamut_mapped() + a = min(1.0, max(0.0, self.alpha)) + return "#{:02X}{:02X}{:02X}{:02X}".format( + round(a * 255), round(r * 255), round(g * 255), round(b * 255) + ) + + def hex_rgb(self) -> str: + r, g, b = self.gamut_mapped() + return "#{:02X}{:02X}{:02X}".format(round(r * 255), round(g * 255), round(b * 255)) + + def argb_int(self) -> int: + r, g, b = self.gamut_mapped() + a = min(1.0, max(0.0, self.alpha)) + return ( + (round(a * 255) << 24) + | (round(r * 255) << 16) + | (round(g * 255) << 8) + | round(b * 255) + ) + + def relative_luminance(self) -> float: + r, g, b = self.gamut_mapped() + lin = (_srgb_to_linear(r), _srgb_to_linear(g), _srgb_to_linear(b)) + return 0.2126 * lin[0] + 0.7152 * lin[1] + 0.0722 * lin[2] + + +TRANSPARENT = Color(0.0, 0.0, 0.0, 0.0) + + +def contrast_ratio(fg: Color, bg: Color) -> float: + """WCAG 2.1 contrast, compositing `fg` over `bg` if it is translucent.""" + if fg.alpha < 1.0: + fr, fg_, fb = fg.gamut_mapped() + br, bg_, bb = bg.gamut_mapped() + a = fg.alpha + fg = Color.from_srgb( + fr * a + br * (1 - a), fg_ * a + bg_ * (1 - a), fb * a + bb * (1 - a) + ) + l1, l2 = fg.relative_luminance(), bg.relative_luminance() + if l1 < l2: + l1, l2 = l2, l1 + return (l1 + 0.05) / (l2 + 0.05) + + +# --------------------------------------------------------------------------- +# Tokenizer / parser +# --------------------------------------------------------------------------- + +_TOKEN = re.compile( + r""" + (?P\s+) + | (?P\#[0-9a-fA-F]{3,8}) + | (?P[a-zA-Z_][-a-zA-Z0-9_]*(?=\()) + # A leading `-` starts an identifier only when a digit does not follow, + # or `-0.022em` would lex as the identifier `-0`. + | (?P-{1,2}(?![0-9])[-a-zA-Z0-9_]+|[a-zA-Z_][-a-zA-Z0-9_]*) + | (?P[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?(?:%|[a-zA-Z]+)?) + | (?P[(),/*+\-]) + """, + re.VERBOSE, +) + + +def _lex(s: str) -> list[tuple[str, str]]: + out: list[tuple[str, str]] = [] + i = 0 + while i < len(s): + m = _TOKEN.match(s, i) + if not m: + raise ValueError(f"cannot lex at {s[i:i+30]!r} in {s!r}") + i = m.end() + kind = m.lastgroup + if kind == "ws": + continue + out.append((kind, m.group())) + return out + + +class _Parser: + """Recursive descent over the component-value grammar Niveus uses.""" + + def __init__(self, tokens: list[tuple[str, str]], ev: "Evaluator"): + self.t = tokens + self.i = 0 + self.ev = ev + + # -- plumbing --------------------------------------------------------- + def peek(self) -> tuple[str, str] | None: + return self.t[self.i] if self.i < len(self.t) else None + + def next(self) -> tuple[str, str]: + tok = self.t[self.i] + self.i += 1 + return tok + + def expect(self, text: str) -> None: + tok = self.next() + if tok[1] != text: + raise ValueError(f"expected {text!r}, got {tok[1]!r}") + + def at(self, text: str) -> bool: + tok = self.peek() + return tok is not None and tok[1] == text + + def args(self) -> list[list[tuple[str, str]]]: + """Consume `( a, b, c )` and return each argument's raw tokens.""" + self.expect("(") + groups: list[list[tuple[str, str]]] = [[]] + depth = 0 + while True: + tok = self.peek() + if tok is None: + raise ValueError("unterminated (") + if tok[1] == "(": + depth += 1 + elif tok[1] == ")": + if depth == 0: + self.next() + break + depth -= 1 + elif tok[1] == "," and depth == 0: + self.next() + groups.append([]) + continue + groups.append(groups.pop() + [self.next()]) + return [g for g in groups if g] + + # -- arithmetic ------------------------------------------------------- + def sum_(self) -> Num: + left = self.product() + while True: + tok = self.peek() + if tok is None: + break + if tok[1] in ("+", "-"): + op = self.next()[1] + left, right = _same_unit(left, self.product()) + unit = left.unit or right.unit + left = Num( + left.value + right.value if op == "+" else left.value - right.value, unit + ) + continue + # `calc(l -0.045)` lexes the operand as one signed number, so the + # sign has to be read back as the operator it was written as. + if tok[0] == "num" and tok[1][0] in "+-": + left, right = _same_unit(left, self.product()) + left = Num(left.value + right.value, left.unit or right.unit) + continue + break + return left + + def product(self) -> Num: + left = self.term() + while self.peek() and self.peek()[1] in ("*", "/"): + op = self.next()[1] + right = self.term() + unit = left.unit or right.unit + if op == "*": + left = Num(left.value * right.value, unit) + else: + left = Num(left.value / right.value, left.unit) + return left + + def term(self) -> Num: + tok = self.peek() + if tok is None: + raise ValueError("unexpected end of expression") + if tok[1] == "(": + self.next() + v = self.sum_() + self.expect(")") + return v + if tok[1] == "-": + self.next() + v = self.term() + return Num(-v.value, v.unit) + if tok[1] == "+": + self.next() + return self.term() + val = self.value() + if isinstance(val, Num): + return val + raise ValueError(f"expected a number, got {val!r}") + + # -- values ----------------------------------------------------------- + def value(self): + tok = self.next() + kind, text = tok + + if kind == "hex": + return _parse_hex(text) + + if kind == "num": + return _parse_num(text) + + if kind == "func": + name = text.lower() + if name == "calc": + inner = self.args() + return _Parser(inner[0], self.ev).sum_() + if name in ("clamp", "min", "max"): + vals = [_Parser(g, self.ev).sum_() for g in self.args()] + if name == "clamp": + lo, v, hi = vals + unit = v.unit or lo.unit or hi.unit + return Num(min(max(v.value, lo.value), hi.value), unit) + pick = min if name == "min" else max + chosen = pick(vals, key=lambda n: n.value) + return chosen + if name == "var": + groups = self.args() + varname = "".join(t[1] for t in groups[0]) + fallback = groups[1] if len(groups) > 1 else None + return self.ev.resolve(varname, fallback) + if name == "rgb" or name == "rgba": + return _parse_rgb(self.args(), self.ev) + if name == "oklch": + return _parse_oklch(self.args(), self.ev) + if name == "oklab": + return _parse_oklab(self.args(), self.ev) + if name == "color-mix": + return _parse_color_mix(self.args(), self.ev) + if name == "light-dark": + groups = self.args() + pick = groups[0] if self.ev.appearance == "light" else groups[1] + return _Parser(pick, self.ev).value() + raise ValueError(f"unsupported function {name}()") + + if kind == "ident": + low = text.lower() + if low == "transparent": + return TRANSPARENT + if low in ("none", "currentcolor"): + return TRANSPARENT + if low in _NAMED: + return _NAMED[low] + if low in self.ev.bindings: + return Num(self.ev.bindings[low]) + raise ValueError(f"unknown identifier {text!r}") + + raise ValueError(f"unexpected token {text!r}") + + +# The initial value of the root font size. Tokens never mix units, but +# component rules do (`calc(var(--_track-block) - 6px)` with a rem on one +# side), and adding the numbers without converting is silently wrong. +ROOT_FONT_SIZE_PX = 16.0 + + +def _same_unit(a: Num, b: Num) -> tuple[Num, Num]: + """Bring two lengths to a common unit before adding them.""" + if a.unit == b.unit or not a.unit or not b.unit: + return a, b + lengths = {"px": 1.0, "rem": ROOT_FONT_SIZE_PX, "em": ROOT_FONT_SIZE_PX} + if a.unit in lengths and b.unit in lengths: + return (Num(a.value * lengths[a.unit], "px"), Num(b.value * lengths[b.unit], "px")) + raise ValueError(f"cannot add {a.unit} to {b.unit}") + + +_NAMED = { + "white": Color.from_srgb(1, 1, 1), + "black": Color.from_srgb(0, 0, 0), +} + + +def _parse_hex(text: str) -> Color: + h = text[1:] + if len(h) in (3, 4): + h = "".join(ch * 2 for ch in h) + if len(h) == 6: + r, g, b = (int(h[i : i + 2], 16) / 255 for i in (0, 2, 4)) + return Color.from_srgb(r, g, b) + if len(h) == 8: + r, g, b, a = (int(h[i : i + 2], 16) / 255 for i in (0, 2, 4, 6)) + return Color.from_srgb(r, g, b, a) + raise ValueError(f"bad hex color {text!r}") + + +def _parse_num(text: str) -> Num: + m = re.fullmatch(r"([+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?)(%|[a-zA-Z]*)", text) + if not m: + raise ValueError(f"bad number {text!r}") + v = float(m.group(1)) + unit = m.group(2) + if unit == "%": + return Num(v / 100.0, "%") + return Num(v, unit) + + +def _flat(groups: list[list[tuple[str, str]]]) -> list[tuple[str, str]]: + out: list[tuple[str, str]] = [] + for i, g in enumerate(groups): + if i: + out.append(("punct", ",")) + out.extend(g) + return out + + +def _split_slash(tokens: list[tuple[str, str]]) -> tuple[list, list | None]: + depth = 0 + for i, (_, text) in enumerate(tokens): + if text == "(": + depth += 1 + elif text == ")": + depth -= 1 + elif text == "/" and depth == 0: + return tokens[:i], tokens[i + 1 :] + return tokens, None + + +def _components(tokens: list[tuple[str, str]], ev: "Evaluator", n: int) -> list[Num]: + """Read `n` space-separated numeric components from a token run.""" + p = _Parser(tokens, ev) + out: list[Num] = [] + for _ in range(n): + out.append(p.sum_()) + return out + + +def _parse_rgb(groups, ev) -> Color: + tokens = _flat(groups) + # Both `rgb(r g b / a)` and the legacy `rgb(r, g, b, a)` appear in the wild. + body, alpha_tokens = _split_slash(tokens) + body = [t for t in body if t[1] != ","] + nums = _components(body, ev, 3) + vals = [] + for n in nums: + vals.append(n.value if n.unit == "%" else n.value / 255.0) + alpha = 1.0 + if alpha_tokens: + alpha = _Parser(alpha_tokens, ev).sum_().value + return Color.from_srgb(*vals, alpha) + + +def _oklch_channels(tokens, ev, base: Color | None): + body, alpha_tokens = _split_slash(tokens) + bindings = {} + if base is not None: + L, C, H = base.oklch + bindings = {"l": L, "c": C, "h": H, "alpha": base.alpha} + with ev.bound(bindings): + nums = _components(body, ev, 3) + alpha = base.alpha if base is not None else 1.0 + if alpha_tokens: + alpha = _Parser(alpha_tokens, ev).sum_().value + return nums, alpha + + +def _parse_oklch(groups, ev) -> Color: + tokens = _flat(groups) + base = None + if tokens and tokens[0][0] == "ident" and tokens[0][1].lower() == "from": + rest = tokens[1:] + p = _Parser(rest, ev) + base = p.value() + if not isinstance(base, Color): + raise ValueError("oklch(from …) needs a color") + tokens = rest[p.i :] + nums, alpha = _oklch_channels(tokens, ev, base) + L, C, H = (n.value for n in nums) + # A percentage lightness is 0–1; `oklch(50% …)` and `oklch(0.5 …)` agree. + return Color(*oklch_to_oklab(L, C, H), alpha) + + +def _parse_oklab(groups, ev) -> Color: + tokens = _flat(groups) + base = None + if tokens and tokens[0][0] == "ident" and tokens[0][1].lower() == "from": + rest = tokens[1:] + p = _Parser(rest, ev) + base = p.value() + tokens = rest[p.i :] + body, alpha_tokens = _split_slash(tokens) + bindings = {} + if base is not None: + bindings = {"l": base.L, "a": base.a, "b": base.b, "alpha": base.alpha} + with ev.bound(bindings): + nums = _components(body, ev, 3) + alpha = base.alpha if base is not None else 1.0 + if alpha_tokens: + alpha = _Parser(alpha_tokens, ev).sum_().value + return Color(nums[0].value, nums[1].value, nums[2].value, alpha) + + +def _parse_color_mix(groups, ev) -> Color: + # color-mix(in oklab, [pct], [pct]) + space_tokens = groups[0] + space = " ".join(t[1] for t in space_tokens).replace("in ", "").strip() + if space not in ("oklab", "oklch", "srgb"): + raise ValueError(f"unsupported color-mix space {space!r}") + + parsed: list[tuple[Color, float | None]] = [] + for g in groups[1:3]: + p = _Parser(g, ev) + col = p.value() + if not isinstance(col, Color): + raise ValueError("color-mix needs colors") + pct = None + if p.peek() is not None: + pct = p.sum_().value + parsed.append((col, pct)) + + (ca, pa), (cb, pb) = parsed + if pa is None and pb is None: + pa = pb = 0.5 + elif pa is None: + pa = 1.0 - pb + elif pb is None: + pb = 1.0 - pa + total = pa + pb + if total == 0: + raise ValueError("color-mix percentages sum to zero") + pa, pb = pa / total, pb / total + + # CSS mixes premultiplied by alpha, then un-premultiplies. + alpha = ca.alpha * pa + cb.alpha * pb + if space == "srgb": + ra, ga, ba = ca.gamut_mapped() + rb, gb, bb = cb.gamut_mapped() + comps = [ + (x * ca.alpha * pa + y * cb.alpha * pb) for x, y in ((ra, rb), (ga, gb), (ba, bb)) + ] + if alpha > 0: + comps = [x / alpha for x in comps] + return Color.from_srgb(*comps, alpha) + + if space == "oklch": + La, Ca, Ha = ca.oklch + Lb, Cb, Hb = cb.oklch + # shorter hue arc + if abs(Hb - Ha) > 180: + if Hb > Ha: + Ha += 360 + else: + Hb += 360 + L = La * ca.alpha * pa + Lb * cb.alpha * pb + C = Ca * ca.alpha * pa + Cb * cb.alpha * pb + H = Ha * ca.alpha * pa + Hb * cb.alpha * pb + if alpha > 0: + L, C, H = L / alpha, C / alpha, H / alpha + return Color(*oklch_to_oklab(L, C, H % 360), alpha) + + L = ca.L * ca.alpha * pa + cb.L * cb.alpha * pb + a = ca.a * ca.alpha * pa + cb.a * cb.alpha * pb + b = ca.b * ca.alpha * pa + cb.b * cb.alpha * pb + if alpha > 0: + L, a, b = L / alpha, a / alpha, b / alpha + return Color(L, a, b, alpha) + + +# --------------------------------------------------------------------------- +# Evaluator +# --------------------------------------------------------------------------- + +class _Bound: + def __init__(self, ev: "Evaluator", extra: dict): + self.ev = ev + self.extra = extra + + def __enter__(self): + self.saved = self.ev.bindings + self.ev.bindings = {**self.ev.bindings, **self.extra} + + def __exit__(self, *exc): + self.ev.bindings = self.saved + return False + + +class Evaluator: + """Resolves `--nv-*` custom properties for one appearance.""" + + def __init__(self, declarations: dict[str, str], appearance: str = "light"): + self.declarations = declarations + self.appearance = appearance + self.bindings: dict[str, float] = {} + self._cache: dict[tuple[str, str], object] = {} + self._stack: list[str] = [] + + def bound(self, extra: dict) -> _Bound: + return _Bound(self, extra) + + def override(self, name: str, raw: str) -> None: + self.declarations[name] = raw + self._cache.clear() + + def resolve(self, name: str, fallback=None): + key = (name, self.appearance) + if key in self._cache: + return self._cache[key] + if name not in self.declarations: + if fallback is not None: + return _Parser(fallback, self).value() + raise KeyError(f"undefined custom property {name}") + if name in self._stack: + raise ValueError(f"cyclic token reference: {' -> '.join(self._stack + [name])}") + self._stack.append(name) + # Bindings belong to the oklch(from …) that created them, not to a + # token resolved from inside it. + saved, self.bindings = self.bindings, {} + try: + value = self.eval(self.declarations[name]) + finally: + self.bindings = saved + self._stack.pop() + self._cache[key] = value + return value + + def eval(self, raw: str): + return _Parser(_lex(raw.strip()), self).value() + + def color(self, name: str) -> Color: + v = self.resolve(name) + if not isinstance(v, Color): + raise TypeError(f"{name} is not a color: {v!r}") + return v + + +# --------------------------------------------------------------------------- +# Reading declarations out of the CSS +# --------------------------------------------------------------------------- + +_COMMENT = re.compile(r"/\*.*?\*/", re.S) +_DECL = re.compile(r"(--[-a-zA-Z0-9_]+)\s*:\s*([^;}]+)") + + +def read_declarations(paths, skip_at_rules=True) -> dict[str, str]: + """Collect every `--nv-*: value` declaration, last one winning. + + At-rule bodies (`@media (prefers-reduced-motion)`, `@supports not …`) are + skipped: they are alternate appearances of a token, and baking a + reduced-motion duration into the default build would be wrong. + """ + out: dict[str, str] = {} + for path in paths: + with open(path, encoding="utf-8") as fh: + css = _COMMENT.sub("", fh.read()) + if skip_at_rules: + css = _strip_at_rules(css) + for name, value in _DECL.findall(css): + out[name] = " ".join(value.split()) + return out + + +def _strip_at_rules(css: str) -> str: + out = [] + i = 0 + while i < len(css): + at = css.find("@", i) + if at == -1: + out.append(css[i:]) + break + out.append(css[i:at]) + # Skip to the matching close brace of the at-rule block. + brace = css.find("{", at) + if brace == -1: + break + depth = 0 + j = brace + while j < len(css): + if css[j] == "{": + depth += 1 + elif css[j] == "}": + depth -= 1 + if depth == 0: + break + j += 1 + i = j + 1 + return "".join(out) + + +def read_at_rule_declarations(paths, condition: str) -> dict[str, str]: + """Declarations from at-rule blocks whose prelude contains `condition`.""" + out: dict[str, str] = {} + for path in paths: + with open(path, encoding="utf-8") as fh: + css = _COMMENT.sub("", fh.read()) + for prelude, body in _iter_at_rules(css): + if condition in prelude: + for name, value in _DECL.findall(body): + out[name] = " ".join(value.split()) + return out + + +def _iter_at_rules(css: str): + i = 0 + while True: + at = css.find("@", i) + if at == -1: + return + brace = css.find("{", at) + if brace == -1: + return + depth = 0 + j = brace + while j < len(css): + if css[j] == "{": + depth += 1 + elif css[j] == "}": + depth -= 1 + if depth == 0: + break + j += 1 + yield css[at:brace], css[brace + 1 : j] + i = j + 1 + + +# --------------------------------------------------------------------------- +# Reading component rules +# --------------------------------------------------------------------------- +# +# The token layer is custom properties on :root, which read_declarations +# covers. A port that draws controls natively (a Qt style, Compose) also needs +# the component layer: which role a secondary button's background is, which +# shadow it gains on hover, what its disabled border becomes. Those live in +# ordinary rules in components/*.css, and restating them in a port would fork +# the system just as surely as restating a colour. So they are read here too. + +def _split_selectors(prelude: str) -> list[str]: + """`a, b:not(c, d)` -> [`a`, `b:not(c, d)`], whitespace collapsed.""" + out, depth, cur = [], 0, [] + for ch in prelude: + if ch in "([": + depth += 1 + elif ch in ")]": + depth -= 1 + if ch == "," and depth == 0: + out.append(" ".join("".join(cur).split())) + cur = [] + continue + cur.append(ch) + tail = " ".join("".join(cur).split()) + if tail: + out.append(tail) + return out + + +def _parse_block_declarations(body: str) -> dict[str, str]: + out: dict[str, str] = {} + depth, cur = 0, [] + for ch in body + ";": + if ch == "(": + depth += 1 + elif ch == ")": + depth -= 1 + if ch == ";" and depth == 0: + decl = "".join(cur).strip() + cur = [] + if ":" in decl: + name, value = decl.split(":", 1) + out[name.strip()] = " ".join(value.split()) + continue + cur.append(ch) + return out + + +def read_rules(paths, media: tuple[str, ...] = ("hover: hover",)) -> dict[str, dict[str, str]]: + """Every style rule, as selector -> {property: value}, last one winning. + + A grouped selector (`a, b { … }`) is recorded under each of its members. + Rules inside `@media` blocks whose condition contains one of `media` are + read as if they were top level: `(hover: hover)` only says the device has a + pointer, which a desktop always does. Every other at-rule is skipped; + those are alternate states (reduced motion, missing features, entry + animations) rather than the component's normal appearance. + """ + rules: dict[str, dict[str, str]] = {} + + def walk(css: str) -> None: + i = 0 + while True: + brace = css.find("{", i) + if brace == -1: + return + prelude = css[i:brace].strip() + depth, j = 0, brace + while j < len(css): + if css[j] == "{": + depth += 1 + elif css[j] == "}": + depth -= 1 + if depth == 0: + break + j += 1 + body = css[brace + 1 : j] + if prelude.startswith("@"): + if prelude.startswith("@media") and any(m in prelude for m in media): + walk(body) + else: + decls = _parse_block_declarations(body) + for sel in _split_selectors(prelude): + rules.setdefault(sel, {}).update(decls) + i = j + 1 + + for path in paths: + with open(path, encoding="utf-8") as fh: + walk(_COMMENT.sub("", fh.read())) + return rules