1+ /* Media Step Container */
2+ .mediaContainer {
3+ display : flex;
4+ flex-direction : column;
5+ width : 100% ;
6+ height : 100% ;
7+ background : var (--ifm-background-surface-color );
8+ border-radius : 12px ;
9+ overflow : hidden;
10+ position : relative;
11+ }
12+
13+ /* Media Content */
14+ .mediaContent {
15+ display : flex;
16+ flex-direction : column;
17+ width : 100% ;
18+ height : 100% ;
19+ position : relative;
20+ transition : opacity 0.3s ease;
21+ }
22+
23+ .mediaContent .hidden {
24+ opacity : 0 ;
25+ pointer-events : none;
26+ }
27+
28+ /* YouTube Player */
29+ .youtubePlayer {
30+ width : 100% ;
31+ height : 400px ;
32+ min-height : 300px ;
33+ border-radius : 8px ;
34+ border : none;
35+ background : # 000 ;
36+ aspect-ratio : 16 / 9 ;
37+ }
38+
39+ /* Video Player */
40+ .videoPlayer {
41+ width : 100% ;
42+ height : auto;
43+ max-height : 100% ;
44+ object-fit : contain;
45+ background : # 000 ;
46+ border-radius : 8px ;
47+ }
48+
49+ /* Image Display */
50+ .imageDisplay {
51+ width : 100% ;
52+ height : auto;
53+ max-height : 100% ;
54+ object-fit : contain;
55+ border-radius : 8px ;
56+ box-shadow : 0 2px 8px rgba (0 , 0 , 0 , 0.1 );
57+ }
58+
59+ /* Media Caption */
60+ .mediaCaption {
61+ padding : 1rem ;
62+ background : var (--ifm-color-emphasis-50 );
63+ border-top : 1px solid var (--ifm-color-emphasis-200 );
64+ margin-top : auto;
65+ }
66+
67+ .mediaCaption p {
68+ margin : 0 ;
69+ font-size : 14px ;
70+ line-height : 1.5 ;
71+ color : var (--ifm-color-content-secondary );
72+ text-align : center;
73+ }
74+
75+ /* Placeholder State */
76+ .mediaPlaceholder {
77+ display : flex;
78+ flex-direction : column;
79+ align-items : center;
80+ justify-content : center;
81+ height : 300px ;
82+ gap : 1rem ;
83+ color : var (--ifm-color-content-secondary );
84+ border : 2px dashed var (--ifm-color-emphasis-300 );
85+ border-radius : 8px ;
86+ margin : 1rem ;
87+ }
88+
89+ .placeholderIcon {
90+ font-size : 48px ;
91+ }
92+
93+ .loadButton {
94+ padding : 0.75rem 1.5rem ;
95+ background : var (--ifm-color-primary );
96+ color : white;
97+ border : none;
98+ border-radius : 8px ;
99+ cursor : pointer;
100+ font-size : 14px ;
101+ font-weight : 500 ;
102+ transition : all 0.2s ease;
103+ }
104+
105+ .loadButton : hover {
106+ background : var (--ifm-color-primary-dark );
107+ transform : translateY (-1px );
108+ }
109+
110+ .mediaPlaceholder p {
111+ margin : 0 ;
112+ font-size : 16px ;
113+ color : var (--ifm-color-content-secondary );
114+ }
115+
116+ /* Loading State */
117+ .mediaLoading {
118+ display : flex;
119+ flex-direction : column;
120+ align-items : center;
121+ justify-content : center;
122+ height : 300px ;
123+ gap : 1rem ;
124+ color : var (--ifm-color-content-secondary );
125+ }
126+
127+ .loadingSpinner {
128+ width : 32px ;
129+ height : 32px ;
130+ border : 3px solid var (--ifm-color-emphasis-300 );
131+ border-top : 3px solid var (--ifm-color-primary );
132+ border-radius : 50% ;
133+ animation : spin 1s linear infinite;
134+ }
135+
136+ @keyframes spin {
137+ 0% {
138+ transform : rotate (0deg );
139+ }
140+
141+ 100% {
142+ transform : rotate (360deg );
143+ }
144+ }
145+
146+ .mediaLoading p {
147+ margin : 0 ;
148+ font-size : 14px ;
149+ color : var (--ifm-color-content-secondary );
150+ }
151+
152+ /* Error State */
153+ .mediaError {
154+ display : flex;
155+ flex-direction : column;
156+ align-items : center;
157+ justify-content : center;
158+ height : 300px ;
159+ gap : 1rem ;
160+ padding : 2rem ;
161+ text-align : center;
162+ color : var (--ifm-color-content-secondary );
163+ }
164+
165+ .errorIcon {
166+ font-size : 48px ;
167+ }
168+
169+ .mediaError p {
170+ margin : 0 ;
171+ font-size : 16px ;
172+ color : var (--ifm-color-content-secondary );
173+ }
174+
175+ .retryButton {
176+ padding : 0.5rem 1rem ;
177+ background : var (--ifm-color-primary );
178+ color : white;
179+ border : none;
180+ border-radius : 6px ;
181+ cursor : pointer;
182+ font-size : 14px ;
183+ transition : background-color 0.2s ease;
184+ }
185+
186+ .retryButton : hover {
187+ background : var (--ifm-color-primary-dark );
188+ }
189+
190+ /* Play Status Indicator */
191+ .playStatus {
192+ position : absolute;
193+ top : 1rem ;
194+ right : 1rem ;
195+ opacity : 0 ;
196+ transform : translateY (-10px );
197+ transition : all 0.3s ease;
198+ pointer-events : none;
199+ }
200+
201+ .playStatus .visible {
202+ opacity : 1 ;
203+ transform : translateY (0 );
204+ }
205+
206+ .playIndicator {
207+ background : rgba (0 , 0 , 0 , 0.7 );
208+ color : white;
209+ padding : 0.5rem 1rem ;
210+ border-radius : 20px ;
211+ font-size : 12px ;
212+ display : flex;
213+ align-items : center;
214+ gap : 0.5rem ;
215+ backdrop-filter : blur (4px );
216+ }
217+
218+ /* Playing state effects */
219+ .mediaContent .playing .videoPlayer {
220+ box-shadow : 0 0 20px rgba (var (--ifm-color-primary-rgb ), 0.3 );
221+ }
222+
223+ /* Responsive Design */
224+ @media (max-width : 768px ) {
225+ .mediaContainer {
226+ border-radius : 8px ;
227+ }
228+
229+ .youtubePlayer {
230+ height : 250px ;
231+ min-height : 200px ;
232+ }
233+
234+ .mediaCaption {
235+ padding : 0.75rem ;
236+ }
237+
238+ .mediaCaption p {
239+ font-size : 13px ;
240+ }
241+
242+ .mediaLoading ,
243+ .mediaError ,
244+ .mediaPlaceholder {
245+ height : 200px ;
246+ padding : 1rem ;
247+ }
248+
249+ .errorIcon ,
250+ .placeholderIcon {
251+ font-size : 36px ;
252+ }
253+ }
254+
255+ /* Dark Mode Adjustments */
256+ [data-theme = 'dark' ] .mediaCaption {
257+ background : var (--ifm-color-emphasis-100 );
258+ border-top-color : var (--ifm-color-emphasis-300 );
259+ }
260+
261+ [data-theme = 'dark' ] .loadingSpinner {
262+ border-color : var (--ifm-color-emphasis-400 );
263+ border-top-color : var (--ifm-color-primary );
264+ }
265+
266+ [data-theme = 'dark' ] .playIndicator {
267+ background : rgba (255 , 255 , 255 , 0.1 );
268+ backdrop-filter : blur (8px );
269+ }
0 commit comments