weg-shared-layout 0.0.23 → 0.0.25

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 (57) hide show
  1. package/LICENSE +21 -21
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/weg-footer_2.cjs.entry.js +307 -219
  4. package/dist/cjs/weg-shared-layout.cjs.js +1 -1
  5. package/dist/collection/collection-manifest.json +0 -1
  6. package/dist/collection/components/weg-footer/icons/instagram.svg +5 -5
  7. package/dist/collection/components/weg-footer/icons/linkedin.svg +3 -3
  8. package/dist/collection/components/weg-footer/icons/tiktok.svg +3 -3
  9. package/dist/collection/components/weg-footer/icons/youtube.svg +4 -4
  10. package/dist/collection/components/weg-footer/weg-footer.css +270 -201
  11. package/dist/collection/components/weg-footer/weg-footer.js +22 -26
  12. package/dist/collection/components/weg-header/weg-header.css +474 -365
  13. package/dist/collection/components/weg-header/weg-header.js +226 -166
  14. package/dist/collection/constants/breakpoints.js +6 -0
  15. package/dist/collection/styles/shared.css +72 -78
  16. package/dist/collection/utils/layout.js +57 -9
  17. package/dist/components/p-BnMIy-A5.js +1 -0
  18. package/dist/components/weg-footer.js +1 -1
  19. package/dist/components/weg-header.js +1 -1
  20. package/dist/esm/loader.js +1 -1
  21. package/dist/esm/weg-footer_2.entry.js +307 -219
  22. package/dist/esm/weg-shared-layout.js +1 -1
  23. package/dist/types/components/weg-footer/weg-footer.d.ts +2 -2
  24. package/dist/types/components/weg-header/weg-header.d.ts +32 -16
  25. package/dist/types/components.d.ts +6 -48
  26. package/dist/types/constants/breakpoints.d.ts +6 -0
  27. package/dist/types/types/layout-data.d.ts +13 -27
  28. package/dist/types/utils/layout.d.ts +9 -1
  29. package/dist/weg-shared-layout/p-d74a58cf.entry.js +1 -0
  30. package/dist/weg-shared-layout/weg-shared-layout.esm.js +1 -1
  31. package/docs/angular-integration-guide.md +1004 -0
  32. package/docs/angular.md +229 -138
  33. package/docs/nextjs.md +306 -305
  34. package/docs/publishing.md +48 -48
  35. package/docs/react.md +261 -261
  36. package/docs/vanilla.md +138 -140
  37. package/package.json +12 -8
  38. package/readme.md +82 -107
  39. package/src/assets/dummy-data.json +137 -63
  40. package/src/constants/breakpoints.ts +7 -0
  41. package/dist/cjs/my-component.cjs.entry.js +0 -33
  42. package/dist/collection/components/my-component/my-component.css +0 -3
  43. package/dist/collection/components/my-component/my-component.js +0 -95
  44. package/dist/collection/components/weg-header/signed-in-layout.js +0 -13
  45. package/dist/collection/constants/weg-urls.js +0 -18
  46. package/dist/components/my-component.d.ts +0 -11
  47. package/dist/components/my-component.js +0 -1
  48. package/dist/components/p-DbIEJ3IT.js +0 -1
  49. package/dist/esm/my-component.entry.js +0 -31
  50. package/dist/types/components/my-component/my-component.d.ts +0 -16
  51. package/dist/types/components/weg-header/signed-in-layout.d.ts +0 -18
  52. package/dist/types/constants/weg-urls.d.ts +0 -18
  53. package/dist/weg-shared-layout/p-80fa529c.entry.js +0 -1
  54. package/dist/weg-shared-layout/p-d61033bd.entry.js +0 -1
  55. package/src/constants/weg-urls.ts +0 -23
  56. /package/dist/types/Users/{tan/Documents/code → rakin/Documents/WEG/repos}/weg-shared-layout/.stencil/test-utils/axe.d.ts +0 -0
  57. /package/dist/types/Users/{tan/Documents/code → rakin/Documents/WEG/repos}/weg-shared-layout/.stencil/test-utils/viewport.d.ts +0 -0
