1+ .accessible-radio-group {
2+ display : flex;
3+ flex-direction : column;
4+ gap : 8px ;
5+ margin : 0 ;
6+ padding : 0 ;
7+ border : none;
8+ min-width : 0 ;
9+ --legend-font-size : 14px ;
10+ --accessible-radio-option-padding : 12px ;
11+ }
12+
13+ .accessible-radio-group__legend {
14+ /* Reset UA fieldset/legend positioning (WebKit/Blink use relative + negative top) */
15+ display : block;
16+ float : none;
17+ width : 100% ;
18+ position : relative;
19+ top : calc (var (--legend-font-size ) / 2 );
20+ left : auto;
21+ margin : 0 ;
22+ font-size : var (--legend-font-size );
23+ font-weight : 600 ;
24+ color : hsl (184deg 60% 87% );
25+ padding : 0 ;
26+ }
27+
28+ .accessible-radio-group__options {
29+ display : flex;
30+ gap : 8px ;
31+ margin-top : var (--legend-font-size );
32+ padding : 3px ;
33+ background : hsla (204deg 100% 5% / 100% );
34+ border-radius : 13px ;
35+ }
36+
37+ .accessible-radio-group__options--vertical {
38+ flex-direction : column;
39+ }
40+
41+ .accessible-radio-group__options--horizontal {
42+ flex-direction : row;
43+ flex-wrap : nowrap;
44+ gap : 3px ;
45+ align-items : stretch;
46+ }
47+
48+ .accessible-radio__option {
49+ display : flex;
50+ align-items : center;
51+ gap : 10px ;
52+ padding : var (--accessible-radio-option-padding );
53+ cursor : pointer;
54+ border-radius : 10px ;
55+ transition : background-color 0.2s ease-in-out;
56+ color : hsl (184deg 60% 87% );
57+ font-size : var (--legend-font-size );
58+ box-sizing : border-box;
59+ }
60+
61+ .accessible-radio-group__options--horizontal .accessible-radio__option {
62+ flex : 1 1 0 ;
63+ min-width : 0 ;
64+ }
65+
66+ .accessible-radio__option : hover {
67+ background : hsl (204deg 100% 50% / 50% );
68+ }
69+
70+ .accessible-radio__option--selected {
71+ background : hsl (204deg 50% 15% );
72+ }
73+
74+ .accessible-radio-group : disabled .accessible-radio__option ,
75+ .accessible-radio__option--disabled {
76+ cursor : not-allowed;
77+ opacity : 0.6 ;
78+ }
79+
80+ .accessible-radio__option--ripple {
81+ position : relative;
82+ overflow : hidden;
83+ }
84+
85+ .accessible-radio__indicator {
86+ flex-shrink : 0 ;
87+ display : flex;
88+ align-items : center;
89+ justify-content : center;
90+ width : 25px ;
91+ height : 25px ;
92+ }
93+
94+ .accessible-radio-group .accessible-radio__control {
95+ flex-shrink : 0 ;
96+ margin : 0 ;
97+ width : 25px ;
98+ height : 25px ;
99+ padding : 0 ;
100+ cursor : pointer;
101+ position : relative;
102+ appearance : none;
103+ -webkit-appearance : none;
104+ border : none;
105+ background : transparent;
106+ outline : none;
107+ box-shadow : none;
108+ display : block;
109+ line-height : 0 ;
110+ }
111+
112+ .accessible-radio-group .accessible-radio__control ::before {
113+ content : "" ;
114+ position : absolute;
115+ left : 0 ;
116+ top : 0 ;
117+ width : 25px ;
118+ height : 25px ;
119+ border : 1px solid hsl (210deg 100% 50% );
120+ background-color : hsl (204deg 51% 14% );
121+ border-radius : 50% ;
122+ box-sizing : border-box;
123+ }
124+
125+ .accessible-radio-group .accessible-radio__control : checked ::before {
126+ background-color : hsl (204deg 51% 14% );
127+ border-color : hsl (210deg 100% 50% );
128+ }
129+
130+ .accessible-radio-group .accessible-radio__control : checked ::after {
131+ content : "" ;
132+ position : absolute;
133+ left : 3px ;
134+ top : 3px ;
135+ width : 19px ;
136+ height : 19px ;
137+ background-color : hsl (210deg 100% 50% );
138+ border-radius : 50% ;
139+ }
140+
141+ .accessible-radio-group .accessible-radio__control : focus {
142+ outline : none;
143+ }
144+
145+ .accessible-radio-group .accessible-radio__control : focus-visible ::before {
146+ box-shadow : 0 0 0 2px hsl (190 , 100% , 50% );
147+ }
148+
149+ .accessible-radio-group : disabled .accessible-radio__control ,
150+ .accessible-radio-group .accessible-radio__control : disabled {
151+ cursor : not-allowed;
152+ }
153+
154+ .accessible-radio__content {
155+ display : flex;
156+ flex-direction : column;
157+ gap : 4px ;
158+ min-width : 0 ;
159+ }
160+
161+ .accessible-radio__label {
162+ font-size : 16px ;
163+ font-weight : 600 ;
164+ line-height : 1.25 ;
165+ }
166+
167+ .accessible-radio__description {
168+ font-size : 14px ;
169+ opacity : 0.8 ;
170+ line-height : 1.35 ;
171+ margin : 0 ;
172+ }
173+
174+ .accessible-radio__ripple {
175+ position : absolute;
176+ border-radius : 50% ;
177+ background-color : hsl (184deg 100% 50% / 10% );
178+ transform : scale (0 );
179+ animation : accessible-radio-ripple 400ms ease-out forwards;
180+ pointer-events : none;
181+ }
182+
183+ @keyframes accessible-radio-ripple {
184+ to {
185+ transform : scale (2.5 );
186+ opacity : 0 ;
187+ }
188+ }
189+
190+ /* Voice command overlay: legend de-emphasis; panel chrome lives on parent wrapper */
191+ .accessible-radio-group .voice-move-execution-mode {
192+ width : 100% ;
193+ margin : 0 ;
194+ border : none;
195+ background : transparent;
196+ }
197+
198+ .accessible-radio-group .voice-move-execution-mode .accessible-radio-group__legend {
199+ opacity : 0.7 ;
200+ }
0 commit comments