@master/internal-site 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/dist/astro.mjs +145 -10
- package/package.json +1 -1
- package/src/astro/index.ts +2 -0
- package/src/astro/routes.template.ts +1 -0
- package/src/astro/style-assets.ts +107 -0
- package/src/benchmarks/BenchmarkBarRows.astro +3 -2
- package/src/benchmarks/BenchmarkBars.astro +1 -1
- package/src/benchmarks/BenchmarkChart.astro +1 -0
- package/src/benchmarks/BenchmarkChartGroup.astro +1 -1
- package/src/benchmarks/BenchmarkDataTable.astro +1 -1
- package/src/benchmarks/BenchmarkFigure.astro +2 -1
- package/src/benchmarks/BenchmarkMetricTable.astro +1 -1
- package/src/benchmarks/BenchmarkMetrics.astro +1 -1
- package/src/benchmarks/BenchmarkSampleSummary.astro +1 -1
- package/src/benchmarks/BenchmarkScrollRegion.svelte +2 -1
- package/src/benchmarks/BenchmarkSource.astro +1 -1
- package/src/benchmarks/BenchmarkStackedBars.astro +2 -1
- package/src/benchmarks/types.ts +2 -0
- package/src/blog/article/BlogArticleContents.svelte +1 -1
- package/src/blog/article/BlogArticleMasthead.astro +12 -1
- package/src/css/NamespaceUtilityTable.astro +1 -1
- package/src/css/ThemeNumberVariableTable.astro +1 -1
- package/src/css/markdown.ts +14 -5
- package/src/demo/Demo.svelte +4 -0
- package/src/demo/DemoAsset.astro +1 -0
- package/src/demo/DemoCatalog.astro +1 -0
- package/src/demo/DemoComparison.svelte +3 -0
- package/src/demo/DemoContainer.svelte +3 -0
- package/src/demo/DemoControls.svelte +2 -0
- package/src/demo/DemoCopyButton.svelte +3 -0
- package/src/demo/DemoCopyGroup.svelte +2 -0
- package/src/demo/DemoFeatureSupport.svelte +2 -0
- package/src/demo/DemoGeneratedCSS.svelte +2 -0
- package/src/demo/DemoIndex.astro +1 -0
- package/src/demo/DemoMotion.svelte +1 -0
- package/src/demo/DemoScrollArea.svelte +2 -0
- package/src/demo/DemoStyleComparison.astro +1 -0
- package/src/demo/DemoSurface.svelte +2 -0
- package/src/demo/DemoThemeComparison.astro +1 -0
- package/src/demo/DemoTokenTable.astro +1 -1
- package/src/demo/DemoViewport.svelte +5 -0
- package/src/demo/DemoWaterfall.astro +1 -1
- package/src/demo/foundations/FoundationDialog.astro +1 -0
- package/src/demo/foundations/FoundationMedia.astro +1 -0
- package/src/demo/foundations/FoundationShrink.astro +1 -0
- package/src/demo/foundations/Palette.svelte +2 -0
- package/src/demo/illustration-materials.ts +1 -1
- package/src/demo/illustration.css +218 -0
- package/src/docs-shell/components/ArticleHeader.astro +2 -0
- package/src/docs-shell/components/Callout.astro +1 -0
- package/src/docs-shell/components/CodeCopyButton.astro +2 -0
- package/src/docs-shell/components/CodeTabBar.astro +2 -0
- package/src/docs-shell/components/CodeTabs.astro +2 -1
- package/src/docs-shell/components/CodeView.astro +1 -1
- package/src/docs-shell/components/DocHeader.svelte +10 -13
- package/src/docs-shell/components/DocMenuButton.svelte +126 -60
- package/src/docs-shell/components/DocSidebar.svelte +2 -0
- package/src/docs-shell/components/DocVersionSelect.svelte +2 -0
- package/src/docs-shell/components/DocumentAPIIndex.astro +1 -1
- package/src/docs-shell/components/DocumentChoices.astro +1 -1
- package/src/docs-shell/components/DocumentCodeExampleView.astro +3 -1
- package/src/docs-shell/components/DocumentCodeTable.astro +1 -1
- package/src/docs-shell/components/DocumentCopyButton.svelte +3 -0
- package/src/docs-shell/components/DocumentDisclosure.astro +2 -0
- package/src/docs-shell/components/DocumentFileTree.astro +3 -0
- package/src/docs-shell/components/DocumentFlow.astro +4 -1
- package/src/docs-shell/components/DocumentIllustration.astro +5 -11
- package/src/docs-shell/components/DocumentKeyList.astro +1 -1
- package/src/docs-shell/components/DocumentNamespaceTable.astro +1 -1
- package/src/docs-shell/components/DocumentOptionEntry.astro +0 -1
- package/src/docs-shell/components/DocumentOptionList.astro +1 -1
- package/src/docs-shell/components/DocumentOptions.astro +0 -1
- package/src/docs-shell/components/DocumentParameters.astro +1 -1
- package/src/docs-shell/components/DocumentPrompt.astro +2 -0
- package/src/docs-shell/components/DocumentValueList.astro +1 -1
- package/src/docs-shell/components/DocumentationIndex.svelte +2 -0
- package/src/docs-shell/components/ExpandContent.svelte +3 -0
- package/src/docs-shell/components/ExplorerView.astro +1 -0
- package/src/docs-shell/components/Footer.svelte +2 -2
- package/src/docs-shell/components/FooterLink.svelte +17 -0
- package/src/docs-shell/components/GeneratedCSS.astro +1 -0
- package/src/docs-shell/components/Header.svelte +1 -1
- package/src/docs-shell/components/InlineCode.astro +1 -0
- package/src/docs-shell/components/InteractingIndicator.astro +1 -0
- package/src/docs-shell/components/LanguageButton.svelte +1 -0
- package/src/docs-shell/components/LanguageSelect.svelte +2 -0
- package/src/docs-shell/components/NotFound.astro +3 -0
- package/src/docs-shell/components/PMAction.astro +1 -0
- package/src/docs-shell/components/PageContent.svelte +1 -1
- package/src/docs-shell/components/PageContentDisclosure.astro +2 -1
- package/src/docs-shell/components/PageContentList.svelte +2 -0
- package/src/docs-shell/components/PageNavs.astro +1 -0
- package/src/docs-shell/components/SearchButton.svelte +3 -0
- package/src/docs-shell/components/SearchDialog.svelte +6 -1
- package/src/docs-shell/components/Segments.svelte +2 -0
- package/src/docs-shell/components/StepSection.astro +1 -2
- package/src/docs-shell/components/Tabs.astro +1 -0
- package/src/docs-shell/components/ThemeSelect.svelte +2 -0
- package/src/docs-shell/components/markdown/Table.astro +1 -0
- package/src/docs-shell/components/markdown-components.ts +0 -1
- package/src/docs-shell/remark/markdown-components.js +28 -7
- package/src/docs-shell/scripts/document.ts +1 -1
- package/src/docs-shell/types/Metadata.ts +11 -0
- package/src/docs-shell/utils/generate-metadata.ts +3 -1
- package/src/docs-shell/utils/head.ts +5 -2
- package/src/examples/components/ArticleTransitionScene.svelte +4 -0
- package/src/examples/layout-system/page.astro +0 -1
- package/src/home/HomeBentoFrame.astro +1 -0
- package/src/home/HomeBentoGrid.astro +1 -0
- package/src/home/HomeFooter.svelte +2 -2
- package/src/home/bento.css +167 -0
- package/src/home/design.css +1 -1
- package/src/home/home.css +4 -576
- package/src/home/segmented-control.css +94 -0
- package/src/layouts/Document.astro +3 -1
- package/src/public/icons/json.svg +1 -0
- package/src/scripts/atomic-class-authoring.ts +98 -0
- package/src/scripts/style-delivery.mjs +110 -0
- package/src/sections/blog.astro +1 -1
- package/src/sections/guide.astro +1 -2
- package/src/styles/blog-article.css +10 -7
- package/src/styles/blog-materials.css +13 -0
- package/src/styles/demo.css +0 -1
- package/src/styles/docs-shell/code.css +5 -61
- package/src/styles/docs-shell/documentation-search.css +1 -0
- package/src/styles/docs-shell/footer-link.css +5 -0
- package/src/styles/docs-shell/header.css +2 -73
- package/src/styles/docs-shell/menu.css +37 -17
- package/src/styles/docs-shell/page-content.css +2 -37
- package/src/styles/docs-shell/prose.css +18 -9
- package/src/styles/docs-shell/steps.css +2 -39
- package/src/styles/document-comparison.css +5 -2
- package/src/styles/documentation-illustration.css +1 -9
- package/src/styles/documentation-index.css +2 -1
- package/src/styles/documents.css +2 -4
- package/src/styles/interface.css +5 -3
- package/src/styles/system/DESIGN.md +34 -14
- package/src/styles/system/browser.css +21 -0
- package/src/styles/system/button-feedback.css +13 -0
- package/src/styles/system/callout.css +14 -0
- package/src/styles/system/chart.css +18 -0
- package/src/styles/system/checks.css +18 -0
- package/src/styles/system/code-panel.css +82 -0
- package/src/styles/system/code-tabs.css +40 -0
- package/src/styles/system/code.css +8 -85
- package/src/styles/system/compare.css +7 -0
- package/src/styles/system/controls.css +10 -109
- package/src/styles/system/copy.css +32 -0
- package/src/styles/system/data.css +10 -134
- package/src/styles/system/dialog.css +16 -0
- package/src/styles/system/disclosure.css +19 -0
- package/src/styles/system/expand.css +11 -0
- package/src/styles/system/fields.css +25 -0
- package/src/styles/system/header-core.css +101 -0
- package/src/styles/system/hint.css +5 -0
- package/src/styles/system/index.css +13 -0
- package/src/styles/system/inline-code.css +4 -0
- package/src/styles/system/kbd.css +4 -0
- package/src/styles/system/logos.css +10 -0
- package/src/styles/system/menu.css +14 -0
- package/src/styles/system/metrics.css +22 -0
- package/src/styles/system/pagehead.css +13 -0
- package/src/styles/system/pager.css +13 -0
- package/src/styles/system/parameters.css +17 -0
- package/src/styles/system/prompt.css +7 -0
- package/src/styles/system/prose.css +4 -75
- package/src/styles/system/range.css +12 -0
- package/src/styles/system/reading.css +44 -0
- package/src/styles/system/scroll.css +6 -0
- package/src/styles/system/search-trigger.css +10 -0
- package/src/styles/system/segmented.css +22 -0
- package/src/styles/system/sheet.css +8 -0
- package/src/styles/system/shell.css +8 -102
- package/src/styles/system/sidebar.css +14 -0
- package/src/styles/system/source.css +5 -0
- package/src/styles/system/specimens.css +3 -0
- package/src/styles/system/stage.css +18 -0
- package/src/styles/system/steps.css +51 -0
- package/src/styles/system/surfaces.css +8 -104
- package/src/styles/system/table.css +23 -0
- package/src/styles/system/toc.css +59 -0
- package/src/styles/system/tooltip.css +6 -0
- package/src/styles/system/tray-code.css +6 -0
- package/src/styles/system/tray.css +20 -0
- package/src/styles/system/tree.css +15 -0
- package/src/styles/system/waterfall.css +14 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/* header-core: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-app { min-height: 100dvh; background: var(--ui-surface-canvas); color: var(--ui-text-body); }
|
|
4
|
+
|
|
5
|
+
.ui-header { position: sticky; top: 0; z-index: 40; display: flex; align-items: center; gap: var(--ui-space-lg); height: 3.75rem; padding: 0 var(--ui-space-lg);
|
|
6
|
+
background: color-mix(in oklab, var(--ui-surface-canvas) 82%, transparent); -webkit-backdrop-filter: blur(16px) saturate(1.3); backdrop-filter: blur(16px) saturate(1.3);
|
|
7
|
+
box-shadow: inset 0 -1px 0 var(--ui-line-hair); }
|
|
8
|
+
.ui-header-brand { display: inline-flex; align-items: center; gap: var(--ui-space-xs); color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); font-size: 1.0625rem; letter-spacing: -.02em; text-decoration: none; white-space: nowrap; }
|
|
9
|
+
.ui-header-nav { display: flex; align-items: center; gap: var(--ui-space-3xs); }
|
|
10
|
+
.ui-header-nav > a { display: inline-flex; align-items: center; height: 2.25rem; padding: 0 .75rem; border-radius: var(--ui-radius-md); color: var(--ui-text-body); font-size: var(--ui-text-small); font-weight: var(--ui-weight-regular); text-decoration: none; transition: color var(--ui-duration-quick); }
|
|
11
|
+
.ui-header-nav > a:hover { color: var(--ui-text-strong); }
|
|
12
|
+
.ui-header-nav > a:is([aria-current="page"], [aria-current="true"]) { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
13
|
+
.ui-header-nav > a:focus-visible { @apply --ui-focus-ring; outline-offset: 0; }
|
|
14
|
+
.ui-header-nav > a > small { margin-left: var(--ui-space-2xs); padding: 1px 5px; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-muted); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-medium) .6875rem/1.4 var(--font-family-sans); letter-spacing: .02em; }
|
|
15
|
+
.ui-header-end { display: flex; align-items: center; gap: var(--ui-space-3xs); margin-left: auto; }
|
|
16
|
+
.ui-header-divider { width: 1px; height: 1rem; margin-inline: var(--ui-space-xs); background: var(--ui-line-divider); }
|
|
17
|
+
.ui-version { display: inline-flex; align-items: center; gap: var(--ui-space-3xs); height: 2.25rem; padding: 0 .375rem; border-radius: var(--ui-radius-md); color: var(--ui-text-body); font: var(--ui-weight-regular) var(--ui-text-small)/1 var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* The site header (`ui-header`, styles/system/shell.css) placed for the site: it sticks above documentation pages and
|
|
22
|
+
* overlays the homepage and blog as a stickable header that slides away while reading down (`data-tucked`) and is
|
|
23
|
+
* transparent at the top of the page (`data-background="transparent"`).
|
|
24
|
+
*/
|
|
25
|
+
@layer components {
|
|
26
|
+
/* A single rhythm for the page header and the modal's matching top bar. */
|
|
27
|
+
.ui-header, .ui-mobile-menu-bar { --ui-header-target: 2.25rem; --ui-header-icon: 1.125rem; --ui-header-control-gap: .5rem; }
|
|
28
|
+
.ui-header .ui-button.ui-header-control[data-shape="icon"], .ui-mobile-menu-bar .ui-button.ui-header-control[data-shape="icon"] {
|
|
29
|
+
position: relative; box-sizing: border-box; flex: 0 0 var(--ui-header-target); width: var(--ui-header-target); min-width: var(--ui-header-target); height: var(--ui-header-target); min-height: var(--ui-header-target); margin: 0; padding: 0; align-items: center; justify-content: center; border-radius: var(--ui-radius-md); line-height: 1;
|
|
30
|
+
}
|
|
31
|
+
.ui-header-control.ui-button[data-variant="quiet"]:not(:disabled) { background: transparent; box-shadow: none; translate: none; color: var(--ui-text-muted); }
|
|
32
|
+
.ui-header-control.ui-button[data-variant="quiet"]:where(:hover, :active, :focus-visible, :has(select:focus-visible)):not(:disabled) { color: var(--ui-text-strong); }
|
|
33
|
+
.ui-header-control.ui-button > svg:not(.ui-header-external) { flex: none; width: var(--ui-header-icon); height: var(--ui-header-icon); }
|
|
34
|
+
.ui-header .ui-header-end, .ui-header .ui-header-nav { align-items: center; gap: var(--ui-header-control-gap); }
|
|
35
|
+
.ui-header .ui-header-divider { flex: none; margin: 0 .25rem; height: var(--ui-header-icon); }
|
|
36
|
+
.ui-header .ui-header-nav > a, .ui-header .ui-version { height: var(--ui-header-target); }
|
|
37
|
+
.ui-header { padding-top: env(safe-area-inset-top); padding-inline: max(var(--ui-space-xl), env(safe-area-inset-left)) max(var(--ui-space-xl), env(safe-area-inset-right)); height: calc(3.75rem + env(safe-area-inset-top)); box-sizing: border-box; }
|
|
38
|
+
.ui-header[data-variant="stickable"] { position: fixed; inset: 0 0 auto; width: 100%; transition: translate var(--ui-duration-base) var(--ui-ease), background-color var(--ui-duration-base), box-shadow var(--ui-duration-base); }
|
|
39
|
+
.ui-header[data-tucked] { translate: 0 -100%; }
|
|
40
|
+
/* A focused control stays on screen after the header has tucked away, revealed at once. */
|
|
41
|
+
.ui-header:focus-within { translate: none; transition-duration: 0s; }
|
|
42
|
+
.ui-header[data-background="transparent"] { background: transparent; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
|
|
43
|
+
/* Without scripts the header never leaves its transparent top state, so it scrolls away instead of covering content. */
|
|
44
|
+
@media (scripting: none) { .ui-header[data-background="transparent"] { position: absolute; } }
|
|
45
|
+
@media (prefers-reduced-motion: reduce) { .ui-header, .ui-header[data-variant="stickable"] { transition: none; } }
|
|
46
|
+
@media print { .ui-header { display: none; } }
|
|
47
|
+
|
|
48
|
+
.ui-header-brand { display: inline-flex; align-items: center; min-height: var(--ui-header-target); border-radius: var(--ui-radius-sm); }
|
|
49
|
+
.ui-header-brand:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
50
|
+
/* The version chip opens the native version list laid over it. */
|
|
51
|
+
.ui-header .ui-version { position: relative; cursor: pointer; }
|
|
52
|
+
.ui-header .ui-version > svg { width: 12px; height: 12px; color: var(--ui-text-muted); }
|
|
53
|
+
.ui-header .ui-version:hover { color: var(--ui-text-strong); }
|
|
54
|
+
.ui-header-nav > a > .ui-badge { margin-left: var(--ui-space-2xs); }
|
|
55
|
+
/* External destinations carry a small raised arrow beside the label or icon. */
|
|
56
|
+
.ui-header-nav > a:has(.ui-header-external) { position: relative; padding-right: 1.125rem; }
|
|
57
|
+
.ui-header-nav > a > .ui-header-external, .ui-header-end > .ui-button > .ui-header-external { position: absolute; top: .375rem; right: .125rem; width: .625rem; height: .625rem; pointer-events: none; }
|
|
58
|
+
/* Anchor the small external mark to the icon centre, independent of the 36/44px target. */
|
|
59
|
+
.ui-header-end > .ui-button > .ui-header-external { top: calc(50% - .875rem); right: calc(50% - 1rem); }
|
|
60
|
+
.ui-header-end > .ui-button[data-disabled] { color: var(--ui-text-disabled); pointer-events: none; }
|
|
61
|
+
/* Icon-only controls name themselves with an ink tooltip under the pointer or keyboard focus. */
|
|
62
|
+
.ui-header-end > :is(a, button, label) { position: relative; }
|
|
63
|
+
.ui-header-end > * > .ui-tooltip { top: calc(100% + 8px); left: 50%; translate: -50% 0; opacity: 0; visibility: hidden; transition: opacity var(--ui-duration-quick), visibility 0s linear var(--ui-duration-quick); }
|
|
64
|
+
.ui-header-end > :is(:hover, :focus-visible, :has(:focus-visible)) > .ui-tooltip { opacity: 1; visibility: visible; transition-delay: 400ms, 400ms; }
|
|
65
|
+
.ui-header-end > :last-child > .ui-tooltip { left: auto; right: 0; translate: none; }
|
|
66
|
+
.ui-header-end > :last-child > .ui-tooltip::before { left: auto; right: calc(1rem - 4px); translate: none; }
|
|
67
|
+
@media (hover: none) { .ui-header-end > * > .ui-tooltip { display: none; } }
|
|
68
|
+
|
|
69
|
+
/* Desktop search retains its original hairline pill and visible shortcut. */
|
|
70
|
+
.ui-header-search { appearance: none; box-sizing: border-box; display: inline-flex; align-items: center; gap: .4375rem; flex: none; height: 1.875rem; margin: 0; padding: 0 .8125rem 0 .6875rem; border: 0; border-radius: var(--ui-radius-pill);
|
|
71
|
+
background: transparent; color: var(--ui-text-muted); box-shadow: inset 0 0 0 1px var(--ui-line-contour); font: var(--ui-weight-regular) .75rem/1 var(--font-family-sans); cursor: pointer;
|
|
72
|
+
transition: color var(--ui-duration-quick), box-shadow var(--ui-duration-quick), background-color var(--ui-duration-quick); }
|
|
73
|
+
.ui-header-search:hover { color: var(--ui-text-strong); background: var(--ui-surface-chip); box-shadow: inset 0 0 0 1px var(--ui-line-strong); }
|
|
74
|
+
.ui-header-search:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
75
|
+
.ui-header-search > svg { flex: none; width: 1rem; height: 1rem; }
|
|
76
|
+
.ui-header-search > .ui-kbd { min-width: 0; height: auto; padding: 0; background: none; color: inherit; box-shadow: none; font: var(--ui-weight-regular) .6875rem/1 var(--font-family-sans); letter-spacing: .04em; }
|
|
77
|
+
|
|
78
|
+
/* The compact header: the menu at the start, the brand centred, search at the end. */
|
|
79
|
+
.ui-header .ui-header-menu { display: none; }
|
|
80
|
+
@media (width < 64rem) {
|
|
81
|
+
.ui-header, .ui-mobile-menu-bar { --ui-header-target: 2.75rem; }
|
|
82
|
+
.ui-header { gap: var(--ui-space-xs); padding-inline: max(var(--ui-space-xs), env(safe-area-inset-left)) max(var(--ui-space-xs), env(safe-area-inset-right)); }
|
|
83
|
+
.ui-header .ui-header-menu { display: inline-flex; }
|
|
84
|
+
.ui-header-brand { margin-inline: auto; }
|
|
85
|
+
.ui-header > :is(.ui-version, .ui-header-nav), .ui-header-end > :not(.ui-header-search) { display: none; }
|
|
86
|
+
.ui-header-end { margin-left: 0; }
|
|
87
|
+
.ui-header-search { justify-content: center; width: var(--ui-header-target); height: var(--ui-header-target); padding: 0; border-radius: var(--ui-radius-md); box-shadow: none; }
|
|
88
|
+
.ui-header-search:hover { background: transparent; box-shadow: none; }
|
|
89
|
+
.ui-header-search > svg { width: var(--ui-header-icon); height: var(--ui-header-icon); }
|
|
90
|
+
.ui-header-search > .ui-kbd { display: none; }
|
|
91
|
+
/* Search can be the last visible action while hidden siblings still follow it. */
|
|
92
|
+
.ui-header-end > * > .ui-tooltip { left: auto; right: 0; translate: none; }
|
|
93
|
+
.ui-header-end > * > .ui-tooltip::before { left: auto; right: calc(var(--ui-header-target) / 2 - 4px); translate: none; }
|
|
94
|
+
/* Equal ends keep the brand centred, including the homepage's GitHub action. */
|
|
95
|
+
.ui-header .ui-header-end { width: var(--ui-header-target); }
|
|
96
|
+
}
|
|
97
|
+
@media (width >= 64rem) {
|
|
98
|
+
/* The homepage's wide header leaves search out. */
|
|
99
|
+
.ui-header-search[data-compact] { display: none; }
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/* hint: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-hint { display: flex; align-items: flex-start; gap: var(--ui-space-xs); color: var(--ui-text-muted); font-size: var(--ui-text-small); line-height: var(--ui-leading-small); }
|
|
4
|
+
.ui-hint > svg { flex: none; width: 1rem; height: 1rem; margin-top: calc((1lh - 1rem) / 2); color: var(--ui-text-body); stroke-width: 1.5; }
|
|
5
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* index: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-index { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); gap: var(--ui-space-sm); }
|
|
4
|
+
.ui-index > a { display: grid; align-content: start; gap: var(--ui-space-2xs); padding: var(--ui-space-md) var(--ui-space-md) 1.125rem; border-radius: var(--ui-radius-xl); background: var(--ui-surface-sheet); color: var(--ui-text-body); box-shadow: inset 0 0 0 1px var(--ui-line-contour), 0 1px 0 var(--ui-lip); text-decoration: none; transition: box-shadow var(--ui-duration-quick) var(--ui-ease), translate var(--ui-duration-quick) var(--ui-ease); }
|
|
5
|
+
.ui-index > a:hover { translate: 0 -.5px; box-shadow: var(--ui-elevation-rise-1h); }
|
|
6
|
+
.ui-index > a:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
7
|
+
.ui-index > a > svg { width: 18px; height: 18px; margin-bottom: var(--ui-space-2xs); color: var(--ui-text-strong); stroke-width: 1.5; }
|
|
8
|
+
.ui-index > a > b { color: var(--ui-text-strong); font-size: .9375rem; font-weight: var(--ui-weight-medium); line-height: 1.4; letter-spacing: -.006em; }
|
|
9
|
+
.ui-index > a > span { font-size: .8125rem; line-height: 1.6; color: var(--ui-text-muted); }
|
|
10
|
+
.ui-index > a > b code { font: var(--ui-weight-medium) .875rem/1.45 var(--font-family-mono); letter-spacing: 0; overflow-wrap: anywhere; }
|
|
11
|
+
.ui-index[data-density="compact"] { grid-template-columns: repeat(auto-fill, minmax(min(100%, 12rem), 1fr)); gap: var(--ui-space-xs); }
|
|
12
|
+
.ui-index[data-density="compact"] > a { gap: 2px; padding: var(--ui-space-sm) var(--ui-space-md); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* inline-code: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-inline-code { padding: .125em .375em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-strong); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-regular) .84em/1 var(--font-family-mono); overflow-wrap: anywhere; }
|
|
4
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* kbd: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-kbd { display: inline-grid; place-items: center; min-width: 1.375rem; height: 1.375rem; padding: 0 .3125rem; border-radius: var(--ui-radius-xs); background: transparent; color: var(--ui-text-muted); box-shadow: inset 0 0 0 1px var(--ui-line-contour); font: var(--ui-weight-regular) .6875rem/1 var(--font-family-mono); }
|
|
4
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
@prune native;
|
|
2
|
+
/* logos: owned component styles; shared definitions come from the foundation. */
|
|
3
|
+
@layer components {
|
|
4
|
+
.ui-logos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr)); gap: var(--ui-space-2xs) var(--ui-space-md); }
|
|
5
|
+
.ui-logos > a { display: flex; align-items: center; gap: var(--ui-space-sm); min-width: 0; min-height: 2.75rem; padding: .5rem var(--ui-space-xs); border-radius: var(--ui-radius-sm); color: var(--ui-text-body); font-size: .8125rem; line-height: 1.5; text-decoration: none; transition: background var(--ui-duration-quick) var(--ui-ease), color var(--ui-duration-quick) var(--ui-ease); }
|
|
6
|
+
.ui-logos > a:hover { color: var(--ui-text-strong); background: var(--ui-surface-chip); }
|
|
7
|
+
.ui-logos > a:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
8
|
+
.ui-logos > a > svg { flex: none; width: 1.25rem; height: 1.25rem; }
|
|
9
|
+
.ui-logos > a > span { min-width: 0; overflow-wrap: anywhere; }
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
@prune native;
|
|
2
|
+
/* menu: owned component styles; shared definitions come from the foundation. */
|
|
3
|
+
@layer components {
|
|
4
|
+
.ui-menu { display: grid; gap: 1px; min-width: 12rem; margin: 0; padding: var(--ui-inset); border-radius: var(--ui-radius-lg); background: var(--ui-surface-float); box-shadow: var(--ui-elevation-rise-3); list-style: none; }
|
|
5
|
+
.ui-menu-label { padding: .375rem .625rem .25rem; color: var(--ui-text-muted); @apply --ui-label-type; }
|
|
6
|
+
.ui-menu-item { appearance: none; display: flex; align-items: center; gap: var(--ui-space-xs); width: 100%; min-height: 2rem; padding: 0 .625rem; border: 0; border-radius: var(--ui-radius-sm); background: transparent; color: var(--ui-text-body); font: var(--ui-weight-regular) var(--ui-text-small)/1 var(--font-family-sans); text-align: start; text-decoration: none; cursor: pointer; }
|
|
7
|
+
.ui-menu-item > svg { flex: none; width: 15px; height: 15px; color: var(--ui-text-muted); }
|
|
8
|
+
.ui-menu-item > small { margin-left: auto; color: var(--ui-text-muted); font: var(--ui-weight-regular) .6875rem/1 var(--font-family-mono); }
|
|
9
|
+
.ui-menu-item:is(:hover, [data-highlighted]) { color: var(--ui-text-strong); background: light-dark(oklch(22% .002 265 / .05), oklch(100% 0 none / .06)); }
|
|
10
|
+
.ui-menu-item[aria-checked="true"] { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
11
|
+
.ui-menu-item[aria-checked="true"]::after { content: ""; width: 14px; height: 14px; margin-left: auto; background: currentColor; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='m3.5 8.5 3 3 6-7' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat; }
|
|
12
|
+
.ui-menu-item:focus-visible { @apply --ui-focus-ring; outline-offset: -2px; }
|
|
13
|
+
.ui-menu-separator { height: 1px; margin: var(--ui-space-3xs) .375rem; background: var(--ui-line-hair); }
|
|
14
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* metrics: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); gap: var(--ui-inset); }
|
|
4
|
+
.ui-metric { display: grid; align-content: start; min-width: 0; gap: 6px; overflow-wrap: anywhere; padding: var(--ui-space-md); border-radius: var(--ui-radius-lg); @apply --ui-sheet-face; box-shadow: var(--ui-elevation-rise-1); }
|
|
5
|
+
.ui-metric > small { color: var(--ui-text-muted); @apply --ui-label-type; }
|
|
6
|
+
.ui-metric > b { color: var(--ui-text-strong); font-size: 1.625rem; font-weight: var(--ui-weight-heading); letter-spacing: -.03em; line-height: 1.1; font-variant-numeric: tabular-nums; }
|
|
7
|
+
.ui-metric > b > span { color: var(--ui-text-muted); font-size: .875rem; font-weight: var(--ui-weight-medium); letter-spacing: 0; }
|
|
8
|
+
.ui-metric > p { margin: 0; color: var(--ui-text-muted); font-size: .75rem; line-height: 1.5; }
|
|
9
|
+
.ui-bar { height: 6px; border-radius: var(--ui-radius-pill); background: var(--ui-surface-well); box-shadow: var(--ui-elevation-sink); overflow: hidden; }
|
|
10
|
+
.ui-bar > i { display: block; height: 100%; border-radius: inherit; background: var(--ui-text-strong); }
|
|
11
|
+
.ui-bar > i[data-tone="muted"] { background: var(--ui-line-mark); }
|
|
12
|
+
.ui-bar > i[data-tone="blue"] { background: var(--ui-tone-blue); }
|
|
13
|
+
.ui-bar > i[data-tone="violet"] { background: var(--ui-tone-violet); }
|
|
14
|
+
.ui-bar > i[data-tone="amber"] { background: var(--ui-tone-amber); }
|
|
15
|
+
.ui-bar > i[data-tone="green"] { background: var(--ui-tone-green); }
|
|
16
|
+
.ui-bar > i[data-tone="red"] { background: var(--ui-tone-red); }
|
|
17
|
+
.ui-bar > i[data-tone="neutral"] { background: var(--ui-tone-neutral); }
|
|
18
|
+
.ui-bar[data-variant="stacked"] { display: flex; gap: 1px; }
|
|
19
|
+
.ui-bar[data-variant="stacked"] > i { flex: none; border-radius: 0; }
|
|
20
|
+
.ui-bar[data-variant="stacked"] > i:first-child { border-start-start-radius: inherit; border-end-start-radius: inherit; }
|
|
21
|
+
.ui-bar[data-variant="stacked"] > i:last-child { border-start-end-radius: inherit; border-end-end-radius: inherit; }
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* pagehead: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-pagehead { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--ui-space-md); margin-bottom: var(--ui-space-2xl); }
|
|
4
|
+
.ui-pagehead-kicker { margin-bottom: calc(var(--ui-space-3xs) * -1); color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
5
|
+
.ui-pagehead h1 { margin: 0; color: var(--ui-text-strong); font-size: var(--ui-text-title); font-weight: var(--ui-weight-heading); line-height: var(--ui-leading-title); letter-spacing: var(--ui-tracking-title); text-wrap: balance; overflow-wrap: break-word; }
|
|
6
|
+
.ui-pagehead p { max-width: calc(var(--measure, 41rem) * 1.125); margin: 0; color: var(--ui-text-body); font-size: var(--ui-text-lead); line-height: var(--ui-leading-lead); letter-spacing: -.004em; text-wrap: pretty; overflow-wrap: break-word; }
|
|
7
|
+
.ui-pagehead p + p:not([class]) { max-width: var(--measure, 41rem); margin-top: calc(var(--ui-space-xs) * -1); font-size: var(--ui-text-base); line-height: var(--ui-leading-body); letter-spacing: 0; }
|
|
8
|
+
|
|
9
|
+
.ui-pagehead-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-xs) var(--ui-space-md); padding-top: var(--ui-space-xs); color: var(--ui-text-muted); font-size: .78125rem; }
|
|
10
|
+
.ui-pagehead-meta > a { color: inherit; text-decoration: none; }
|
|
11
|
+
.ui-pagehead-meta > a:hover { color: var(--ui-text-strong); }
|
|
12
|
+
.ui-pagehead-meta > span + span::before, .ui-pagehead-meta > * + a::before { content: "·"; margin-right: var(--ui-space-md); color: var(--ui-text-disabled); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* pager: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-pager { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ui-space-xl); margin-top: 5rem; padding-top: var(--ui-space-lg); box-shadow: inset 0 1px 0 var(--ui-line-hair); }
|
|
4
|
+
.ui-pager > a { display: grid; align-content: start; gap: var(--ui-space-2xs); color: var(--ui-text-body); text-decoration: none; transition: color var(--ui-duration-quick); }
|
|
5
|
+
.ui-pager > a:hover { color: var(--ui-text-strong); }
|
|
6
|
+
.ui-pager > a:focus-visible { @apply --ui-focus-ring; outline-offset: 4px; border-radius: var(--ui-radius-xs); }
|
|
7
|
+
.ui-pager > a[rel="next"] { justify-items: end; text-align: right; }
|
|
8
|
+
.ui-pager small { color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
9
|
+
.ui-pager b { font-weight: var(--ui-weight-regular); font-size: var(--ui-text-base); line-height: 1.5; text-wrap: balance; }
|
|
10
|
+
.ui-pager > a[rel="prev"] > b::before { content: "←"; margin-right: .5em; color: var(--ui-text-muted); }
|
|
11
|
+
.ui-pager > a[rel="next"] > b::after { content: "→"; margin-left: .5em; color: var(--ui-text-muted); }
|
|
12
|
+
.ui-pager > a:hover > b::before, .ui-pager > a:hover > b::after { color: var(--ui-text-strong); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* parameters: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-params { display: grid; margin: 0; border-radius: var(--ui-radius-xl); background: var(--ui-surface-sheet); box-shadow: inset 0 0 0 1px var(--ui-line-contour); }
|
|
4
|
+
.ui-params > div { display: grid; grid-template-columns: minmax(8rem, 13rem) minmax(0, 1fr); gap: var(--ui-space-xs) var(--ui-space-lg); padding: var(--ui-space-sm) var(--ui-space-md); border-top: 1px solid var(--ui-line-hair); }
|
|
5
|
+
.ui-params > div:first-child { border-top: 0; }
|
|
6
|
+
.ui-params dt { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; min-width: 0; overflow-wrap: anywhere; color: var(--ui-text-strong); font: var(--ui-weight-medium) .8125rem/1.5 var(--font-family-mono); }
|
|
7
|
+
.ui-params dt small { color: var(--ui-text-muted); font-weight: var(--ui-weight-regular); }
|
|
8
|
+
.ui-params dd { margin: 0; color: var(--ui-text-body); font-size: var(--ui-text-small); line-height: 1.6; overflow-wrap: anywhere; }
|
|
9
|
+
.ui-params dd > * { margin: 0; }
|
|
10
|
+
.ui-params dd > * + * { margin-top: var(--ui-space-xs); }
|
|
11
|
+
.ui-params dd small { color: var(--ui-text-muted); font-size: .75rem; }
|
|
12
|
+
.ui-params dd a:not([class]) { color: var(--ui-text-strong); text-decoration: underline 1px var(--ui-line-strong); text-underline-offset: .24em; }
|
|
13
|
+
.ui-params dd a:not([class]):hover { text-decoration-color: currentColor; }
|
|
14
|
+
.ui-params :is(dt, dd) :is(h3, h4) { margin: 0; font: inherit; color: inherit; letter-spacing: inherit; }
|
|
15
|
+
.ui-params dd code { padding: .125em .375em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-strong); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-regular) .8125rem/1 var(--font-family-mono); }
|
|
16
|
+
@media (width < 35rem) { .ui-params > div { grid-template-columns: 1fr; } }
|
|
17
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* prompt: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-prompt { --code-corner: calc(var(--ui-space-md) + var(--ui-text-code) * var(--ui-leading-code) / 2 - 1rem); }
|
|
4
|
+
.ui-prompt { display: grid; gap: 0; min-width: 0; overflow: hidden; border-radius: var(--ui-radius-xl); background: var(--ui-surface-code); box-shadow: inset 0 0 0 1px var(--ui-line-contour), 0 1px 0 var(--ui-lip); }
|
|
5
|
+
.ui-prompt-body { margin: 0; padding: var(--ui-space-xs) var(--ui-space-md) var(--ui-space-md); color: var(--ui-text-strong); font: var(--ui-weight-regular) .9375rem/1.7 var(--font-family-sans); white-space: pre-wrap; }
|
|
6
|
+
.ui-prompt-body var { padding: 0 .25em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-body); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-regular) .8125rem/1 var(--font-family-mono); font-style: normal; }
|
|
7
|
+
}
|
|
@@ -1,75 +1,4 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
@
|
|
4
|
-
|
|
5
|
-
three quarters of it, sections open on two lines, wide blocks keep one line of air. */
|
|
6
|
-
.ui-prose { --measure: 41rem; --bleed: 2rem; --line: 2rem; color: var(--ui-text-body); font-size: var(--ui-text-base); line-height: var(--ui-leading-body); }
|
|
7
|
-
.ui-prose > :is(p, ul, ol, h2, h3, h4, blockquote, .ui-callout, .ui-disclosure, hr):not(:where(.ui-steps)) { max-width: var(--measure); }
|
|
8
|
-
.ui-prose > :is(.ui-tray, .ui-code, .ui-table, .ui-params, .ui-prompt, .ui-tree) { margin-inline: calc(var(--bleed) * -1); }
|
|
9
|
-
@media (width < 52rem) { .ui-prose { --bleed: 0rem; } }
|
|
10
|
-
.ui-prose > :is(p, ul, ol, blockquote) { margin-block: calc(var(--line) * .75); }
|
|
11
|
-
.ui-prose > :is(.ui-tray, .ui-code, .ui-table, .ui-callout, .ui-steps, .ui-index, .ui-logos, .ui-params, .ui-prompt, .ui-tree) { margin-block: var(--line); }
|
|
12
|
-
/* Files that answer one instruction sit together: consecutive code panels part by a small gap, not a line. */
|
|
13
|
-
.ui-prose > .ui-code:has(+ .ui-code) { margin-bottom: var(--ui-space-sm); }
|
|
14
|
-
.ui-prose > .ui-code + .ui-code { margin-top: var(--ui-space-sm); }
|
|
15
|
-
.ui-prose > h2 { margin: calc(var(--line) * 2) 0 calc(var(--line) * .5); color: var(--ui-text-strong); font-size: var(--ui-text-h2); font-weight: var(--ui-weight-heading); line-height: var(--ui-leading-h2); letter-spacing: var(--ui-tracking-h2); text-wrap: balance; }
|
|
16
|
-
.ui-prose > h3 { margin: calc(var(--line) * 1.5) 0 calc(var(--line) * .375); color: var(--ui-text-strong); font-size: var(--ui-text-h3); font-weight: var(--ui-weight-heading); line-height: var(--ui-leading-h3); letter-spacing: var(--ui-tracking-h3); }
|
|
17
|
-
.ui-prose > h4 { margin: calc(var(--line) * 1.25) 0 calc(var(--line) * .25); color: var(--ui-text-strong); font-size: var(--ui-text-base); font-weight: var(--ui-weight-strong); line-height: 1.5rem; }
|
|
18
|
-
/* A subsection that opens its section sits close under it, as one heading group. */
|
|
19
|
-
.ui-prose > h2 + h3, .ui-prose > h3 + :is(h3, h4) { margin-top: calc(var(--line) * .5); }
|
|
20
|
-
.ui-prose > :is(h2, h3) { position: relative; width: fit-content; scroll-margin-top: 5rem; }
|
|
21
|
-
/* A section opens on one hairline across the reading measure, closer to its heading than to the text before it. */
|
|
22
|
-
.ui-prose > h2 { width: auto; }
|
|
23
|
-
.ui-prose > h2:not(:first-child)::before { content: ""; display: var(--section-rule, block); position: absolute; top: calc(var(--line) * -.875); inset-inline: 0 var(--rule-end, 0); height: 1px; background: var(--ui-line-hair); pointer-events: none; }
|
|
24
|
-
/* The page's first section keeps only its space (after the page head too), and so does one after a disclosure, which
|
|
25
|
-
already closes on a hairline, even as the last part of a section wrapper;
|
|
26
|
-
legacy anchors and space-only rules in between do not count. A disclosure joined under its code is a framed panel, not
|
|
27
|
-
a rule, so the heading after it keeps its own. */
|
|
28
|
-
.ui-prose > :is(a[id]:empty, .sr-only):first-child + h2,
|
|
29
|
-
.ui-prose > .ui-disclosure:not(.ui-code + *) + h2, .ui-prose > .ui-disclosure:not(.ui-code + *) + a[id]:empty + h2,
|
|
30
|
-
.ui-prose > .ui-disclosure:not(.ui-code + *) + hr + h2, .ui-prose > .ui-disclosure:not(.ui-code + *) + hr + a[id]:empty + h2,
|
|
31
|
-
.ui-prose > .ui-pagehead + h2, .ui-prose > .ui-pagehead + a[id]:empty + h2,
|
|
32
|
-
.ui-prose > :has(> .ui-disclosure:last-child) + h2 { --section-rule: none; }
|
|
33
|
-
.ui-anchor { position: absolute; right: 100%; top: 50%; translate: -.375rem -50%; display: grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: var(--ui-radius-sm); color: var(--ui-text-disabled); font: var(--ui-weight-regular) .875rem/1 var(--font-family-mono); opacity: 0; text-decoration: none; transition: opacity var(--ui-duration-quick), color var(--ui-duration-quick); }
|
|
34
|
-
.ui-anchor:hover { color: var(--ui-text-muted); }
|
|
35
|
-
.ui-prose > :is(h2, h3):is(:hover, :target, :focus-within) > .ui-anchor { opacity: 1; }
|
|
36
|
-
.ui-anchor:focus-visible { opacity: 1; @apply --ui-focus-ring; outline-offset: 1px; }
|
|
37
|
-
.ui-prose > :is(p, ul, ol, blockquote, h2, h3, h4) :is(strong, b) { color: var(--ui-text-strong); font-weight: var(--ui-weight-strong); }
|
|
38
|
-
.ui-prose > :is(p, ul, ol, blockquote) a:not([class]) { color: var(--ui-text-strong); text-decoration: underline; text-decoration-color: var(--ui-line-strong); text-decoration-thickness: 1px; text-underline-offset: .24em; transition: text-decoration-color var(--ui-duration-quick); }
|
|
39
|
-
.ui-prose > :is(p, ul, ol, blockquote) a:not([class]):hover { text-decoration-color: currentColor; }
|
|
40
|
-
.ui-prose > :is(p, ul, ol, blockquote) a:not([class]):focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-xs); }
|
|
41
|
-
/* Inline code is set apart by a hairline chip in a mid ink, never the darkest spot of a paragraph. */
|
|
42
|
-
.ui-prose > :is(p, ul, ol, blockquote, h2, h3, h4) code:not(pre code), .ui-callout code { padding: .125em .375em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: color-mix(in oklab, var(--ui-text-strong) 60%, var(--ui-text-body)); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-regular) .84em/1 var(--font-family-mono); overflow-wrap: anywhere; }
|
|
43
|
-
/* In a heading, code is the heading's own words in the mono face. */
|
|
44
|
-
.ui-prose > :is(h2, h3, h4) code:not(pre code) { padding: 0; background: none; box-shadow: none; color: inherit; font-size: .9em; }
|
|
45
|
-
.ui-prose > :is(ul, ol):not([class]) { padding-left: 1.25em; }
|
|
46
|
-
.ui-prose > :is(ul, ol):not([class]) li { margin-block: calc(var(--line) * .25); padding-left: .375em; }
|
|
47
|
-
.ui-prose > :is(ul, ol):not([class]) li > :is(p, ul, ol) { margin-block: calc(var(--line) * .25); }
|
|
48
|
-
.ui-prose > ul:not([class]) { list-style: disc; }
|
|
49
|
-
.ui-prose > ul:not([class]) li::marker { color: var(--ui-text-disabled); font-size: .8em; }
|
|
50
|
-
.ui-prose > ol:not([class]) li::marker { color: var(--ui-text-muted); font: var(--ui-weight-regular) .875em var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
51
|
-
.ui-prose > hr { height: 1px; margin: calc(var(--line) * 1.75) 0 calc(var(--line) * 1.25); border: 0; background: var(--ui-line-divider); }
|
|
52
|
-
.ui-prose > hr + * { margin-top: 0; }
|
|
53
|
-
/* A rule an author sets before a section heading (or the legacy anchor before it) is space only: the heading's own opening already parts the sections. */
|
|
54
|
-
.ui-prose > hr:has(+ h2, + a[id]:empty + h2) { height: 0; margin: 0; background: none; }
|
|
55
|
-
.ui-prose > hr + h2 { margin-top: calc(var(--line) * 2); }
|
|
56
|
-
.ui-prose > blockquote { margin-inline: 0; padding: .25rem 0 .25rem 1.25rem; box-shadow: inset 1px 0 0 var(--ui-line-strong); color: color-mix(in oklab, var(--ui-text-strong) 50%, var(--ui-text-body)); }
|
|
57
|
-
.ui-prose > blockquote > p { margin-block: 0; } .ui-prose > blockquote > p + p { margin-top: .75em; }
|
|
58
|
-
.ui-prose > figure { margin: var(--line) 0; }
|
|
59
|
-
.ui-prose > figure:not(.ui-tray) > figcaption { margin-top: var(--ui-space-sm); color: var(--ui-text-muted); font-size: var(--ui-text-caption); line-height: var(--ui-leading-caption); }
|
|
60
|
-
|
|
61
|
-
/* Callout: one icon, one tint, a hairline — never a thick left border */
|
|
62
|
-
/* Hint: how to use the example that follows, a muted line led by its gesture */
|
|
63
|
-
.ui-hint { display: flex; align-items: flex-start; gap: var(--ui-space-xs); color: var(--ui-text-muted); font-size: var(--ui-text-small); line-height: var(--ui-leading-small); }
|
|
64
|
-
.ui-hint > svg { flex: none; width: 1rem; height: 1rem; margin-top: calc((1lh - 1rem) / 2); color: var(--ui-text-body); stroke-width: 1.5; }
|
|
65
|
-
.ui-callout { --tone: var(--ui-tone-neutral); display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--ui-space-sm); padding: .875rem var(--ui-space-md); border-radius: var(--ui-radius-lg);
|
|
66
|
-
background: color-mix(in oklab, var(--tone) 2.5%, var(--ui-surface-canvas)); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--tone) 12%, var(--ui-line-contour)); color: var(--ui-text-body); font-size: var(--ui-text-small); line-height: var(--ui-leading-small); }
|
|
67
|
-
.ui-callout > svg { width: 1rem; height: 1rem; margin-top: .21875rem; color: color-mix(in oklab, var(--tone) 80%, var(--ui-text-strong)); }
|
|
68
|
-
.ui-callout > div { min-width: 0; overflow-wrap: anywhere; }
|
|
69
|
-
.ui-callout > div > :first-child { margin-top: 0; } .ui-callout > div > :last-child { margin-bottom: 0; }
|
|
70
|
-
.ui-callout b { color: var(--ui-text-strong); font-weight: var(--ui-weight-strong); }
|
|
71
|
-
.ui-callout[data-tone="info"] { --tone: var(--ui-status-info); }
|
|
72
|
-
.ui-callout[data-tone="success"], .ui-callout[data-tone="do"] { --tone: var(--ui-status-success); }
|
|
73
|
-
.ui-callout[data-tone="warning"] { --tone: var(--ui-status-warning); }
|
|
74
|
-
.ui-callout[data-tone="danger"], .ui-callout[data-tone="dont"] { --tone: var(--ui-status-danger); }
|
|
75
|
-
}
|
|
1
|
+
/* Explicit full prose collection. Components import their own leaf stylesheet. */
|
|
2
|
+
@import './reading.css';
|
|
3
|
+
@import './callout.css';
|
|
4
|
+
@import './hint.css';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* range: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-range { --value: 50%; appearance: none; width: 100%; min-width: 6rem; height: 1.75rem; margin: 0; background: transparent; cursor: ew-resize; }
|
|
4
|
+
.ui-range::-webkit-slider-runnable-track { height: 4px; border-radius: var(--ui-radius-pill); background: linear-gradient(90deg, var(--ui-text-strong) var(--value), var(--ui-line-divider) var(--value)); }
|
|
5
|
+
.ui-range::-moz-range-track { height: 4px; border-radius: var(--ui-radius-pill); background: var(--ui-line-divider); }
|
|
6
|
+
.ui-range::-moz-range-progress { height: 4px; border-radius: var(--ui-radius-pill); background: var(--ui-text-strong); }
|
|
7
|
+
.ui-range::-webkit-slider-thumb { appearance: none; width: 16px; height: 16px; margin-top: -6px; border: 0; border-radius: 50%; background: linear-gradient(180deg, oklch(100% 0 none), oklch(96.5% .0011 265)); box-shadow: 0 0 0 1px var(--ui-line-strong), 0 1px 1px var(--ui-shade-1), 0 2px 4px -1px var(--ui-shade-2); }
|
|
8
|
+
.ui-range::-moz-range-thumb { width: 16px; height: 16px; border: 0; border-radius: 50%; background: linear-gradient(180deg, oklch(100% 0 none), oklch(96.5% .0011 265)); box-shadow: 0 0 0 1px var(--ui-line-strong), 0 1px 1px var(--ui-shade-1), 0 2px 4px -1px var(--ui-shade-2); }
|
|
9
|
+
.ui-range:focus-visible { outline: none; }
|
|
10
|
+
.ui-range:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 1px var(--ui-line-strong), 0 0 0 2px var(--ui-surface-stage), 0 0 0 4px var(--ui-focus); }
|
|
11
|
+
.ui-range:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 1px var(--ui-line-strong), 0 0 0 2px var(--ui-surface-stage), 0 0 0 4px var(--ui-focus); }
|
|
12
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* reading: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-prose { --measure: 41rem; --bleed: 2rem; --line: 2rem; color: var(--ui-text-body); font-size: var(--ui-text-base); line-height: var(--ui-leading-body); }
|
|
4
|
+
.ui-prose > :is(p, ul, ol, h2, h3, h4, blockquote, .ui-callout, .ui-disclosure, hr):not(:where(.ui-steps)) { max-width: var(--measure); }
|
|
5
|
+
/* A comparison owns the table’s outer spacing; its inner frame must not bleed a second time. */
|
|
6
|
+
.ui-prose > :is(.ui-tray, .ui-code, .ui-table, .document-comparison, .ui-params, .ui-prompt, .ui-tree) { margin-inline: calc(var(--bleed) * -1); }
|
|
7
|
+
@media (width < 52rem) { .ui-prose { --bleed: 0rem; } }
|
|
8
|
+
.ui-prose > :is(p, ul, ol, blockquote) { margin-block: calc(var(--line) * .75); }
|
|
9
|
+
.ui-prose > :is(.ui-tray, .ui-code, .ui-table, .document-comparison, .ui-callout, .ui-steps, .ui-index, .ui-logos, .ui-params, .ui-prompt, .ui-tree) { margin-block: var(--line); }
|
|
10
|
+
.ui-prose > .ui-code:has(+ .ui-code) { margin-bottom: var(--ui-space-sm); }
|
|
11
|
+
.ui-prose > .ui-code + .ui-code { margin-top: var(--ui-space-sm); }
|
|
12
|
+
.ui-prose > h2 { margin: calc(var(--line) * 2) 0 calc(var(--line) * .5); color: var(--ui-text-strong); font-size: var(--ui-text-h2); font-weight: var(--ui-weight-heading); line-height: var(--ui-leading-h2); letter-spacing: var(--ui-tracking-h2); text-wrap: balance; }
|
|
13
|
+
.ui-prose > h3 { margin: calc(var(--line) * 1.5) 0 calc(var(--line) * .375); color: var(--ui-text-strong); font-size: var(--ui-text-h3); font-weight: var(--ui-weight-heading); line-height: var(--ui-leading-h3); letter-spacing: var(--ui-tracking-h3); }
|
|
14
|
+
.ui-prose > h4 { margin: calc(var(--line) * 1.25) 0 calc(var(--line) * .25); color: var(--ui-text-strong); font-size: var(--ui-text-base); font-weight: var(--ui-weight-strong); line-height: 1.5rem; }
|
|
15
|
+
.ui-prose > h2 + h3, .ui-prose > h3 + :is(h3, h4) { margin-top: calc(var(--line) * .5); }
|
|
16
|
+
.ui-prose > :is(h2, h3) { position: relative; width: fit-content; scroll-margin-top: 5rem; }
|
|
17
|
+
.ui-prose > h2 { width: auto; }
|
|
18
|
+
.ui-prose > h2:not(:first-child)::before { content: ""; display: var(--section-rule, block); position: absolute; top: calc(var(--line) * -.875); inset-inline: 0 var(--rule-end, 0); height: 1px; background: var(--ui-line-hair); pointer-events: none; }
|
|
19
|
+
.ui-prose > :is(a[id]:empty, .sr-only):first-child + h2, .ui-prose > .ui-disclosure:not(.ui-code + *) + h2, .ui-prose > .ui-disclosure:not(.ui-code + *) + a[id]:empty + h2, .ui-prose > .ui-disclosure:not(.ui-code + *) + hr + h2, .ui-prose > .ui-disclosure:not(.ui-code + *) + hr + a[id]:empty + h2, .ui-prose > .ui-pagehead + h2, .ui-prose > .ui-pagehead + a[id]:empty + h2, .ui-prose > :has(> .ui-disclosure:last-child) + h2 { --section-rule: none; }
|
|
20
|
+
.ui-anchor { position: absolute; right: 100%; top: 50%; translate: -.375rem -50%; display: grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: var(--ui-radius-sm); color: var(--ui-text-disabled); font: var(--ui-weight-regular) .875rem/1 var(--font-family-mono); opacity: 0; text-decoration: none; transition: opacity var(--ui-duration-quick), color var(--ui-duration-quick); }
|
|
21
|
+
.ui-anchor:hover { color: var(--ui-text-muted); }
|
|
22
|
+
.ui-prose > :is(h2, h3):is(:hover, :target, :focus-within) > .ui-anchor { opacity: 1; }
|
|
23
|
+
.ui-anchor:focus-visible { opacity: 1; @apply --ui-focus-ring; outline-offset: 1px; }
|
|
24
|
+
.ui-prose > :is(p, ul, ol, blockquote, h2, h3, h4) :is(strong, b) { color: var(--ui-text-strong); font-weight: var(--ui-weight-strong); }
|
|
25
|
+
.ui-prose > :is(p, ul, ol, blockquote) a:not([class]) { color: var(--ui-text-strong); text-decoration: underline; text-decoration-color: var(--ui-line-strong); text-decoration-thickness: 1px; text-underline-offset: .24em; transition: text-decoration-color var(--ui-duration-quick); }
|
|
26
|
+
.ui-prose > :is(p, ul, ol, blockquote) a:not([class]):hover { text-decoration-color: currentColor; }
|
|
27
|
+
.ui-prose > :is(p, ul, ol, blockquote) a:not([class]):focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-xs); }
|
|
28
|
+
.ui-prose > :is(p, ul, ol, blockquote, h2, h3, h4) code:not(pre code) { padding: .125em .375em; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: color-mix(in oklab, var(--ui-text-strong) 60%, var(--ui-text-body)); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-regular) .84em/1 var(--font-family-mono); overflow-wrap: anywhere; }
|
|
29
|
+
.ui-prose > :is(h2, h3, h4) code:not(pre code) { padding: 0; background: none; box-shadow: none; color: inherit; font-size: .9em; }
|
|
30
|
+
.ui-prose > :is(ul, ol):not([class]) { padding-left: 1.25em; }
|
|
31
|
+
.ui-prose > :is(ul, ol):not([class]) li { margin-block: calc(var(--line) * .25); padding-left: .375em; }
|
|
32
|
+
.ui-prose > :is(ul, ol):not([class]) li > :is(p, ul, ol) { margin-block: calc(var(--line) * .25); }
|
|
33
|
+
.ui-prose > ul:not([class]) { list-style: disc; }
|
|
34
|
+
.ui-prose > ul:not([class]) li::marker { color: var(--ui-text-disabled); font-size: .8em; }
|
|
35
|
+
.ui-prose > ol:not([class]) li::marker { color: var(--ui-text-muted); font: var(--ui-weight-regular) .875em var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
36
|
+
.ui-prose > hr { height: 1px; margin: calc(var(--line) * 1.75) 0 calc(var(--line) * 1.25); border: 0; background: var(--ui-line-divider); }
|
|
37
|
+
.ui-prose > hr + * { margin-top: 0; }
|
|
38
|
+
.ui-prose > hr:has(+ h2, + a[id]:empty + h2) { height: 0; margin: 0; background: none; }
|
|
39
|
+
.ui-prose > hr + h2 { margin-top: calc(var(--line) * 2); }
|
|
40
|
+
.ui-prose > blockquote { margin-inline: 0; padding: .25rem 0 .25rem 1.25rem; box-shadow: inset 1px 0 0 var(--ui-line-strong); color: color-mix(in oklab, var(--ui-text-strong) 50%, var(--ui-text-body)); }
|
|
41
|
+
.ui-prose > blockquote > p { margin-block: 0; } .ui-prose > blockquote > p + p { margin-top: .75em; }
|
|
42
|
+
.ui-prose > figure { margin: var(--line) 0; }
|
|
43
|
+
.ui-prose > figure:not(.ui-tray) > figcaption { margin-top: var(--ui-space-sm); color: var(--ui-text-muted); font-size: var(--ui-text-caption); line-height: var(--ui-leading-caption); }
|
|
44
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
@prune native;
|
|
2
|
+
/* scroll: owned component styles; shared definitions come from the foundation. */
|
|
3
|
+
@layer components {
|
|
4
|
+
.ui-scroll { overflow: auto; overscroll-behavior: contain; max-height: 16rem; border-radius: var(--ui-radius-lg); background: var(--ui-surface-well); box-shadow: var(--ui-elevation-sink); }
|
|
5
|
+
.ui-scroll:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
6
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/* search-trigger: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-search-trigger { appearance: none; display: flex; align-items: center; gap: .625rem; width: 100%; height: 2.5rem; padding: 0; border: 0; border-radius: 0;
|
|
4
|
+
background: transparent; color: var(--ui-text-muted); box-shadow: inset 0 -1px 0 var(--ui-line-hair); font: var(--ui-weight-regular) var(--ui-text-small)/1 var(--font-family-sans); cursor: pointer; transition: color var(--ui-duration-quick), box-shadow var(--ui-duration-quick); }
|
|
5
|
+
.ui-search-trigger:hover { color: var(--ui-text-strong); box-shadow: inset 0 -1px 0 var(--ui-line-strong); }
|
|
6
|
+
.ui-search-trigger > .ui-kbd { box-shadow: none; }
|
|
7
|
+
.ui-search-trigger:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-sm); }
|
|
8
|
+
.ui-search-trigger > svg { flex: none; width: 15px; height: 15px; }
|
|
9
|
+
.ui-search-trigger > .ui-kbd { margin-left: auto; }
|
|
10
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* segmented: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-segmented { display: inline-flex; flex-wrap: wrap; gap: 2px; max-width: 100%; padding: 3px; border-radius: calc(var(--ui-radius-md) + 3px); background: var(--ui-surface-well); box-shadow: var(--ui-elevation-sink); }
|
|
4
|
+
.ui-segmented > :is(button, a) {
|
|
5
|
+
appearance: none; display: inline-flex; align-items: center; justify-content: center; min-height: 1.875rem; min-width: 3.5rem; padding: 0 .75rem; border: 0; border-radius: var(--ui-radius-md); background: transparent;
|
|
6
|
+
color: var(--ui-text-muted); font: var(--ui-weight-medium) .78125rem/1 var(--font-family-sans); text-decoration: none; white-space: nowrap; cursor: pointer; transition: color var(--ui-duration-quick), background-color var(--ui-duration-quick), box-shadow var(--ui-duration-quick);
|
|
7
|
+
}
|
|
8
|
+
.ui-segmented > :is(button, a):hover:not(:disabled) { color: var(--ui-text-strong); }
|
|
9
|
+
.ui-segmented > :is(button, a):is([aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="page"]) { color: var(--ui-text-strong); @apply --ui-sheet-face; box-shadow: var(--ui-elevation-rise-1); }
|
|
10
|
+
.ui-segmented > :is(button, a):focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
|
|
11
|
+
.ui-segmented > button:disabled { color: var(--ui-text-disabled); cursor: not-allowed; }
|
|
12
|
+
.ui-segmented[data-variant="underline"] { display: flex; gap: 0 var(--ui-space-lg); padding: 0; border-radius: 0; background: none; box-shadow: inset 0 -1px 0 var(--ui-line-divider); }
|
|
13
|
+
.ui-segmented[data-variant="underline"] > :is(button, a) { min-width: 0; min-height: 2.75rem; padding: 0; border-radius: 0; color: var(--ui-text-muted); font: var(--ui-weight-regular) var(--ui-text-small)/1.4 var(--font-family-sans); }
|
|
14
|
+
.ui-segmented[data-variant="underline"] > :is(button, a):is([aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="page"]) { color: var(--ui-text-strong); background: none; box-shadow: inset 0 -2px 0 var(--ui-text-strong); }
|
|
15
|
+
.ui-segmented[data-variant="underline"] > :is(button, a):focus-visible { outline-offset: -2px; border-radius: var(--ui-radius-xs); }
|
|
16
|
+
.ui-segmented[data-size="lg"] { padding: 4px; border-radius: calc(var(--ui-radius-md) + 4px); }
|
|
17
|
+
.ui-segmented[data-size="lg"] > :is(button, a) { min-height: 2.25rem; border-radius: var(--ui-radius-md); font-size: .8125rem; }
|
|
18
|
+
|
|
19
|
+
@media (pointer: coarse) {
|
|
20
|
+
.ui-segmented > button { min-height: 2.5rem; }
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/* sheet: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-sheet { position: relative; border-radius: var(--ui-radius-xl); @apply --ui-sheet-face; color: var(--ui-text-body); box-shadow: var(--ui-elevation-rise-2); }
|
|
4
|
+
.ui-sheet[data-elevation="1"] { box-shadow: var(--ui-elevation-rise-1); }
|
|
5
|
+
.ui-sheet[data-elevation="3"] { box-shadow: var(--ui-elevation-rise-3); }
|
|
6
|
+
.ui-sheet[data-elevation="flat"] { background: var(--ui-surface-sheet); box-shadow: var(--ui-elevation-flat); }
|
|
7
|
+
.ui-well { border-radius: var(--ui-radius-md); background: var(--ui-surface-well); box-shadow: var(--ui-elevation-sink); }
|
|
8
|
+
}
|
|
@@ -1,102 +1,8 @@
|
|
|
1
|
-
/*
|
|
2
|
-
@
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
/* Section links are plain words: ink marks the section being read, no pill. */
|
|
10
|
-
.ui-header-nav { display: flex; align-items: center; gap: var(--ui-space-3xs); }
|
|
11
|
-
.ui-header-nav > a { display: inline-flex; align-items: center; height: 2.25rem; padding: 0 .75rem; border-radius: var(--ui-radius-md); color: var(--ui-text-body); font-size: var(--ui-text-small); font-weight: var(--ui-weight-regular); text-decoration: none; transition: color var(--ui-duration-quick); }
|
|
12
|
-
.ui-header-nav > a:hover { color: var(--ui-text-strong); }
|
|
13
|
-
.ui-header-nav > a:is([aria-current="page"], [aria-current="true"]) { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
14
|
-
.ui-header-nav > a:focus-visible { @apply --ui-focus-ring; outline-offset: 0; }
|
|
15
|
-
/* A recent section: one small chip-washed word after its name */
|
|
16
|
-
.ui-header-nav > a > small { margin-left: var(--ui-space-2xs); padding: 1px 5px; border-radius: var(--ui-radius-xs); background: var(--ui-surface-chip); color: var(--ui-text-muted); box-shadow: inset 0 0 0 1px var(--ui-line-hair); font: var(--ui-weight-medium) .6875rem/1.4 var(--font-family-sans); letter-spacing: .02em; }
|
|
17
|
-
.ui-header-end { display: flex; align-items: center; gap: var(--ui-space-3xs); margin-left: auto; }
|
|
18
|
-
.ui-header-divider { width: 1px; height: 1rem; margin-inline: var(--ui-space-xs); background: var(--ui-line-divider); }
|
|
19
|
-
.ui-version { display: inline-flex; align-items: center; gap: var(--ui-space-3xs); height: 2.25rem; padding: 0 .375rem; border-radius: var(--ui-radius-md); color: var(--ui-text-body); font: var(--ui-weight-regular) var(--ui-text-small)/1 var(--font-family-sans); font-variant-numeric: tabular-nums; }
|
|
20
|
-
|
|
21
|
-
/* The sidebar: quiet group captions over entries hung on one hairline; the page being read inks a short bar on it. */
|
|
22
|
-
.ui-sidebar { display: grid; align-content: start; gap: var(--ui-space-lg); padding: var(--ui-space-lg) var(--ui-space-lg) var(--ui-space-2xl) var(--ui-space-xl); }
|
|
23
|
-
.ui-search-trigger { appearance: none; display: flex; align-items: center; gap: .625rem; width: 100%; height: 2.5rem; padding: 0; border: 0; border-radius: 0;
|
|
24
|
-
background: transparent; color: var(--ui-text-muted); box-shadow: inset 0 -1px 0 var(--ui-line-hair); font: var(--ui-weight-regular) var(--ui-text-small)/1 var(--font-family-sans); cursor: pointer; transition: color var(--ui-duration-quick), box-shadow var(--ui-duration-quick); }
|
|
25
|
-
.ui-search-trigger:hover { color: var(--ui-text-strong); box-shadow: inset 0 -1px 0 var(--ui-line-strong); }
|
|
26
|
-
.ui-search-trigger > .ui-kbd { box-shadow: none; }
|
|
27
|
-
.ui-search-trigger:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-sm); }
|
|
28
|
-
.ui-search-trigger > svg { flex: none; width: 15px; height: 15px; }
|
|
29
|
-
.ui-search-trigger > .ui-kbd { margin-left: auto; }
|
|
30
|
-
.ui-nav-group { display: grid; }
|
|
31
|
-
.ui-nav-group > h4 { display: flex; align-items: center; min-height: 2rem; margin: 0 0 var(--ui-space-3xs); color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
32
|
-
.ui-nav-link { position: relative; display: flex; align-items: center; min-height: 2rem; padding: .3125rem 0 .3125rem 1rem; color: var(--ui-text-muted); font-size: var(--ui-text-small); line-height: 1.4; text-decoration: none; box-shadow: inset 1px 0 0 var(--ui-line-divider); transition: color var(--ui-duration-quick); }
|
|
33
|
-
.ui-nav-link::before { content: ""; position: absolute; top: .4375rem; bottom: .4375rem; left: 0; width: 2px; margin-left: -.5px; border-radius: 1px; background: transparent; transition: background-color var(--ui-duration-quick); }
|
|
34
|
-
.ui-nav-link:hover { color: var(--ui-text-strong); }
|
|
35
|
-
.ui-nav-link:hover::before { background: var(--ui-line-mark); }
|
|
36
|
-
.ui-nav-link:is([aria-current="page"], [aria-current="true"]) { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
37
|
-
.ui-nav-link:is([aria-current="page"], [aria-current="true"])::before { background: var(--ui-text-strong); }
|
|
38
|
-
.ui-nav-link:focus-visible { @apply --ui-focus-ring; outline-offset: 1px; border-radius: var(--ui-radius-sm); }
|
|
39
|
-
.ui-nav-link > .ui-badge { margin-left: auto; }
|
|
40
|
-
|
|
41
|
-
/* One ruler: long section ticks and short subsection ticks share a right edge before the text. Titles share a second edge;
|
|
42
|
-
current location changes ink, never the tick's length or the title's position. */
|
|
43
|
-
.ui-toc { --toc-tick: 1.5rem; --toc-tick-subsection: .75rem; --toc-gap: .75rem; --toc-gutter: calc(var(--toc-tick) + var(--toc-gap)); --toc-row-padding: .5rem;
|
|
44
|
-
display: grid; align-content: start; gap: var(--ui-space-xs); padding: var(--ui-space-xl) var(--ui-space-lg); font-size: var(--ui-text-caption); }
|
|
45
|
-
.ui-toc > h4 { margin: 0 0 var(--ui-space-2xs); padding-left: var(--toc-gutter); color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
46
|
-
.ui-toc ol { display: grid; margin: 0; padding: 0; list-style: none; }
|
|
47
|
-
.ui-toc a { position: relative; display: block; padding: var(--toc-row-padding) 0 var(--toc-row-padding) var(--toc-gutter); color: var(--ui-text-muted); line-height: 1.125rem; text-decoration: none; transition: color var(--ui-duration-quick); }
|
|
48
|
-
.ui-toc a::before { content: ""; position: absolute; top: calc(var(--toc-row-padding) + .5lh - 1px); right: calc(100% - var(--toc-tick)); width: var(--toc-tick); height: 2px; border-radius: 1px; background: var(--ui-line-divider); pointer-events: none; transition: background-color var(--ui-duration-quick); }
|
|
49
|
-
.ui-toc :is(ol ol a, a[data-level="3"])::before { width: var(--toc-tick-subsection); }
|
|
50
|
-
.ui-toc a:hover { color: var(--ui-text-strong); }
|
|
51
|
-
.ui-toc a:hover::before { background: var(--ui-line-mark); }
|
|
52
|
-
.ui-toc a[aria-current="location"] { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
53
|
-
.ui-toc a[aria-current="location"]::before { background: var(--ui-text-strong); }
|
|
54
|
-
.ui-toc a:focus-visible { @apply --ui-focus-ring; outline-offset: 1px; border-radius: var(--ui-radius-xs); }
|
|
55
|
-
.ui-toc ol ol a:not([aria-current]) { color: color-mix(in oklab, var(--ui-text-muted) 72%, var(--ui-text-disabled)); }
|
|
56
|
-
.ui-toc ol ol a:not([aria-current])::before { background: var(--ui-line-hair); }
|
|
57
|
-
.ui-toc ol ol a:not([aria-current]):hover { color: var(--ui-text-strong); }
|
|
58
|
-
.ui-toc-actions { display: grid; padding: var(--ui-space-sm) 0 0 var(--toc-gutter); }
|
|
59
|
-
.ui-toc-actions a { padding: .3125rem 0; color: var(--ui-text-muted); font-size: .75rem; line-height: 1.5; }
|
|
60
|
-
.ui-toc-actions a::before { content: none; }
|
|
61
|
-
|
|
62
|
-
/* The page head: an eyebrow, the title and its lead. Space, not a rule, parts it from the reading. */
|
|
63
|
-
.ui-pagehead { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--ui-space-md); margin-bottom: var(--ui-space-2xl); }
|
|
64
|
-
.ui-pagehead-kicker { margin-bottom: calc(var(--ui-space-3xs) * -1); color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
65
|
-
.ui-pagehead h1 { margin: 0; color: var(--ui-text-strong); font-size: var(--ui-text-title); font-weight: var(--ui-weight-heading); line-height: var(--ui-leading-title); letter-spacing: var(--ui-tracking-title); text-wrap: balance; overflow-wrap: break-word; }
|
|
66
|
-
/* The lead runs a little past the reading measure: at 18px it keeps the same number of words a line. */
|
|
67
|
-
.ui-pagehead p { max-width: calc(var(--measure, 41rem) * 1.125); margin: 0; color: var(--ui-text-body); font-size: var(--ui-text-lead); line-height: var(--ui-leading-lead); letter-spacing: -.004em; text-wrap: pretty; overflow-wrap: break-word; }
|
|
68
|
-
/* A second line of the lead, at reading size. */
|
|
69
|
-
.ui-pagehead p + p:not([class]) { max-width: var(--measure, 41rem); margin-top: calc(var(--ui-space-xs) * -1); font-size: var(--ui-text-base); line-height: var(--ui-leading-body); letter-spacing: 0; }
|
|
70
|
-
|
|
71
|
-
/* The pager: the previous and next documents under one hairline, an eyebrow over each title; no boxes. */
|
|
72
|
-
.ui-pager { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ui-space-xl); margin-top: 5rem; padding-top: var(--ui-space-lg); box-shadow: inset 0 1px 0 var(--ui-line-hair); }
|
|
73
|
-
.ui-pager > a { display: grid; align-content: start; gap: var(--ui-space-2xs); color: var(--ui-text-body); text-decoration: none; transition: color var(--ui-duration-quick); }
|
|
74
|
-
.ui-pager > a:hover { color: var(--ui-text-strong); }
|
|
75
|
-
.ui-pager > a:focus-visible { @apply --ui-focus-ring; outline-offset: 4px; border-radius: var(--ui-radius-xs); }
|
|
76
|
-
.ui-pager > a[rel="next"] { justify-items: end; text-align: right; }
|
|
77
|
-
.ui-pager small { color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
78
|
-
.ui-pager b { font-weight: var(--ui-weight-regular); font-size: var(--ui-text-base); line-height: 1.5; text-wrap: balance; }
|
|
79
|
-
.ui-pager > a[rel="prev"] > b::before { content: "←"; margin-right: .5em; color: var(--ui-text-muted); }
|
|
80
|
-
.ui-pager > a[rel="next"] > b::after { content: "→"; margin-left: .5em; color: var(--ui-text-muted); }
|
|
81
|
-
.ui-pager > a:hover > b::before, .ui-pager > a:hover > b::after { color: var(--ui-text-strong); }
|
|
82
|
-
|
|
83
|
-
/* Overlay dialog (search, image preview) */
|
|
84
|
-
.ui-dialog { width: min(40rem, calc(100vw - 2rem)); max-height: min(36rem, calc(100dvh - 4rem)); padding: 0; overflow: hidden; border: 0; border-radius: var(--ui-radius-2xl); background: var(--ui-surface-float); color: var(--ui-text-body); box-shadow: var(--ui-elevation-overlay); }
|
|
85
|
-
.ui-dialog::backdrop { background: var(--ui-surface-scrim); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
|
|
86
|
-
.ui-dialog-search { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-sm); min-height: 3.5rem; padding: 0 var(--ui-space-md); box-shadow: inset 0 -1px 0 var(--ui-line-hair); }
|
|
87
|
-
.ui-dialog-search input { flex: 1 1 8rem; min-width: 0; border: 0; background: transparent; color: var(--ui-text-strong); font: var(--ui-weight-regular) 1rem/1 var(--font-family-sans); }
|
|
88
|
-
.ui-dialog-search input:focus { outline: none; }
|
|
89
|
-
@media (forced-colors: active) { .ui-dialog-search input:focus-visible { outline: 2px solid Highlight; outline-offset: 2px; } }
|
|
90
|
-
.ui-results { display: grid; gap: 2px; margin: 0; padding: var(--ui-inset); list-style: none; }
|
|
91
|
-
.ui-results > li > a { display: grid; gap: 2px; padding: .625rem .75rem; border-radius: var(--ui-radius-md); color: var(--ui-text-body); text-decoration: none; }
|
|
92
|
-
.ui-results > li > a small { color: var(--ui-text-muted); font: var(--ui-weight-regular) .75rem/1.4 var(--font-family-sans); }
|
|
93
|
-
.ui-results > li > a b { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); font-size: var(--ui-text-small); }
|
|
94
|
-
.ui-results > li > a[aria-selected="true"], .ui-results > li > a:hover { background: var(--ui-surface-chip); box-shadow: inset 0 0 0 1px var(--ui-line-hair); }
|
|
95
|
-
.ui-dialog-foot { display: flex; flex-wrap: wrap; gap: var(--ui-space-md); padding: var(--ui-space-sm) var(--ui-space-md); box-shadow: inset 0 1px 0 var(--ui-line-hair); color: var(--ui-text-muted); font-size: .71875rem; }
|
|
96
|
-
.ui-dialog-foot span { display: inline-flex; align-items: center; gap: 6px; }
|
|
97
|
-
|
|
98
|
-
.ui-pagehead-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-xs) var(--ui-space-md); padding-top: var(--ui-space-xs); color: var(--ui-text-muted); font-size: .78125rem; }
|
|
99
|
-
.ui-pagehead-meta > a { color: inherit; text-decoration: none; }
|
|
100
|
-
.ui-pagehead-meta > a:hover { color: var(--ui-text-strong); }
|
|
101
|
-
.ui-pagehead-meta > span + span::before, .ui-pagehead-meta > * + a::before { content: "·"; margin-right: var(--ui-space-md); color: var(--ui-text-disabled); }
|
|
102
|
-
}
|
|
1
|
+
/* Explicit full shell collection. Components import their own leaf stylesheet. */
|
|
2
|
+
@import './header-core.css';
|
|
3
|
+
@import './sidebar.css';
|
|
4
|
+
@import './search-trigger.css';
|
|
5
|
+
@import './toc.css';
|
|
6
|
+
@import './pagehead.css';
|
|
7
|
+
@import './pager.css';
|
|
8
|
+
@import './dialog.css';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* sidebar: owned component styles; shared definitions come from the foundation. */
|
|
2
|
+
@layer components {
|
|
3
|
+
.ui-sidebar { display: grid; align-content: start; gap: var(--ui-space-lg); padding: var(--ui-space-lg) var(--ui-space-lg) var(--ui-space-2xl) var(--ui-space-xl); }
|
|
4
|
+
.ui-nav-group { display: grid; }
|
|
5
|
+
.ui-nav-group > h4 { display: flex; align-items: center; min-height: 2rem; margin: 0 0 var(--ui-space-3xs); color: var(--ui-text-muted); @apply --ui-eyebrow-type; }
|
|
6
|
+
.ui-nav-link { position: relative; display: flex; align-items: center; min-height: 2rem; padding: .3125rem 0 .3125rem 1rem; color: var(--ui-text-muted); font-size: var(--ui-text-small); line-height: 1.4; text-decoration: none; box-shadow: inset 1px 0 0 var(--ui-line-divider); transition: color var(--ui-duration-quick); }
|
|
7
|
+
.ui-nav-link::before { content: ""; position: absolute; top: .4375rem; bottom: .4375rem; left: 0; width: 2px; margin-left: -.5px; border-radius: 1px; background: transparent; transition: background-color var(--ui-duration-quick); }
|
|
8
|
+
.ui-nav-link:hover { color: var(--ui-text-strong); }
|
|
9
|
+
.ui-nav-link:hover::before { background: var(--ui-line-mark); }
|
|
10
|
+
.ui-nav-link:is([aria-current="page"], [aria-current="true"]) { color: var(--ui-text-strong); font-weight: var(--ui-weight-medium); }
|
|
11
|
+
.ui-nav-link:is([aria-current="page"], [aria-current="true"])::before { background: var(--ui-text-strong); }
|
|
12
|
+
.ui-nav-link:focus-visible { @apply --ui-focus-ring; outline-offset: 1px; border-radius: var(--ui-radius-sm); }
|
|
13
|
+
.ui-nav-link > .ui-badge { margin-left: auto; }
|
|
14
|
+
}
|