@@ -1,365 +1,474 @@
1
- .header {
2
- width: 100%;
3
- border-bottom: 2px solid var(--weg-color-accent);
4
- background: #ffffff;
5
- color: #0f172a;
6
- font-family: var(--weg-font-family);
7
- }
8
-
9
- :host {
10
- position: relative;
11
- z-index: 20;
12
- }
13
-
14
- .logo-link {
15
- display: inline-flex;
16
- align-items: center;
17
- text-decoration: none;
18
- outline: none;
19
- }
20
-
21
- .logo-link:focus-visible {
22
- outline: 2px solid var(--weg-color-accent);
23
- outline-offset: 4px;
24
- border-radius: 4px;
25
- }
26
-
27
- .logo {
28
- height: 40px;
29
- width: auto;
30
- }
31
-
32
- /* Desktop */
33
- .desktop {
34
- display: none;
35
- }
36
-
37
- .desktop-nav {
38
- display: flex;
39
- align-items: center;
40
- justify-content: flex-end;
41
- flex-wrap: wrap;
42
- gap: 16px;
43
- }
44
-
45
- .desktop-nav__list {
46
- display: flex;
47
- align-items: center;
48
- flex-wrap: wrap;
49
- gap: 16px;
50
- list-style: none;
51
- margin: 0;
52
- padding: 0;
53
- }
54
-
55
- .desktop-nav__item {
56
- position: relative;
57
- }
58
-
59
- .nav-link {
60
- font-weight: 600;
61
- color: inherit;
62
- text-decoration: none;
63
- outline: none;
64
- }
65
-
66
- .nav-link:hover {
67
- opacity: 0.85;
68
- }
69
-
70
- .nav-link:focus-visible {
71
- outline: 2px solid var(--weg-color-accent);
72
- outline-offset: 4px;
73
- border-radius: 4px;
74
- }
75
-
76
- .dropdown-trigger {
77
- display: inline-flex;
78
- align-items: center;
79
- gap: 8px;
80
- padding: 8px 12px;
81
- border: none;
82
- border-radius: 8px;
83
- background: transparent;
84
- font: inherit;
85
- font-weight: 600;
86
- color: inherit;
87
- cursor: pointer;
88
- outline: none;
89
- }
90
-
91
- .dropdown-trigger:hover {
92
- opacity: 0.85;
93
- }
94
-
95
- .dropdown-trigger:focus-visible {
96
- outline: 2px solid var(--weg-color-accent);
97
- outline-offset: 2px;
98
- }
99
-
100
- .dropdown-trigger--open {
101
- background: #f1f5f9;
102
- }
103
-
104
- .toggle-icon {
105
- display: inline-flex;
106
- align-items: center;
107
- justify-content: center;
108
- width: 24px;
109
- height: 24px;
110
- border-radius: 999px;
111
- background: #312e81;
112
- color: #ffffff;
113
- flex-shrink: 0;
114
- }
115
-
116
- .dropdown-panel {
117
- position: absolute;
118
- top: calc(100% + 8px);
119
- left: 0;
120
- z-index: 50;
121
- min-width: 280px;
122
- padding: 12px 0 12px 12px;
123
- border: 1px solid #e2e8f0;
124
- border-radius: 8px;
125
- background: #f8fafc;
126
- box-shadow: 0 4px 16px rgba(15, 23, 42, 0.08);
127
- }
128
-
129
- /* Invisible bridge so pointer travel from trigger to panel does not close hover menu */
130
- .dropdown-panel::before {
131
- content: '';
132
- position: absolute;
133
- top: -8px;
134
- left: 0;
135
- right: 0;
136
- height: 8px;
137
- }
138
-
139
- .dropdown-panel__accent {
140
- border-left: 4px solid var(--weg-color-accent);
141
- padding-left: 12px;
142
- }
143
-
144
- .dropdown-panel__links {
145
- display: flex;
146
- flex-direction: column;
147
- gap: 4px;
148
- }
149
-
150
- .dropdown-panel__link {
151
- display: block;
152
- padding: 8px 12px;
153
- margin-right: 12px;
154
- border-radius: 6px;
155
- font-weight: 600;
156
- color: inherit;
157
- text-decoration: none;
158
- outline: none;
159
- }
160
-
161
- .dropdown-panel__link:hover {
162
- background: #cdcff8;
163
- }
164
-
165
- .dropdown-panel__link:focus-visible {
166
- background: #cdcff8;
167
- outline: 2px solid var(--weg-color-accent);
168
- outline-offset: 2px;
169
- }
170
-
171
- .sign-in-link,
172
- .sign-out-link,
173
- .auth-button {
174
- display: inline-flex;
175
- align-items: center;
176
- gap: 8px;
177
- font-weight: 600;
178
- color: inherit;
179
- text-decoration: none;
180
- outline: none;
181
- }
182
-
183
- .sign-out-link.mobile-nav__row {
184
- justify-content: flex-start;
185
- gap: 8px;
186
- }
187
-
188
- .auth-button {
189
- padding: 0;
190
- border: none;
191
- background: transparent;
192
- font: inherit;
193
- cursor: pointer;
194
- }
195
-
196
- .sign-in-link:hover,
197
- .sign-out-link:hover,
198
- .auth-button:hover {
199
- opacity: 0.85;
200
- }
201
-
202
- .sign-in-link:focus-visible,
203
- .sign-out-link:focus-visible,
204
- .auth-button:focus-visible {
205
- outline: 2px solid var(--weg-color-accent);
206
- outline-offset: 4px;
207
- border-radius: 4px;
208
- }
209
-
210
- /* Mobile */
211
- .mobile {
212
- display: flex;
213
- width: 100%;
214
- min-width: 0;
215
- align-items: center;
216
- justify-content: space-between;
217
- gap: 12px;
218
- }
219
-
220
- .mobile .logo-link {
221
- flex: 1 1 auto;
222
- min-width: 0;
223
- justify-content: center;
224
- }
225
-
226
- .mobile .logo {
227
- max-width: 100%;
228
- }
229
-
230
- .icon-button {
231
- display: inline-flex;
232
- align-items: center;
233
- justify-content: center;
234
- width: 40px;
235
- height: 40px;
236
- padding: 0;
237
- border: none;
238
- border-radius: 8px;
239
- background: transparent;
240
- color: inherit;
241
- cursor: pointer;
242
- text-decoration: none;
243
- outline: none;
244
- }
245
-
246
- .icon-button:hover {
247
- background: #f1f5f9;
248
- }
249
-
250
- .icon-button:focus-visible {
251
- outline: 2px solid var(--weg-color-accent);
252
- outline-offset: 2px;
253
- }
254
-
255
- .mobile-overlay {
256
- position: fixed;
257
- inset: 0;
258
- z-index: 100;
259
- background: #ffffff;
260
- overflow-y: auto;
261
- }
262
-
263
- .mobile-overlay__header {
264
- display: flex;
265
- align-items: center;
266
- justify-content: space-between;
267
- gap: 12px;
268
- padding: 12px 16px;
269
- border-bottom: 2px solid var(--weg-color-accent);
270
- }
271
-
272
- .mobile-overlay__logo {
273
- flex: 1;
274
- display: flex;
275
- justify-content: center;
276
- }
277
-
278
- .mobile-overlay__logo .logo {
279
- height: 40px;
280
- }
281
-
282
- .mobile-nav {
283
- padding: 0 16px 24px;
284
- }
285
-
286
- .mobile-nav__section {
287
- border-bottom: 1px solid #d8d4f7;
288
- }
289
-
290
- .mobile-nav__row {
291
- display: flex;
292
- align-items: center;
293
- justify-content: space-between;
294
- gap: 12px;
295
- width: 100%;
296
- padding: 16px 0;
297
- border: none;
298
- background: transparent;
299
- font: inherit;
300
- font-weight: 600;
301
- color: inherit;
302
- text-align: left;
303
- text-decoration: none;
304
- cursor: pointer;
305
- outline: none;
306
- }
307
-
308
- .mobile-nav__row:focus-visible {
309
- outline: 2px solid var(--weg-color-accent);
310
- outline-offset: 2px;
311
- border-radius: 4px;
312
- }
313
-
314
- .mobile-nav__sub {
315
- padding: 0 0 12px 0;
316
- }
317
-
318
- .mobile-nav__sub-link {
319
- display: block;
320
- padding: 10px 0;
321
- font-weight: 400;
322
- color: inherit;
323
- text-decoration: none;
324
- outline: none;
325
- }
326
-
327
- .mobile-nav__sub-link:focus-visible {
328
- outline: 2px solid var(--weg-color-accent);
329
- outline-offset: 2px;
330
- border-radius: 4px;
331
- }
332
-
333
- .mobile-nav__sub-link:hover {
334
- opacity: 0.85;
335
- }
336
-
337
- /* md: matches --weg-breakpoint-md */
338
- @media (width >= 768px) {
339
- .header {
340
- border-bottom-width: 4px;
341
- }
342
-
343
- .logo {
344
- height: 80px;
345
- }
346
-
347
- .desktop {
348
- display: flex;
349
- width: 100%;
350
- align-items: center;
351
- justify-content: space-between;
352
- gap: 24px;
353
- }
354
-
355
- .mobile {
356
- display: none;
357
- }
358
- }
359
-
360
- /* xl: matches --weg-breakpoint-xl */
361
- @media (width >= 1280px) {
362
- .desktop-nav__list {
363
- gap: 35px;
364
- }
365
- }
1
+ /**
2
+ * Breakpoint tokens (mobile-first min-width).
3
+ *
4
+ * - `@custom-media` names: e.g. `@media (--weg-md)` applies from 960px up.
5
+ * Compiled by PostCSS in stencil.config.ts.
6
+ * - `--weg-breakpoint-*` variables: use in property values, e.g. `max-width: var(--weg-breakpoint-md)`.
7
+ *
8
+ * Import this file in component stylesheets, or rely on shared.css which already imports it.
9
+ */
10
+
11
+ :host {
12
+ --weg-breakpoint-sm: 640px;
13
+ --weg-breakpoint-md: 960px;
14
+ --weg-breakpoint-lg: 1280px;
15
+ --weg-breakpoint-xl: 1440px;
16
+ }
17
+
18
+
19
+ .header {
20
+ width: 100%;
21
+ border-bottom: 2px solid var(--weg-color-accent);
22
+ background: #ffffff;
23
+ color: #0f172a;
24
+ font-family: var(--weg-font-family);
25
+ }
26
+
27
+ @media (width >= 960px) {
28
+ .header {
29
+ border-bottom-width: 0.25rem;
30
+ }
31
+ }
32
+
33
+ :host {
34
+ position: relative;
35
+ z-index: 20;
36
+ }
37
+
38
+ .header--menu-open {
39
+ position: fixed;
40
+ inset: 0;
41
+ z-index: 1000;
42
+ display: flex;
43
+ flex-direction: column;
44
+ overflow: hidden;
45
+ }
46
+
47
+ .header--menu-open .header-inner {
48
+ flex: 1 1 auto;
49
+ flex-wrap: wrap;
50
+ align-content: flex-start;
51
+ min-height: 0;
52
+ }
53
+
54
+ .header--menu-open .main-nav-panel {
55
+ display: block;
56
+ flex: 1 1 100%;
57
+ width: 100%;
58
+ min-height: 0;
59
+ overflow-y: auto;
60
+ border-top: 1px solid #d8d4f7;
61
+ }
62
+
63
+ @media (width >= 960px) {
64
+ .header--menu-open {
65
+ position: static;
66
+ inset: auto;
67
+ z-index: auto;
68
+ display: block;
69
+ overflow: visible;
70
+ }
71
+
72
+ .header--menu-open .header-inner {
73
+ flex: unset;
74
+ flex-wrap: nowrap;
75
+ align-content: unset;
76
+ min-height: unset;
77
+ }
78
+ }
79
+
80
+ .logo-link {
81
+ display: inline-flex;
82
+ align-items: center;
83
+ text-decoration: none;
84
+ outline: none;
85
+ }
86
+
87
+ .logo-link:focus-visible {
88
+ outline: 2px solid var(--weg-color-accent);
89
+ outline-offset: 4px;
90
+ border-radius: 4px;
91
+ }
92
+
93
+ .logo {
94
+ height: 2.5rem;
95
+ width: auto;
96
+ }
97
+
98
+ @media (width >= 960px) {
99
+ .logo {
100
+ height: 3rem;
101
+ }
102
+ }
103
+
104
+ @media (width >= 1280px) {
105
+ .logo {
106
+ height: 5rem;
107
+ }
108
+ }
109
+
110
+ .header-inner {
111
+ display: flex;
112
+ width: 100%;
113
+ min-width: 0;
114
+ align-items: center;
115
+ justify-content: space-between;
116
+ gap: 0.75rem;
117
+ }
118
+
119
+ @media (width >= 960px) {
120
+ .header-inner {
121
+ flex-wrap: nowrap;
122
+ gap: 1.5rem;
123
+ }
124
+ }
125
+
126
+ .header-inner .logo-link {
127
+ flex: 1 1 auto;
128
+ min-width: 0;
129
+ justify-content: center;
130
+ }
131
+
132
+ @media (width >= 960px) {
133
+ .header-inner .logo-link {
134
+ flex: 0 0 auto;
135
+ justify-content: flex-start;
136
+ }
137
+ }
138
+
139
+ .header-inner .logo {
140
+ max-width: 100%;
141
+ }
142
+
143
+ .header-actions {
144
+ display: flex;
145
+ align-items: center;
146
+ flex-shrink: 0;
147
+ }
148
+
149
+ @media (width >= 960px) {
150
+ .header-actions {
151
+ display: none;
152
+ }
153
+ }
154
+
155
+ .main-nav-panel {
156
+ display: none;
157
+ margin-inline: -0.5rem;
158
+ }
159
+
160
+ @media (width >= 960px) {
161
+ .main-nav-panel {
162
+ display: flex;
163
+ flex: 1 1 auto;
164
+ width: auto;
165
+ min-width: 0;
166
+ justify-content: flex-end;
167
+ overflow: visible;
168
+ border-top: none;
169
+ }
170
+ }
171
+
172
+ .main-nav {
173
+ padding: 0 1rem 1.5rem;
174
+ }
175
+
176
+ @media (width >= 960px) {
177
+ .main-nav {
178
+ display: flex;
179
+ align-items: center;
180
+ justify-content: flex-end;
181
+ flex-wrap: wrap;
182
+ gap: 1rem;
183
+ padding: 0;
184
+ }
185
+ }
186
+
187
+ .main-nav__list {
188
+ list-style: none;
189
+ margin: 0;
190
+ padding: 0;
191
+ }
192
+
193
+ @media (width >= 960px) {
194
+ .main-nav__list {
195
+ display: flex;
196
+ align-items: center;
197
+ flex-wrap: wrap;
198
+ gap: 1rem;
199
+ }
200
+ }
201
+
202
+ @media (width >= 1280px) {
203
+ .main-nav__list {
204
+ gap: 2rem;
205
+ }
206
+ }
207
+
208
+ .main-nav__item {
209
+ border-bottom: 1px solid #d8d4f7;
210
+ }
211
+
212
+ @media (width >= 960px) {
213
+ .main-nav__item {
214
+ border-bottom: none;
215
+ }
216
+ }
217
+
218
+ .main-nav__item--dropdown {
219
+ position: static;
220
+ }
221
+
222
+ .nav-dropdown {
223
+ position: relative;
224
+ }
225
+
226
+ .nav-link {
227
+ display: block;
228
+ width: 100%;
229
+ padding: 1rem 0;
230
+ font-weight: 600;
231
+ color: inherit;
232
+ text-decoration: none;
233
+ outline: none;
234
+ }
235
+
236
+ .nav-link:hover {
237
+ opacity: 0.85;
238
+ }
239
+
240
+ .nav-link:focus-visible {
241
+ outline: 2px solid var(--weg-color-accent);
242
+ outline-offset: 2px;
243
+ border-radius: 4px;
244
+ }
245
+
246
+ .nav-dropdown__trigger {
247
+ display: flex;
248
+ align-items: center;
249
+ justify-content: space-between;
250
+ gap: 0.75rem;
251
+ width: 100%;
252
+ padding: 1rem 0;
253
+ border: none;
254
+ background: transparent;
255
+ font: inherit;
256
+ font-weight: 600;
257
+ color: inherit;
258
+ text-align: left;
259
+ cursor: pointer;
260
+ outline: none;
261
+ }
262
+
263
+ .nav-dropdown__trigger:hover {
264
+ opacity: 0.85;
265
+ }
266
+
267
+ .nav-dropdown__trigger:focus-visible {
268
+ outline: 2px solid var(--weg-color-accent);
269
+ outline-offset: 2px;
270
+ border-radius: 4px;
271
+ }
272
+
273
+ .nav-dropdown__trigger--open {
274
+ background: transparent;
275
+ }
276
+
277
+ .toggle-icon {
278
+ display: inline-flex;
279
+ align-items: center;
280
+ justify-content: center;
281
+ width: 1.5rem;
282
+ height: 1.5rem;
283
+ border-radius: 999rem;
284
+ background: #312e81;
285
+ color: #ffffff;
286
+ flex-shrink: 0;
287
+ }
288
+
289
+ .nav-dropdown__panel {
290
+ padding: 0 0 0.75rem;
291
+ }
292
+
293
+ @media (width >= 960px) {
294
+ .nav-dropdown__panel {
295
+ position: absolute;
296
+ top: calc(100% + 0.5rem);
297
+ left: 0;
298
+ z-index: 500;
299
+ min-width: 17.5rem;
300
+ padding: 0.75rem 0 0.75rem 0.75rem;
301
+ border: 1px solid #e2e8f0;
302
+ border-radius: 0.5rem;
303
+ background: #f8fafc;
304
+ box-shadow: 0 0.25rem 1rem rgba(15, 23, 42, 0.08);
305
+ }
306
+
307
+ .nav-dropdown__panel::before {
308
+ content: '';
309
+ position: absolute;
310
+ top: -0.5rem;
311
+ left: 0;
312
+ right: 0;
313
+ height: 0.5rem;
314
+ }
315
+ }
316
+
317
+ .nav-dropdown__accent {
318
+ border-left: 0.25rem solid var(--weg-color-accent);
319
+ padding-left: 0.75rem;
320
+ }
321
+
322
+ .nav-dropdown__links {
323
+ display: flex;
324
+ flex-direction: column;
325
+ gap: 0.25rem;
326
+ }
327
+
328
+ .nav-dropdown__link {
329
+ display: block;
330
+ padding: 0.625rem 0;
331
+ font-weight: 400;
332
+ color: inherit;
333
+ text-decoration: none;
334
+ outline: none;
335
+ }
336
+
337
+ .nav-dropdown__link:hover {
338
+ opacity: 0.85;
339
+ }
340
+
341
+ .nav-dropdown__link:focus-visible {
342
+ outline: 0.125rem solid var(--weg-color-accent);
343
+ outline-offset: 0.125rem;
344
+ border-radius: 0.25rem;
345
+ }
346
+
347
+ @media (width >= 960px) {
348
+ .nav-dropdown__link {
349
+ padding: 0.5rem;
350
+ margin-right: 0.75rem;
351
+ border-radius: 0.5rem;
352
+ font-weight: 600;
353
+ }
354
+
355
+ .nav-dropdown__link:hover,
356
+ .nav-dropdown__link:focus-visible {
357
+ background: #cdcff8;
358
+ opacity: 1;
359
+ }
360
+ }
361
+
362
+ @media (width >= 1280px) {
363
+ .nav-dropdown__link {
364
+ padding: 0.5rem 0.75rem;
365
+ }
366
+ }
367
+
368
+ .main-nav__item--auth > a {
369
+ display: flex;
370
+ align-items: center;
371
+ gap: 0.5rem;
372
+ width: 100%;
373
+ padding: 1rem 0;
374
+ }
375
+
376
+ @media (width >= 960px) {
377
+ .nav-link,
378
+ .nav-dropdown__trigger,
379
+ .main-nav__item--auth > a {
380
+ display: inline-flex;
381
+ align-items: center;
382
+ width: auto;
383
+ padding: 0.5rem;
384
+ border-radius: 0.5rem;
385
+ }
386
+
387
+ .nav-dropdown__trigger {
388
+ gap: 0.5rem;
389
+ cursor: pointer;
390
+ }
391
+
392
+ .nav-dropdown__trigger--open {
393
+ background: #f1f5f9;
394
+ }
395
+ }
396
+
397
+ @media (width >= 1280px) {
398
+ .main-nav {
399
+ font-size: 1.25rem;
400
+ }
401
+
402
+ .main-nav__item--auth > a {
403
+ padding: 0.5rem 0.75rem;
404
+ }
405
+ }
406
+
407
+ .sign-in-link,
408
+ .sign-out-link,
409
+ .auth-button {
410
+ display: inline-flex;
411
+ align-items: center;
412
+ gap: 0.5rem;
413
+ font-weight: 600;
414
+ color: inherit;
415
+ text-decoration: none;
416
+ outline: none;
417
+ }
418
+
419
+ .auth-button {
420
+ padding: 0;
421
+ border: none;
422
+ background: transparent;
423
+ font: inherit;
424
+ cursor: pointer;
425
+ }
426
+
427
+ .sign-in-link:hover,
428
+ .sign-out-link:hover,
429
+ .auth-button:hover {
430
+ opacity: 0.85;
431
+ }
432
+
433
+ .sign-in-link:focus-visible,
434
+ .sign-out-link:focus-visible,
435
+ .auth-button:focus-visible {
436
+ outline: 2px solid var(--weg-color-accent);
437
+ outline-offset: 4px;
438
+ border-radius: 4px;
439
+ }
440
+
441
+ .icon-button {
442
+ display: inline-flex;
443
+ align-items: center;
444
+ justify-content: center;
445
+ width: 2.5rem;
446
+ height: 2.5rem;
447
+ padding: 0;
448
+ border: none;
449
+ border-radius: 0.5rem;
450
+ background: transparent;
451
+ color: inherit;
452
+ cursor: pointer;
453
+ text-decoration: none;
454
+ outline: none;
455
+ }
456
+
457
+ .icon-button:hover {
458
+ background: #f1f5f9;
459
+ }
460
+
461
+ .icon-button:focus-visible {
462
+ outline: 2px solid var(--weg-color-accent);
463
+ outline-offset: 2px;
464
+ }
465
+
466
+ .menu-toggle {
467
+ flex-shrink: 0;
468
+ }
469
+
470
+ @media (width >= 960px) {
471
+ .menu-toggle {
472
+ display: none;
473
+ }
474
+ }