From 1d6207fbfe79e505ffcf929a6fc79d319e69cd26 Mon Sep 17 00:00:00 2001
From: 6d486f49 <76097bcc@gmail.com>
Date: Mon, 17 Aug 2026 00:45:08 -0400
Subject: [PATCH] API Test
---
Chrono/API/API.csproj | 27 +
Chrono/API/Components/App.razor | 23 +
Chrono/API/Components/Layout/MainLayout.razor | 23 +
.../Components/Layout/MainLayout.razor.css | 98 +
Chrono/API/Components/Layout/NavMenu.razor | 29 +
.../API/Components/Layout/NavMenu.razor.css | 105 +
.../Components/Layout/ReconnectModal.razor | 31 +
.../Layout/ReconnectModal.razor.css | 156 +
.../Components/Layout/ReconnectModal.razor.js | 63 +
Chrono/API/Components/Pages/Counter.razor | 20 +
Chrono/API/Components/Pages/Error.razor | 40 +
Chrono/API/Components/Pages/Home.razor | 7 +
Chrono/API/Components/Pages/NotFound.razor | 5 +
Chrono/API/Components/Pages/Weather.razor | 67 +
Chrono/API/Components/Routes.razor | 7 +
Chrono/API/Components/_Imports.razor | 11 +
Chrono/API/Data/AppDbContext.cs | 33 +
Chrono/API/Data/AppDbContextFactory.cs | 36 +
Chrono/API/GraphQL/Mutation.cs | 208 +
Chrono/API/GraphQL/Query.cs | 102 +
.../20260817043106_InitialCreate.Designer.cs | 99 +
.../20260817043106_InitialCreate.cs | 72 +
.../Migrations/AppDbContextModelSnapshot.cs | 96 +
Chrono/API/Models/LoginPayload.cs | 9 +
Chrono/API/Models/UserDeck.cs | 12 +
Chrono/API/Program.cs | 117 +
Chrono/API/Properties/launchSettings.json | 23 +
Chrono/API/Services/ITokenService.cs | 7 +
Chrono/API/Services/TokenService.cs | 73 +
Chrono/API/appsettings.json | 12 +
Chrono/API/wwwroot/app.css | 60 +
Chrono/API/wwwroot/favicon.png | Bin 0 -> 1148 bytes
.../lib/bootstrap/dist/css/bootstrap-grid.css | 5051 +++++
.../bootstrap/dist/css/bootstrap-grid.css.map | 1 +
.../bootstrap/dist/css/bootstrap-grid.min.css | 6 +
.../dist/css/bootstrap-grid.min.css.map | 1 +
.../bootstrap/dist/css/bootstrap-grid.rtl.css | 5051 +++++
.../dist/css/bootstrap-grid.rtl.css.map | 1 +
.../dist/css/bootstrap-grid.rtl.min.css | 6 +
.../dist/css/bootstrap-grid.rtl.min.css.map | 1 +
.../bootstrap/dist/css/bootstrap-reboot.css | 609 +
.../dist/css/bootstrap-reboot.css.map | 1 +
.../dist/css/bootstrap-reboot.min.css | 6 +
.../dist/css/bootstrap-reboot.min.css.map | 1 +
.../dist/css/bootstrap-reboot.rtl.css | 608 +
.../dist/css/bootstrap-reboot.rtl.css.map | 1 +
.../dist/css/bootstrap-reboot.rtl.min.css | 6 +
.../dist/css/bootstrap-reboot.rtl.min.css.map | 1 +
.../dist/css/bootstrap-utilities.css | 6310 ++++++
.../dist/css/bootstrap-utilities.css.map | 1 +
.../dist/css/bootstrap-utilities.min.css | 6 +
.../dist/css/bootstrap-utilities.min.css.map | 1 +
.../dist/css/bootstrap-utilities.rtl.css | 6303 ++++++
.../dist/css/bootstrap-utilities.rtl.css.map | 1 +
.../dist/css/bootstrap-utilities.rtl.min.css | 6 +
.../css/bootstrap-utilities.rtl.min.css.map | 1 +
.../lib/bootstrap/dist/css/bootstrap.css | 13721 ++++++++++++
.../lib/bootstrap/dist/css/bootstrap.css.map | 1 +
.../lib/bootstrap/dist/css/bootstrap.min.css | 6 +
.../bootstrap/dist/css/bootstrap.min.css.map | 1 +
.../lib/bootstrap/dist/css/bootstrap.rtl.css | 13705 ++++++++++++
.../bootstrap/dist/css/bootstrap.rtl.css.map | 1 +
.../bootstrap/dist/css/bootstrap.rtl.min.css | 6 +
.../dist/css/bootstrap.rtl.min.css.map | 1 +
.../lib/bootstrap/dist/js/bootstrap.bundle.js | 6510 ++++++
.../bootstrap/dist/js/bootstrap.bundle.js.map | 1 +
.../bootstrap/dist/js/bootstrap.bundle.min.js | 7 +
.../dist/js/bootstrap.bundle.min.js.map | 1 +
.../lib/bootstrap/dist/js/bootstrap.esm.js | 4636 ++++
.../bootstrap/dist/js/bootstrap.esm.js.map | 1 +
.../bootstrap/dist/js/bootstrap.esm.min.js | 7 +
.../dist/js/bootstrap.esm.min.js.map | 1 +
.../lib/bootstrap/dist/js/bootstrap.js | 4684 ++++
.../lib/bootstrap/dist/js/bootstrap.js.map | 1 +
.../lib/bootstrap/dist/js/bootstrap.min.js | 7 +
.../bootstrap/dist/js/bootstrap.min.js.map | 1 +
Chrono/Aspire/AppHost.cs | 13 +
Chrono/Aspire/Aspire.csproj | 17 +
Chrono/Aspire/Properties/launchSettings.json | 29 +
Chrono/Aspire/appsettings.json | 9 +
Chrono/Aspire/aspire.config.json | 5 +
Chrono/Chrono.sln | 58 +-
Chrono/DatabaseTest/AppDbContext.cs | 12 +-
Chrono/DatabaseTest/AppDbContextFactory.cs | 23 +-
.../Components/Layout/MainLayout.razor | 4 +-
.../Components/Layout/MainLayout.razor.css | 36 +-
.../Components/Layout/NavMenu.razor | 14 +-
.../Components/Layout/NavMenu.razor.css | 40 +-
.../Layout/ReconnectModal.razor.css | 41 +-
.../Components/Pages/CardNotesPage.razor | 117 +-
.../Components/Pages/Counter.razor | 2 +-
.../Components/Pages/DiagnosticsPage.razor | 49 +-
.../DatabaseTest/Components/Pages/Error.razor | 10 +-
.../DatabaseTest/Components/Pages/Home.razor | 72 +-
.../Components/Pages/PasskeysPage.razor | 136 +-
.../Components/Pages/TestSuitePage.razor | 45 +-
.../Components/Pages/UserDecksPage.razor | 992 +-
.../Components/Pages/UsersPage.razor | 344 +
Chrono/DatabaseTest/Components/Routes.razor | 5 +-
Chrono/DatabaseTest/DatabaseTest.csproj | 10 +-
Chrono/DatabaseTest/Models/DatabaseModels.cs | 23 +-
.../Models/DatabaseProviderType.cs | 2 +-
Chrono/DatabaseTest/Program.cs | 4 +-
.../Properties/launchSettings.json | 36 +-
.../Services/DatabaseConfigService.cs | 115 +-
.../DatabaseTest/Services/DatabaseService.cs | 427 +-
Chrono/DatabaseTest/appsettings.json | 5 +-
.../lib/bootstrap/dist/css/bootstrap-grid.css | 7866 ++++---
.../bootstrap/dist/css/bootstrap-grid.rtl.css | 7867 ++++---
.../bootstrap/dist/css/bootstrap-reboot.css | 666 +-
.../dist/css/bootstrap-reboot.rtl.css | 670 +-
.../dist/css/bootstrap-utilities.css | 8572 ++++----
.../dist/css/bootstrap-utilities.rtl.css | 8570 ++++----
.../lib/bootstrap/dist/css/bootstrap.css | 18340 ++++++++-------
.../lib/bootstrap/dist/css/bootstrap.rtl.css | 18349 +++++++++-------
.../lib/bootstrap/dist/js/bootstrap.bundle.js | 12484 +++++------
.../lib/bootstrap/dist/js/bootstrap.esm.js | 6653 +++---
.../lib/bootstrap/dist/js/bootstrap.js | 9014 ++++----
Chrono/Model/CardNote.cs | 6 +-
Chrono/Model/User.cs | 8 +
Chrono/Shared/Components/CardGrid.razor | 2 +-
Chrono/Shared/Components/CardPreview.razor | 12 +-
.../Shared/Components/CardPreview.razor.css | 16 +-
Chrono/Shared/Components/DocDetailModal.razor | 1 -
Chrono/Shared/Generated/Cards.g.cs | 7 +
Chrono/Shared/Generated/Docs.g.cs | 16 +-
Chrono/Shared/Pages/Agents.razor | 2 +-
Chrono/Shared/Pages/DeckDetail.razor | 471 +-
Chrono/Shared/Pages/DeckDetail.razor.css | 2 +-
Chrono/Shared/Pages/Decks.razor | 2 +-
Chrono/Shared/Pages/Docs.razor | 6 +-
Chrono/Shared/Pages/SyndicatePairings.razor | 7 +-
Chrono/Shared/Pages/Syndicates.razor | 2 +-
.../Shared/Services/CardRenderingService.cs | 15 +-
Chrono/Tests/CardsPageTests.cs | 4 +-
Chrono/Tests/DatabaseServiceTests.cs | 117 +-
Chrono/Tests/GraphQLTests.cs | 337 +
Chrono/Tests/NetworkStatusTests.cs | 9 +-
Chrono/Tests/Tests.csproj | 1 +
Chrono/Web/Components/CardDialog.razor | 906 +-
Chrono/Web/Components/Layout/MainLayout.razor | 6 +-
Chrono/Web/Components/Layout/NavMenu.razor | 37 +-
Chrono/Web/Components/NetworkStatusChip.razor | 2 +
Chrono/Web/Pages/Cards.razor | 18 +-
Chrono/Web/Pages/Login.razor | 173 +
Chrono/Web/Program.cs | 2 +
Chrono/Web/Routes.razor | 3 +-
Chrono/Web/Services/AuthService.cs | 199 +
.../Web/Services/CardNotesGraphQLService.cs | 177 +
Chrono/Web/Services/NetworkStatusService.cs | 80 +-
chrono.docs/Design/No New Timelines.md | 21 +-
chrono.docs/Playing Mono.md | 18 +-
chrono.docs/Quest/Daily Wins.md | 7 +-
chrono.docs/Syndicate/Silence.md | 4 +-
154 files changed, 126007 insertions(+), 47385 deletions(-)
create mode 100644 Chrono/API/API.csproj
create mode 100644 Chrono/API/Components/App.razor
create mode 100644 Chrono/API/Components/Layout/MainLayout.razor
create mode 100644 Chrono/API/Components/Layout/MainLayout.razor.css
create mode 100644 Chrono/API/Components/Layout/NavMenu.razor
create mode 100644 Chrono/API/Components/Layout/NavMenu.razor.css
create mode 100644 Chrono/API/Components/Layout/ReconnectModal.razor
create mode 100644 Chrono/API/Components/Layout/ReconnectModal.razor.css
create mode 100644 Chrono/API/Components/Layout/ReconnectModal.razor.js
create mode 100644 Chrono/API/Components/Pages/Counter.razor
create mode 100644 Chrono/API/Components/Pages/Error.razor
create mode 100644 Chrono/API/Components/Pages/Home.razor
create mode 100644 Chrono/API/Components/Pages/NotFound.razor
create mode 100644 Chrono/API/Components/Pages/Weather.razor
create mode 100644 Chrono/API/Components/Routes.razor
create mode 100644 Chrono/API/Components/_Imports.razor
create mode 100644 Chrono/API/Data/AppDbContext.cs
create mode 100644 Chrono/API/Data/AppDbContextFactory.cs
create mode 100644 Chrono/API/GraphQL/Mutation.cs
create mode 100644 Chrono/API/GraphQL/Query.cs
create mode 100644 Chrono/API/Migrations/20260817043106_InitialCreate.Designer.cs
create mode 100644 Chrono/API/Migrations/20260817043106_InitialCreate.cs
create mode 100644 Chrono/API/Migrations/AppDbContextModelSnapshot.cs
create mode 100644 Chrono/API/Models/LoginPayload.cs
create mode 100644 Chrono/API/Models/UserDeck.cs
create mode 100644 Chrono/API/Program.cs
create mode 100644 Chrono/API/Properties/launchSettings.json
create mode 100644 Chrono/API/Services/ITokenService.cs
create mode 100644 Chrono/API/Services/TokenService.cs
create mode 100644 Chrono/API/appsettings.json
create mode 100644 Chrono/API/wwwroot/app.css
create mode 100644 Chrono/API/wwwroot/favicon.png
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.js
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js
create mode 100644 Chrono/API/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map
create mode 100644 Chrono/Aspire/AppHost.cs
create mode 100644 Chrono/Aspire/Aspire.csproj
create mode 100644 Chrono/Aspire/Properties/launchSettings.json
create mode 100644 Chrono/Aspire/appsettings.json
create mode 100644 Chrono/Aspire/aspire.config.json
create mode 100644 Chrono/DatabaseTest/Components/Pages/UsersPage.razor
create mode 100644 Chrono/Model/User.cs
create mode 100644 Chrono/Tests/GraphQLTests.cs
create mode 100644 Chrono/Web/Pages/Login.razor
create mode 100644 Chrono/Web/Services/AuthService.cs
create mode 100644 Chrono/Web/Services/CardNotesGraphQLService.cs
diff --git a/Chrono/API/API.csproj b/Chrono/API/API.csproj
new file mode 100644
index 0000000..24cbb47
--- /dev/null
+++ b/Chrono/API/API.csproj
@@ -0,0 +1,27 @@
+
Current count: @currentCount
+ + + +@code { + private int currentCount; + + private void IncrementCount() + { + currentCount++; + } + +} \ No newline at end of file diff --git a/Chrono/API/Components/Pages/Error.razor b/Chrono/API/Components/Pages/Error.razor new file mode 100644 index 0000000..6ffc90c --- /dev/null +++ b/Chrono/API/Components/Pages/Error.razor @@ -0,0 +1,40 @@ +@page "/Error" +@using System.Diagnostics + +
+ Request ID: @RequestId
+
+ Swapping to Development environment will display more detailed information about the error that + occurred. +
++ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT + environment variable to Development + and restarting the app. +
+ +@code{ + [CascadingParameter] private HttpContext? HttpContext { get; set; } + + private string? RequestId { get; set; } + private bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + protected override void OnInitialized() + { + RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier; + } + +} \ No newline at end of file diff --git a/Chrono/API/Components/Pages/Home.razor b/Chrono/API/Components/Pages/Home.razor new file mode 100644 index 0000000..dfcdf75 --- /dev/null +++ b/Chrono/API/Components/Pages/Home.razor @@ -0,0 +1,7 @@ +@page "/" + +Sorry, the content you are looking for does not exist.
\ No newline at end of file diff --git a/Chrono/API/Components/Pages/Weather.razor b/Chrono/API/Components/Pages/Weather.razor new file mode 100644 index 0000000..e334e3a --- /dev/null +++ b/Chrono/API/Components/Pages/Weather.razor @@ -0,0 +1,67 @@ +@page "/weather" +@attribute [StreamRendering] + +This component demonstrates showing data.
+ +@if (forecasts == null) +{ ++ Loading... +
+} +else +{ +| Date | +Temp. (C) | +Temp. (F) | +Summary | +
|---|---|---|---|
| @forecast.Date.ToShortDateString() | +@forecast.TemperatureC | +@forecast.TemperatureF | +@forecast.Summary | +
G|8G0-9s3VLm`bsa6e
ze*TlRxAjXtm^F8V`M1%s5d@tYS>&+_ga#xKGb|!oUBx3uc@mj1%=MaH4GR0tPBG_&
z9OZE;->dO@`Q)nr<% `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default ``-`
` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `
` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`