@@ -257,4 +257,112 @@ canvas {
257257
258258@media (prefers-reduced-motion : reduce) {
259259 .node-link { transition : none; }
260- }
260+ }
261+
262+ /* --- PREVIEW SIDEBAR --- */
263+ # preview-sidebar {
264+ position : fixed;
265+ top : 0 ;
266+ right : 0 ;
267+ width : 400px ;
268+ height : 100vh ;
269+ height : 100dvh ;
270+ background : rgba (8 , 8 , 8 , 0.95 );
271+ border-left : 1px solid var (--gold-dark );
272+ z-index : 50 ;
273+ transform : translateX (100% ); /* Hidden by default */
274+ transition : transform 0.4s cubic-bezier (0.22 , 1 , 0.36 , 1 );
275+ display : flex;
276+ flex-direction : column;
277+ box-shadow : -10px 0 30px rgba (0 , 0 , 0 , 0.8 );
278+ }
279+
280+ # preview-sidebar .active {
281+ transform : translateX (0 ); /* Slide in */
282+ }
283+
284+ .preview-header {
285+ padding : 20px ;
286+ border-bottom : 1px solid var (--gold-dark );
287+ display : flex;
288+ justify-content : space-between;
289+ align-items : center;
290+ background : linear-gradient (90deg , rgba (212 , 175 , 55 , 0.05 ), transparent);
291+ }
292+
293+ # preview-title {
294+ color : var (--gold-main );
295+ font-size : 1.1rem ;
296+ margin : 0 ;
297+ text-transform : uppercase;
298+ letter-spacing : 1px ;
299+ white-space : nowrap;
300+ overflow : hidden;
301+ text-overflow : ellipsis;
302+ /* Limit title width so it doesn't break layout */
303+ max-width : 180px ;
304+ }
305+
306+ .preview-controls {
307+ display : flex;
308+ gap : 10px ;
309+ flex-shrink : 0 ;
310+ }
311+
312+ .preview-btn {
313+ background : transparent;
314+ border : 1px solid var (--gold-dark );
315+ color : var (--gold-main );
316+ font-family : "Audiowide" , sans-serif;
317+ font-size : 0.7rem ;
318+ padding : 5px 10px ;
319+ cursor : pointer;
320+ text-decoration : none;
321+ text-transform : uppercase;
322+ transition : all 0.2s ;
323+ }
324+
325+ .preview-btn : hover {
326+ background : var (--gold-main );
327+ color : # 000 ;
328+ }
329+
330+ .preview-content {
331+ flex-grow : 1 ;
332+ position : relative;
333+ overflow : hidden;
334+ background : # 000 ; /* Ensure opaque background behind iframe */
335+ }
336+
337+ /* Loading Text behind iframe */
338+ .iframe-loader {
339+ position : absolute;
340+ top : 50% ;
341+ left : 50% ;
342+ transform : translate (-50% , -50% );
343+ color : var (--gold-dark );
344+ font-family : "Audiowide" , sans-serif;
345+ z-index : 1 ; /* Was -1, moved to 1 to sit above background but below loaded iframe */
346+ }
347+
348+ # preview-frame {
349+ position : absolute; /* Fix: Ensure it covers properly */
350+ top : 0 ;
351+ left : 0 ;
352+ width : 100% ;
353+ height : 100% ;
354+ border : none;
355+ background : # fff ; /* Most sites have white bg */
356+ opacity : 0 ;
357+ transition : opacity 0.5s ;
358+ z-index : 2 ; /* Sit on top of loader */
359+ }
360+
361+ # preview-frame .loaded {
362+ opacity : 1 ;
363+ }
364+
365+ /* Mobile: Hide preview on very small screens to save space */
366+ @media (max-width : 600px ) {
367+ # preview-sidebar { display : none; }
368+ }
0 commit comments