@@ -38,6 +38,122 @@ a, .btn-link {
3838 color : red;
3939}
4040
41+ /* Adaptive contrast buttons - automatically adjust based on background */
42+ .btn-adaptive-contrast {
43+ /* Default appearance for light backgrounds - dark buttons */
44+ border : 1px solid rgba (73 , 80 , 87 , 0.6 );
45+ color : rgba (73 , 80 , 87 , 0.9 );
46+ background-color : transparent;
47+ transition : all 0.2s ease;
48+ position : relative;
49+ padding : 0.375rem 0.75rem ;
50+ border-radius : 0.375rem ;
51+ /* Add a subtle drop shadow for better visibility */
52+ filter : drop-shadow (0 1px 2px rgba (0 , 0 , 0 , 0.1 ));
53+ }
54+
55+ /* Hover state for light backgrounds - show solid border and slight background */
56+ .btn-adaptive-contrast : hover {
57+ border-color : rgba (73 , 80 , 87 , 1 ) !important ;
58+ color : rgba (73 , 80 , 87 , 1 );
59+ background-color : rgba (73 , 80 , 87 , 0.1 );
60+ transform : scale (1.05 );
61+ filter : drop-shadow (0 2px 4px rgba (0 , 0 , 0 , 0.15 ));
62+ }
63+
64+ /* Focus state */
65+ .btn-adaptive-contrast : focus {
66+ outline : none;
67+ box-shadow : 0 0 0 0.25rem rgba (73 , 80 , 87 , 0.25 );
68+ border-color : rgba (73 , 80 , 87 , 1 ) !important ;
69+ }
70+
71+ /* Active state */
72+ .btn-adaptive-contrast : active {
73+ transform : scale (0.95 );
74+ background-color : rgba (73 , 80 , 87 , 0.2 );
75+ }
76+
77+ /* Dark backgrounds - light buttons with better contrast */
78+ .bg-primary .btn-adaptive-contrast ,
79+ .bg-secondary .btn-adaptive-contrast ,
80+ .bg-dark .btn-adaptive-contrast ,
81+ .bg-info .btn-adaptive-contrast ,
82+ [class *= "bg-primary" ] .btn-adaptive-contrast ,
83+ [class *= "bg-secondary" ] .btn-adaptive-contrast ,
84+ [class *= "bg-dark" ] .btn-adaptive-contrast ,
85+ [style *= "background-color: rgb(49, 90, 131)" ] .btn-adaptive-contrast ,
86+ [style *= "background-color: #315a83" ] .btn-adaptive-contrast ,
87+ [style *= "background-color: rgb(13, 110, 253)" ] .btn-adaptive-contrast ,
88+ [style *= "background-color: rgb(51, 102, 204)" ] .btn-adaptive-contrast ,
89+ [style *= "background-color: rgb(108, 117, 125)" ] .btn-adaptive-contrast {
90+ border-color : rgba (248 , 249 , 250 , 0.6 ) !important ;
91+ color : rgba (248 , 249 , 250 , 0.9 ) !important ;
92+ filter : drop-shadow (0 1px 2px rgba (0 , 0 , 0 , 0.3 ));
93+ text-shadow : 0 0 1px rgba (0 , 0 , 0 , 0.5 );
94+ }
95+
96+ /* Hover state for dark backgrounds - bright white border and background */
97+ .bg-primary .btn-adaptive-contrast : hover ,
98+ .bg-secondary .btn-adaptive-contrast : hover ,
99+ .bg-dark .btn-adaptive-contrast : hover ,
100+ .bg-info .btn-adaptive-contrast : hover ,
101+ [class *= "bg-primary" ] .btn-adaptive-contrast : hover ,
102+ [class *= "bg-secondary" ] .btn-adaptive-contrast : hover ,
103+ [class *= "bg-dark" ] .btn-adaptive-contrast : hover ,
104+ [style *= "background-color: rgb(49, 90, 131)" ] .btn-adaptive-contrast : hover ,
105+ [style *= "background-color: #315a83" ] .btn-adaptive-contrast : hover ,
106+ [style *= "background-color: rgb(13, 110, 253)" ] .btn-adaptive-contrast : hover ,
107+ [style *= "background-color: rgb(51, 102, 204)" ] .btn-adaptive-contrast : hover ,
108+ [style *= "background-color: rgb(108, 117, 125)" ] .btn-adaptive-contrast : hover {
109+ border-color : rgba (248 , 249 , 250 , 1 ) !important ;
110+ color : rgba (248 , 249 , 250 , 1 ) !important ;
111+ background-color : rgba (248 , 249 , 250 , 0.15 ) !important ;
112+ filter : drop-shadow (0 2px 4px rgba (0 , 0 , 0 , 0.4 ));
113+ text-shadow : 0 0 2px rgba (0 , 0 , 0 , 0.7 );
114+ transform : scale (1.05 );
115+ }
116+
117+ /* Focus state for dark backgrounds */
118+ .bg-primary .btn-adaptive-contrast : focus ,
119+ .bg-secondary .btn-adaptive-contrast : focus ,
120+ .bg-dark .btn-adaptive-contrast : focus ,
121+ [class *= "bg-primary" ] .btn-adaptive-contrast : focus ,
122+ [class *= "bg-secondary" ] .btn-adaptive-contrast : focus ,
123+ [class *= "bg-dark" ] .btn-adaptive-contrast : focus ,
124+ [style *= "background-color: rgb(49, 90, 131)" ] .btn-adaptive-contrast : focus ,
125+ [style *= "background-color: #315a83" ] .btn-adaptive-contrast : focus {
126+ box-shadow : 0 0 0 0.25rem rgba (248 , 249 , 250 , 0.25 ) !important ;
127+ border-color : rgba (248 , 249 , 250 , 1 ) !important ;
128+ }
129+
130+ /* Ensure icons inherit the color properly */
131+ .btn-adaptive-contrast .oi ,
132+ .btn-adaptive-contrast .fas ,
133+ .btn-adaptive-contrast .fa ,
134+ .btn-adaptive-contrast .bi {
135+ color : inherit;
136+ transition : inherit;
137+ }
138+
139+ /* Force high contrast mode for accessibility */
140+ @media (prefers-contrast : high) {
141+ .btn-adaptive-contrast {
142+ border-width : 2px ;
143+ font-weight : 600 ;
144+ }
145+
146+ .bg-primary .btn-adaptive-contrast ,
147+ .bg-secondary .btn-adaptive-contrast ,
148+ [class *= "bg-primary" ] .btn-adaptive-contrast ,
149+ [class *= "bg-secondary" ] .btn-adaptive-contrast {
150+ border-color : white !important ;
151+ color : white !important ;
152+ text-shadow : 0 0 3px black !important ;
153+ }
154+ }
155+
156+
41157# blazor-error-ui {
42158 background : lightyellow;
43159 bottom : 0 ;
0 commit comments