@dataengineeringformachinelearning/viking-ui 4.0.3 → 4.0.5

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 +135 -70
  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 +98 -4
  11. package/dist/viking-components.css +161 -70
  12. package/dist/viking-tokens.json +9 -7
  13. package/dist/viking-ui-elements.js +45 -33
  14. package/dist/viking-ui.css +1 -1
  15. package/dist/web-components.js +46 -36
  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 -70
  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 -494
  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 -198
  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 -155
  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 -129
  146. package/src/lib/site-drakkar/site-navbar.scss +0 -2
  147. package/src/lib/site-drakkar/site-navbar.ts +0 -277
  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 -39
  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 -155
  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 -1215
  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 -922
  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 -270
  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 -70
  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 -494
  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,1215 +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
- }
251
-
252
- .nav-btn[hidden],
253
- .mobile-nav-btn[hidden] {
254
- display: none !important;
255
- }
256
-
257
- .nav-btn .material-icons,
258
- .nav-btn svg,
259
- .nav-btn .viking-icon,
260
- .nav-btn [data-viking-icon],
261
- .mobile-nav-btn svg,
262
- .mobile-nav-btn [data-viking-icon],
263
- .auth-btn svg,
264
- .auth-btn [data-viking-icon],
265
- .theme-toggle-btn svg,
266
- .menu-toggle-btn svg,
267
- .navbar-search-trigger [data-viking-icon],
268
- .navbar-search-mobile-btn [data-viking-icon] {
269
- margin: 0;
270
- flex-shrink: 0;
271
- }
272
-
273
- .nav-btn svg,
274
- .mobile-nav-btn svg,
275
- .auth-btn svg,
276
- .nav-btn [data-viking-icon] svg,
277
- .mobile-nav-btn [data-viking-icon] svg,
278
- .auth-btn [data-viking-icon] svg {
279
- width: 16px;
280
- height: 16px;
281
- }
282
-
283
- .theme-toggle-btn svg,
284
- .menu-toggle-btn svg,
285
- .navbar-search-trigger svg,
286
- .navbar-search-mobile-btn svg,
287
- .theme-toggle-btn [data-viking-icon] svg,
288
- .menu-toggle-btn [data-viking-icon] svg,
289
- .navbar-search-trigger [data-viking-icon] svg,
290
- .navbar-search-mobile-btn [data-viking-icon] svg {
291
- width: 24px;
292
- height: 24px;
293
- }
294
-
295
- .navbar-search-trigger [data-viking-icon] svg,
296
- .navbar-search-mobile-btn [data-viking-icon] svg {
297
- width: 20px;
298
- height: 20px;
299
- }
300
-
301
- .nav-btn .material-icons {
302
- font-size: var(--base-font-size);
303
- width: 16px;
304
- height: 16px;
305
- }
306
-
307
- .nav-btn::before {
308
- content: '';
309
- position: absolute;
310
- inset: auto 16px 0;
311
- height: 2px;
312
- border-radius: 2px;
313
- background: linear-gradient(
314
- 90deg,
315
- transparent,
316
- color-mix(in srgb, var(--viking-accent) 80%, transparent),
317
- transparent
318
- );
319
- opacity: 0;
320
- transform: scaleX(0.4);
321
- transition:
322
- opacity 0.25s ease,
323
- transform 0.25s ease;
324
- pointer-events: none;
325
- }
326
-
327
- .nav-btn:hover {
328
- color: var(--text-color) !important;
329
- background-color: color-mix(in srgb, var(--viking-accent) 10%, transparent) !important;
330
- transform: translateY(-1px);
331
- }
332
-
333
- .nav-btn:hover::before {
334
- opacity: 1;
335
- transform: scaleX(1);
336
- }
337
-
338
- html[data-theme='light'] {
339
- --nav-link-color: color-mix(in srgb, var(--viking-charcoal-900) 88%, var(--white));
340
-
341
- .nav-btn,
342
- .mobile-nav-btn {
343
- color: var(--nav-link-color) !important;
344
- }
345
-
346
- .menu-toggle-btn,
347
- .theme-toggle-btn,
348
- .navbar-search-trigger,
349
- .navbar-search-mobile-btn {
350
- color: var(--viking-text, var(--text-color)) !important;
351
- }
352
-
353
- .nav-btn:hover,
354
- .mobile-nav-btn:hover {
355
- background-color: color-mix(in srgb, var(--viking-accent) 10%, transparent) !important;
356
- }
357
- }
358
-
359
- .nav-btn.active {
360
- color: var(--text-color) !important;
361
- background-color: color-mix(in srgb, var(--viking-accent) 14%, transparent) !important;
362
- box-shadow:
363
- inset 0 -2px 0 0 var(--viking-accent),
364
- 0 0 12px color-mix(in srgb, var(--viking-accent) 18%, transparent) !important;
365
- }
366
-
367
- .nav-btn.active::before {
368
- opacity: 1;
369
- transform: scaleX(1);
370
- }
371
-
372
- .navbar .theme-toggle-btn,
373
- .theme-toggle-btn {
374
- @include viking-navbar-utility-btn;
375
- display: inline-grid;
376
- place-items: center;
377
- padding: 0;
378
- border-color: color-mix(
379
- in srgb,
380
- var(--viking-accent, var(--viking-accent)) 32%,
381
- var(--viking-border-strong, var(--border))
382
- );
383
- background: color-mix(
384
- in srgb,
385
- var(--viking-accent, var(--viking-accent)) 8%,
386
- var(--viking-surface, var(--card-bg))
387
- );
388
- color: var(--viking-accent-strong, var(--viking-ring));
389
-
390
- svg,
391
- viking-icon {
392
- display: block;
393
- width: 24px;
394
- height: 24px;
395
- }
396
-
397
- &:hover {
398
- border-color: var(--viking-accent-strong, var(--viking-ring));
399
- background-color: color-mix(
400
- in srgb,
401
- var(--viking-accent, var(--viking-accent)) 14%,
402
- var(--viking-surface, var(--card-bg))
403
- );
404
- color: var(--viking-accent-strong, var(--viking-ring));
405
- box-shadow: var(--viking-shadow-md, var(--shadow-md));
406
- }
407
-
408
- &:active {
409
- transform: scale(var(--viking-state-active-scale, 0.98));
410
- }
411
- }
412
-
413
- .navbar .theme-toggle-btn .material-icons,
414
- .navbar .theme-toggle-btn svg,
415
- .theme-toggle-btn .material-icons,
416
- .theme-toggle-btn svg {
417
- width: 24px;
418
- height: 24px;
419
- }
420
-
421
- .menu-toggle-btn,
422
- viking-button.menu-toggle-btn,
423
- viking-button-wc.menu-toggle-btn,
424
- #navbar-search-trigger {
425
- @include viking-navbar-utility-btn;
426
- display: inline-grid !important;
427
- place-items: center;
428
- padding: 0;
429
-
430
- svg,
431
- viking-icon {
432
- display: block;
433
- width: 24px;
434
- height: 24px;
435
- }
436
- }
437
-
438
- .navbar-search viking-button-wc::part(control),
439
- viking-button-wc.menu-toggle-btn::part(control),
440
- .navbar-right viking-theme-toggle-wc::part(control) {
441
- display: inline-grid;
442
- place-items: center;
443
- width: var(--viking-control-height, 40px);
444
- min-width: var(--viking-control-height, 40px);
445
- max-width: var(--viking-control-height, 40px);
446
- height: var(--viking-control-height, 40px);
447
- min-height: var(--viking-control-height, 40px);
448
- padding: 0;
449
- line-height: 1;
450
- box-sizing: border-box;
451
- }
452
-
453
- .navbar-search viking-button-wc [data-viking-icon],
454
- viking-button-wc.menu-toggle-btn [data-viking-icon] {
455
- display: inline-flex;
456
- align-items: center;
457
- justify-content: center;
458
- width: var(--viking-icon-size-md, 20px);
459
- height: var(--viking-icon-size-md, 20px);
460
- line-height: 1;
461
- }
462
-
463
- .menu-toggle-btn[aria-expanded='true'] {
464
- border-color: var(--viking-accent, var(--viking-accent));
465
- color: var(--viking-accent-strong, var(--viking-ring));
466
- background: var(--viking-accent-soft, color-mix(in srgb, var(--viking-accent) 12%, transparent));
467
- box-shadow: var(--viking-shadow-sm, var(--shadow-sm));
468
- }
469
-
470
- .divider {
471
- height: 24px;
472
- width: 0px;
473
- background-color: var(--border);
474
- margin: 0 8px;
475
- }
476
-
477
- .auth-btn .material-icons {
478
- margin: 0;
479
- font-size: var(--viking-font-size-sm, 14px);
480
- width: 16px;
481
- height: 16px;
482
- }
483
-
484
- .auth-btn,
485
- a.auth-btn,
486
- button.auth-btn {
487
- display: inline-flex !important;
488
- align-items: center !important;
489
- justify-content: center !important;
490
- gap: var(--viking-space-1, 8px) !important;
491
- min-width: var(--viking-btn-min-width, 120px) !important;
492
- height: var(--viking-control-height, 40px) !important;
493
- min-height: var(--viking-control-height, 40px) !important;
494
- padding: 0 var(--viking-space-2, 16px) !important;
495
- border-radius: var(--viking-radius, 8px) !important;
496
- letter-spacing: var(--viking-letter-spacing-caps, 0.08em) !important;
497
- text-transform: uppercase !important;
498
- white-space: nowrap !important;
499
- line-height: 1 !important;
500
- }
501
-
502
- .auth-btn::part(control),
503
- viking-button.auth-btn::part(control),
504
- viking-button.auth-btn viking-button-wc::part(control),
505
- viking-button.auth-btn viking-button-wc,
506
- viking-button-wc.auth-btn::part(control),
507
- .auth-btn.viking-full::part(control) {
508
- display: inline-flex !important;
509
- align-items: center !important;
510
- justify-content: center !important;
511
- gap: var(--viking-space-1, 8px) !important;
512
- min-width: var(--viking-btn-min-width, 120px) !important;
513
- min-height: var(--viking-control-height, 40px) !important;
514
- height: var(--viking-control-height, 40px) !important;
515
- padding: 0 var(--viking-space-2, 16px) !important;
516
- box-sizing: border-box !important;
517
- }
518
-
519
- .auth-signout-btn {
520
- background: transparent !important;
521
- color: var(--text-muted) !important;
522
- font-weight: 600 !important;
523
- border-radius: var(--viking-radius, 8px) !important;
524
- padding: 0 var(--viking-space-2, 16px) !important;
525
- border: 1px solid var(--border) !important;
526
- height: var(--viking-control-height, 40px) !important;
527
- line-height: var(--viking-control-height, 40px) !important;
528
- display: inline-flex !important;
529
- align-items: center !important;
530
- gap: var(--viking-space-1, 8px) !important;
531
- white-space: nowrap !important;
532
- text-transform: uppercase !important;
533
- letter-spacing: 0.08em !important;
534
- cursor: pointer;
535
- transition: var(--viking-transition-interactive) !important;
536
- }
537
-
538
- .auth-signout-btn[hidden] {
539
- display: none !important;
540
- }
541
-
542
- .auth-btn [data-viking-icon],
543
- .auth-btn [data-viking-icon] svg,
544
- .auth-signout-btn [data-viking-icon],
545
- .auth-signout-btn [data-viking-icon] svg {
546
- margin: 0 !important;
547
- display: inline-flex !important;
548
- align-items: center !important;
549
- justify-content: center !important;
550
- width: 16px !important;
551
- height: 16px !important;
552
- line-height: 1 !important;
553
- }
554
-
555
- .auth-signout-btn:hover {
556
- color: var(--text-color) !important;
557
- border-color: var(--viking-crimson-500) !important;
558
- background: color-mix(in srgb, var(--viking-crimson-500) 10%, transparent) !important;
559
- }
560
-
561
- .mobile-menu:not(.open) {
562
- display: none !important;
563
- }
564
-
565
- .mobile-menu {
566
- display: none;
567
- flex-direction: column;
568
- position: absolute;
569
- top: var(--viking-navbar-height, var(--navbar-height, 64px));
570
- left: 0;
571
- right: 0;
572
- width: auto;
573
- max-height: calc(100dvh - var(--viking-navbar-height, var(--navbar-height, 64px)));
574
- overflow-x: hidden;
575
- overflow-y: auto;
576
- overscroll-behavior: contain;
577
- -webkit-overflow-scrolling: touch;
578
- background-color: var(--viking-surface, var(--card-bg));
579
- box-shadow: var(--viking-shadow-md, var(--shadow-md));
580
- border-bottom: 1px solid var(--viking-border, var(--border));
581
- padding: var(--viking-space-3, 24px);
582
- padding-bottom: calc(var(--viking-space-3, 24px) + env(safe-area-inset-bottom, 0px));
583
- box-sizing: border-box;
584
- z-index: 49;
585
- gap: var(--viking-space-half, 4px);
586
-
587
- viking-button,
588
- viking-button-wc,
589
- .mobile-auth-btn {
590
- width: 100%;
591
- }
592
-
593
- .mobile-auth-btn,
594
- .auth-signout-btn,
595
- .mobile-auth-btn::part(control),
596
- .mobile-auth-btn.auth-btn::part(control),
597
- .mobile-auth-btn.auth-signout-btn::part(control) {
598
- flex-shrink: 0;
599
- width: 100%;
600
- }
601
-
602
- transform: translateY(-10px);
603
- opacity: 0;
604
- pointer-events: none;
605
- transition:
606
- transform 0.25s cubic-bezier(0.16, 1, 0.3, 1),
607
- opacity 0.25s ease;
608
- }
609
-
610
- .mobile-menu.open {
611
- transform: translateY(0);
612
- opacity: 1;
613
- pointer-events: auto;
614
- display: flex;
615
- }
616
-
617
- .mobile-nav-btn {
618
- width: 100% !important;
619
- justify-content: flex-start !important;
620
- font-size: var(--viking-font-size-sm, 14px) !important;
621
- font-weight: 600 !important;
622
- text-transform: uppercase !important;
623
- letter-spacing: 0.06em !important;
624
- color: var(--viking-text-muted, var(--text-muted)) !important;
625
- min-height: 44px !important;
626
- border-radius: var(--viking-radius, 8px) !important;
627
- padding: 0 var(--viking-space-2, 16px) !important;
628
- display: inline-flex !important;
629
- align-items: center !important;
630
- gap: var(--viking-space-1, 8px) !important;
631
- text-decoration: none;
632
- border: 1px solid transparent;
633
- background: transparent;
634
- transition: var(--viking-transition-interactive, all 0.25s ease);
635
- }
636
-
637
- .mobile-nav-btn .material-icons {
638
- margin: 0;
639
- font-size: 20px;
640
- width: 20px;
641
- height: 20px;
642
- }
643
-
644
- .mobile-nav-btn:hover {
645
- color: var(--viking-text, var(--text-color)) !important;
646
- background-color: var(--viking-accent-soft, color-mix(in srgb, var(--viking-accent) 8%, transparent)) !important;
647
- }
648
-
649
- .mobile-nav-btn.active {
650
- color: var(--viking-text, var(--text-color)) !important;
651
- background-color: var(--viking-accent-soft, color-mix(in srgb, var(--viking-accent) 12%, transparent)) !important;
652
- box-shadow: inset 0 0 0 1px var(--viking-accent-strong, var(--viking-ring)) !important;
653
- }
654
-
655
- .mobile-divider {
656
- height: 1px;
657
- background-color: var(--viking-border, var(--border));
658
- margin: var(--viking-space-2, 16px) 0 var(--viking-space-1, 8px);
659
- flex-shrink: 0;
660
- }
661
-
662
- .mobile-menu .mobile-auth-btn {
663
- margin-top: var(--viking-space-half, 4px);
664
- }
665
-
666
- .mobile-menu a.mobile-auth-btn:not(.auth-signout-btn),
667
- .mobile-menu a.mobile-auth-btn:not(.auth-signout-btn) span,
668
- .mobile-menu a.mobile-auth-btn:not(.auth-signout-btn) svg {
669
- color: var(--viking-white-pure, var(--viking-white-pure)) !important;
670
- }
671
-
672
- .navbar-link {
673
- font-size: 1rem;
674
- color: var(--text-muted);
675
- font-weight: 600;
676
- text-transform: uppercase;
677
- letter-spacing: 0.08em;
678
- text-decoration: none;
679
- transition: var(--transition-smooth);
680
- }
681
-
682
- .navbar-link:hover {
683
- color: var(--text-color);
684
- }
685
-
686
- .glowing-icon-sm {
687
- color: var(--color-primary, var(--primary-text-color, var(--viking-accent))) !important;
688
- transition: all 0.3s ease;
689
- }
690
-
691
- // Glow on the brand link wrapper so mat-icon overflow does not clip the filter.
692
- .navbar-brand.glowing-icon-sm,
693
- .navbar-brand:has(.glowing-icon-sm) {
694
- filter: drop-shadow(0 0 6px color-mix(in srgb, var(--color-primary) 60%, transparent));
695
- }
696
-
697
- .navbar-brand.glowing-icon-sm:hover,
698
- .navbar-brand:has(.glowing-icon-sm):hover {
699
- filter: drop-shadow(0 0 10px color-mix(in srgb, var(--color-primary) 90%, transparent));
700
- }
701
-
702
- .loader-logo.glowing-icon-sm,
703
- :not(.navbar-brand) > .glowing-icon-sm {
704
- filter: drop-shadow(0 0 6px color-mix(in srgb, var(--color-primary) 60%, transparent));
705
- }
706
-
707
- .loader-logo.glowing-icon-sm:hover,
708
- :not(.navbar-brand) > .glowing-icon-sm:hover {
709
- filter: drop-shadow(0 0 10px color-mix(in srgb, var(--color-primary) 90%, transparent));
710
- }
711
-
712
- // Algolia Experiences autocomplete — aligned with viking-autocomplete + search-palette.
713
-
714
- .navbar-search {
715
- display: inline-flex;
716
- align-items: center;
717
- align-self: center;
718
- flex: 0 0 auto;
719
- justify-content: center;
720
- max-width: none;
721
- min-width: 0;
722
- min-height: var(--viking-control-height, 40px);
723
- margin: 0;
724
- line-height: 0;
725
-
726
- viking-button,
727
- viking-button-wc {
728
- flex-shrink: 0;
729
- }
730
- }
731
-
732
- .algolia-autocomplete-host {
733
- display: none;
734
- font-family: var(--viking-font-family, inherit);
735
-
736
- --aa-font-family: var(--viking-font-family, inherit);
737
- --aa-font-size: var(--viking-font-size-sm, 14px);
738
- --aa-spacing: var(--viking-space-1, 8px);
739
- --aa-spacing-half: var(--viking-space-half, 4px);
740
- --aa-panel-max-height: 288px;
741
- --aa-panel-shadow: var(--viking-shadow-md, 0 4px 12px rgba(0, 0, 0, 0.25));
742
- --aa-icon-size: 20px;
743
- --aa-icon-stroke-width: 2px;
744
- --aa-primary-color-rgb: 20, 163, 168;
745
- --aa-muted-color-rgb: 148, 163, 184;
746
- }
747
-
748
- // Command-palette modal — matches viking-search-palette on every breakpoint.
749
- .algolia-autocomplete-host.algolia-autocomplete-open {
750
- display: flex;
751
- align-items: flex-start;
752
- justify-content: center;
753
- position: fixed;
754
- inset: 0;
755
- z-index: var(--viking-z-overlay, 10001);
756
- padding: 10vh var(--viking-space-2, 16px) var(--viking-space-2, 16px);
757
- background: var(--viking-overlay-backdrop, rgba(0, 0, 0, 0.55));
758
- backdrop-filter: blur(4px);
759
- -webkit-backdrop-filter: blur(4px);
760
- border: none;
761
- box-shadow: none;
762
- max-width: none;
763
- width: auto;
764
- min-width: 0;
765
-
766
- .aa-Autocomplete,
767
- .aa-DetachedContainer {
768
- max-width: 600px;
769
- width: 100%;
770
- border: 1px solid var(--viking-border-strong, var(--viking-border, var(--border)));
771
- border-radius: var(--viking-radius-lg, 12px);
772
- background: var(--viking-surface, var(--card-bg));
773
- box-shadow: var(--viking-shadow-lg, var(--shadow-md));
774
- overflow: hidden;
775
- font-family: var(--viking-font-family, inherit);
776
- color: var(--viking-text, var(--text-color));
777
- position: relative;
778
- }
779
-
780
- .aa-Autocomplete::before,
781
- .aa-DetachedContainer::before {
782
- content: '';
783
- position: absolute;
784
- inset: 0 0 auto;
785
- height: 1px;
786
- background: linear-gradient(
787
- 90deg,
788
- transparent,
789
- color-mix(in srgb, var(--viking-metallic-200) 22%, transparent),
790
- transparent
791
- );
792
- pointer-events: none;
793
- z-index: 1;
794
- }
795
-
796
- .aa-Form,
797
- form {
798
- @include viking-navbar-search-shell;
799
- margin: 0 !important;
800
- border: 0 !important;
801
- border-bottom: 1px solid var(--viking-border, var(--border)) !important;
802
- border-radius: 0 !important;
803
- box-shadow: none !important;
804
- background: color-mix(in srgb, var(--viking-bg, var(--bg-color)) 20%, transparent);
805
-
806
- &:focus-within {
807
- border-bottom-color: var(--viking-accent, var(--viking-accent)) !important;
808
- box-shadow: inset 0 -2px 0 var(--viking-accent-soft, color-mix(in srgb, var(--viking-accent) 12%, transparent)) !important;
809
- outline: none;
810
- }
811
- }
812
-
813
- .aa-Panel {
814
- position: static;
815
- margin: 0;
816
- border: 0;
817
- border-radius: 0;
818
- box-shadow: none;
819
- background: transparent;
820
- max-height: 50vh;
821
- padding: var(--viking-space-2, 16px);
822
- }
823
-
824
- &::after {
825
- content: '⌘K toggle · Esc close';
826
- display: block;
827
- max-width: 600px;
828
- width: 100%;
829
- margin: 0 auto;
830
- padding: var(--viking-space-1, 8px) var(--viking-space-2, 16px);
831
- border: 1px solid var(--viking-border, var(--border));
832
- border-top: 1px solid var(--viking-border, var(--border));
833
- border-radius: 0 0 var(--viking-radius-lg, 12px) var(--viking-radius-lg, 12px);
834
- background: var(--viking-surface, var(--card-bg));
835
- font-size: calc(var(--viking-font-size, 16px) * 0.85);
836
- color: var(--viking-text-muted, var(--text-muted));
837
- text-align: center;
838
- letter-spacing: 0.01em;
839
- }
840
- }
841
-
842
- .navbar-search-trigger,
843
- .navbar-search-mobile-btn {
844
- @include viking-navbar-utility-btn;
845
- display: inline-flex;
846
- align-items: center;
847
- justify-content: center;
848
- width: var(--viking-control-height, 40px);
849
- height: var(--viking-control-height, 40px);
850
- padding: 0;
851
- flex-shrink: 0;
852
- align-self: center;
853
- }
854
-
855
- .algolia-autocomplete-host .aa-Autocomplete,
856
- .algolia-autocomplete-host .aa-DetachedContainer {
857
- width: 100%;
858
- }
859
-
860
- .algolia-autocomplete-host .aa-Form,
861
- .algolia-autocomplete-host form {
862
- @include viking-navbar-search-shell;
863
- margin: 0 !important;
864
-
865
- &:focus-within {
866
- @include viking-navbar-search-shell-focus;
867
- }
868
- }
869
-
870
- .algolia-autocomplete-host .aa-InputWrapper {
871
- display: flex;
872
- align-items: center;
873
- flex: 1;
874
- min-width: 0;
875
- gap: var(--viking-space-1, 8px);
876
- border: 0 !important;
877
- box-shadow: none !important;
878
- background: transparent !important;
879
- padding: 0 !important;
880
- }
881
-
882
- .algolia-autocomplete-host .aa-InputWrapperPrefix,
883
- .algolia-autocomplete-host .aa-InputWrapperSuffix {
884
- display: inline-flex;
885
- align-items: center;
886
- justify-content: center;
887
- flex-shrink: 0;
888
- align-self: center;
889
- color: var(--viking-accent-strong, var(--viking-ring));
890
- border: 0 !important;
891
- box-shadow: none !important;
892
- background: transparent !important;
893
- padding: 0 !important;
894
- line-height: 1;
895
- }
896
-
897
- // Hide Algolia default purple branding; prefix uses theme accent at control size.
898
- .algolia-autocomplete-host .aa-SubmitButton,
899
- .algolia-autocomplete-host .aa-DetachedSearchButton,
900
- .algolia-autocomplete-host .aa-Label,
901
- .algolia-autocomplete-host .aa-PoweredBy {
902
- display: none !important;
903
- }
904
-
905
- .algolia-autocomplete-host .aa-InputWrapperPrefix svg,
906
- .algolia-autocomplete-host .aa-InputWrapperSuffix svg,
907
- .algolia-autocomplete-host .aa-InputWrapperPrefix img,
908
- .algolia-autocomplete-host .aa-InputWrapperSuffix img {
909
- width: 20px !important;
910
- height: 20px !important;
911
- max-width: 20px !important;
912
- max-height: 20px !important;
913
- color: var(--viking-accent-strong, var(--viking-ring)) !important;
914
- fill: currentColor !important;
915
- stroke: currentColor !important;
916
- }
917
-
918
- .algolia-autocomplete-host .aa-Input,
919
- .algolia-autocomplete-host input {
920
- flex: 1;
921
- width: 100%;
922
- min-width: 0;
923
- min-height: 0 !important;
924
- height: auto;
925
- padding: 0 !important;
926
- border: 0 !important;
927
- border-radius: 0 !important;
928
- outline: none !important;
929
- background: transparent !important;
930
- color: var(--viking-text, var(--text-color));
931
- font: inherit;
932
- font-size: var(--viking-font-size, 16px);
933
- line-height: var(--viking-line-height-normal, 1.5);
934
- box-shadow: none !important;
935
- }
936
-
937
- .algolia-autocomplete-host .aa-Input::placeholder,
938
- .algolia-autocomplete-host input::placeholder {
939
- color: var(--viking-text-muted, var(--text-muted));
940
- }
941
-
942
- .algolia-autocomplete-host .aa-Panel {
943
- @include viking-navbar-search-panel;
944
- position: absolute;
945
- top: calc(100% + var(--viking-space-1, 8px));
946
- left: 0;
947
- right: 0;
948
- z-index: var(--viking-z-overlay, 10001);
949
- }
950
-
951
- .algolia-autocomplete-host .aa-PanelLayout,
952
- .algolia-autocomplete-host .aa-Source {
953
- margin: 0;
954
- }
955
-
956
- .algolia-autocomplete-host .aa-List {
957
- display: flex;
958
- flex-direction: column;
959
- gap: 2px;
960
- margin: 0;
961
- padding: 0;
962
- list-style: none;
963
- }
964
-
965
- .algolia-autocomplete-host .aa-SourceHeader {
966
- display: flex;
967
- align-items: center;
968
- gap: var(--viking-space-1, 8px);
969
- padding: var(--viking-space-1, 8px) var(--viking-space-1, 8px) 0;
970
- margin: 0;
971
- }
972
-
973
- .algolia-autocomplete-host .aa-SourceHeaderTitle {
974
- font-size: calc(var(--viking-font-size-sm, 14px) * 0.85);
975
- font-weight: 700;
976
- text-transform: uppercase;
977
- letter-spacing: 0.1em;
978
- color: var(--viking-text-muted, var(--text-muted));
979
- }
980
-
981
- .algolia-autocomplete-host .aa-SourceHeaderLine {
982
- flex: 1;
983
- height: 1px;
984
- background: var(--viking-border, var(--border));
985
- }
986
-
987
- .algolia-autocomplete-host .aa-Item {
988
- border-radius: calc(var(--viking-radius, 8px) / 1.5);
989
- padding: 0;
990
- margin: 0;
991
- }
992
-
993
- .algolia-autocomplete-host .aa-ItemLink,
994
- .algolia-autocomplete-host .aa-ItemWrapper {
995
- display: flex;
996
- align-items: flex-start;
997
- gap: var(--viking-space-1-5, 12px);
998
- min-height: var(--viking-control-height-sm, 36px);
999
- padding: var(--viking-space-1-5, 12px);
1000
- border-radius: calc(var(--viking-radius, 8px) / 1.5);
1001
- color: var(--viking-text, var(--text-color));
1002
- text-decoration: none;
1003
- transition: var(--viking-transition-interactive, background-color 0.2s ease);
1004
- }
1005
-
1006
- .algolia-autocomplete-host .aa-Item[aria-selected='true'] .aa-ItemLink,
1007
- .algolia-autocomplete-host .aa-Item[aria-selected='true'] .aa-ItemWrapper,
1008
- .algolia-autocomplete-host .aa-Item:hover .aa-ItemLink,
1009
- .algolia-autocomplete-host .aa-Item:hover .aa-ItemWrapper {
1010
- background: var(--viking-accent-soft, color-mix(in srgb, var(--viking-accent) 12%, transparent));
1011
- }
1012
-
1013
- .algolia-autocomplete-host .aa-ItemContent {
1014
- display: flex;
1015
- align-items: flex-start;
1016
- gap: var(--viking-space-1-5, 12px);
1017
- min-width: 0;
1018
- flex: 1;
1019
- }
1020
-
1021
- .algolia-autocomplete-host .aa-ItemIcon {
1022
- display: inline-flex;
1023
- align-items: center;
1024
- justify-content: center;
1025
- flex-shrink: 0;
1026
- width: var(--viking-space-5, 40px);
1027
- height: var(--viking-space-5, 40px);
1028
- margin-top: 2px;
1029
- border-radius: var(--viking-radius, 8px);
1030
- background: var(--viking-surface-alt, var(--viking-charcoal-700)) !important;
1031
- box-shadow: none !important;
1032
- color: var(--viking-accent-strong, var(--viking-ring));
1033
- overflow: hidden;
1034
-
1035
- img,
1036
- svg {
1037
- width: 20px;
1038
- height: 20px;
1039
- object-fit: contain;
1040
- }
1041
- }
1042
-
1043
- .algolia-autocomplete-host .aa-Item[aria-selected='true'] .aa-ItemIcon,
1044
- .algolia-autocomplete-host .aa-Item:hover .aa-ItemIcon {
1045
- color: var(--viking-accent, var(--viking-accent));
1046
- }
1047
-
1048
- .algolia-autocomplete-host .aa-ItemContentBody {
1049
- display: flex;
1050
- flex-direction: column;
1051
- gap: calc(var(--viking-space-1, 8px) / 2);
1052
- min-width: 0;
1053
- flex: 1;
1054
- }
1055
-
1056
- .algolia-autocomplete-host .aa-ItemContentTitle {
1057
- font-size: var(--viking-font-size, 16px);
1058
- font-weight: 600;
1059
- color: var(--viking-text, var(--text-color));
1060
- line-height: 1.3;
1061
- }
1062
-
1063
- .algolia-autocomplete-host .aa-ItemContentDescription {
1064
- font-size: var(--viking-font-size-sm, 14px);
1065
- color: var(--viking-text-muted, var(--text-muted));
1066
- line-height: var(--viking-line-height-relaxed, 1.625);
1067
- white-space: normal;
1068
- overflow: hidden;
1069
- display: -webkit-box;
1070
- -webkit-box-orient: vertical;
1071
- -webkit-line-clamp: 3;
1072
- text-overflow: ellipsis;
1073
- }
1074
-
1075
- .algolia-autocomplete-host mark,
1076
- .algolia-autocomplete-host .aa-ItemContentTitle mark,
1077
- .algolia-autocomplete-host .aa-ItemContentDescription mark {
1078
- background: color-mix(in srgb, var(--viking-accent, var(--viking-accent)) 20%, transparent);
1079
- color: var(--viking-accent, var(--viking-accent));
1080
- border-radius: 0;
1081
- padding: 0;
1082
- font-weight: 600;
1083
- }
1084
-
1085
- .algolia-autocomplete-host .aa-ItemActions,
1086
- .algolia-autocomplete-host .aa-GradientBottom,
1087
- .algolia-autocomplete-host .aa-GradientTop {
1088
- display: none;
1089
- }
1090
-
1091
- // Detached overlay (Algolia mobile / portal panel) — match search-palette modal.
1092
- .aa-DetachedOverlay {
1093
- background: var(--viking-overlay-backdrop, rgba(0, 0, 0, 0.55)) !important;
1094
- backdrop-filter: blur(4px);
1095
- -webkit-backdrop-filter: blur(4px);
1096
- }
1097
-
1098
- .aa-DetachedContainer {
1099
- font-family: var(--viking-font-family, inherit);
1100
- border: 1px solid var(--viking-border, var(--border)) !important;
1101
- border-radius: var(--viking-radius-lg, 12px) !important;
1102
- background: var(--viking-surface, var(--card-bg)) !important;
1103
- box-shadow: var(--viking-shadow-lg, var(--shadow-md)) !important;
1104
- }
1105
-
1106
- .aa-DetachedContainer .aa-Form,
1107
- .aa-DetachedContainer form {
1108
- @include viking-navbar-search-shell;
1109
- margin: var(--viking-space-1, 8px) !important;
1110
- border-bottom: 1px solid var(--viking-border, var(--border)) !important;
1111
- border-radius: var(--viking-radius, 8px) var(--viking-radius, 8px) 0 0 !important;
1112
- box-shadow: none !important;
1113
- }
1114
-
1115
- .aa-DetachedContainer .aa-Panel {
1116
- @include viking-navbar-search-panel;
1117
- position: static !important;
1118
- border: 0 !important;
1119
- box-shadow: none !important;
1120
- max-height: 50vh !important;
1121
- }
1122
-
1123
- @media (min-width: 768px) {
1124
- .navbar-content {
1125
- position: relative;
1126
- }
1127
-
1128
- .navbar-center.desktop-nav {
1129
- position: absolute;
1130
- left: 50%;
1131
- transform: translateX(-50%);
1132
- z-index: 1;
1133
- pointer-events: auto;
1134
- max-width: min(100% - 22rem, 42rem);
1135
- overflow: hidden;
1136
- justify-content: center;
1137
- }
1138
-
1139
- .navbar-left {
1140
- position: relative;
1141
- z-index: 2;
1142
- flex-shrink: 0;
1143
- }
1144
-
1145
- .navbar-right {
1146
- position: relative;
1147
- z-index: 2;
1148
- flex-shrink: 0;
1149
- min-width: 12.5rem;
1150
- pointer-events: none;
1151
-
1152
- > * {
1153
- pointer-events: auto;
1154
- }
1155
- }
1156
-
1157
- .desktop-nav {
1158
- display: flex;
1159
- }
1160
-
1161
- .desktop-auth {
1162
- display: flex;
1163
- }
1164
-
1165
- .menu-toggle-btn,
1166
- viking-button.menu-toggle-btn {
1167
- display: none !important;
1168
- }
1169
-
1170
- .mobile-menu:not(.open) {
1171
- display: none !important;
1172
- }
1173
-
1174
- .mobile-menu.open {
1175
- display: none !important;
1176
- }
1177
-
1178
- .navbar-right {
1179
- gap: var(--viking-space-2, 16px);
1180
- }
1181
-
1182
- .desktop-nav {
1183
- gap: var(--viking-space-1, 8px);
1184
- }
1185
- }
1186
-
1187
- // Compact desktop — icon-only nav labels when the bar is still tight.
1188
- @container viking-navbar (min-width: 880px) and (max-width: 1120px) {
1189
- .nav-btn {
1190
- padding: 0 var(--viking-space-1, 8px) !important;
1191
- gap: 0 !important;
1192
- }
1193
-
1194
- .nav-btn > span {
1195
- position: absolute;
1196
- width: 1px;
1197
- height: 1px;
1198
- padding: 0;
1199
- margin: -1px;
1200
- overflow: hidden;
1201
- clip: rect(0, 0, 0, 0);
1202
- white-space: nowrap;
1203
- border: 0;
1204
- }
1205
- }
1206
-
1207
- // Full desktop — restore nav link labels and spacing.
1208
- @container viking-navbar (min-width: 1121px) {
1209
- .nav-btn {
1210
- padding: 0 var(--viking-space-2, 16px) !important;
1211
- gap: 8px !important;
1212
- font-size: var(--viking-font-size, 16px) !important;
1213
- letter-spacing: 0.08em !important;
1214
- }
1215
- }