microsoft/hve-core

Public

mirrored fromhttps://github.com/microsoft/hve-coreAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/docs-update-scripts-linting-readme

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

docs/docusaurus/src/css/custom.css

386lines · modecode

1/**
2 * MS Learn Architecture Center Color System
3 * Three-blue palette: #005ba1 (hero), #0078d4 (cards), #0f6cbd (primary)
4 * Dual-layer: Infima overrides + custom --ms-learn-* properties
5 */
6
7@import 'remark-github-blockquote-alert/alert.css';
8
9/* Segoe UI Variable web font (matches MS Learn) */
10@font-face {
11 font-family: 'Segoe UI Variable Text';
12 src: url('https://learn.microsoft.com/static/third-party/SegoeUIVariable/SegoeUI-VF.ttf') format('truetype-variations');
13 font-weight: 100 700;
14 font-style: normal;
15 font-display: swap;
16}
17
18@font-face {
19 font-family: 'SegoeUI';
20 src: url('https://learn.microsoft.com/static/third-party/SegoeUIWeb/1.01.206/SegoeUI-Roman-VF_web.woff2') format('woff2');
21 font-weight: 100 700;
22 font-style: normal;
23 font-display: swap;
24}
25
26/* Layer 1: Infima variable overrides */
27:root {
28 --ifm-color-primary: #0f6cbd;
29 --ifm-color-primary-dark: #115ea3;
30 --ifm-color-primary-darker: #0c3b5e;
31 --ifm-color-primary-darkest: #0a2e4a;
32 --ifm-color-primary-light: #2886c7;
33 --ifm-color-primary-lighter: #479ef5;
34 --ifm-color-primary-lightest: #96c6fa;
35 --ifm-background-color: #ffffff;
36 --ifm-font-color-base: #161616;
37 --ifm-link-color: #0065b3;
38 --ifm-footer-background-color: #e8e6df;
39 --ifm-card-background-color: #ffffff;
40 --ifm-code-font-size: 95%;
41 --ifm-font-family-base: 'Segoe UI', 'Segoe UI Variable Text', -apple-system, 'system-ui', 'Helvetica Neue', Helvetica, Arial, sans-serif;
42 --ifm-heading-font-family: 'Segoe UI', 'Segoe UI Variable Text', -apple-system, 'system-ui', 'Helvetica Neue', Helvetica, Arial, sans-serif;
43 --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
44
45 /* Heading sizes to match MS Learn */
46 --ifm-h1-font-size: 2.5rem;
47 --ifm-h2-font-size: 1.125rem;
48 --ifm-h3-font-size: 1rem;
49 --ifm-h4-font-size: 0.875rem;
50 --ifm-heading-font-weight: 600;
51 --ifm-line-height-base: 1.3;
52
53 /* Layer 2: Custom MS Learn properties */
54 --ms-learn-hero-bg: #005ba1;
55 --ms-learn-hero-gradient: linear-gradient(174.2deg, #005ba1 0%, #004d88 66.72%, #003e6e);
56 --ms-learn-hero-text: #ffffff;
57 --ms-learn-hero-pattern: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' fill='none'%3E%3Cpath d='M8 6l10 10m0-10L8 16M38 36l10 10m0-10L38 46' stroke='%23000' stroke-opacity='0.08' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
58 --ms-learn-card-accent: #0078d4;
59 --ms-learn-card-border: #e6e6e6;
60 --ms-learn-text-subtle: #505050;
61 --ms-learn-section-bg: #f2f2f2;
62 --ms-learn-footer-bg: #e8e6df;
63 --ms-learn-visited-link: #624991;
64 --ms-learn-success: #107c10;
65 --ms-learn-danger: #bc2f32;
66}
67
68/* Link hover: MS Learn style (darker color + underline) */
69a:hover {
70 color: var(--ifm-color-primary-dark);
71 text-decoration: underline;
72}
73
74/* No underline on card links */
75a[class*="cardContainer"]:hover,
76a[class*="card"]:hover {
77 text-decoration: none;
78}
79
80a:visited {
81 color: inherit;
82}
83
84/* WI-06 / SC 1.4.1: content links carry an underline so color is not the sole
85 means of distinguishing them from surrounding text */
86.markdown a:not([class*='card']):not([class*='button']) {
87 text-decoration: underline;
88}
89
90/* WI-06 / SC 2.4.7 + 1.4.11: visible keyboard focus indicator (>=3:1 against
91 the page background in both themes via --ifm-color-primary) */
92a:focus-visible,
93button:focus-visible,
94.navbar__link:focus-visible,
95.menu__link:focus-visible,
96.pagination-nav__link:focus-visible {
97 outline: 2px solid var(--ifm-color-primary);
98 outline-offset: 2px;
99 border-radius: 2px;
100}
101
102/* Navbar link hover: no underline in nav */
103.navbar__link:hover {
104 text-decoration: none;
105}
106
107.navbar__link:visited {
108 color: inherit;
109}
110
111.navbar__search kbd {
112 background-color: #ebedf0;
113 border-color: #6b7680;
114 box-shadow: inset 0 -1px 0 #6b7680;
115 color: #4a5560;
116}
117
118/* Navbar: MS Learn-style sizing */
119.navbar {
120 height: 54px;
121 padding: 0 24px;
122}
123
124.navbar__brand {
125 gap: 0;
126}
127
128.navbar__logo {
129 margin-right: 8px;
130 padding-right: 8px;
131 border-right: 2px solid #161616;
132 height: 24px;
133}
134
135.navbar__title {
136 font-size: 20px;
137 font-weight: 600;
138}
139
140.navbar__brand:hover {
141 text-decoration: none;
142}
143
144.navbar__brand:visited,
145.navbar__brand {
146 color: inherit;
147}
148
149.navbar__title:hover {
150 text-decoration: underline;
151 text-underline-offset: 4px;
152}
153
154.navbar__link {
155 font-size: 14px;
156 font-weight: 400;
157}
158
159.dropdown > .navbar__link {
160 font-size: 14px;
161 font-weight: 400;
162 line-height: 18.2px;
163 padding: 4px 12px;
164 display: block;
165}
166
167.dropdown.navbar__item {
168 padding: 0;
169}
170
171/* Replace filled triangle dropdown arrow with chevron - only on dropdown items */
172.navbar__link[aria-expanded]::after {
173 border: none;
174 content: '';
175 display: inline-block;
176 width: 5px;
177 height: 5px;
178 border-right: 1.5px solid currentColor;
179 border-bottom: 1.5px solid currentColor;
180 transform: rotate(45deg) translateY(-4px);
181 margin-left: 4px;
182 vertical-align: middle;
183}
184
185/* Navbar dark mode */
186[data-theme='dark'] .navbar {
187 background-color: #1f1f1f;
188 border-bottom: 1px solid var(--ms-learn-card-border);
189}
190
191[data-theme='dark'] .navbar__logo {
192 border-right-color: #fff;
193}
194
195[data-theme='dark'] .navbar__title {
196 color: #fff;
197}
198
199[data-theme='dark'] .navbar__link {
200 color: #fff;
201}
202
203[data-theme='dark'] .navbar__link:hover {
204 color: #75b6e7;
205}
206
207/* Sidebar: MS Learn-style */
208.menu__link {
209 font-size: 14px;
210 font-weight: 400;
211 line-height: 25.6px;
212 padding: 2px 0 2px 16px;
213 color: var(--ifm-font-color-base);
214}
215
216.menu__link:hover {
217 color: inherit;
218}
219
220.menu__link:visited {
221 color: inherit;
222}
223
224.menu__link--active {
225 font-weight: 600;
226 color: var(--ifm-font-color-base);
227 background-color: var(--ms-learn-section-bg);
228}
229
230[data-theme='dark'] .menu__link {
231 color: #e6e6e6;
232}
233
234.menu__list-item-collapsible > .menu__link {
235 font-weight: 400;
236}
237
238/* Move caret/chevron to left side of label */
239.menu__list-item-collapsible {
240 flex-direction: row;
241}
242
243.menu__caret {
244 order: -1;
245 padding: 0;
246 margin-right: -4px;
247 transform: scale(0.5);
248}
249
250.menu__link--sublist {
251 padding-left: 4px;
252}
253
254/* Child items indented */
255.menu__list .menu__list {
256 margin-left: 16px;
257 padding-left: 0;
258}
259
260/* Sidebar container */
261.menu {
262 padding: 0 24px 24px;
263}
264
265.theme-doc-sidebar-menu {
266 position: sticky;
267 top: 24px;
268}
269
270/* Footer: MS Learn-style warm gray background */
271.footer--dark {
272 background-color: var(--ms-learn-footer-bg);
273 color: var(--ifm-font-color-base);
274}
275
276.footer--dark .footer__title {
277 color: var(--ifm-font-color-base);
278}
279
280.footer--dark .footer__link-item {
281 color: var(--ifm-link-color);
282}
283
284.footer--dark .footer__copyright {
285 color: var(--ms-learn-text-subtle);
286}
287
288/* Breadcrumbs: MS Learn-style spacing */
289.breadcrumbs__item:not(:last-child)::after {
290 margin: 0 0.5rem;
291}
292
293.breadcrumbs__link {
294 font-size: 14px;
295 color: var(--ifm-link-color);
296}
297
298/* Content area padding */
299.theme-doc-markdown {
300 padding: 24px 0;
301}
302
303/* TOC: "In this article" heading on right-side TOC */
304.table-of-contents {
305 border-left: 2px solid var(--ms-learn-card-border);
306 padding-left: 1rem;
307}
308
309.table-of-contents::before {
310 content: 'In this article';
311 display: block;
312 font-size: 14px;
313 font-weight: 600;
314 color: var(--ifm-font-color-base);
315 margin-bottom: 0.5rem;
316 text-transform: uppercase;
317 letter-spacing: 0.05em;
318}
319
320/* Article metadata styling */
321.theme-doc-markdown header + div {
322 color: var(--ms-learn-text-subtle);
323 font-size: 0.875rem;
324 margin-bottom: 1.5rem;
325}
326
327/* Generated-index cards: MS Learn-style treatment */
328.docCard {
329 border: 1px solid var(--ms-learn-card-border);
330 border-radius: 4px;
331 transition: box-shadow 0.2s;
332}
333
334.docCard:hover {
335 box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
336}
337
338.docCard a:hover {
339 text-decoration: none;
340}
341
342/* Dark mode: derived from MS Learn dark theme (extracted via Chrome DevTools) */
343[data-theme='dark'] {
344 --ifm-color-primary: #75b6e7;
345 --ifm-color-primary-dark: #479ef5;
346 --ifm-color-primary-darker: #2886c7;
347 --ifm-color-primary-darkest: #0f6cbd;
348 --ifm-color-primary-light: #96c6fa;
349 --ifm-color-primary-lighter: #b8d7f5;
350 --ifm-color-primary-lightest: #cfe4fa;
351 --ifm-background-color: #1f1f1f;
352 --ifm-font-color-base: #ffffff;
353 /* WI-06: lighter link tone for additional dark-mode contrast margin (~11:1 on #1f1f1f) */
354 --ifm-link-color: #b8d7f5;
355 --ifm-footer-background-color: #091f2c;
356 --ifm-card-background-color: #091f2c;
357 --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
358
359 --ms-learn-hero-bg: #1a6fb5;
360 --ms-learn-hero-gradient: linear-gradient(174.2deg, #1a6fb5 0%, #115ea3 66.72%, #0c3b5e);
361 --ms-learn-hero-text: #ffffff;
362 --ms-learn-card-accent: #75b6e7;
363 --ms-learn-card-border: #404040;
364 --ms-learn-text-subtle: #d2d2d2;
365 --ms-learn-section-bg: #292929;
366 --ms-learn-footer-bg: #091f2c;
367 --ms-learn-visited-link: #ac7ee1;
368 --ms-learn-success: #2ea043;
369 --ms-learn-danger: #f85149;
370}
371
372/* WI-07: search dropdown muted-text contrast.
373 @easyops-cn/docusaurus-search-local colors the breadcrumb path and the
374 "See all results" footer link via `var(--search-local-muted-color, ...)`,
375 whose default (#969faf) fails WCAG 1.4.3 against both the popup (#ffffff) and
376 footer (#f5f6f7) backgrounds in light mode and against the dark popup in dark
377 mode. Overriding the variable raises every consumer above 4.5:1 in one place,
378 avoiding a specificity battle with the library's hashed-class rules. */
379:root {
380 --search-local-muted-color: #505050;
381}
382
383[data-theme='dark'] {
384 --search-local-muted-color: #b8d7f5;
385}
386
387