@metropolle/design-system 1.0.0-beta.2025.9.3.1718.3e1e35c → 1.0.0-beta.2025.9.30.1603.ca4db6e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,462 @@
1
+ /*
2
+ Back Compat CSS (opt-in)
3
+ Purpose: replicate current @back system-level styling with pixel parity,
4
+ without changing appearance. Import after base DS CSS.
5
+ */
6
+
7
+ /* ================================
8
+ Buttons (theme-responsive)
9
+ ================================ */
10
+ .mds-button--primary,
11
+ button[class*="primary"] {
12
+ background-color: #60a5fa !important;
13
+ color: #ffffff !important;
14
+ border: none !important;
15
+ transition: all 0.2s ease !important;
16
+ }
17
+
18
+ .mds-button--primary:hover,
19
+ button[class*="primary"]:hover {
20
+ background-color: #93c5fd !important;
21
+ transform: translateY(-1px) !important;
22
+ }
23
+
24
+ .mds-button--secondary,
25
+ button[class*="secondary"] {
26
+ background-color: rgba(255, 255, 255, 0.1) !important;
27
+ color: #ffffff !important;
28
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
29
+ backdrop-filter: blur(10px) !important;
30
+ transition: all 0.2s ease !important;
31
+ }
32
+
33
+ .mds-button--secondary:hover,
34
+ button[class*="secondary"]:hover {
35
+ background-color: rgba(255, 255, 255, 0.15) !important;
36
+ border-color: rgba(255, 255, 255, 0.3) !important;
37
+ }
38
+
39
+ .mds-button--outline,
40
+ button[class*="outline"] {
41
+ background-color: transparent !important;
42
+ color: #ffffff !important;
43
+ border: 1px solid rgba(255, 255, 255, 0.3) !important;
44
+ transition: all 0.2s ease !important;
45
+ }
46
+
47
+ .mds-button--outline:hover,
48
+ button[class*="outline"]:hover {
49
+ background-color: rgba(255, 255, 255, 0.1) !important;
50
+ border-color: rgba(255, 255, 255, 0.5) !important;
51
+ }
52
+
53
+ .mds-button--glass,
54
+ button[class*="glass"] {
55
+ background-color: rgba(255, 255, 255, 0.1) !important;
56
+ color: #ffffff !important;
57
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
58
+ backdrop-filter: blur(10px) !important;
59
+ transition: all 0.2s ease !important;
60
+ }
61
+
62
+ .mds-button--glass:hover,
63
+ button[class*="glass"]:hover {
64
+ background-color: rgba(255, 255, 255, 0.15) !important;
65
+ border-color: rgba(255, 255, 255, 0.3)
66
+ !important;
67
+ }
68
+
69
+ .mds-button--ghost,
70
+ button[class*="ghost"] {
71
+ background-color: transparent !important;
72
+ color: #ffffff !important;
73
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
74
+ transition: all 0.2s ease !important;
75
+ }
76
+
77
+ .mds-button--ghost:hover,
78
+ button[class*="ghost"]:hover {
79
+ background-color: rgba(255, 255, 255, 0.1) !important;
80
+ border-color: rgba(255, 255, 255, 0.3) !important;
81
+ }
82
+
83
+ /* Raw button baseline
84
+ Scope only to unstyled raw buttons to avoid overriding
85
+ components that set inline styles or DS classes */
86
+ button:not([style]):not(.mds-button):not([class*="mds-button"]):not([class*="btn"]) {
87
+ background-color: rgba(255, 255, 255, 0.1) !important;
88
+ color: #ffffff !important;
89
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
90
+ border-radius: 8px !important;
91
+ padding: 0.5rem 1rem !important;
92
+ cursor: pointer !important;
93
+ transition: all 0.2s ease !important;
94
+ font-family: inherit !important;
95
+ }
96
+
97
+ button:not([style]):not(.mds-button):not([class*="mds-button"]):not([class*="btn"]):hover {
98
+ background-color: rgba(255, 255, 255, 0.15) !important;
99
+ border-color: rgba(255, 255, 255, 0.3) !important;
100
+ transform: translateY(-1px) !important;
101
+ }
102
+
103
+ /* Modal close button: keep static (no lift) but preserve vertical centering */
104
+ .mds-modal-header > button[aria-label="Fechar"],
105
+ .mds-modal-header > button[aria-label="Fechar"]:hover,
106
+ .mds-modal-header > button[aria-label="Fechar"]:focus,
107
+ .mds-modal-header > button[aria-label="Fechar"]:focus-visible {
108
+ position: absolute !important;
109
+ right: 16px !important;
110
+ top: 50% !important;
111
+ transform: translateY(-50%) !important;
112
+ transition: none !important;
113
+ box-shadow: none !important;
114
+ background-color: transparent !important;
115
+ border: none !important;
116
+ }
117
+
118
+ button:not([style]):not(.mds-button):not([class*="mds-button"]):not([class*="btn"]):disabled {
119
+ opacity: 0.5 !important;
120
+ cursor: not-allowed !important;
121
+ transform: none !important;
122
+ }
123
+
124
+ /* Light theme button overrides */
125
+ html[data-theme="light"] .mds-button--primary,
126
+ html[data-theme="light"] button[class*="primary"] {
127
+ background-color: #3b82f6 !important;
128
+ color: #ffffff !important;
129
+ }
130
+
131
+ html[data-theme="light"] .mds-button--primary:hover,
132
+ html[data-theme="light"] button[class*="primary"]:hover {
133
+ background-color: #2563eb !important;
134
+ }
135
+
136
+ html[data-theme="light"] .mds-button--secondary,
137
+ html[data-theme="light"] button[class*="secondary"] {
138
+ background-color: rgba(0, 0, 0, 0.05) !important;
139
+ color: #1a1a1a !important;
140
+ border-color: rgba(0, 0, 0, 0.1) !important;
141
+ }
142
+
143
+ html[data-theme="light"] .mds-button--secondary:hover,
144
+ html[data-theme="light"] button[class*="secondary"]:hover {
145
+ background-color: rgba(0, 0, 0, 0.08) !important;
146
+ border-color: rgba(0, 0, 0, 0.15) !important;
147
+ }
148
+
149
+ html[data-theme="light"] .mds-button--outline,
150
+ html[data-theme="light"] button[class*="outline"] {
151
+ color: #1a1a1a !important;
152
+ border-color: rgba(0, 0, 0, 0.3) !important;
153
+ }
154
+
155
+ html[data-theme="light"] .mds-button--outline:hover,
156
+ html[data-theme="light"] button[class*="outline"]:hover {
157
+ background-color: rgba(0, 0, 0, 0.05) !important;
158
+ border-color: rgba(0, 0, 0, 0.5) !important;
159
+ }
160
+
161
+ html[data-theme="light"] .mds-button--glass,
162
+ html[data-theme="light"] button[class*="glass"] {
163
+ background-color: rgba(0, 0, 0, 0.05) !important;
164
+ color: #1a1a1a !important;
165
+ border-color: rgba(0, 0, 0, 0.1) !important;
166
+ }
167
+
168
+ html[data-theme="light"] .mds-button--glass:hover,
169
+ html[data-theme="light"] button[class*="glass"]:hover {
170
+ background-color: rgba(0, 0, 0, 0.08) !important;
171
+ border-color: rgba(0, 0, 0, 0.15) !important;
172
+ }
173
+
174
+ html[data-theme="light"] .mds-button--ghost,
175
+ html[data-theme="light"] button[class*="ghost"] {
176
+ color: #1a1a1a !important;
177
+ border-color: rgba(0, 0, 0, 0.2) !important;
178
+ }
179
+
180
+ html[data-theme="light"] .mds-button--ghost:hover,
181
+ html[data-theme="light"] button[class*="ghost"]:hover {
182
+ background-color: rgba(0, 0, 0, 0.05) !important;
183
+ border-color: rgba(0, 0, 0, 0.3) !important;
184
+ }
185
+
186
+ html[data-theme="light"] button {
187
+ background-color: rgba(0, 0, 0, 0.05) !important;
188
+ color: #1a1a1a !important;
189
+ border-color: rgba(0, 0, 0, 0.1) !important;
190
+ }
191
+
192
+ html[data-theme="light"] button:hover {
193
+ background-color: rgba(0, 0, 0, 0.08) !important;
194
+ border-color: rgba(0, 0, 0, 0.15) !important;
195
+ }
196
+
197
+ /* ========================================
198
+ Selects and period filter (theme-responsive)
199
+ ======================================== */
200
+ select,
201
+ .mds-period-filter__select {
202
+ /* Match DS ghost button default state */
203
+ background-color: transparent !important;
204
+ color: #ffffff !important;
205
+ border: none !important;
206
+ border-radius: 8px !important;
207
+ padding: 0.5rem 1rem !important;
208
+ font-family: inherit !important;
209
+ font-size: 0.875rem !important;
210
+ cursor: pointer !important;
211
+ transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease !important;
212
+ backdrop-filter: none !important;
213
+ -webkit-backdrop-filter: none !important;
214
+ -webkit-appearance: none !important;
215
+ -moz-appearance: none !important;
216
+ appearance: none !important;
217
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
218
+ background-position: right 0.5rem center !important;
219
+ background-repeat: no-repeat !important;
220
+ background-size: 1rem 1rem !important;
221
+ padding-right: 2.5rem !important;
222
+ }
223
+
224
+ select:hover,
225
+ .mds-period-filter__select:hover {
226
+ /* Same hover treatment as DS ghost */
227
+ background-color: var(--mds-color-background-secondary) !important;
228
+ }
229
+
230
+ select:focus,
231
+ .mds-period-filter__select:focus {
232
+ outline: none !important;
233
+ border-color: #60a5fa !important;
234
+ box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.2) !important;
235
+ }
236
+
237
+ select:disabled,
238
+ .mds-period-filter__select:disabled {
239
+ opacity: 0.5 !important;
240
+ cursor: not-allowed !important;
241
+ }
242
+
243
+ select option {
244
+ background-color: rgba(30, 30, 30, 0.95) !important;
245
+ color: #ffffff !important;
246
+ padding: 0.5rem !important;
247
+ }
248
+
249
+ /* Light theme select styles */
250
+ html[data-theme="light"] select,
251
+ html[data-theme="light"] .mds-period-filter__select {
252
+ background-color: transparent !important;
253
+ color: #1a1a1a !important;
254
+ border: none !important;
255
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
256
+ }
257
+
258
+ html[data-theme="light"] select:hover,
259
+ html[data-theme="light"] .mds-period-filter__select:hover {
260
+ background-color: rgba(0, 0, 0, 0.05) !important;
261
+ }
262
+
263
+ html[data-theme="light"] select:focus,
264
+ html[data-theme="light"] .mds-period-filter__select:focus {
265
+ border-color: #3b82f6 !important;
266
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2) !important;
267
+ }
268
+
269
+ html[data-theme="light"] select option {
270
+ background-color: rgba(250, 250, 250, 0.95) !important;
271
+ color: #1a1a1a !important;
272
+ }
273
+
274
+ /* Dashboard controls */
275
+ .mds-dashboard-controls {
276
+ display: flex !important;
277
+ gap: 1rem !important;
278
+ align-items: center !important;
279
+ flex-wrap: wrap !important;
280
+ }
281
+
282
+ .mds-period-filter {
283
+ position: relative !important;
284
+ min-width: 150px !important;
285
+ }
286
+
287
+ /* ========================================
288
+ Inputs and selects (mds-*)
289
+ ======================================== */
290
+ .mds-input,
291
+ input.mds-input {
292
+ padding: 8px 12px !important;
293
+ min-height: 36px !important;
294
+ max-height: 36px !important;
295
+ height: 36px !important;
296
+ font-size: 14px !important;
297
+ line-height: 1.4 !important;
298
+ box-sizing: border-box !important;
299
+ }
300
+
301
+ /* Dark theme input overrides */
302
+ html[data-theme="dark"] .mds-input,
303
+ html[data-theme="dark"] input.mds-input,
304
+ html:not([data-theme]) .mds-input,
305
+ html:not([data-theme]) input.mds-input {
306
+ background-color: rgba(255, 255, 255, 0.15) !important;
307
+ border-color: rgba(255, 255, 255, 0.4) !important;
308
+ color: #ffffff !important;
309
+ }
310
+
311
+ html[data-theme="dark"] .mds-input:focus,
312
+ html[data-theme="dark"] input.mds-input:focus,
313
+ html:not([data-theme]) .mds-input:focus,
314
+ html:not([data-theme]) input.mds-input:focus {
315
+ background-color: rgba(255, 255, 255, 0.2) !important;
316
+ border-color: #60a5fa !important;
317
+ box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.3) !important;
318
+ }
319
+
320
+ html[data-theme="dark"] .mds-input:hover,
321
+ html[data-theme="dark"] input.mds-input:hover,
322
+ html:not([data-theme]) .mds-input:hover,
323
+ html:not([data-theme]) input.mds-input:hover {
324
+ background-color: rgba(255, 255, 255, 0.18) !important;
325
+ border-color: rgba(255, 255, 255, 0.5) !important;
326
+ }
327
+
328
+ /* Light theme input overrides */
329
+ html[data-theme="light"] .mds-input,
330
+ html[data-theme="light"] input.mds-input {
331
+ background-color: #ffffff !important;
332
+ border-color: rgba(0, 0, 0, 0.2) !important;
333
+ color: #1a1a1a !important;
334
+ }
335
+
336
+ html[data-theme="light"] .mds-input:focus,
337
+ html[data-theme="light"] input.mds-input:focus {
338
+ background-color: #ffffff !important;
339
+ border-color: #3b82f6 !important;
340
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2) !important;
341
+ }
342
+
343
+ html[data-theme="light"] .mds-input:hover,
344
+ html[data-theme="light"] input.mds-input:hover {
345
+ background-color: #ffffff !important;
346
+ border-color: rgba(0, 0, 0, 0.3) !important;
347
+ }
348
+
349
+ /* Placeholder overrides */
350
+ html[data-theme="dark"] .mds-input::-moz-placeholder, html[data-theme="dark"] input.mds-input::-moz-placeholder, html:not([data-theme]) .mds-input::-moz-placeholder, html:not([data-theme]) input.mds-input::-moz-placeholder {
351
+ color: rgba(255, 255, 255, 0.6) !important;
352
+ }
353
+ html[data-theme="dark"] .mds-input::placeholder,
354
+ html[data-theme="dark"] input.mds-input::placeholder,
355
+ html:not([data-theme]) .mds-input::placeholder,
356
+ html:not([data-theme]) input.mds-input::placeholder {
357
+ color: rgba(255, 255, 255, 0.6) !important;
358
+ }
359
+
360
+ html[data-theme="light"] .mds-input::-moz-placeholder, html[data-theme="light"] input.mds-input::-moz-placeholder {
361
+ color: rgba(0, 0, 0, 0.5) !important;
362
+ }
363
+
364
+ html[data-theme="light"] .mds-input::placeholder,
365
+ html[data-theme="light"] input.mds-input::placeholder {
366
+ color: rgba(0, 0, 0, 0.5) !important;
367
+ }
368
+
369
+ /* Ultra high priority input overrides */
370
+ input.mds-input,
371
+ .mds-input,
372
+ input[class*="mds-input"] {
373
+ padding: 8px 16px !important;
374
+ min-height: 40px !important;
375
+ max-height: 40px !important;
376
+ height: 40px !important;
377
+ font-size: 14px !important;
378
+ line-height: 1.4 !important;
379
+ box-sizing: border-box !important;
380
+ border-radius: 8px !important;
381
+ border-width: 1px !important;
382
+ border-style: solid !important;
383
+ }
384
+
385
+ /* Dark theme - ultra specific */
386
+ html[data-theme="dark"] input.mds-input,
387
+ html[data-theme="dark"] .mds-input,
388
+ html[data-theme="dark"] input[class*="mds-input"],
389
+ html:not([data-theme]) input.mds-input,
390
+ html:not([data-theme]) .mds-input,
391
+ html:not([data-theme]) input[class*="mds-input"] {
392
+ background-color: rgba(255, 255, 255, 0.2) !important;
393
+ border-color: rgba(255, 255, 255, 0.5) !important;
394
+ color: #ffffff !important;
395
+ }
396
+
397
+ html[data-theme="dark"] input.mds-input:focus,
398
+ html[data-theme="dark"] .mds-input:focus,
399
+ html[data-theme="dark"] input[class*="mds-input"]:focus,
400
+ html:not([data-theme]) input.mds-input:focus,
401
+ html:not([data-theme]) .mds-input:focus,
402
+ html:not([data-theme]) input[class*="mds-input"]:focus {
403
+ background-color: rgba(255, 255, 255, 0.25) !important;
404
+ border-color: #60a5fa !important;
405
+ box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.3) !important;
406
+ }
407
+
408
+ /* Light theme - ultra specific */
409
+ html[data-theme="light"] input.mds-input,
410
+ html[data-theme="light"] .mds-input,
411
+ html[data-theme="light"] input[class*="mds-input"] {
412
+ background-color: #ffffff !important;
413
+ border-color: rgba(0, 0, 0, 0.3) !important;
414
+ color: #1a1a1a !important;
415
+ }
416
+
417
+ html[data-theme="light"] input.mds-input:focus,
418
+ html[data-theme="light"] .mds-input:focus,
419
+ html[data-theme="light"] input[class*="mds-input"]:focus {
420
+ background-color: #ffffff !important;
421
+ border-color: #3b82f6 !important;
422
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2) !important;
423
+ }
424
+
425
+ /* Select overrides with maximum specificity */
426
+ select.mds-select,
427
+ .mds-select,
428
+ select[class*="mds-select"] {
429
+ padding: 8px 16px !important;
430
+ min-height: 40px !important;
431
+ max-height: 40px !important;
432
+ height: 40px !important;
433
+ font-size: 14px !important;
434
+ line-height: 1.4 !important;
435
+ box-sizing: border-box !important;
436
+ border-radius: 8px !important;
437
+ border-width: 1px !important;
438
+ border-style: solid !important;
439
+ }
440
+
441
+ /* Dark theme select overrides */
442
+ html[data-theme="dark"] select.mds-select,
443
+ html[data-theme="dark"] .mds-select,
444
+ html[data-theme="dark"] select[class*="mds-select"],
445
+ html:not([data-theme]) select.mds-select,
446
+ html:not([data-theme]) .mds-select,
447
+ html:not([data-theme]) select[class*="mds-select"] {
448
+ background-color: rgba(255, 255, 255, 0.2) !important;
449
+ border-color: rgba(255, 255, 255, 0.5) !important;
450
+ color: #ffffff !important;
451
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
452
+ }
453
+
454
+ /* Light theme select overrides */
455
+ html[data-theme="light"] select.mds-select,
456
+ html[data-theme="light"] .mds-select,
457
+ html[data-theme="light"] select[class*="mds-select"] {
458
+ background-color: #ffffff !important;
459
+ border-color: rgba(0, 0, 0, 0.3) !important;
460
+ color: #1a1a1a !important;
461
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
462
+ }
@@ -169,18 +169,39 @@ html:not([data-theme]) .modal-overlay .mds-modal-card {
169
169
  inset 0 1px 0 rgba(255, 255, 255, 0.3) !important;
170
170
  }
