@dataengineeringformachinelearning/viking-ui 4.0.4 → 4.0.6

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.
Files changed (246) hide show
  1. package/README.md +35 -11
  2. package/dist/README.md +35 -11
  3. package/dist/design-tokens.css +300 -85
  4. package/dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs +100 -64
  5. package/dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs.map +1 -1
  6. package/dist/icons.js +306 -0
  7. package/dist/package.json +24 -5
  8. package/{src/lib/site-drakkar/site-drakkar.config.ts → dist/site-drakkar.js} +64 -130
  9. package/dist/src/tokens/viking-tokens.json +9 -7
  10. package/dist/types/dataengineeringformachinelearning-viking-ui.d.ts +97 -3
  11. package/dist/viking-components.css +161 -70
  12. package/dist/viking-tokens.json +9 -7
  13. package/dist/viking-ui-elements.js +44 -32
  14. package/dist/viking-ui.css +1 -1
  15. package/dist/web-components.js +44 -32
  16. package/package.json +30 -8
  17. package/dist/scripts/build-web-components.mjs +0 -37
  18. package/dist/src/web/badge/viking-badge-wc.ts +0 -116
  19. package/dist/src/web/button/viking-button-wc.ts +0 -165
  20. package/dist/src/web/callout/viking-callout-wc.ts +0 -105
  21. package/dist/src/web/card/viking-card-wc.ts +0 -67
  22. package/dist/src/web/core/base.ts +0 -56
  23. package/dist/src/web/core/dom.ts +0 -53
  24. package/dist/src/web/core/icons-inline.ts +0 -44
  25. package/dist/src/web/core/styles.ts +0 -1261
  26. package/dist/src/web/core/types.ts +0 -19
  27. package/dist/src/web/field/viking-field-wc.ts +0 -154
  28. package/dist/src/web/index.ts +0 -73
  29. package/dist/src/web/input/viking-input-wc.ts +0 -211
  30. package/dist/src/web/modal/viking-modal-wc.ts +0 -187
  31. package/dist/src/web/search-palette/viking-search-palette-wc.ts +0 -495
  32. package/dist/src/web/select/viking-select-wc.ts +0 -218
  33. package/dist/src/web/suite-header/viking-suite-header-wc.ts +0 -729
  34. package/dist/src/web/suite-search-palette/viking-suite-search-palette-wc.ts +0 -234
  35. package/dist/src/web/theme-toggle/viking-theme-toggle-wc.ts +0 -139
  36. package/dist/src/web/types.ts +0 -37
  37. package/dist/src/web/web-components.spec.ts +0 -297
  38. package/src/assets/drakkar-favicon.svg +0 -17
  39. package/src/assets/fonts/inter/InterVariable-Italic.woff2 +0 -0
  40. package/src/assets/fonts/inter/InterVariable.woff2 +0 -0
  41. package/src/core/brand/deml-lockup.svg +0 -5
  42. package/src/core/brand/deml-mark-compact.svg +0 -4
  43. package/src/core/brand/deml-mark-filled.svg +0 -3
  44. package/src/core/brand/deml-mark-outline.svg +0 -4
  45. package/src/core/brand-icons.ts +0 -62
  46. package/src/core/icons.spec.ts +0 -52
  47. package/src/core/icons.ts +0 -206
  48. package/src/core/integration-brand-icons.ts +0 -77
  49. package/src/core/lucide-paths.generated.ts +0 -130
  50. package/src/core/types.ts +0 -85
  51. package/src/core/uid.ts +0 -7
  52. package/src/elements/button/viking-button.ts +0 -201
  53. package/src/elements/card/viking-card.ts +0 -60
  54. package/src/elements/core/dom.ts +0 -33
  55. package/src/elements/core/styles.ts +0 -28
  56. package/src/elements/modal/viking-modal.ts +0 -154
  57. package/src/index.ts +0 -1
  58. package/src/lib/accordion/accordion.ts +0 -126
  59. package/src/lib/app-header/app-header.scss +0 -274
  60. package/src/lib/app-header/app-header.ts +0 -43
  61. package/src/lib/app-sidebar/app-sidebar.scss +0 -415
  62. package/src/lib/app-sidebar/app-sidebar.ts +0 -29
  63. package/src/lib/auth-panel/auth-panel.spec.ts +0 -132
  64. package/src/lib/auth-panel/auth-panel.ts +0 -228
  65. package/src/lib/autocomplete/autocomplete.ts +0 -223
  66. package/src/lib/avatar/avatar.ts +0 -126
  67. package/src/lib/badge/badge.ts +0 -182
  68. package/src/lib/bar/bar.ts +0 -31
  69. package/src/lib/brand/brand.ts +0 -60
  70. package/src/lib/breadcrumbs/breadcrumbs.ts +0 -81
  71. package/src/lib/button/button-group.ts +0 -40
  72. package/src/lib/button/button.scss +0 -119
  73. package/src/lib/button/button.ts +0 -98
  74. package/src/lib/calendar/calendar.ts +0 -253
  75. package/src/lib/callout/callout.ts +0 -211
  76. package/src/lib/card/card-title.spec.ts +0 -27
  77. package/src/lib/card/card-title.ts +0 -50
  78. package/src/lib/card/card.ts +0 -200
  79. package/src/lib/carousel/carousel.ts +0 -206
  80. package/src/lib/chart/chart-zoom.spec.ts +0 -65
  81. package/src/lib/chart/chart-zoom.ts +0 -71
  82. package/src/lib/chart/chart.ts +0 -1257
  83. package/src/lib/chart-card-header/chart-card-header.ts +0 -80
  84. package/src/lib/chart-empty-state/chart-empty-state.ts +0 -146
  85. package/src/lib/chart-panel/chart-panel.ts +0 -133
  86. package/src/lib/checkbox/checkbox.ts +0 -139
  87. package/src/lib/color-picker/color-picker.ts +0 -148
  88. package/src/lib/command/command.ts +0 -260
  89. package/src/lib/composer/composer.ts +0 -180
  90. package/src/lib/confirm-dialog/confirm-dialog.ts +0 -163
  91. package/src/lib/confirm-dialog/dialog.service.ts +0 -79
  92. package/src/lib/context/context.ts +0 -75
  93. package/src/lib/core/brand-icons.ts +0 -62
  94. package/src/lib/core/cva.ts +0 -33
  95. package/src/lib/core/icons.ts +0 -206
  96. package/src/lib/core/integration-brand-icons.ts +0 -77
  97. package/src/lib/core/lucide-paths.generated.ts +0 -130
  98. package/src/lib/date-picker/date-picker.ts +0 -139
  99. package/src/lib/dropdown/dropdown.ts +0 -188
  100. package/src/lib/editor/editor.ts +0 -170
  101. package/src/lib/empty-state/empty-state.ts +0 -100
  102. package/src/lib/fab/fab.ts +0 -76
  103. package/src/lib/field/field.ts +0 -111
  104. package/src/lib/file-upload/file-upload.ts +0 -208
  105. package/src/lib/footer/footer.scss +0 -162
  106. package/src/lib/footer/footer.ts +0 -28
  107. package/src/lib/form-section/form-section.ts +0 -200
  108. package/src/lib/forms.spec.ts +0 -92
  109. package/src/lib/gauge-arc/gauge-arc.ts +0 -85
  110. package/src/lib/hud-panel/hud-panel.ts +0 -27
  111. package/src/lib/icon/icon.ts +0 -284
  112. package/src/lib/icon-badge/icon-badge.ts +0 -87
  113. package/src/lib/icon-heading/icon-heading.spec.ts +0 -32
  114. package/src/lib/icon-heading/icon-heading.ts +0 -38
  115. package/src/lib/icon-text/icon-text.ts +0 -120
  116. package/src/lib/input/input.ts +0 -119
  117. package/src/lib/kanban/kanban.ts +0 -211
  118. package/src/lib/kbd/kbd.ts +0 -32
  119. package/src/lib/label/label.ts +0 -39
  120. package/src/lib/loading-overlay/loading-overlay.ts +0 -80
  121. package/src/lib/menubar/menubar.ts +0 -77
  122. package/src/lib/metric-card/metric-card.ts +0 -33
  123. package/src/lib/modal/modal.ts +0 -207
  124. package/src/lib/native-select/native-select.ts +0 -124
  125. package/src/lib/navbar/navbar.ts +0 -124
  126. package/src/lib/navigation-menu/navigation-menu.ts +0 -116
  127. package/src/lib/otp-input/otp-input.ts +0 -164
  128. package/src/lib/page-back-link/page-back-link.ts +0 -74
  129. package/src/lib/page-header/page-header.ts +0 -70
  130. package/src/lib/pagination/pagination.ts +0 -157
  131. package/src/lib/pillbox/pillbox.ts +0 -157
  132. package/src/lib/popover/popover.ts +0 -92
  133. package/src/lib/profile/profile.ts +0 -73
  134. package/src/lib/progress/progress.ts +0 -123
  135. package/src/lib/radio/radio.ts +0 -132
  136. package/src/lib/ring-gauge/ring-gauge.ts +0 -75
  137. package/src/lib/scroll-area/scroll-area.ts +0 -57
  138. package/src/lib/search-palette/search-palette.scss +0 -288
  139. package/src/lib/search-palette/search-palette.ts +0 -114
  140. package/src/lib/select/select.ts +0 -292
  141. package/src/lib/separator/separator.ts +0 -59
  142. package/src/lib/sheet/sheet.ts +0 -192
  143. package/src/lib/sidebar-nav/sidebar-nav.scss +0 -218
  144. package/src/lib/sidebar-nav/sidebar-nav.ts +0 -158
  145. package/src/lib/site-drakkar/site-footer.ts +0 -133
  146. package/src/lib/site-drakkar/site-navbar.scss +0 -2
  147. package/src/lib/site-drakkar/site-navbar.ts +0 -286
  148. package/src/lib/site-drakkar/suite-search-items.spec.ts +0 -61
  149. package/src/lib/site-drakkar/suite-search-items.ts +0 -246
  150. package/src/lib/skeleton/skeleton.ts +0 -51
  151. package/src/lib/slider/slider.ts +0 -133
  152. package/src/lib/spinner/spinner.ts +0 -75
  153. package/src/lib/status-metric-row/status-metric-row.ts +0 -74
  154. package/src/lib/suite-search-palette/suite-search-palette.ts +0 -95
  155. package/src/lib/switch/switch.ts +0 -131
  156. package/src/lib/table/table.ts +0 -137
  157. package/src/lib/tabs/tab-panel.ts +0 -61
  158. package/src/lib/tabs/tab.ts +0 -107
  159. package/src/lib/tabs/tabs.ts +0 -109
  160. package/src/lib/textarea/textarea.ts +0 -103
  161. package/src/lib/theme-toggle/theme-toggle.spec.ts +0 -40
  162. package/src/lib/theme-toggle/theme-toggle.ts +0 -40
  163. package/src/lib/time-picker/time-picker.ts +0 -197
  164. package/src/lib/timeline/timeline.ts +0 -152
  165. package/src/lib/toast/toast.ts +0 -196
  166. package/src/lib/toggle/toggle-group.ts +0 -60
  167. package/src/lib/toggle/toggle.ts +0 -101
  168. package/src/lib/tooltip/tooltip.ts +0 -119
  169. package/src/lib/typography/heading.ts +0 -52
  170. package/src/lib/typography/text.ts +0 -51
  171. package/src/lib/uptime-bar/uptime-bar.ts +0 -55
  172. package/src/lib/verification-code-field/verification-code-field.ts +0 -149
  173. package/src/lib/whitepaper-cta/whitepaper-cta.scss +0 -130
  174. package/src/lib/whitepaper-cta/whitepaper-cta.ts +0 -78
  175. package/src/lib/wizard/wizard.ts +0 -80
  176. package/src/public-api.ts +0 -172
  177. package/src/styles/_buttons.scss +0 -386
  178. package/src/styles/_component-primitives.scss +0 -183
  179. package/src/styles/_drakkar-buttons.scss +0 -85
  180. package/src/styles/_fonts.scss +0 -22
  181. package/src/styles/_forms.scss +0 -66
  182. package/src/styles/_input.scss +0 -106
  183. package/src/styles/_layout-enforcement.scss +0 -229
  184. package/src/styles/_layout-rhythm.scss +0 -158
  185. package/src/styles/_legacy-aliases.scss +0 -212
  186. package/src/styles/_series-colors.scss +0 -24
  187. package/src/styles/_static-primitives.scss +0 -857
  188. package/src/styles/_typography.scss +0 -87
  189. package/src/styles/_variables.scss +0 -527
  190. package/src/styles/components/a11y.scss +0 -90
  191. package/src/styles/components/badges.scss +0 -102
  192. package/src/styles/components/extracted-utilities.scss +0 -459
  193. package/src/styles/components/footer.scss +0 -168
  194. package/src/styles/components/icon-heading.scss +0 -47
  195. package/src/styles/components/icon-inline.scss +0 -101
  196. package/src/styles/components/layout.scss +0 -59
  197. package/src/styles/components/utilities.scss +0 -131
  198. package/src/styles/components/viking-inspired.scss +0 -204
  199. package/src/styles/components/whitepaper-cta.scss +0 -130
  200. package/src/styles/components-bundle.scss +0 -9
  201. package/src/styles/components.scss +0 -442
  202. package/src/styles/deml-components.scss +0 -10
  203. package/src/styles/index.scss +0 -8
  204. package/src/styles/layout-shell.scss +0 -111
  205. package/src/styles/page-shell.scss +0 -859
  206. package/src/styles/static-navbar.scss +0 -1250
  207. package/src/styles/surfaces/backend.scss +0 -154
  208. package/src/styles/surfaces/docs-global.scss +0 -73
  209. package/src/styles/surfaces/docs-shell.scss +0 -437
  210. package/src/styles/surfaces/docs-showcase.scss +0 -1153
  211. package/src/styles/surfaces/marketing-cta.scss +0 -62
  212. package/src/styles/surfaces/marketing-docs-bento.scss +0 -67
  213. package/src/styles/surfaces/marketing-global.scss +0 -748
  214. package/src/styles/surfaces/marketing-landing.scss +0 -1526
  215. package/src/styles/surfaces/marketing-publication.scss +0 -535
  216. package/src/styles/surfaces/marketing-theme.scss +0 -14
  217. package/src/styles/surfaces/swagger-ui.scss +0 -1013
  218. package/src/styles/tokens-export.scss +0 -18
  219. package/src/styles/tokens.scss +0 -5
  220. package/src/styles/viking-ui-bundle.scss +0 -23
  221. package/src/styles/viking-ui.scss +0 -272
  222. package/src/tokens/series-presets.ts +0 -15
  223. package/src/tokens/tailwind.preset.js +0 -209
  224. package/src/tokens/viking-tokens.json +0 -318
  225. package/src/viking-ui.spec.ts +0 -416
  226. package/src/web/badge/viking-badge-wc.ts +0 -116
  227. package/src/web/button/viking-button-wc.ts +0 -165
  228. package/src/web/callout/viking-callout-wc.ts +0 -105
  229. package/src/web/card/viking-card-wc.ts +0 -67
  230. package/src/web/core/base.ts +0 -56
  231. package/src/web/core/dom.ts +0 -53
  232. package/src/web/core/icons-inline.ts +0 -44
  233. package/src/web/core/styles.ts +0 -1261
  234. package/src/web/core/types.ts +0 -19
  235. package/src/web/field/viking-field-wc.ts +0 -154
  236. package/src/web/index.ts +0 -73
  237. package/src/web/input/viking-input-wc.ts +0 -211
  238. package/src/web/modal/viking-modal-wc.ts +0 -187
  239. package/src/web/search-palette/viking-search-palette-wc.ts +0 -495
  240. package/src/web/select/viking-select-wc.ts +0 -218
  241. package/src/web/suite-header/viking-suite-header-wc.ts +0 -729
  242. package/src/web/suite-search-palette/viking-suite-search-palette-wc.ts +0 -234
  243. package/src/web/theme-toggle/viking-theme-toggle-wc.ts +0 -139
  244. package/src/web/types.ts +0 -37
  245. package/src/web/web-components.spec.ts +0 -297
  246. package/src/web-components/index.ts +0 -1
