@f5xc-salesdemos/docs-theme 2.0.0

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.
@@ -0,0 +1,731 @@
1
+ /* ===== F5 Brand Color Tokens ===== */
2
+ :root {
3
+ --f5-red: #e4002b;
4
+ --f5-red-1: #f7b2bf;
5
+ --f5-red-2: #f06680;
6
+ --f5-red-3: #a70020;
7
+ --f5-red-4: #720016;
8
+ --f5-tangerine: #f29a36;
9
+ --f5-tangerine-1: #ffe4c4;
10
+ --f5-tangerine-2: #ffbd61;
11
+ --f5-tangerine-3: #a35700;
12
+ --f5-tangerine-4: #7a4100;
13
+ --f5-river: #0e41aa;
14
+ --f5-river-1: #b7c6e5;
15
+ --f5-river-2: #6e8dcc;
16
+ --f5-river-3: #0b3180;
17
+ --f5-river-4: #072155;
18
+ --f5-raspberry: #ab2782;
19
+ --f5-raspberry-1: #e6bed9;
20
+ --f5-raspberry-2: #cd7db4;
21
+ --f5-raspberry-3: #801d62;
22
+ --f5-raspberry-4: #561441;
23
+ --f5-jade: #009639;
24
+ --f5-jade-1: #b2dfc4;
25
+ --f5-jade-2: #66c088;
26
+ --f5-jade-3: #00712b;
27
+ --f5-jade-4: #004b1d;
28
+ --f5-eggplant: #62228b;
29
+ --f5-eggplant-1: #cdabe3;
30
+ --f5-eggplant-2: #9c59c9;
31
+ --f5-eggplant-3: #822cb8;
32
+ --f5-eggplant-4: #41175d;
33
+ --f5-bay: #0072b0;
34
+ --f5-bay-1: #b2d7eb;
35
+ --f5-bay-2: #66afd7;
36
+ --f5-bay-3: #005c8d;
37
+ --f5-bay-4: #003d5f;
38
+ --f5-white: #ffffff;
39
+ --f5-white-1: #faf9f7;
40
+ --f5-white-2: #f5f5f5;
41
+ --f5-white-3: #e6e6e6;
42
+ --f5-white-4: #cccccc;
43
+ --f5-black: #000000;
44
+ --f5-black-1: #999999;
45
+ --f5-black-2: #666666;
46
+ --f5-black-3: #343434;
47
+ --f5-black-4: #222222;
48
+ }
49
+
50
+ /* ===== F5 XC Multi-Color Icon Variables ===== */
51
+ :root {
52
+ --color-N600: #0f1e57;
53
+ --color-brand: #e4002b;
54
+ --color-blue-light: #e5eaff;
55
+ --color-N200: #e6e9f3;
56
+ }
57
+
58
+ :root:not([data-theme='light']) {
59
+ --color-N600: #e5eaff;
60
+ --color-blue-light: #0e41aa;
61
+ --color-N200: #1a2a6c;
62
+ }
63
+
64
+ :root[data-theme='light'] {
65
+ --color-N600: #0f1e57;
66
+ --color-blue-light: #e5eaff;
67
+ --color-N200: #e6e9f3;
68
+ }
69
+
70
+ /* ===== Dark Mode (Starlight default) ===== */
71
+ :root {
72
+ --sl-color-white: var(--f5-white);
73
+ --sl-color-gray-1: var(--f5-white-2);
74
+ --sl-color-gray-2: var(--f5-white-4);
75
+ --sl-color-gray-3: var(--f5-black-1);
76
+ --sl-color-gray-4: var(--f5-black-2);
77
+ --sl-color-gray-5: var(--f5-black-3);
78
+ --sl-color-gray-6: var(--f5-black-4);
79
+ --sl-color-black: var(--f5-black);
80
+ --sl-color-accent-low: var(--f5-red-4);
81
+ --sl-color-accent: var(--f5-red-2);
82
+ --sl-color-accent-high: var(--f5-red-1);
83
+
84
+ --sl-color-bg-badge-default: var(--f5-bay-4);
85
+ --sl-color-bg-badge-note: var(--f5-bay-4);
86
+ --sl-color-bg-badge-danger: var(--f5-red-4);
87
+ --sl-color-bg-badge-success: var(--f5-jade-4);
88
+ --sl-color-bg-badge-caution: var(--f5-tangerine-4);
89
+ --sl-color-bg-badge-tip: var(--f5-eggplant-4);
90
+
91
+ /* ===== Design Token Scale ===== */
92
+
93
+ /* Border radius */
94
+ --f5-radius-xs: 0.1875rem;
95
+ --f5-radius-sm: 0.3125rem;
96
+ --f5-radius-md: 0.375rem;
97
+ --f5-radius-lg: 0.5rem;
98
+ --f5-radius-full: 999px;
99
+
100
+ /* Shadows — dark mode (neutral-tinted #cccccc base) */
101
+ --f5-shadow-inset: inset 0px 1px 2px 1px #cccccc0d;
102
+ --f5-shadow-low:
103
+ 0px 1px 1px 0px #cccccc0a,
104
+ 0px 2px 2px 0px #cccccc0a;
105
+ --f5-shadow-mid:
106
+ 0px 2px 3px 0px #cccccc0d,
107
+ 0px 8px 16px -10px #cccccc1a;
108
+ --f5-shadow-high:
109
+ 0px 2px 3px 0px #cccccc1a,
110
+ 0px 16px 16px -10px #cccccc1a;
111
+ --f5-shadow-higher:
112
+ 0px 2px 3px 0px #cccccc0d,
113
+ 0px 12px 28px 0px #cccccc26;
114
+
115
+ /* Borders — dark mode (alpha-transparent) */
116
+ --f5-border-faint: #f5f5f51a;
117
+ --f5-border-default: #f5f5f533;
118
+ --f5-border-strong: #cccccc66;
119
+
120
+ /* Surfaces — dark mode */
121
+ --f5-surface-hover: var(--f5-black-3);
122
+ --f5-surface-active: var(--f5-black-2);
123
+
124
+ /* Transitions */
125
+ --f5-transition-fast: 0.15s ease;
126
+ --f5-transition-base: 0.2s ease;
127
+ --f5-transition-bounce: 0.2s cubic-bezier(0.68, -0.2, 0.265, 1.15);
128
+ --f5-transition-decelerate: 0.6s cubic-bezier(0.5, 1, 0.89, 1);
129
+ --f5-transition-spring: 0.2s cubic-bezier(0.54, 1.5, 0.38, 1.11);
130
+
131
+ /* Focus rings */
132
+ --f5-focus-action: inset 0 0 0 1px var(--f5-river), 0 0 0 3px var(--f5-river-2);
133
+ --f5-focus-critical: inset 0 0 0 1px var(--f5-red-3), 0 0 0 3px var(--f5-red-2);
134
+ }
135
+
136
+ /* ===== Light Mode ===== */
137
+ :root[data-theme='light'] {
138
+ --sl-color-white: var(--f5-black-4);
139
+ --sl-color-gray-1: var(--f5-black-4);
140
+ --sl-color-gray-2: var(--f5-black-3);
141
+ --sl-color-gray-3: var(--f5-black-2);
142
+ --sl-color-gray-4: var(--f5-black-1);
143
+ --sl-color-gray-5: var(--f5-white-4);
144
+ --sl-color-gray-6: var(--f5-white-2);
145
+ --sl-color-gray-7: var(--f5-white-1);
146
+ --sl-color-black: var(--f5-white);
147
+ --sl-color-accent-low: var(--f5-red-1);
148
+ --sl-color-accent: var(--f5-red);
149
+ --sl-color-accent-high: var(--f5-red-4);
150
+
151
+ --sl-color-bg-badge-default: var(--f5-bay-1);
152
+ --sl-color-bg-badge-note: var(--f5-bay-1);
153
+ --sl-color-bg-badge-danger: var(--f5-red-1);
154
+ --sl-color-bg-badge-success: var(--f5-jade-1);
155
+ --sl-color-bg-badge-caution: var(--f5-tangerine-1);
156
+ --sl-color-bg-badge-tip: var(--f5-eggplant-1);
157
+
158
+ /* Shadows — light mode (#343434 base) */
159
+ --f5-shadow-inset: inset 0px 1px 2px 1px #3434341a;
160
+ --f5-shadow-low:
161
+ 0px 1px 1px 0px #3434340d,
162
+ 0px 2px 2px 0px #3434340d;
163
+ --f5-shadow-mid:
164
+ 0px 2px 3px 0px #3434341a,
165
+ 0px 8px 16px -10px #34343433;
166
+ --f5-shadow-high:
167
+ 0px 2px 3px 0px #34343426,
168
+ 0px 16px 16px -10px #34343433;
169
+ --f5-shadow-higher:
170
+ 0px 2px 3px 0px #3434341a,
171
+ 0px 12px 28px 0px #34343440;
172
+
173
+ /* Borders — light mode */
174
+ --f5-border-faint: #3434341a;
175
+ --f5-border-default: #34343433;
176
+ --f5-border-strong: #22222266;
177
+
178
+ /* Surfaces — light mode */
179
+ --f5-surface-hover: var(--f5-white-2);
180
+ --f5-surface-active: var(--f5-white-3);
181
+ }
182
+
183
+ /* ===== Fonts & Layout ===== */
184
+ :root {
185
+ --sl-font: "proximaNova", system-ui, "Segoe UI", Helvetica, Arial, sans-serif;
186
+ --sl-font-heading: "neusaNextProWide", system-ui, "Segoe UI", Helvetica, Arial, sans-serif;
187
+ --sl-content-width: 60rem;
188
+ --sl-sidebar-width: 15rem;
189
+
190
+ /* Typography scale mapped to F5 hierarchy */
191
+ --sl-line-height-headings: 1.1;
192
+ --sl-text-h1: var(--sl-text-5xl);
193
+ --sl-text-h2: var(--sl-text-3xl);
194
+ --sl-text-h3: var(--sl-text-2xl);
195
+ --sl-text-h4: var(--sl-text-lg);
196
+ }
197
+
198
+ h1, h2, h3, h4, h5, h6 {
199
+ font-family: var(--sl-font-heading);
200
+ }
201
+
202
+ /* F5 type hierarchy weights */
203
+ h1, h2 {
204
+ font-weight: 700;
205
+ }
206
+
207
+ h3 {
208
+ font-weight: 500;
209
+ }
210
+
211
+ h4, h5, h6 {
212
+ font-family: var(--sl-font);
213
+ font-weight: 700;
214
+ text-transform: uppercase;
215
+ letter-spacing: 0.05em;
216
+ }
217
+
218
+ @media (min-width: 72rem) {
219
+ .right-sidebar-container {
220
+ max-width: 11rem;
221
+ }
222
+ }
223
+
224
+ .mermaid-container {
225
+ border: 1px solid var(--f5-border-default);
226
+ border-radius: var(--f5-radius-lg);
227
+ padding: 1.5rem;
228
+ box-shadow: var(--f5-shadow-mid);
229
+ margin-block: 1.5rem;
230
+ background: #fff;
231
+ }
232
+
233
+ /* Force white background on Mermaid SVG for dark mode compatibility */
234
+ .mermaid-container svg {
235
+ background: white !important;
236
+ border-radius: var(--f5-radius-md);
237
+ }
238
+
239
+ /* Strip Starlight's default <pre> styling from the mermaid wrapper to prevent double border */
240
+ .mermaid-container pre.mermaid {
241
+ border: none;
242
+ padding: 0;
243
+ margin: 0;
244
+ background: transparent;
245
+ }
246
+
247
+ .starlight-aside {
248
+ border-radius: var(--f5-radius-md);
249
+ box-shadow: var(--f5-shadow-low);
250
+ }
251
+
252
+ /* Starlight Card — consistent shadow */
253
+ .card {
254
+ box-shadow: var(--f5-shadow-low);
255
+ transition: box-shadow var(--f5-transition-base),
256
+ transform var(--f5-transition-base);
257
+ }
258
+ .card:hover {
259
+ box-shadow: var(--f5-shadow-mid);
260
+ transform: translateY(-1px);
261
+ }
262
+
263
+ /* Badge — consistent shadow */
264
+ .sl-badge {
265
+ box-shadow: var(--f5-shadow-low);
266
+ }
267
+
268
+ .expressive-code .frame {
269
+ --header-border-radius: var(--f5-radius-md);
270
+ border-radius: var(--f5-radius-md);
271
+ overflow: hidden;
272
+ box-shadow: var(--f5-shadow-mid);
273
+ }
274
+
275
+ /* macOS iTerm-style window frame for terminal code blocks */
276
+ .expressive-code .frame.is-terminal {
277
+ border: 2px solid rgba(255, 255, 255, 0.15);
278
+ }
279
+
280
+ :root[data-theme="light"] .expressive-code .frame.is-terminal {
281
+ border-color: rgba(0, 0, 0, 0.2);
282
+ }
283
+
284
+ .expressive-code .frame.is-terminal .header {
285
+ padding-block: 0.25rem;
286
+ border: none;
287
+ border-radius: var(--f5-radius-md) var(--f5-radius-md) 0 0;
288
+ background: #323232 !important;
289
+ color: #ccc !important;
290
+ }
291
+
292
+ .expressive-code .frame.is-terminal .header::after {
293
+ border-bottom: none !important;
294
+ }
295
+
296
+ .expressive-code .frame.is-terminal .header::before {
297
+ -webkit-mask-image: none !important;
298
+ mask-image: none !important;
299
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 52 12'%3E%3Ccircle cx='6' cy='6' r='6' fill='%23ff5f56'/%3E%3Cpath d='M3.8 3.8L8.2 8.2M8.2 3.8L3.8 8.2' stroke='%234d0000' stroke-width='1.1' stroke-linecap='round'/%3E%3Ccircle cx='26' cy='6' r='6' fill='%23ffbd2e'/%3E%3Cpath d='M23.5 6H28.5' stroke='%23995700' stroke-width='1.1' stroke-linecap='round'/%3E%3Ccircle cx='46' cy='6' r='6' fill='%2327c93f'/%3E%3Cpolygon points='43.5,3.5 43.5,6 46,3.5' fill='%23006500'/%3E%3Cpolygon points='48.5,8.5 48.5,6 46,8.5' fill='%23006500'/%3E%3C/svg%3E") no-repeat center / contain !important;
300
+ opacity: 1 !important;
301
+ width: 52px;
302
+ height: 12px;
303
+ border-radius: 0;
304
+ box-shadow: none;
305
+ }
306
+
307
+ .expressive-code .frame.is-terminal pre {
308
+ border: none;
309
+ border-radius: 0 0 var(--f5-radius-md) var(--f5-radius-md);
310
+ }
311
+
312
+ :root:not([data-theme="light"]) .expressive-code .frame.is-terminal pre {
313
+ background: #1a1b26 !important;
314
+ }
315
+
316
+ /* Breadcrumb navigation */
317
+ .breadcrumbs {
318
+ position: sticky;
319
+ top: calc(var(--sl-nav-height, 3.5rem) + var(--sl-mobile-toc-height, 0rem));
320
+ z-index: 1;
321
+ background: var(--sl-color-black);
322
+ padding-block: 0.5rem;
323
+ padding-inline: var(--sl-content-pad-x);
324
+ display: flex;
325
+ align-items: center;
326
+ justify-content: space-between;
327
+ gap: 1rem;
328
+ }
329
+
330
+ .breadcrumbs ol {
331
+ display: flex;
332
+ flex-wrap: wrap;
333
+ list-style: none;
334
+ padding: 0;
335
+ margin: 0;
336
+ font-size: 0.85rem;
337
+ color: var(--sl-color-gray-3);
338
+ }
339
+
340
+ .breadcrumbs li + li::before {
341
+ content: '/';
342
+ padding-inline: 0.375rem;
343
+ color: var(--sl-color-gray-5);
344
+ }
345
+
346
+ .breadcrumbs a {
347
+ color: var(--sl-color-text-accent);
348
+ text-decoration: none;
349
+ }
350
+
351
+ .breadcrumbs a:hover {
352
+ text-decoration: underline;
353
+ }
354
+
355
+ .breadcrumbs [aria-current="page"] {
356
+ color: var(--sl-color-white);
357
+ }
358
+
359
+ /* Edit on GitHub pill */
360
+ .edit-link {
361
+ display: inline-flex;
362
+ align-items: center;
363
+ gap: 0.375rem;
364
+ padding: 0.25rem 0.75rem;
365
+ border-radius: var(--f5-radius-full);
366
+ font-size: 0.75rem;
367
+ font-weight: 500;
368
+ color: var(--sl-color-gray-3);
369
+ background: var(--sl-color-gray-6);
370
+ border: 1px solid var(--f5-border-default);
371
+ text-decoration: none;
372
+ white-space: nowrap;
373
+ flex-shrink: 0;
374
+ transition: color var(--f5-transition-fast),
375
+ background var(--f5-transition-fast),
376
+ border-color var(--f5-transition-fast);
377
+ }
378
+
379
+ .edit-link:hover {
380
+ color: var(--sl-color-white);
381
+ background: var(--sl-color-gray-5);
382
+ border-color: var(--sl-color-gray-4);
383
+ text-decoration: none;
384
+ }
385
+
386
+ .edit-link svg {
387
+ flex-shrink: 0;
388
+ }
389
+
390
+ /* ===== Color Swatch Styles ===== */
391
+ .swatch-grid {
392
+ display: grid;
393
+ grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr));
394
+ gap: 1rem;
395
+ margin-block: 1.5rem;
396
+ }
397
+
398
+ .swatch {
399
+ border-radius: var(--f5-radius-md);
400
+ overflow: hidden;
401
+ box-shadow: var(--f5-shadow-low);
402
+ border: 1px solid var(--f5-border-default);
403
+ }
404
+
405
+ .swatch-color {
406
+ height: 5rem;
407
+ display: flex;
408
+ align-items: flex-end;
409
+ padding: 0.5rem;
410
+ font-size: 0.75rem;
411
+ font-weight: 600;
412
+ font-family: var(--sl-font);
413
+ }
414
+
415
+ .swatch-color.text-light { color: #ffffff; }
416
+ .swatch-color.text-dark { color: #000000; }
417
+
418
+ .swatch-label {
419
+ padding: 0.5rem;
420
+ font-size: 0.7rem;
421
+ line-height: 1.4;
422
+ font-family: var(--sl-font);
423
+ background: var(--sl-color-gray-6);
424
+ color: var(--sl-color-gray-1);
425
+ }
426
+
427
+ .swatch-label code {
428
+ display: block;
429
+ font-size: 0.65rem;
430
+ color: var(--sl-color-gray-3);
431
+ }
432
+
433
+ /* ===== Brand Icon Grid Styles ===== */
434
+ .icon-grid {
435
+ display: grid;
436
+ grid-template-columns: repeat(auto-fill, minmax(7rem, 1fr));
437
+ gap: 1rem;
438
+ margin-block: 1.5rem;
439
+ }
440
+
441
+ .icon-card {
442
+ border-radius: var(--f5-radius-md);
443
+ overflow: hidden;
444
+ box-shadow: var(--f5-shadow-low);
445
+ border: 1px solid var(--f5-border-default);
446
+ text-align: center;
447
+ margin: 0;
448
+ }
449
+
450
+ .icon-card-image {
451
+ padding: 0;
452
+ background: var(--sl-color-gray-7, #faf9f7);
453
+ }
454
+
455
+ :root:not([data-theme='light']) .icon-card-image {
456
+ background: var(--sl-color-gray-6);
457
+ }
458
+
459
+ .icon-card-image img {
460
+ display: block;
461
+ width: 100%;
462
+ height: auto;
463
+ }
464
+
465
+ /* Invert near-black SVGs for dark mode visibility */
466
+ :root:not([data-theme='light']) .icon-card-image img {
467
+ filter: invert(1);
468
+ }
469
+
470
+ /* Preserve original colors for branded/color-variant icons in dark mode */
471
+ :root:not([data-theme='light']) .icon-card-image.no-invert img {
472
+ filter: none;
473
+ }
474
+
475
+ .icon-card-label {
476
+ margin: 0;
477
+ padding: 0.375rem 0.5rem;
478
+ font-size: 0.65rem;
479
+ line-height: 1.3;
480
+ font-family: var(--sl-font);
481
+ background: var(--sl-color-gray-6);
482
+ color: var(--sl-color-gray-1);
483
+ word-break: break-word;
484
+ }
485
+
486
+ /* ===== Scroll-to-Top Button Size Override ===== */
487
+ .scroll-to-top-button {
488
+ width: 36px !important;
489
+ height: 36px !important;
490
+ }
491
+ .scroll-to-top-button svg {
492
+ width: 20px !important;
493
+ height: 20px !important;
494
+ }
495
+ .scroll-to-top-button .scroll-progress-ring {
496
+ width: 36px !important;
497
+ height: 36px !important;
498
+ }
499
+ .scroll-to-top-button .scroll-progress-ring circle {
500
+ cx: 18;
501
+ cy: 18;
502
+ r: 16;
503
+ }
504
+
505
+ /* ===== Prevent Scalar API Viewer Body Pollution ===== */
506
+ body.dark-mode,
507
+ body.light-mode {
508
+ background-color: var(--sl-color-bg) !important;
509
+ color: var(--sl-color-text) !important;
510
+ }
511
+ body {
512
+ --scalar-background-1: unset;
513
+ --scalar-background-2: unset;
514
+ --scalar-background-3: unset;
515
+ }
516
+
517
+ /* ===== Phase 2: Sidebar Navigation Enhancement ===== */
518
+ .sidebar-content a {
519
+ border-radius: var(--f5-radius-sm);
520
+ transition: background-color var(--f5-transition-fast),
521
+ color var(--f5-transition-fast);
522
+ }
523
+
524
+ .sidebar-content a:hover {
525
+ background-color: var(--f5-surface-hover);
526
+ }
527
+
528
+ .sidebar-content a[aria-current="page"] {
529
+ background-color: var(--f5-surface-active);
530
+ color: var(--sl-color-white);
531
+ font-weight: 600;
532
+ border-inline-start: 3px solid var(--sl-color-accent);
533
+ padding-inline-start: calc(0.5rem - 3px);
534
+ }
535
+
536
+ /* ===== Phase 3: Card Hover Effects + Link Transitions ===== */
537
+ .swatch, .icon-card {
538
+ transition: box-shadow var(--f5-transition-base),
539
+ transform var(--f5-transition-base);
540
+ }
541
+
542
+ .swatch:hover, .icon-card:hover {
543
+ box-shadow: var(--f5-shadow-mid);
544
+ transform: translateY(-1px);
545
+ }
546
+
547
+ .sl-markdown-content a {
548
+ transition: color var(--f5-transition-fast);
549
+ }
550
+
551
+ /* ===== Phase 4: Button Component System ===== */
552
+ .btn-primary {
553
+ display: inline-flex;
554
+ align-items: center;
555
+ gap: 0.5rem;
556
+ background: var(--f5-red);
557
+ color: var(--f5-white);
558
+ border: none;
559
+ border-radius: var(--f5-radius-sm);
560
+ padding: 0.625rem 1rem;
561
+ min-height: 2.5rem;
562
+ font-weight: 500;
563
+ font-size: 0.875rem;
564
+ font-family: var(--sl-font);
565
+ cursor: pointer;
566
+ text-decoration: none;
567
+ transition: background-color var(--f5-transition-fast),
568
+ box-shadow var(--f5-transition-fast);
569
+ }
570
+ .btn-primary:hover {
571
+ background: var(--f5-red-3);
572
+ box-shadow: var(--f5-shadow-low);
573
+ text-decoration: none;
574
+ color: var(--f5-white);
575
+ }
576
+
577
+ .btn-secondary {
578
+ display: inline-flex;
579
+ align-items: center;
580
+ gap: 0.5rem;
581
+ background: transparent;
582
+ color: var(--sl-color-gray-2);
583
+ border: 1px solid var(--f5-border-default);
584
+ border-radius: var(--f5-radius-sm);
585
+ padding: 0.625rem 1rem;
586
+ min-height: 2.5rem;
587
+ font-weight: 500;
588
+ font-size: 0.875rem;
589
+ font-family: var(--sl-font);
590
+ cursor: pointer;
591
+ text-decoration: none;
592
+ transition: background-color var(--f5-transition-fast),
593
+ border-color var(--f5-transition-fast);
594
+ }
595
+ .btn-secondary:hover {
596
+ background: var(--f5-surface-hover);
597
+ border-color: var(--f5-border-strong);
598
+ text-decoration: none;
599
+ }
600
+
601
+ .btn-tertiary {
602
+ display: inline-flex;
603
+ align-items: center;
604
+ gap: 0.5rem;
605
+ background: transparent;
606
+ color: var(--sl-color-accent);
607
+ border: none;
608
+ border-radius: var(--f5-radius-sm);
609
+ padding: 0.625rem 1rem;
610
+ min-height: 2.5rem;
611
+ font-weight: 500;
612
+ font-size: 0.875rem;
613
+ font-family: var(--sl-font);
614
+ cursor: pointer;
615
+ text-decoration: none;
616
+ transition: background-color var(--f5-transition-fast);
617
+ }
618
+ .btn-tertiary:hover {
619
+ background: var(--f5-surface-hover);
620
+ text-decoration: none;
621
+ }
622
+
623
+ .btn-sm { padding: 0.375rem 0.75rem; font-size: 0.8125rem; min-height: 2rem; }
624
+ .btn-lg { padding: 0.75rem 1.5rem; font-size: 1rem; min-height: 3rem; }
625
+
626
+ .btn-critical {
627
+ display: inline-flex;
628
+ align-items: center;
629
+ gap: 0.5rem;
630
+ background: var(--f5-red-3);
631
+ color: var(--f5-white);
632
+ border: none;
633
+ border-radius: var(--f5-radius-sm);
634
+ padding: 0.625rem 1rem;
635
+ min-height: 2.5rem;
636
+ font-weight: 500;
637
+ font-size: 0.875rem;
638
+ font-family: var(--sl-font);
639
+ cursor: pointer;
640
+ text-decoration: none;
641
+ transition: background-color var(--f5-transition-fast),
642
+ box-shadow var(--f5-transition-fast);
643
+ }
644
+ .btn-critical:hover {
645
+ background: var(--f5-red-4);
646
+ box-shadow: var(--f5-shadow-low);
647
+ text-decoration: none;
648
+ color: var(--f5-white);
649
+ }
650
+ .btn-critical:focus-visible {
651
+ box-shadow: var(--f5-focus-critical);
652
+ }
653
+
654
+ /* ===== Phase 5: Hero Gradients ===== */
655
+ .hero-gradient-primary {
656
+ background: linear-gradient(135deg, var(--f5-river-2) 0%, var(--f5-river) 100%);
657
+ }
658
+
659
+ .hero-gradient-eggplant {
660
+ background: linear-gradient(135deg, var(--f5-eggplant-2) 0%, var(--f5-eggplant) 100%);
661
+ }
662
+
663
+ .hero-gradient-red {
664
+ background: linear-gradient(135deg, var(--f5-red-2) 0%, var(--f5-red) 100%);
665
+ }
666
+
667
+ :root[data-theme='light'] .hero-gradient-faint {
668
+ background: linear-gradient(180deg, #faf9f7 0%, #f5f5f5 100%);
669
+ }
670
+ :root:not([data-theme='light']) .hero-gradient-faint {
671
+ background: linear-gradient(180deg, #222222 0%, #000000 100%);
672
+ }
673
+
674
+ .hero-fade {
675
+ position: relative;
676
+ }
677
+ .hero-fade::after {
678
+ content: '';
679
+ position: absolute;
680
+ bottom: 0;
681
+ left: 0;
682
+ right: 0;
683
+ height: 30%;
684
+ background: linear-gradient(to bottom, transparent, var(--sl-color-black));
685
+ pointer-events: none;
686
+ }
687
+
688
+ .hero-vignette { position: relative; }
689
+ .hero-vignette::after {
690
+ content: '';
691
+ position: absolute;
692
+ inset: 0;
693
+ background: radial-gradient(ellipse at center, transparent 40%, rgba(0, 0, 0, 0.15) 100%);
694
+ pointer-events: none;
695
+ }
696
+
697
+ /* ===== Phase 6: Focus Rings + Final Transition Polish ===== */
698
+ a:focus-visible,
699
+ button:focus-visible,
700
+ input:focus-visible,
701
+ select:focus-visible,
702
+ textarea:focus-visible,
703
+ summary:focus-visible {
704
+ outline: none;
705
+ box-shadow: var(--f5-focus-action);
706
+ }
707
+
708
+ .breadcrumbs a {
709
+ transition: color var(--f5-transition-fast);
710
+ }
711
+
712
+ .social-links a {
713
+ transition: opacity var(--f5-transition-base),
714
+ color var(--f5-transition-base);
715
+ }
716
+
717
+ /* Widen mega-menu flyout to prevent title word-wrap in two-column layouts.
718
+ Radix JS sets --radix-navigation-menu-viewport-width based on intrinsic
719
+ content measurement (~320px), so max-width alone cannot force expansion.
720
+ We override min-width to ensure two-column grids have adequate room. */
721
+ .smm-viewport {
722
+ min-width: min(90vw, 650px);
723
+ max-width: min(90vw, 800px);
724
+ }
725
+
726
+ /* Scale mega-menu icons to match the height of the title + description text block */
727
+ .smm-link-icon {
728
+ width: 2.5rem;
729
+ height: 2.5rem;
730
+ margin-top: 0;
731
+ }