171
171
 
172
- /* Header button sizing + alignment */
172
+ /* Header close button sizing + alignment */
173
173
  .mds-modal-header > button[aria-label="Fechar"] {
174
+ /* Size and reset */
174
175
  font-size: 1rem !important;
175
176
  line-height: 1 !important;
176
- padding: 4px 8px !important;
177
177
  transition: none !important;
178
+ padding: 0 !important;
179
+ background: transparent !important;
180
+ border: none !important;
181
+ /* Colors from DS tokens with robust fallback */
182
+ color: var(--mds-color-text-secondary, var(--text-secondary, rgba(0,0,0,0.65))) !important;
183
+ /* Absolute centering like the left icon */
184
+ position: absolute !important;
185
+ right: 16px !important;
186
+ top: 50% !important;
187
+ transform: translateY(-50%) !important;
188
+ width: 32px !important;
189
+ height: 32px !important;
190
+ display: inline-flex !important;
191
+ align-items: center !important;
192
+ justify-content: center !important;
178
193
  }
179
194
  .mds-modal-header > button[aria-label="Fechar"]:hover,
180
- .mds-modal-header > button[aria-label="Fechar"]:focus {
181
- transform: none !important;
182
- transition: none !important;
195
+ .mds-modal-header > button[aria-label="Fechar"]:focus,
196
+ .mds-modal-header > button[aria-label="Fechar"]:focus-visible {
197
+ /* Keep centered on interactive states and avoid lifts/shadows */
198
+ position: absolute !important;
199
+ right: 16px !important;
200
+ top: 50% !important;
201
+ transform: translateY(-50%) !important;
183
202
  box-shadow: none !important;
203
+ transition: none !important;
204
+ color: var(--mds-color-text-primary, var(--text-primary, #111827)) !important;
184
205
  }
185
206
 
186
207
  /* Responsive modal */
@@ -592,11 +613,11 @@ html:not([data-theme]) .modal-overlay .mds-modal-card {
592
613
 
593
614
  /* Theme Support - Default (Dark Theme) */
594
615
  :root {
595
- /* Dashboard Control Variables - Dark Theme */
596
- --mds-dashboard-control-bg: rgba(255, 255, 255, 0.15);
597
- --mds-dashboard-control-bg-hover: rgba(255, 255, 255, 0.25);
616
+ /* Dashboard Control Variables - Dark Theme (default) */
617
+ --mds-dashboard-control-bg: rgba(0, 0, 0, 0.35);
618
+ --mds-dashboard-control-bg-hover: rgba(0, 0, 0, 0.5);
598
619
  --mds-dashboard-control-color: #ffffff;
599
- --mds-dashboard-control-border: rgba(255, 255, 255, 0.2);
620
+ --mds-dashboard-control-border: rgba(255, 255, 255, 0.18);
600
621
  --mds-dashboard-control-border-disabled: rgba(255, 255, 255, 0.3);
601
622
  --mds-dashboard-control-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
602
623
  --mds-dashboard-control-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.4);
@@ -605,6 +626,94 @@ html:not([data-theme]) .modal-overlay .mds-modal-card {
605
626
  /* Dropdown Options - Dark Theme */
606
627
  --mds-dashboard-control-option-bg: #2a2a2a;
607
628
  --mds-dashboard-control-option-color: #ffffff;
629
+
630
+ /* Login specific variables - Dark Theme */
631
+ --mds-login-bg: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%);
632
+ --mds-input-bg: rgba(255, 255, 255, 0.1);
633
+ --mds-input-focus-border: #aaaaaa;
634
+ --mds-input-focus-bg: rgba(255, 255, 255, 0.15);
635
+ --mds-input-focus-shadow: 0 4px 12px rgba(170, 170, 170, 0.2);
636
+ --mds-error-bg: rgba(200, 200, 200, 0.15);
637
+ --mds-error-border: rgba(200, 200, 200, 0.3);
638
+ }
639
+
640
+ /* Theme Toggle (square, themed) */
641
+ .mds-theme-toggle {
642
+ position: relative;
643
+ display: inline-flex;
644
+ align-items: center;
645
+ justify-content: center;
646
+ width: var(--mds-theme-toggle-size, 2.5rem);
647
+ height: var(--mds-theme-toggle-size, 2.5rem);
648
+ min-width: var(--mds-theme-toggle-size, 2.5rem);
649
+ padding: 0;
650
+ border-radius: var(--mds-spacing-borderRadius-md);
651
+ border: 1px solid var(--mds-dashboard-control-border);
652
+ background-color: var(--mds-dashboard-control-bg);
653
+ color: var(--mds-dashboard-control-color);
654
+ box-shadow: var(--mds-dashboard-control-shadow);
655
+ cursor: pointer;
656
+ outline: none;
657
+ transition: var(--mds-effects-transition-normal);
658
+ }
659
+
660
+ /* Force dark background in dark theme */
661
+ .mds-theme-toggle[data-theme="dark"] {
662
+ background-color: rgba(0, 0, 0, 0.35) !important;
663
+ border: 1px solid rgba(255, 255, 255, 0.18) !important;
664
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
665
+ }
666
+
667
+ .mds-theme-toggle:hover:not(:disabled) {
668
+ background-color: var(--mds-dashboard-control-bg-hover);
669
+ box-shadow: var(--mds-dashboard-control-shadow-hover);
670
+ }
671
+
672
+ /* Force dark hover in dark theme */
673
+ .mds-theme-toggle[data-theme="dark"]:hover:not(:disabled) {
674
+ background-color: rgba(0, 0, 0, 0.5) !important;
675
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4) !important;
676
+ }
677
+
678
+ .mds-theme-toggle:disabled {
679
+ opacity: var(--mds-effects-opacity-disabled);
680
+ cursor: not-allowed;
681
+ background-color: transparent !important;
682
+ border: 2px solid var(--mds-dashboard-control-border-disabled);
683
+ box-shadow: none !important;
684
+ }
685
+
686
+ .mds-theme-toggle--sm { --mds-theme-toggle-size: 2rem; }
687
+ .mds-theme-toggle--md { --mds-theme-toggle-size: 2.5rem; }
688
+ .mds-theme-toggle--lg { --mds-theme-toggle-size: 3rem; }
689
+
690
+ /* Monochromatic theme toggle icons via CSS pseudo-elements */
691
+ .mds-theme-toggle[data-theme="light"]::before {
692
+ content: '';
693
+ position: absolute;
694
+ left: 50%;
695
+ top: 50%;
696
+ transform: translate(-50%, -50%);
697
+ width: 20px;
698
+ height: 20px;
699
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z' fill='%23000000'/%3E%3C/svg%3E");
700
+ background-size: contain;
701
+ background-repeat: no-repeat;
702
+ background-position: center;
703
+ }
704
+
705
+ .mds-theme-toggle[data-theme="dark"]::before {
706
+ content: '';
707
+ position: absolute;
708
+ left: 50%;
709
+ top: 50%;
710
+ transform: translate(-50%, -50%);
711
+ width: 20px;
712
+ height: 20px;
713
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='4' fill='%23ffffff'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41' stroke='%23ffffff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
714
+ background-size: contain;
715
+ background-repeat: no-repeat;
716
+ background-position: center;
608
717
  }
609
718
 
610
719
  /* Light Theme Support */
@@ -621,6 +730,15 @@ html:not([data-theme]) .modal-overlay .mds-modal-card {
621
730
  /* Dropdown Options - Light Theme */
622
731
  --mds-dashboard-control-option-bg: #ffffff;
623
732
  --mds-dashboard-control-option-color: #1a1a1a;
733
+
734
+ /* Login specific variables - Light Theme */
735
+ --mds-login-bg: linear-gradient(135deg, #f5f5f5 0%, #e8e8e8 50%, #dcdcdc 100%);
736
+ --mds-input-bg: rgba(255, 255, 255, 0.8);
737
+ --mds-input-focus-border: #666666;
738
+ --mds-input-focus-bg: rgba(255, 255, 255, 1);
739
+ --mds-input-focus-shadow: 0 4px 12px rgba(102, 102, 102, 0.15);
740
+ --mds-error-bg: rgba(150, 150, 150, 0.1);
741
+ --mds-error-border: rgba(150, 150, 150, 0.3);
624
742
  }
625
743
 
626
744
  /* Form Input Styles */