@@ -1,1250 +0,0 @@
1
- // Shared navbar + theme toggle (frontend Angular, marketing Astro, backend Django).
2
- @use 'drakkar-buttons' as *;
3
-
4
- @mixin viking-navbar-search-shell-focus {
5
- outline: var(--viking-ring-width, 2px) solid var(--viking-ring, var(--viking-ring));
6
- outline-offset: var(--viking-ring-offset, 2px);
7
- }
8
-
9
- @mixin viking-navbar-utility-btn {
10
- display: inline-flex;
11
- align-items: center;
12
- justify-content: center;
13
- flex-shrink: 0;
14
- width: var(--viking-control-height, 40px);
15
- height: var(--viking-control-height, 40px);
16
- min-width: var(--viking-control-height, 40px);
17
- padding: 0;
18
- margin: 0;
19
- border: 1px solid var(--viking-border-strong, var(--border));
20
- border-radius: var(--viking-radius, 8px);
21
- background: var(--viking-surface, var(--card-bg));
22
- color: var(--viking-text, var(--text-color));
23
- box-shadow: var(--viking-shadow-sm, var(--shadow-sm));
24
- cursor: pointer;
25
- transition: var(--viking-transition-interactive, all 0.25s ease);
26
-
27
- &:hover {
28
- border-color: var(--viking-accent-strong, var(--viking-ring));
29
- background: var(--viking-surface-alt, var(--viking-charcoal-700));
30
- color: var(--viking-text, var(--text-color));
31
- box-shadow: var(--viking-shadow-md, var(--shadow-md));
32
- }
33
-
34
- &:focus-visible {
35
- @include viking-navbar-search-shell-focus;
36
- }
37
- }
38
-
39
- @mixin viking-navbar-search-shell {
40
- display: flex;
41
- align-items: center;
42
- gap: var(--viking-space-1, 8px);
43
- min-height: var(--viking-control-height, 40px);
44
- padding: 0 var(--viking-space-2, 16px);
45
- background: var(--viking-surface, var(--card-bg));
46
- border: 1px solid var(--viking-border-strong, var(--border));
47
- border-radius: var(--viking-radius, 8px);
48
- box-shadow: var(--viking-shadow-sm, var(--shadow-sm));
49
- transition: var(--viking-transition-interactive, border-color 0.25s ease, box-shadow 0.25s ease);
50
-
51
- &:hover {
52
- border-color: color-mix(in srgb, var(--viking-accent-strong, var(--viking-ring)) 55%, var(--viking-border-strong, var(--border)));
53
- box-shadow: var(--viking-shadow-md, var(--shadow-md));
54
- }
55
- }
56
-
57
- @mixin viking-navbar-search-panel {
58
- margin: 0;
59
- padding: var(--viking-space-1, 8px);
60
- background: var(--viking-surface, var(--card-bg));
61
- border: 1px solid var(--viking-border-strong, var(--border));
62
- border-radius: var(--viking-radius, 8px);
63
- box-shadow: var(--viking-shadow-md, var(--shadow-md));
64
- max-height: 288px;
65
- overflow: auto;
66
- font-family: var(--viking-font-family, inherit);
67
- }
68
-
69
- .navbar {
70
- position: sticky;
71
- top: 0;
72
- z-index: 50;
73
- width: 100%;
74
- min-height: var(--viking-navbar-height, 64px);
75
- background-color: var(--navbar-bg, var(--viking-surface));
76
- border-bottom: 1px solid var(--border-layout, var(--viking-border));
77
- display: flex;
78
- flex-direction: column;
79
- align-items: stretch;
80
- padding: 0 var(--viking-space-2, 16px);
81
- box-sizing: border-box;
82
- overflow: visible;
83
- container-type: inline-size;
84
- container-name: viking-navbar;
85
-
86
- @media (min-width: 768px) {
87
- padding-inline: var(--viking-space-3, 24px);
88
- }
89
- box-shadow: var(--viking-shadow-xs, 0 1px 2px rgba(0, 0, 0, 0.2));
90
- isolation: isolate;
91
- }
92
-
93
- .navbar-brand {
94
- margin-right: var(--viking-space-1, 8px);
95
- display: inline-flex;
96
- align-items: center;
97
- justify-content: center;
98
- gap: var(--viking-space-1, 8px);
99
- text-decoration: none;
100
- overflow: visible;
101
- flex-shrink: 0;
102
- padding: 0;
103
- min-height: 36px;
104
- line-height: 1;
105
- transition: filter 0.3s ease;
106
- }
107
-
108
- .navbar-title {
109
- font-size: var(--base-font-size);
110
- font-weight: 700;
111
- line-height: 1.2;
112
- color: var(--text-color);
113
- letter-spacing: -0.02em;
114
- }
115
-
116
- .navbar-logo {
117
- font-size: 28px;
118
- width: 36px;
119
- height: 36px;
120
- line-height: 1;
121
- color: var(--color-primary, var(--viking-accent));
122
- overflow: visible;
123
- flex-shrink: 0;
124
- display: inline-flex;
125
- align-items: center;
126
- justify-content: center;
127
- }
128
-
129
- .navbar-brand .navbar-logo,
130
- .navbar-brand viking-icon.navbar-logo {
131
- color: var(--color-primary, var(--viking-accent)) !important;
132
- }
133
-
134
- // Angular mat-icon defaults to overflow:hidden — clips ligature glyphs at tight sizes.
135
- .navbar-brand .navbar-logo.mat-icon,
136
- .navbar-brand mat-icon.navbar-logo {
137
- overflow: visible !important;
138
- width: 36px !important;
139
- height: 36px !important;
140
- font-size: 28px !important;
141
- line-height: 36px !important;
142
- padding: 0 !important;
143
- box-sizing: border-box;
144
- display: inline-flex !important;
145
- align-items: center !important;
146
- justify-content: center !important;
147
- }
148
-
149
- .navbar-content {
150
- display: grid;
151
- grid-template-columns: auto 1fr auto;
152
- align-items: center;
153
- gap: var(--viking-space-1, 8px);
154
- width: 100%;
155
- max-width: var(--viking-container-max-width, 1260px);
156
- margin-inline: auto;
157
- min-width: 0;
158
- min-height: var(--viking-navbar-height, 64px);
159
- }
160
-
161
- .navbar-left {
162
- grid-column: 1;
163
- display: flex;
164
- align-items: center;
165
- justify-content: flex-start;
166
- flex: 0 1 auto;
167
- min-width: 0;
168
- flex-shrink: 0;
169
- }
170
-
171
- .navbar-right {
172
- grid-column: 3;
173
- display: flex;
174
- align-items: center;
175
- justify-content: flex-end;
176
- flex: 0 0 auto;
177
- gap: var(--viking-space-1, 8px);
178
- min-width: 0;
179
- flex-shrink: 0;
180
- }
181
-
182
- .navbar-search,
183
- .navbar-search viking-button-wc,
184
- .navbar-right viking-theme-toggle-wc,
185
- .navbar-right .menu-toggle-btn,
186
- .navbar-right viking-button.menu-toggle-btn,
187
- .navbar-right viking-button-wc.menu-toggle-btn {
188
- flex: 0 0 auto;
189
- }
190
-
191
- .navbar-center {
192
- grid-column: 2;
193
- display: flex;
194
- justify-content: center;
195
- align-items: center;
196
- min-width: 0;
197
- }
198
-
199
- .desktop-nav {
200
- display: none;
201
- flex-direction: row;
202
- flex-wrap: nowrap;
203
- align-items: center;
204
- gap: var(--viking-space-1, 8px);
205
- padding: var(--viking-space-half, 4px) 0;
206
- min-width: 0;
207
- max-width: 100%;
208
- overflow: hidden;
209
- }
210
-
211
- .desktop-auth {
212
- display: none;
213
- align-items: center;
214
- flex-shrink: 0;
215
- gap: var(--viking-space-1, 8px);
216
-
217
- viking-button,
218
- viking-button-wc {
219
- min-width: var(--viking-btn-min-width, 120px) !important;
220
- }
221
- }
222
-
223
- .nav-btn {
224
- position: relative;
225
- font-size: var(--viking-font-size-sm, 14px) !important;
226
- color: var(--nav-link-color, var(--text-muted)) !important;
227
- font-weight: 600 !important;
228
- text-transform: uppercase !important;
229
- letter-spacing: 0.06em !important;
230
- transition:
231
- color 0.2s ease,
232
- background-color 0.2s ease,
233
- box-shadow 0.2s ease,
234
- transform 0.2s ease !important;
235
- border-radius: var(--border-radius-sm) var(--border-radius-sm) 0 0 !important;
236
- padding: 0 var(--viking-space-1-5, 12px) !important;
237
- height: var(--viking-control-height, 40px) !important;
238
- line-height: var(--viking-control-height, 40px) !important;
239
- display: inline-flex !important;
240
- align-items: center !important;
241
- gap: 6px !important;
242
- text-decoration: none;
243
- background: transparent;
244
- border: none;
245
- cursor: pointer;
246
- overflow: hidden;
247
- flex-shrink: 1;
248
- min-width: 0;
249
- white-space: nowrap;
250
- border-bottom: 1px solid transparent;
251
- box-shadow: none;
252
- }
253
-
254
- .navbar-search::part(control),
255
- .menu-toggle-btn::part(control),
256
- .theme-toggle-btn::part(control),
257
- .navbar-search-trigger::part(control),
258
- .navbar-search-mobile-btn::part(control),
259
- .auth-btn::part(control),
260
- .mobile-auth-btn::part(control),
261
- .auth-signout-btn::part(control),
262
- .navbar .theme-toggle-btn::part(control),
263
- .navbar .menu-toggle-btn::part(control),
264
- .navbar .navbar-search-trigger::part(control),
265
- .navbar .navbar-search-mobile-btn::part(control),
266
- viking-button-wc.menu-toggle-btn::part(control),
267
- viking-button-wc.theme-toggle-btn::part(control),
268
- viking-button-wc.navbar-search-trigger::part(control),
269
- viking-button-wc.mobile-auth-btn::part(control),
270
- viking-button-wc.auth-btn::part(control),
271
- viking-button-wc.auth-signout-btn::part(control) {
272
- border-color: inherit;
273
- }
274
-
275
- .nav-btn:focus-visible,
276
- .mobile-nav-btn:focus-visible,
277
- .auth-btn:focus-visible,
278
- .auth-signout-btn:focus-visible,
279
- .menu-toggle-btn:focus-visible,
280
- .theme-toggle-btn:focus-visible,
281
- .navbar-search-trigger:focus-visible,
282
- .navbar-search-mobile-btn:focus-visible,
283
- .mobile-auth-btn:focus-visible {
284
- outline: var(--viking-ring-width, 2px) solid
285
- var(--viking-ring, var(--focus-ring-color));
286
- outline-offset: var(--viking-ring-offset, 2px);
287
- }
288
-
289
- .viking-button-wc.nav-btn:focus-visible::part(control),
290
- .viking-button-wc.auth-btn:focus-visible::part(control),
291
- .viking-button-wc.auth-signout-btn:focus-visible::part(control),
292
- .viking-button-wc.menu-toggle-btn:focus-visible::part(control),
293
- .viking-button-wc.theme-toggle-btn:focus-visible::part(control),
294
- .viking-button-wc.navbar-search-trigger:focus-visible::part(control),
295
- .viking-button-wc.navbar-search-mobile-btn:focus-visible::part(control) {
296
- outline: var(--viking-ring-width, 2px) solid var(--viking-ring, var(--focus-ring-color));
297
- outline-offset: var(--viking-ring-offset, 2px);
298
- }
299
-
300
- .nav-btn[hidden],
301
- .mobile-nav-btn[hidden],
302
- .auth-btn[hidden],
303
- .auth-signout-btn[hidden],
304
- .mobile-auth-btn[hidden],
305
- viking-button-wc[hidden],
306
- viking-button[hidden] {
307
- display: none !important;
308
- }
309
-
310
- .nav-btn .material-icons,
311
- .nav-btn svg,
312
- .nav-btn .viking-icon,
313
- .nav-btn [data-viking-icon],
314
- .mobile-nav-btn svg,
315
- .mobile-nav-btn [data-viking-icon],
316
- .auth-btn svg,
317
- .auth-btn [data-viking-icon],
318
- .theme-toggle-btn svg,
319
- .menu-toggle-btn svg,
320
- .navbar-search-trigger [data-viking-icon],
321
- .navbar-search-mobile-btn [data-viking-icon] {
322
- margin: 0;
323
- flex-shrink: 0;
324
- }
325
-
326
- .nav-btn svg,
327
- .mobile-nav-btn svg,
328
- .auth-btn svg,
329
- .nav-btn [data-viking-icon] svg,
330
- .mobile-nav-btn [data-viking-icon] svg,
331
- .auth-btn [data-viking-icon] svg {
332
- width: 16px;
333
- height: 16px;
334
- }
335
-
336
- .theme-toggle-btn svg,
337
- .menu-toggle-btn svg,
338
- .navbar-search-trigger svg,
339
- .navbar-search-mobile-btn svg,
340
- .theme-toggle-btn [data-viking-icon] svg,
341
- .menu-toggle-btn [data-viking-icon] svg,
342
- .navbar-search-trigger [data-viking-icon] svg,
343
- .navbar-search-mobile-btn [data-viking-icon] svg {
344
- width: 24px;
345
- height: 24px;
346
- }
347
-
348
- .navbar-search-trigger [data-viking-icon] svg,
349
- .navbar-search-mobile-btn [data-viking-icon] svg {
350
- width: 20px;
351
- height: 20px;
352
- }
353
-
354
- .nav-btn .material-icons {
355
- font-size: var(--base-font-size);
356
- width: 16px;
357
- height: 16px;
358
- }
359
-
360
- .nav-btn:hover {
361
- color: var(--text-color) !important;
362
- background-color: color-mix(in srgb, var(--viking-accent) 10%, transparent) !important;
363
- }
364
-
365
- html[data-theme='light'] {
366
- --nav-link-color: color-mix(in srgb, var(--viking-charcoal-900) 88%, var(--white));
367
-
368
- .nav-btn,
369
- .mobile-nav-btn {
370
- color: var(--nav-link-color) !important;
371
- }
372
-
373
- .menu-toggle-btn,
374
- .theme-toggle-btn,
375
- .navbar-search-trigger,
376
- .navbar-search-mobile-btn {
377
- color: var(--viking-text, var(--text-color)) !important;
378
- }
379
-
380
- .nav-btn:hover,
381
- .mobile-nav-btn:hover {
382
- background-color: color-mix(in srgb, var(--viking-accent) 10%, transparent) !important;
383
- }
384
- }
385
-
386
- .nav-btn.active {
387
- color: var(--text-color) !important;
388
- background-color: color-mix(in srgb, var(--viking-accent) 14%, transparent) !important;
389
- box-shadow:
390
- inset 0 -2px 0 0 var(--viking-accent),
391
- 0 0 12px color-mix(in srgb, var(--viking-accent) 18%, transparent) !important;
392
- }
393
-
394
- .navbar .theme-toggle-btn,
395
- .theme-toggle-btn {
396
- @include viking-navbar-utility-btn;
397
- display: inline-grid;
398
- place-items: center;
399
- padding: 0;
400
- border-color: color-mix(
401
- in srgb,
402
- var(--viking-accent, var(--viking-accent)) 32%,
403
- var(--viking-border-strong, var(--border))
404
- );
405
- background: color-mix(
406
- in srgb,
407
- var(--viking-accent, var(--viking-accent)) 8%,
408
- var(--viking-surface, var(--card-bg))
409
- );
410
- color: var(--viking-accent-strong, var(--viking-ring));
411
-
412
- svg,
413
- viking-icon {
414
- display: block;
415
- width: 24px;
416
- height: 24px;
417
- }
418
-
419
- &:hover {
420
- border-color: var(--viking-accent-strong, var(--viking-ring));
421
- background-color: color-mix(
422
- in srgb,
423
- var(--viking-accent, var(--viking-accent)) 14%,
424
- var(--viking-surface, var(--card-bg))
425
- );
426
- color: var(--viking-accent-strong, var(--viking-ring));
427
- box-shadow: var(--viking-shadow-md, var(--shadow-md));
428
- }
429
-
430
- &:active {
431
- transform: scale(var(--viking-state-active-scale, 0.98));
432
- }
433
- }
434
-
435
- .navbar .theme-toggle-btn .material-icons,
436
- .navbar .theme-toggle-btn svg,
437
- .theme-toggle-btn .material-icons,
438
- .theme-toggle-btn svg {
439
- width: 24px;
440
- height: 24px;
441
- }
442
-
443
- .menu-toggle-btn,
444
- viking-button.menu-toggle-btn,
445
- viking-button-wc.menu-toggle-btn,
446
- #navbar-search-trigger {
447
- @include viking-navbar-utility-btn;
448
- display: inline-grid !important;
449
- place-items: center;
450
- padding: 0;
451
-
452
- svg,
453
- viking-icon {
454
- display: block;
455
- width: 24px;
456
- height: 24px;
457
- }
458
- }
459
-
460
- .navbar-search viking-button-wc::part(control),
461
- viking-button-wc.menu-toggle-btn::part(control),
462
- .navbar-right viking-theme-toggle-wc::part(control) {
463
- display: inline-grid;
464
- place-items: center;
465
- width: var(--viking-control-height, 40px);
466
- min-width: var(--viking-control-height, 40px);
467
- max-width: var(--viking-control-height, 40px);
468
- height: var(--viking-control-height, 40px);
469
- min-height: var(--viking-control-height, 40px);
470
- padding: 0;
471
- line-height: 1;
472
- box-sizing: border-box;
473
- }
474
-
475
- .navbar-search viking-button-wc [data-viking-icon],
476
- viking-button-wc.menu-toggle-btn [data-viking-icon] {
477
- display: inline-flex;
478
- align-items: center;
479
- justify-content: center;
480
- width: var(--viking-icon-size-md, 20px);
481
- height: var(--viking-icon-size-md, 20px);
482
- line-height: 1;
483
- }
484
-
485
- .menu-toggle-btn[aria-expanded='true'] {
486
- border-color: var(--viking-accent, var(--viking-accent));
487
- color: var(--viking-accent-strong, var(--viking-ring));
488
- background: var(--viking-accent-soft, color-mix(in srgb, var(--viking-accent) 12%, transparent));
489
- box-shadow: var(--viking-shadow-sm, var(--shadow-sm));
490
- }
491
-
492
- .divider {
493
- height: 24px;
494
- width: 0px;
495
- background-color: var(--border);
496
- margin: 0 8px;
497
- }
498
-
499
- .auth-btn .material-icons {
500
- margin: 0;
501
- font-size: var(--viking-font-size-sm, 14px);
502
- width: 16px;
503
- height: 16px;
504
- }
505
-
506
- .auth-btn,
507
- a.auth-btn,
508
- button.auth-btn {
509
- display: inline-flex !important;
510
- align-items: center !important;
511
- justify-content: center !important;
512
- gap: var(--viking-space-1, 8px) !important;
513
- min-width: var(--viking-btn-min-width, 120px) !important;
514
- height: var(--viking-control-height, 40px) !important;
515
- min-height: var(--viking-control-height, 40px) !important;
516
- padding: 0 var(--viking-space-2, 16px) !important;
517
- border-radius: var(--viking-radius, 8px) !important;
518
- letter-spacing: var(--viking-letter-spacing-caps, 0.08em) !important;
519
- text-transform: uppercase !important;
520
- white-space: nowrap !important;
521
- line-height: 1 !important;
522
- }
523
-
524
- .auth-btn::part(control),
525
- viking-button.auth-btn::part(control),
526
- viking-button.auth-btn viking-button-wc::part(control),
527
- viking-button.auth-btn viking-button-wc,
528
- viking-button-wc.auth-btn::part(control),
529
- .auth-btn.viking-full::part(control) {
530
- display: inline-flex !important;
531
- align-items: center !important;
532
- justify-content: center !important;
533
- gap: var(--viking-space-1, 8px) !important;
534
- min-width: var(--viking-btn-min-width, 120px) !important;
535
- min-height: var(--viking-control-height, 40px) !important;
536
- height: var(--viking-control-height, 40px) !important;
537
- padding: 0 var(--viking-space-2, 16px) !important;
538
- box-sizing: border-box !important;
539
- }
540
-
541
- .auth-signout-btn {
542
- background: transparent !important;
543
- color: var(--text-muted) !important;
544
- font-weight: 600 !important;
545
- border-radius: var(--viking-radius, 8px) !important;
546
- padding: 0 var(--viking-space-2, 16px) !important;
547
- border: 1px solid var(--border) !important;
548
- height: var(--viking-control-height, 40px) !important;
549
- line-height: var(--viking-control-height, 40px) !important;
550
- display: inline-flex !important;
551
- align-items: center !important;
552
- gap: var(--viking-space-1, 8px) !important;
553
- white-space: nowrap !important;
554
- text-transform: uppercase !important;
555
- letter-spacing: 0.08em !important;
556
- cursor: pointer;
557
- transition: var(--viking-transition-interactive) !important;
558
- }
559
-
560
- .auth-signout-btn[hidden] {
561
- display: none !important;
562
- }
563
-
564
- .auth-btn [data-viking-icon],
565
- .auth-btn [data-viking-icon] svg,
566
- .auth-signout-btn [data-viking-icon],
567
- .auth-signout-btn [data-viking-icon] svg {
568
- margin: 0 !important;
569
- display: inline-flex !important;
570
- align-items: center !important;
571
- justify-content: center !important;
572
- width: 16px !important;
573
- height: 16px !important;
574
- line-height: 1 !important;
575
- }
576
-
577
- .auth-signout-btn:hover {
578
- color: var(--text-color) !important;
579
- border-color: var(--viking-crimson-500) !important;
580
- background: color-mix(in srgb, var(--viking-crimson-500) 10%, transparent) !important;
581
- }
582
-
583
- .mobile-menu:not(.open) {
584
- display: none !important;
585
- }
586
-
587
- .mobile-menu {
588
- display: none;
589
- flex-direction: column;
590
- position: absolute;
591
- visibility: hidden;
592
- pointer-events: none;
593
- top: var(--viking-navbar-height, var(--navbar-height, 64px));
594
- left: 0;
595
- right: 0;
596
- width: auto;
597
- max-height: calc(100dvh - var(--viking-navbar-height, var(--navbar-height, 64px)));
598
- overflow-x: hidden;
599
- overflow-y: auto;
600
- overscroll-behavior: contain;
601
- -webkit-overflow-scrolling: touch;
602
- background-color: var(--viking-surface, var(--card-bg));
603
- box-shadow: var(--viking-shadow-md, var(--shadow-md));
604
- border-bottom: 1px solid var(--viking-border, var(--border));
605
- padding: var(--viking-space-3, 24px);
606
- padding-bottom: calc(var(--viking-space-3, 24px) + env(safe-area-inset-bottom, 0px));
607
- box-sizing: border-box;
608
- z-index: 49;
609
- gap: var(--viking-space-half, 4px);
610
-
611
- viking-button,
612
- viking-button-wc,
613
- .mobile-auth-btn {
614
- width: 100%;
615
- }
616
-
617
- .mobile-auth-btn,
618
- .auth-signout-btn,
619
- .mobile-auth-btn::part(control),
620
- .mobile-auth-btn.auth-btn::part(control),
621
- .mobile-auth-btn.auth-signout-btn::part(control) {
622
- flex-shrink: 0;
623
- width: 100%;
624
- }
625
-
626
- transform: translateY(-10px);
627
- opacity: 0;
628
- pointer-events: none;
629
- transition:
630
- transform 0.25s cubic-bezier(0.16, 1, 0.3, 1),
631
- opacity 0.25s ease;
632
- }
633
-
634
- .mobile-menu.open {
635
- transform: translateY(0);
636
- opacity: 1;
637
- pointer-events: auto;
638
- display: flex;
639
- visibility: visible;
640
- }
641
-
642
- .mobile-nav-btn {
643
- width: 100% !important;
644
- justify-content: flex-start !important;
645
- font-size: var(--viking-font-size-sm, 14px) !important;
646
- font-weight: 600 !important;
647
- text-transform: uppercase !important;
648
- letter-spacing: 0.06em !important;
649
- color: var(--viking-text-muted, var(--text-muted)) !important;
650
- min-height: 44px !important;
651
- border-radius: var(--viking-radius, 8px) !important;
652
- padding: 0 var(--viking-space-2, 16px) !important;
653
- display: inline-flex !important;
654
- align-items: center !important;
655
- gap: var(--viking-space-1, 8px) !important;
656
- text-decoration: none;
657
- border: 1px solid transparent;
658
- background: transparent;
659
- transition: var(--viking-transition-interactive, all 0.25s ease);
660
- }
661
-
662
- .mobile-nav-btn .material-icons {
663
- margin: 0;
664
- font-size: 20px;
665
- width: 20px;
666
- height: 20px;
667
- }
668
-
669
- .mobile-nav-btn:hover {
670
- color: var(--viking-text, var(--text-color)) !important;
671
- background-color: var(--viking-accent-soft, color-mix(in srgb, var(--viking-accent) 8%, transparent)) !important;
672
- }
673
-
674
- .mobile-nav-btn.active {
675
- color: var(--viking-text, var(--text-color)) !important;
676
- background-color: var(--viking-accent-soft, color-mix(in srgb, var(--viking-accent) 12%, transparent)) !important;
677
- box-shadow: inset 0 0 0 1px var(--viking-accent-strong, var(--viking-ring)) !important;
678
- }
679
-
680
- .mobile-divider {
681
- height: 1px;
682
- background-color: var(--viking-border, var(--border));
683
- margin: var(--viking-space-2, 16px) 0 var(--viking-space-1, 8px);
684
- flex-shrink: 0;
685
- }
686
-
687
- .mobile-menu .mobile-auth-btn {
688
- margin-top: var(--viking-space-half, 4px);
689
- }
690
-
691
- .mobile-menu a.mobile-auth-btn:not(.auth-signout-btn),
692
- .mobile-menu a.mobile-auth-btn:not(.auth-signout-btn) span,
693
- .mobile-menu a.mobile-auth-btn:not(.auth-signout-btn) svg {
694
- color: var(--viking-white-pure, var(--viking-white-pure)) !important;
695
- }
696
-
697
- .navbar-link {
698
- font-size: 1rem;
699
- color: var(--text-muted);
700
- font-weight: 600;
701
- text-transform: uppercase;
702
- letter-spacing: 0.08em;
703
- text-decoration: none;
704
- transition: var(--transition-smooth);
705
- }
706
-
707
- .navbar-link:hover {
708
- color: var(--text-color);
709
- }
710
-
711
- .glowing-icon-sm {
712
- color: var(--color-primary, var(--primary-text-color, var(--viking-accent))) !important;
713
- transition: all 0.3s ease;
714
- }
715
-
716
- // Glow on the brand link wrapper so mat-icon overflow does not clip the filter.
717
- .navbar-brand.glowing-icon-sm,
718
- .navbar-brand:has(.glowing-icon-sm) {
719
- filter: drop-shadow(0 0 6px color-mix(in srgb, var(--color-primary) 60%, transparent));
720
- }
721
-
722
- .navbar-brand.glowing-icon-sm:hover,
723
- .navbar-brand:has(.glowing-icon-sm):hover {
724
- filter: drop-shadow(0 0 10px color-mix(in srgb, var(--color-primary) 90%, transparent));
725
- }
726
-
727
- .loader-logo.glowing-icon-sm,
728
- :not(.navbar-brand) > .glowing-icon-sm {
729
- filter: drop-shadow(0 0 6px color-mix(in srgb, var(--color-primary) 60%, transparent));
730
- }
731
-
732
- .loader-logo.glowing-icon-sm:hover,
733
- :not(.navbar-brand) > .glowing-icon-sm:hover {
734
- filter: drop-shadow(0 0 10px color-mix(in srgb, var(--color-primary) 90%, transparent));
735
- }
736
-
737
- // Algolia Experiences autocomplete — aligned with viking-autocomplete + search-palette.
738
-
739
- .navbar-search {
740
- display: inline-flex;
741
- align-items: center;
742
- align-self: center;
743
- flex: 0 0 auto;
744
- justify-content: center;
745
- max-width: none;
746
- min-width: 0;
747
- min-height: var(--viking-control-height, 40px);
748
- margin: 0;
749
- line-height: 0;
750
-
751
- viking-button,
752
- viking-button-wc {
753
- flex-shrink: 0;
754
- }
755
- }
756
-
757
- .navbar [hidden],
758
- .mobile-menu [hidden] {
759
- display: none !important;
760
- }
761
-
762
- .algolia-autocomplete-host {
763
- display: none;
764
- font-family: var(--viking-font-family, inherit);
765
-
766
- --aa-font-family: var(--viking-font-family, inherit);
767
- --aa-font-size: var(--viking-font-size-sm, 14px);
768
- --aa-spacing: var(--viking-space-1, 8px);
769
- --aa-spacing-half: var(--viking-space-half, 4px);
770
- --aa-panel-max-height: 288px;
771
- --aa-panel-shadow: var(--viking-shadow-md, 0 4px 12px rgba(0, 0, 0, 0.25));
772
- --aa-icon-size: 20px;
773
- --aa-icon-stroke-width: 2px;
774
- --aa-primary-color-rgb: 20, 163, 168;
775
- --aa-muted-color-rgb: 148, 163, 184;
776
- }
777
-
778
- // Command-palette modal — matches viking-search-palette on every breakpoint.
779
- .algolia-autocomplete-host.algolia-autocomplete-open {
780
- display: flex;
781
- align-items: flex-start;
782
- justify-content: center;
783
- position: fixed;
784
- inset: 0;
785
- z-index: var(--viking-z-overlay, 10001);
786
- padding: 10vh var(--viking-space-2, 16px) var(--viking-space-2, 16px);
787
- background: var(--viking-overlay-backdrop, rgba(0, 0, 0, 0.55));
788
- backdrop-filter: blur(4px);
789
- -webkit-backdrop-filter: blur(4px);
790
- border: none;
791
- box-shadow: none;
792
- max-width: none;
793
- width: auto;
794
- min-width: 0;
795
-
796
- .aa-Autocomplete,
797
- .aa-DetachedContainer {
798
- max-width: 600px;
799
- width: 100%;
800
- border: 1px solid var(--viking-border-strong, var(--viking-border, var(--border)));
801
- border-radius: var(--viking-radius-lg, 12px);
802
- background: var(--viking-surface, var(--card-bg));
803
- box-shadow: var(--viking-shadow-lg, var(--shadow-md));
804
- overflow: hidden;
805
- font-family: var(--viking-font-family, inherit);
806
- color: var(--viking-text, var(--text-color));
807
- position: relative;
808
- }
809
-
810
- .aa-Autocomplete::before,
811
- .aa-DetachedContainer::before {
812
- content: '';
813
- position: absolute;
814
- inset: 0 0 auto;
815
- height: 1px;
816
- background: linear-gradient(
817
- 90deg,
818
- transparent,
819
- color-mix(in srgb, var(--viking-metallic-200) 22%, transparent),
820
- transparent
821
- );
822
- pointer-events: none;
823
- z-index: 1;
824
- }
825
-
826
- .aa-Form,
827
- form {
828
- @include viking-navbar-search-shell;
829
- margin: 0 !important;
830
- border: 0 !important;
831
- border-bottom: 1px solid var(--viking-border, var(--border)) !important;
832
- border-radius: 0 !important;
833
- box-shadow: none !important;
834
- background: color-mix(in srgb, var(--viking-bg, var(--bg-color)) 20%, transparent);
835
-
836
- &:focus-within {
837
- border-bottom-color: var(--viking-accent, var(--viking-accent)) !important;
838
- box-shadow: inset 0 -2px 0 var(--viking-accent-soft, color-mix(in srgb, var(--viking-accent) 12%, transparent)) !important;
839
- outline: none;
840
- }
841
- }
842
-
843
- .aa-Panel {
844
- position: static;
845
- margin: 0;
846
- border: 0;
847
- border-radius: 0;
848
- box-shadow: none;
849
- background: transparent;
850
- max-height: 50vh;
851
- padding: var(--viking-space-2, 16px);
852
- }
853
-
854
- &::after {
855
- content: '⌘K toggle · Esc close';
856
- display: block;
857
- max-width: 600px;
858
- width: 100%;
859
- margin: 0 auto;
860
- padding: var(--viking-space-1, 8px) var(--viking-space-2, 16px);
861
- border: 1px solid var(--viking-border, var(--border));
862
- border-top: 1px solid var(--viking-border, var(--border));
863
- border-radius: 0 0 var(--viking-radius-lg, 12px) var(--viking-radius-lg, 12px);
864
- background: var(--viking-surface, var(--card-bg));
865
- font-size: calc(var(--viking-font-size, 16px) * 0.85);
866
- color: var(--viking-text-muted, var(--text-muted));
867
- text-align: center;
868
- letter-spacing: 0.01em;
869
- }
870
- }
871
-
872
- .navbar-search-trigger,
873
- .navbar-search-mobile-btn {
874
- @include viking-navbar-utility-btn;
875
- display: inline-flex;
876
- align-items: center;
877
- justify-content: center;
878
- width: var(--viking-control-height, 40px);
879
- height: var(--viking-control-height, 40px);
880
- padding: 0;
881
- flex-shrink: 0;
882
- align-self: center;
883
- }
884
-
885
- .algolia-autocomplete-host .aa-Autocomplete,
886
- .algolia-autocomplete-host .aa-DetachedContainer {
887
- width: 100%;
888
- }
889
-
890
- .algolia-autocomplete-host .aa-Form,
891
- .algolia-autocomplete-host form {
892
- @include viking-navbar-search-shell;
893
- margin: 0 !important;
894
-
895
- &:focus-within {
896
- @include viking-navbar-search-shell-focus;
897
- }
898
- }
899
-
900
- .algolia-autocomplete-host .aa-InputWrapper {
901
- display: flex;
902
- align-items: center;
903
- flex: 1;
904
- min-width: 0;
905
- gap: var(--viking-space-1, 8px);
906
- border: 0 !important;
907
- box-shadow: none !important;
908
- background: transparent !important;
909
- padding: 0 !important;
910
- }
911
-
912
- .algolia-autocomplete-host .aa-InputWrapperPrefix,
913
- .algolia-autocomplete-host .aa-InputWrapperSuffix {
914
- display: inline-flex;
915
- align-items: center;
916
- justify-content: center;
917
- flex-shrink: 0;
918
- align-self: center;
919
- color: var(--viking-accent-strong, var(--viking-ring));
920
- border: 0 !important;
921
- box-shadow: none !important;
922
- background: transparent !important;
923
- padding: 0 !important;
924
- line-height: 1;
925
- }
926
-
927
- // Hide Algolia default purple branding; prefix uses theme accent at control size.
928
- .algolia-autocomplete-host .aa-SubmitButton,
929
- .algolia-autocomplete-host .aa-DetachedSearchButton,
930
- .algolia-autocomplete-host .aa-Label,
931
- .algolia-autocomplete-host .aa-PoweredBy {
932
- display: none !important;
933
- }
934
-
935
- .algolia-autocomplete-host .aa-InputWrapperPrefix svg,
936
- .algolia-autocomplete-host .aa-InputWrapperSuffix svg,
937
- .algolia-autocomplete-host .aa-InputWrapperPrefix img,
938
- .algolia-autocomplete-host .aa-InputWrapperSuffix img {
939
- width: 20px !important;
940
- height: 20px !important;
941
- max-width: 20px !important;
942
- max-height: 20px !important;
943
- color: var(--viking-accent-strong, var(--viking-ring)) !important;
944
- fill: currentColor !important;
945
- stroke: currentColor !important;
946
- }
947
-
948
- .algolia-autocomplete-host .aa-Input,
949
- .algolia-autocomplete-host input {
950
- flex: 1;
951
- width: 100%;
952
- min-width: 0;
953
- min-height: 0 !important;
954
- height: auto;
955
- padding: 0 !important;
956
- border: 0 !important;
957
- border-radius: 0 !important;
958
- outline: none !important;
959
- background: transparent !important;
960
- color: var(--viking-text, var(--text-color));
961
- font: inherit;
962
- font-size: var(--viking-font-size, 16px);
963
- line-height: var(--viking-line-height-normal, 1.5);
964
- box-shadow: none !important;
965
- }
966
-
967
- .algolia-autocomplete-host .aa-Input::placeholder,
968
- .algolia-autocomplete-host input::placeholder {
969
- color: var(--viking-text-muted, var(--text-muted));
970
- }
971
-
972
- .algolia-autocomplete-host .aa-Panel {
973
- @include viking-navbar-search-panel;
974
- position: absolute;
975
- top: calc(100% + var(--viking-space-1, 8px));
976
- left: 0;
977
- right: 0;
978
- z-index: var(--viking-z-overlay, 10001);
979
- }
980
-
981
- .algolia-autocomplete-host .aa-PanelLayout,
982
- .algolia-autocomplete-host .aa-Source {
983
- margin: 0;
984
- }
985
-
986
- .algolia-autocomplete-host .aa-List {
987
- display: flex;
988
- flex-direction: column;
989
- gap: 2px;
990
- margin: 0;
991
- padding: 0;
992
- list-style: none;
993
- }
994
-
995
- .algolia-autocomplete-host .aa-SourceHeader {
996
- display: flex;
997
- align-items: center;
998
- gap: var(--viking-space-1, 8px);
999
- padding: var(--viking-space-1, 8px) var(--viking-space-1, 8px) 0;
1000
- margin: 0;
1001
- }
1002
-
1003
- .algolia-autocomplete-host .aa-SourceHeaderTitle {
1004
- font-size: calc(var(--viking-font-size-sm, 14px) * 0.85);
1005
- font-weight: 700;
1006
- text-transform: uppercase;
1007
- letter-spacing: 0.1em;
1008
- color: var(--viking-text-muted, var(--text-muted));
1009
- }
1010
-
1011
- .algolia-autocomplete-host .aa-SourceHeaderLine {
1012
- flex: 1;
1013
- height: 1px;
1014
- background: var(--viking-border, var(--border));
1015
- }
1016
-
1017
- .algolia-autocomplete-host .aa-Item {
1018
- border-radius: calc(var(--viking-radius, 8px) / 1.5);
1019
- padding: 0;
1020
- margin: 0;
1021
- }
1022
-
1023
- .algolia-autocomplete-host .aa-ItemLink,
1024
- .algolia-autocomplete-host .aa-ItemWrapper {
1025
- display: flex;
1026
- align-items: flex-start;
1027
- gap: var(--viking-space-1-5, 12px);
1028
- min-height: var(--viking-control-height-sm, 36px);
1029
- padding: var(--viking-space-1-5, 12px);
1030
- border-radius: calc(var(--viking-radius, 8px) / 1.5);
1031
- color: var(--viking-text, var(--text-color));
1032
- text-decoration: none;
1033
- transition: var(--viking-transition-interactive, background-color 0.2s ease);
1034
- }
1035
-
1036
- .algolia-autocomplete-host .aa-Item[aria-selected='true'] .aa-ItemLink,
1037
- .algolia-autocomplete-host .aa-Item[aria-selected='true'] .aa-ItemWrapper,
1038
- .algolia-autocomplete-host .aa-Item:hover .aa-ItemLink,
1039
- .algolia-autocomplete-host .aa-Item:hover .aa-ItemWrapper {
1040
- background: var(--viking-accent-soft, color-mix(in srgb, var(--viking-accent) 12%, transparent));
1041
- }
1042
-
1043
- .algolia-autocomplete-host .aa-ItemContent {
1044
- display: flex;
1045
- align-items: flex-start;
1046
- gap: var(--viking-space-1-5, 12px);
1047
- min-width: 0;
1048
- flex: 1;
1049
- }
1050
-
1051
- .algolia-autocomplete-host .aa-ItemIcon {
1052
- display: inline-flex;
1053
- align-items: center;
1054
- justify-content: center;
1055
- flex-shrink: 0;
1056
- width: var(--viking-space-5, 40px);
1057
- height: var(--viking-space-5, 40px);
1058
- margin-top: 2px;
1059
- border-radius: var(--viking-radius, 8px);
1060
- background: var(--viking-surface-alt, var(--viking-charcoal-700)) !important;
1061
- box-shadow: none !important;
1062
- color: var(--viking-accent-strong, var(--viking-ring));
1063
- overflow: hidden;
1064
-
1065
- img,
1066
- svg {
1067
- width: 20px;
1068
- height: 20px;
1069
- object-fit: contain;
1070
- }
1071
- }
1072
-
1073
- .algolia-autocomplete-host .aa-Item[aria-selected='true'] .aa-ItemIcon,
1074
- .algolia-autocomplete-host .aa-Item:hover .aa-ItemIcon {
1075
- color: var(--viking-accent, var(--viking-accent));
1076
- }
1077
-
1078
- .algolia-autocomplete-host .aa-ItemContentBody {
1079
- display: flex;
1080
- flex-direction: column;
1081
- gap: calc(var(--viking-space-1, 8px) / 2);
1082
- min-width: 0;
1083
- flex: 1;
1084
- }
1085
-
1086
- .algolia-autocomplete-host .aa-ItemContentTitle {
1087
- font-size: var(--viking-font-size, 16px);
1088
- font-weight: 600;
1089
- color: var(--viking-text, var(--text-color));
1090
- line-height: 1.3;
1091
- }
1092
-
1093
- .algolia-autocomplete-host .aa-ItemContentDescription {
1094
- font-size: var(--viking-font-size-sm, 14px);
1095
- color: var(--viking-text-muted, var(--text-muted));
1096
- line-height: var(--viking-line-height-relaxed, 1.625);
1097
- white-space: normal;
1098
- overflow: hidden;
1099
- display: -webkit-box;
1100
- -webkit-box-orient: vertical;
1101
- -webkit-line-clamp: 3;
1102
- text-overflow: ellipsis;
1103
- }
1104
-
1105
- .algolia-autocomplete-host mark,
1106
- .algolia-autocomplete-host .aa-ItemContentTitle mark,
1107
- .algolia-autocomplete-host .aa-ItemContentDescription mark {
1108
- background: color-mix(in srgb, var(--viking-accent, var(--viking-accent)) 20%, transparent);
1109
- color: var(--viking-accent, var(--viking-accent));
1110
- border-radius: 0;
1111
- padding: 0;
1112
- font-weight: 600;
1113
- }
1114
-
1115
- .algolia-autocomplete-host .aa-ItemActions,
1116
- .algolia-autocomplete-host .aa-GradientBottom,
1117
- .algolia-autocomplete-host .aa-GradientTop {
1118
- display: none;
1119
- }
1120
-
1121
- // Detached overlay (Algolia mobile / portal panel) — match search-palette modal.
1122
- .aa-DetachedOverlay {
1123
- background: var(--viking-overlay-backdrop, rgba(0, 0, 0, 0.55)) !important;
1124
- backdrop-filter: blur(4px);
1125
- -webkit-backdrop-filter: blur(4px);
1126
- }
1127
-
1128
- .aa-DetachedContainer {
1129
- font-family: var(--viking-font-family, inherit);
1130
- border: 1px solid var(--viking-border, var(--border)) !important;
1131
- border-radius: var(--viking-radius-lg, 12px) !important;
1132
- background: var(--viking-surface, var(--card-bg)) !important;
1133
- box-shadow: var(--viking-shadow-lg, var(--shadow-md)) !important;
1134
- }
1135
-
1136
- .aa-DetachedContainer .aa-Form,
1137
- .aa-DetachedContainer form {
1138
- @include viking-navbar-search-shell;
1139
- margin: var(--viking-space-1, 8px) !important;
1140
- border-bottom: 1px solid var(--viking-border, var(--border)) !important;
1141
- border-radius: var(--viking-radius, 8px) var(--viking-radius, 8px) 0 0 !important;
1142
- box-shadow: none !important;
1143
- }
1144
-
1145
- .aa-DetachedContainer .aa-Panel {
1146
- @include viking-navbar-search-panel;
1147
- position: static !important;
1148
- border: 0 !important;
1149
- box-shadow: none !important;
1150
- max-height: 50vh !important;
1151
- }
1152
-
1153
- @media (min-width: 768px) {
1154
- .navbar-content {
1155
- position: relative;
1156
- }
1157
-
1158
- .navbar-center.desktop-nav {
1159
- position: absolute;
1160
- left: 50%;
1161
- transform: translateX(-50%);
1162
- z-index: 1;
1163
- pointer-events: auto;
1164
- max-width: min(100% - 22rem, 42rem);
1165
- overflow: hidden;
1166
- justify-content: center;
1167
- }
1168
-
1169
- .navbar-left {
1170
- position: relative;
1171
- z-index: 2;
1172
- flex-shrink: 0;
1173
- }
1174
-
1175
- .navbar-right {
1176
- position: relative;
1177
- z-index: 2;
1178
- flex-shrink: 0;
1179
- min-width: 12.5rem;
1180
- pointer-events: none;
1181
-
1182
- > * {
1183
- pointer-events: auto;
1184
- }
1185
- }
1186
-
1187
- .desktop-nav {
1188
- display: flex;
1189
- }
1190
-
1191
- .desktop-auth {
1192
- display: flex;
1193
- }
1194
-
1195
- .menu-toggle-btn,
1196
- viking-button.menu-toggle-btn {
1197
- display: none !important;
1198
- }
1199
-
1200
- .mobile-menu:not(.open) {
1201
- display: none !important;
1202
- visibility: hidden !important;
1203
- pointer-events: none !important;
1204
- }
1205
-
1206
- .mobile-menu.open {
1207
- display: none !important;
1208
- opacity: 0 !important;
1209
- pointer-events: none !important;
1210
- visibility: hidden !important;
1211
- }
1212
-
1213
- .navbar-right {
1214
- gap: var(--viking-space-2, 16px);
1215
- }
1216
-
1217
- .desktop-nav {
1218
- gap: var(--viking-space-1, 8px);
1219
- }
1220
- }
1221
-
1222
- // Compact desktop — icon-only nav labels when the bar is still tight.
1223
- @container viking-navbar (min-width: 880px) and (max-width: 1120px) {
1224
- .nav-btn {
1225
- padding: 0 var(--viking-space-1, 8px) !important;
1226
- gap: 0 !important;
1227
- }
1228
-
1229
- .nav-btn > span {
1230
- position: absolute;
1231
- width: 1px;
1232
- height: 1px;
1233
- padding: 0;
1234
- margin: -1px;
1235
- overflow: hidden;
1236
- clip: rect(0, 0, 0, 0);
1237
- white-space: nowrap;
1238
- border: 0;
1239
- }
1240
- }
1241
-
1242
- // Full desktop — restore nav link labels and spacing.
1243
- @container viking-navbar (min-width: 1121px) {
1244
- .nav-btn {
1245
- padding: 0 var(--viking-space-2, 16px) !important;
1246
- gap: 8px !important;
1247
- font-size: var(--viking-font-size, 16px) !important;
1248
- letter-spacing: 0.08em !important;
1249
- }
1250
- }