Spaces:
				
			
			
	
			
			
					
		Running
		
	
	
	
			
			
	
	
	
	
		
		
					
		Running
		
	Update src/App.scss
Browse files- src/App.scss +89 -101
    	
        src/App.scss
    CHANGED
    
    | @@ -1,4 +1,3 @@ | |
| 1 | 
            -
            // ... (بالای فایل App.scss بدون تغییر) ...
         | 
| 2 | 
             
            // 1. Import Tailwind's base, components, and utilities
         | 
| 3 | 
             
            @import 'tailwindcss/base';
         | 
| 4 | 
             
            @import 'tailwindcss/components';
         | 
| @@ -47,16 +46,28 @@ | |
| 47 | 
             
            }
         | 
| 48 |  | 
| 49 | 
             
            .main-wrapper {
         | 
| 50 | 
            -
                min-height: 100vh; | 
| 51 | 
             
                display: flex;
         | 
| 52 | 
             
                flex-direction: column;
         | 
| 53 | 
             
            }
         | 
| 54 | 
             
            .media-area {
         | 
| 55 | 
            -
                flex-grow: 1; | 
|  | |
| 56 | 
             
            }
         | 
| 57 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 58 |  | 
| 59 | 
            -
             | 
|  | |
| 60 | 
             
            .notification-popover-wrapper {
         | 
| 61 | 
             
                position: fixed;
         | 
| 62 | 
             
                top: 1rem;
         | 
| @@ -69,7 +80,6 @@ | |
| 69 | 
             
                justify-content: center;
         | 
| 70 | 
             
                pointer-events: none;
         | 
| 71 | 
             
            }
         | 
| 72 | 
            -
             | 
| 73 | 
             
            .popover-content {
         | 
| 74 | 
             
                width: 100%;
         | 
| 75 | 
             
                border-radius: var(--radius-md, 0.5rem);
         | 
| @@ -83,14 +93,12 @@ | |
| 83 | 
             
                opacity: 0;
         | 
| 84 | 
             
                transform: translateY(-100%) scale(0.9);
         | 
| 85 | 
             
                pointer-events: none;
         | 
| 86 | 
            -
             | 
| 87 | 
             
                &.open {
         | 
| 88 | 
             
                    opacity: 1;
         | 
| 89 | 
             
                    transform: translateY(0) scale(1);
         | 
| 90 | 
             
                    pointer-events: auto;
         | 
| 91 | 
             
                }
         | 
| 92 | 
             
            }
         | 
| 93 | 
            -
             | 
| 94 | 
             
            .notification-popover-text-content {
         | 
| 95 | 
             
                background-color: #eff6ff;
         | 
| 96 | 
             
                font-size: 0.875rem;
         | 
| @@ -104,10 +112,9 @@ | |
| 104 | 
             
                background-color: oklch(0.25 0.05 230);
         | 
| 105 | 
             
                color: oklch(0.95 0.01 230);
         | 
| 106 | 
             
            }
         | 
| 107 | 
            -
             | 
| 108 | 
             
            .header-controls {
         | 
| 109 | 
             
                display: flex;
         | 
| 110 | 
            -
                padding: 0.75rem 0.5rem; | 
| 111 | 
             
                justify-content: space-between;
         | 
| 112 | 
             
                align-items: center;
         | 
| 113 | 
             
                width: 100%;
         | 
| @@ -116,43 +123,38 @@ | |
| 116 | 
             
                left: 0;
         | 
| 117 | 
             
                z-index: 10;
         | 
| 118 | 
             
            }
         | 
| 119 | 
            -
             | 
| 120 | 
             
            .header-button {
         | 
| 121 | 
             
                display: flex;
         | 
| 122 | 
             
                align-items: center;
         | 
| 123 | 
             
                justify-content: center;
         | 
| 124 | 
            -
                padding: 0.5rem; | 
| 125 | 
            -
                width: 40px; | 
| 126 | 
            -
                height: 40px; | 
| 127 | 
            -
                border-radius: var(--radius-lg, 0.625rem); | 
| 128 | 
            -
                background-color: #e5e7eb; | 
| 129 | 
             
                cursor: pointer;
         | 
| 130 | 
            -
                transition: background-color 0.2s, transform 0.1s ease-out; | 
| 131 | 
            -
             | 
| 132 | 
             
                svg {
         | 
| 133 | 
             
                    opacity: 0.7;
         | 
| 134 | 
            -
                    stroke: #374151; | 
| 135 | 
            -
                    width: 24px; | 
| 136 | 
             
                    height: 24px;
         | 
| 137 | 
             
                }
         | 
| 138 | 
            -
             | 
| 139 | 
             
                &:hover {
         | 
| 140 | 
            -
                    background-color: #d1d5db; | 
| 141 | 
             
                }
         | 
| 142 | 
            -
             | 
| 143 | 
             
                &:active {
         | 
| 144 | 
            -
                    background-color: #9ca3af; | 
| 145 | 
            -
                    transform: scale(0.95); | 
| 146 | 
             
                }
         | 
| 147 | 
             
            }
         | 
| 148 | 
            -
             | 
| 149 | 
             
            .dark .header-button {
         | 
| 150 | 
             
                background-color: oklch(0.28 0 0);
         | 
| 151 | 
             
                &:hover {
         | 
| 152 | 
             
                    background-color: oklch(0.35 0 0);
         | 
| 153 | 
             
                }
         | 
| 154 | 
             
                &:active {
         | 
| 155 | 
            -
                    background-color: oklch(0.40 0 0); | 
| 156 | 
             
                    transform: scale(0.95);
         | 
| 157 | 
             
                }
         | 
| 158 | 
             
                svg {
         | 
| @@ -161,98 +163,105 @@ | |
| 161 | 
             
                }
         | 
| 162 | 
             
            }
         | 
| 163 |  | 
| 164 | 
            -
             | 
| 165 | 
             
            .logo-animation-wrapper {
         | 
| 166 | 
             
                position: relative;
         | 
| 167 | 
             
                display: flex;
         | 
| 168 | 
             
                align-items: center;
         | 
| 169 | 
             
                justify-content: center;
         | 
| 170 | 
            -
                 | 
| 171 | 
            -
                & > div > svg {
         | 
| 172 | 
             
                    width: 100%;
         | 
| 173 | 
             
                    height: 100%;
         | 
| 174 | 
             
                }
         | 
| 175 | 
             
            }
         | 
|  | |
|  | |
|  | |
|  | |
| 176 |  | 
| 177 | 
             
            /* Footer styles to mimic HTML example */
         | 
| 178 | 
             
            .footer-controls-html-like {
         | 
| 179 | 
             
                width: 100%;
         | 
| 180 | 
             
                display: flex;
         | 
| 181 | 
            -
                 | 
| 182 | 
            -
                   Let's try space-between and position logo absolutely for now. */
         | 
| 183 | 
            -
                justify-content: space-between; // Mic left, Cam right as per your HTML example
         | 
| 184 | 
            -
                align-items: center;
         | 
| 185 | 
             
                position: absolute;
         | 
| 186 | 
             
                bottom: 0;
         | 
| 187 | 
            -
                //  | 
| 188 | 
            -
                padding: 2rem 3rem; // 32px top/bottom, 48px left/right
         | 
| 189 | 
             
                box-sizing: border-box;
         | 
| 190 | 
            -
                z-index: 20;
         | 
| 191 | 
            -
            }
         | 
| 192 |  | 
| 193 | 
            -
            //  | 
| 194 | 
            -
             | 
| 195 | 
            -
                 | 
| 196 | 
            -
                 | 
| 197 | 
            -
                justify-content: center; // Center the button itself if wrapper is wider
         | 
| 198 | 
             
            }
         | 
| 199 |  | 
|  | |
| 200 | 
             
            .small-logo-footer-html-like {
         | 
| 201 | 
            -
                //  | 
| 202 | 
            -
                //  | 
| 203 | 
            -
                //  | 
| 204 | 
            -
                //  | 
| 205 | 
            -
                //  | 
| 206 | 
            -
                 | 
| 207 | 
            -
                 | 
| 208 | 
            -
                 | 
| 209 | 
            -
                 | 
| 210 | 
            -
                 | 
|  | |
|  | |
|  | |
|  | |
| 211 | 
             
            }
         | 
| 212 |  | 
| 213 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 214 | 
             
            .control-button {
         | 
| 215 | 
            -
                height: 80px; //  | 
| 216 | 
            -
                width: 80px;  //  | 
| 217 | 
             
                border-radius: 9999px;
         | 
| 218 | 
             
                padding: 0;
         | 
| 219 | 
             
                display: flex;
         | 
| 220 | 
             
                align-items: center;
         | 
| 221 | 
             
                justify-content: center;
         | 
| 222 | 
             
                border-width: 1px;
         | 
| 223 | 
            -
                border-color: var(--border); | 
| 224 | 
             
                box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06);
         | 
| 225 | 
             
                cursor: pointer;
         | 
| 226 | 
             
                transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
         | 
| 227 | 
             
                flex-shrink: 0;
         | 
| 228 | 
            -
                z-index: 2; //  | 
| 229 |  | 
| 230 | 
             
                &:hover {
         | 
| 231 | 
             
                    transform: scale(1.05);
         | 
| 232 | 
             
                    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05);
         | 
| 233 | 
             
                }
         | 
| 234 | 
            -
             | 
| 235 | 
            -
                // Ensure SVGs inside control buttons scale appropriately
         | 
| 236 | 
             
                svg {
         | 
| 237 | 
            -
             | 
| 238 | 
            -
             | 
| 239 | 
            -
             | 
| 240 | 
             
                }
         | 
| 241 | 
             
            }
         | 
| 242 |  | 
| 243 | 
            -
            //  | 
| 244 | 
            -
            .mic-button-color { background-color: #fecdd3; } //  | 
| 245 | 
            -
             | 
| 246 | 
            -
            .cam-button-color { background-color: #E0ECFF; } // Blueish
         | 
| 247 |  | 
| 248 | 
             
            .dark .mic-button-color { background-color: #5C2129; }
         | 
| 249 | 
             
            .dark .cam-button-color { background-color: #223355; }
         | 
| 250 |  | 
| 251 |  | 
| 252 | 
            -
            /* Switch Camera Button  | 
| 253 | 
             
            .switch-camera-button-container {
         | 
| 254 | 
             
                position: absolute;
         | 
| 255 | 
            -
                bottom: calc(100% + 0.65rem); | 
| 256 | 
             
                left: 50%;
         | 
| 257 | 
             
                transform: translateX(-50%) translateY(15px) scale(0.7);
         | 
| 258 | 
             
                z-index: 5;
         | 
| @@ -260,17 +269,15 @@ | |
| 260 | 
             
                pointer-events: none;
         | 
| 261 | 
             
                transition: opacity 0.35s cubic-bezier(0.68, -0.55, 0.27, 1.55), transform 0.35s cubic-bezier(0.68, -0.55, 0.27, 1.55);
         | 
| 262 | 
             
                transform-origin: center bottom;
         | 
| 263 | 
            -
             | 
| 264 | 
             
                &.visible {
         | 
| 265 | 
             
                    opacity: 1;
         | 
| 266 | 
             
                    transform: translateX(-50%) translateY(0) scale(1);
         | 
| 267 | 
             
                    pointer-events: auto;
         | 
| 268 | 
             
                }
         | 
| 269 | 
             
            }
         | 
| 270 | 
            -
             | 
| 271 | 
             
            .switch-camera-button-content {
         | 
| 272 | 
            -
                width: 48px; | 
| 273 | 
            -
                height: 48px; | 
| 274 | 
             
                background-color: var(--background);
         | 
| 275 | 
             
                border: 1px solid var(--border);
         | 
| 276 | 
             
                border-radius: 9999px;
         | 
| @@ -281,53 +288,34 @@ | |
| 281 | 
             
                cursor: pointer;
         | 
| 282 | 
             
                transform-origin: center;
         | 
| 283 | 
             
                transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
         | 
| 284 | 
            -
             | 
| 285 | 
             
                &:hover {
         | 
| 286 | 
            -
                    transform: scale(1.12) rotate(-6deg); | 
| 287 | 
             
                    box-shadow: 0 7px 15px rgba(0,0,0,0.18), 0 3px 6px rgba(0,0,0,0.12);
         | 
| 288 | 
             
                }
         | 
| 289 | 
             
                &:active {
         | 
| 290 | 
            -
                    transform: scale(1.03) rotate(0deg); | 
| 291 | 
             
                }
         | 
| 292 | 
            -
             | 
| 293 | 
             
                svg {
         | 
| 294 | 
            -
                    width: 22px; | 
| 295 | 
            -
                    height: 22px; | 
| 296 | 
             
                    stroke: var(--foreground);
         | 
| 297 | 
             
                    transition: transform 0.3s ease-in-out;
         | 
| 298 | 
             
                }
         | 
| 299 | 
             
                &:hover svg {
         | 
| 300 | 
            -
                    transform: rotate(360deg); | 
| 301 | 
             
                }
         | 
| 302 | 
             
            }
         | 
| 303 |  | 
| 304 | 
            -
            /* Keyframes for popover  | 
| 305 | 
             
            @keyframes popover-drop-in {
         | 
| 306 | 
            -
                0% {
         | 
| 307 | 
            -
             | 
| 308 | 
            -
             | 
| 309 | 
            -
                }
         | 
| 310 | 
            -
                70% {
         | 
| 311 | 
            -
                    opacity: 1;
         | 
| 312 | 
            -
                    transform: translateY(5px) scale(1.02);
         | 
| 313 | 
            -
                }
         | 
| 314 | 
            -
                100% {
         | 
| 315 | 
            -
                    opacity: 1;
         | 
| 316 | 
            -
                    transform: translateY(0) scale(1);
         | 
| 317 | 
            -
                }
         | 
| 318 | 
             
            }
         | 
| 319 | 
            -
             | 
| 320 | 
             
            @keyframes popover-lift-out {
         | 
| 321 | 
            -
                0% {
         | 
| 322 | 
            -
             | 
| 323 | 
            -
                    transform: translateY(0) scale(1);
         | 
| 324 | 
            -
                }
         | 
| 325 | 
            -
                100% {
         | 
| 326 | 
            -
                    opacity: 0;
         | 
| 327 | 
            -
                    transform: translateY(-100%) scale(0.9);
         | 
| 328 | 
            -
                }
         | 
| 329 | 
             
            }
         | 
| 330 | 
            -
             | 
| 331 | 
             
            .animate-popover-open-top-center {
         | 
| 332 | 
             
                animation: popover-drop-in 0.4s cubic-bezier(0.68, -0.55, 0.27, 1.55) forwards;
         | 
| 333 | 
             
            }
         | 
|  | |
|  | |
| 1 | 
             
            // 1. Import Tailwind's base, components, and utilities
         | 
| 2 | 
             
            @import 'tailwindcss/base';
         | 
| 3 | 
             
            @import 'tailwindcss/components';
         | 
|  | |
| 46 | 
             
            }
         | 
| 47 |  | 
| 48 | 
             
            .main-wrapper {
         | 
| 49 | 
            +
                min-height: 100vh;
         | 
| 50 | 
             
                display: flex;
         | 
| 51 | 
             
                flex-direction: column;
         | 
| 52 | 
             
            }
         | 
| 53 | 
             
            .media-area {
         | 
| 54 | 
            +
                flex-grow: 1;
         | 
| 55 | 
            +
                position: relative; // برای large-logo-container
         | 
| 56 | 
             
            }
         | 
| 57 |  | 
| 58 | 
            +
            #large-logo-container { // استایل از HTML مرجع شما
         | 
| 59 | 
            +
                display: flex; // در App.tsx با flex items-center justify-center کنترل می شود
         | 
| 60 | 
            +
                align-items: center;
         | 
| 61 | 
            +
                justify-content: center;
         | 
| 62 | 
            +
                width: 100%;
         | 
| 63 | 
            +
                height: 100%;
         | 
| 64 | 
            +
                position: absolute;
         | 
| 65 | 
            +
                top: 0;
         | 
| 66 | 
            +
                left: 0;
         | 
| 67 | 
            +
            }
         | 
| 68 |  | 
| 69 | 
            +
             | 
| 70 | 
            +
            /* Notification Popover & Header controls (بدون تغییر از پاسخ قبلی) */
         | 
| 71 | 
             
            .notification-popover-wrapper {
         | 
| 72 | 
             
                position: fixed;
         | 
| 73 | 
             
                top: 1rem;
         | 
|  | |
| 80 | 
             
                justify-content: center;
         | 
| 81 | 
             
                pointer-events: none;
         | 
| 82 | 
             
            }
         | 
|  | |
| 83 | 
             
            .popover-content {
         | 
| 84 | 
             
                width: 100%;
         | 
| 85 | 
             
                border-radius: var(--radius-md, 0.5rem);
         | 
|  | |
| 93 | 
             
                opacity: 0;
         | 
| 94 | 
             
                transform: translateY(-100%) scale(0.9);
         | 
| 95 | 
             
                pointer-events: none;
         | 
|  | |
| 96 | 
             
                &.open {
         | 
| 97 | 
             
                    opacity: 1;
         | 
| 98 | 
             
                    transform: translateY(0) scale(1);
         | 
| 99 | 
             
                    pointer-events: auto;
         | 
| 100 | 
             
                }
         | 
| 101 | 
             
            }
         | 
|  | |
| 102 | 
             
            .notification-popover-text-content {
         | 
| 103 | 
             
                background-color: #eff6ff;
         | 
| 104 | 
             
                font-size: 0.875rem;
         | 
|  | |
| 112 | 
             
                background-color: oklch(0.25 0.05 230);
         | 
| 113 | 
             
                color: oklch(0.95 0.01 230);
         | 
| 114 | 
             
            }
         | 
|  | |
| 115 | 
             
            .header-controls {
         | 
| 116 | 
             
                display: flex;
         | 
| 117 | 
            +
                padding: 0.75rem 0.5rem;
         | 
| 118 | 
             
                justify-content: space-between;
         | 
| 119 | 
             
                align-items: center;
         | 
| 120 | 
             
                width: 100%;
         | 
|  | |
| 123 | 
             
                left: 0;
         | 
| 124 | 
             
                z-index: 10;
         | 
| 125 | 
             
            }
         | 
|  | |
| 126 | 
             
            .header-button {
         | 
| 127 | 
             
                display: flex;
         | 
| 128 | 
             
                align-items: center;
         | 
| 129 | 
             
                justify-content: center;
         | 
| 130 | 
            +
                padding: 0.5rem;
         | 
| 131 | 
            +
                width: 40px;
         | 
| 132 | 
            +
                height: 40px;
         | 
| 133 | 
            +
                border-radius: var(--radius-lg, 0.625rem);
         | 
| 134 | 
            +
                background-color: #e5e7eb;
         | 
| 135 | 
             
                cursor: pointer;
         | 
| 136 | 
            +
                transition: background-color 0.2s, transform 0.1s ease-out;
         | 
|  | |
| 137 | 
             
                svg {
         | 
| 138 | 
             
                    opacity: 0.7;
         | 
| 139 | 
            +
                    stroke: #374151;
         | 
| 140 | 
            +
                    width: 24px;
         | 
| 141 | 
             
                    height: 24px;
         | 
| 142 | 
             
                }
         | 
|  | |
| 143 | 
             
                &:hover {
         | 
| 144 | 
            +
                    background-color: #d1d5db;
         | 
| 145 | 
             
                }
         | 
|  | |
| 146 | 
             
                &:active {
         | 
| 147 | 
            +
                    background-color: #9ca3af;
         | 
| 148 | 
            +
                    transform: scale(0.95);
         | 
| 149 | 
             
                }
         | 
| 150 | 
             
            }
         | 
|  | |
| 151 | 
             
            .dark .header-button {
         | 
| 152 | 
             
                background-color: oklch(0.28 0 0);
         | 
| 153 | 
             
                &:hover {
         | 
| 154 | 
             
                    background-color: oklch(0.35 0 0);
         | 
| 155 | 
             
                }
         | 
| 156 | 
             
                &:active {
         | 
| 157 | 
            +
                    background-color: oklch(0.40 0 0);
         | 
| 158 | 
             
                    transform: scale(0.95);
         | 
| 159 | 
             
                }
         | 
| 160 | 
             
                svg {
         | 
|  | |
| 163 | 
             
                }
         | 
| 164 | 
             
            }
         | 
| 165 |  | 
| 166 | 
            +
            /* Logo Animation Styling */
         | 
| 167 | 
             
            .logo-animation-wrapper {
         | 
| 168 | 
             
                position: relative;
         | 
| 169 | 
             
                display: flex;
         | 
| 170 | 
             
                align-items: center;
         | 
| 171 | 
             
                justify-content: center;
         | 
| 172 | 
            +
                & > div > svg { // اطمینان از اینکه SVG داخل لوگو تمام فضا را پر می کند
         | 
|  | |
| 173 | 
             
                    width: 100%;
         | 
| 174 | 
             
                    height: 100%;
         | 
| 175 | 
             
                }
         | 
| 176 | 
             
            }
         | 
| 177 | 
            +
            .logo-animation-wrapper.for-footer {
         | 
| 178 | 
            +
                // اگر نیاز به استایل خاصی برای لوگوی فوتر باشد
         | 
| 179 | 
            +
            }
         | 
| 180 | 
            +
             | 
| 181 |  | 
| 182 | 
             
            /* Footer styles to mimic HTML example */
         | 
| 183 | 
             
            .footer-controls-html-like {
         | 
| 184 | 
             
                width: 100%;
         | 
| 185 | 
             
                display: flex;
         | 
| 186 | 
            +
                align-items: center; // برای هم ترازی عمودی
         | 
|  | |
|  | |
|  | |
| 187 | 
             
                position: absolute;
         | 
| 188 | 
             
                bottom: 0;
         | 
| 189 | 
            +
                padding: 2rem 3rem; // 32px top/bottom, 48px left/right (از HTML مرجع)
         | 
|  | |
| 190 | 
             
                box-sizing: border-box;
         | 
| 191 | 
            +
                z-index: 20; // بالاتر از محتوای مدیا
         | 
|  | |
| 192 |  | 
| 193 | 
            +
                // چیدمان دکمه ها: میکروفون چپ، لوگو وسط (اگر فعال)، دوربین راست
         | 
| 194 | 
            +
                // با استفاده از flex-grow برای لوگو، دکمه ها به کناره ها می چسبند
         | 
| 195 | 
            +
                // یا با justify-content: space-between و margin auto برای لوگو
         | 
| 196 | 
            +
                justify-content: space-between; // میکروفو�� چپ، دوربین راست
         | 
|  | |
| 197 | 
             
            }
         | 
| 198 |  | 
| 199 | 
            +
            // کانتینر برای لوگوی کوچک در فوتر، برای قرارگیری دقیق بین دکمه ها
         | 
| 200 | 
             
            .small-logo-footer-html-like {
         | 
| 201 | 
            +
                // این به صورت خودکار بین دو دکمه قرار می گیرد اگر فضای کافی باشد
         | 
| 202 | 
            +
                // یا می توان آن را به صورت absolute در وسط قرار داد
         | 
| 203 | 
            +
                // position: absolute;
         | 
| 204 | 
            +
                // left: 50%;
         | 
| 205 | 
            +
                // top: 50%;
         | 
| 206 | 
            +
                // transform: translate(-50%, -50%);
         | 
| 207 | 
            +
                // z-index: 1; // پشت دکمه ها اگر همپوشانی داشته باشند
         | 
| 208 | 
            +
                // برای حالا، اجازه می دهیم با flex در جای خود قرار گیرد
         | 
| 209 | 
            +
                display: flex;
         | 
| 210 | 
            +
                align-items: center;
         | 
| 211 | 
            +
                justify-content: center;
         | 
| 212 | 
            +
                // اگر می خواهید دقیقاً وسط باشد و دکمه ها در کناره ها:
         | 
| 213 | 
            +
                margin-left: auto;
         | 
| 214 | 
            +
                margin-right: auto;
         | 
| 215 | 
             
            }
         | 
| 216 |  | 
| 217 |  | 
| 218 | 
            +
            .control-button-wrapper { // برای دکمه دوربین و دکمه تعویض آن
         | 
| 219 | 
            +
                position: relative;
         | 
| 220 | 
            +
                display: flex;
         | 
| 221 | 
            +
                justify-content: center;
         | 
| 222 | 
            +
            }
         | 
| 223 | 
            +
            // .cam-wrapper-html-like در ControlTray.tsx استفاده شده
         | 
| 224 | 
            +
             | 
| 225 | 
             
            .control-button {
         | 
| 226 | 
            +
                height: 80px; // از HTML مرجع
         | 
| 227 | 
            +
                width: 80px;  // از HTML مرجع
         | 
| 228 | 
             
                border-radius: 9999px;
         | 
| 229 | 
             
                padding: 0;
         | 
| 230 | 
             
                display: flex;
         | 
| 231 | 
             
                align-items: center;
         | 
| 232 | 
             
                justify-content: center;
         | 
| 233 | 
             
                border-width: 1px;
         | 
| 234 | 
            +
                border-color: var(--border);
         | 
| 235 | 
             
                box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06);
         | 
| 236 | 
             
                cursor: pointer;
         | 
| 237 | 
             
                transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
         | 
| 238 | 
             
                flex-shrink: 0;
         | 
| 239 | 
            +
                z-index: 2; // اطمینان از اینکه دکمه ها قابل کلیک هستند
         | 
| 240 |  | 
| 241 | 
             
                &:hover {
         | 
| 242 | 
             
                    transform: scale(1.05);
         | 
| 243 | 
             
                    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05);
         | 
| 244 | 
             
                }
         | 
| 245 | 
            +
                // اطمینان از اینکه SVG داخل دکمه ها به درستی نمایش داده می شود
         | 
|  | |
| 246 | 
             
                svg {
         | 
| 247 | 
            +
                  // اگر SVG ها خیلی بزرگ هستند، می توانید اندازه آنها را اینجا کنترل کنید
         | 
| 248 | 
            +
                  // مثال: width: 50%; height: 50%;
         | 
| 249 | 
            +
                  // یا با transform: scale(0.55); اگر در HTML اصلی شما اینگونه بوده
         | 
| 250 | 
             
                }
         | 
| 251 | 
             
            }
         | 
| 252 |  | 
| 253 | 
            +
            // ترتیب رنگ ها بر اساس HTML مرجع شما (میکروفون چپ، دوربین راست)
         | 
| 254 | 
            +
            .mic-button-color { background-color: #fecdd3; } // قرمز برای میکروفون
         | 
| 255 | 
            +
            .cam-button-color { background-color: #E0ECFF; } // آبی برای دوربین
         | 
|  | |
| 256 |  | 
| 257 | 
             
            .dark .mic-button-color { background-color: #5C2129; }
         | 
| 258 | 
             
            .dark .cam-button-color { background-color: #223355; }
         | 
| 259 |  | 
| 260 |  | 
| 261 | 
            +
            /* Switch Camera Button (بدون تغییر از پاسخ قبلی) */
         | 
| 262 | 
             
            .switch-camera-button-container {
         | 
| 263 | 
             
                position: absolute;
         | 
| 264 | 
            +
                bottom: calc(100% + 0.65rem);
         | 
| 265 | 
             
                left: 50%;
         | 
| 266 | 
             
                transform: translateX(-50%) translateY(15px) scale(0.7);
         | 
| 267 | 
             
                z-index: 5;
         | 
|  | |
| 269 | 
             
                pointer-events: none;
         | 
| 270 | 
             
                transition: opacity 0.35s cubic-bezier(0.68, -0.55, 0.27, 1.55), transform 0.35s cubic-bezier(0.68, -0.55, 0.27, 1.55);
         | 
| 271 | 
             
                transform-origin: center bottom;
         | 
|  | |
| 272 | 
             
                &.visible {
         | 
| 273 | 
             
                    opacity: 1;
         | 
| 274 | 
             
                    transform: translateX(-50%) translateY(0) scale(1);
         | 
| 275 | 
             
                    pointer-events: auto;
         | 
| 276 | 
             
                }
         | 
| 277 | 
             
            }
         | 
|  | |
| 278 | 
             
            .switch-camera-button-content {
         | 
| 279 | 
            +
                width: 48px;
         | 
| 280 | 
            +
                height: 48px;
         | 
| 281 | 
             
                background-color: var(--background);
         | 
| 282 | 
             
                border: 1px solid var(--border);
         | 
| 283 | 
             
                border-radius: 9999px;
         | 
|  | |
| 288 | 
             
                cursor: pointer;
         | 
| 289 | 
             
                transform-origin: center;
         | 
| 290 | 
             
                transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
         | 
|  | |
| 291 | 
             
                &:hover {
         | 
| 292 | 
            +
                    transform: scale(1.12) rotate(-6deg);
         | 
| 293 | 
             
                    box-shadow: 0 7px 15px rgba(0,0,0,0.18), 0 3px 6px rgba(0,0,0,0.12);
         | 
| 294 | 
             
                }
         | 
| 295 | 
             
                &:active {
         | 
| 296 | 
            +
                    transform: scale(1.03) rotate(0deg);
         | 
| 297 | 
             
                }
         | 
|  | |
| 298 | 
             
                svg {
         | 
| 299 | 
            +
                    width: 22px;
         | 
| 300 | 
            +
                    height: 22px;
         | 
| 301 | 
             
                    stroke: var(--foreground);
         | 
| 302 | 
             
                    transition: transform 0.3s ease-in-out;
         | 
| 303 | 
             
                }
         | 
| 304 | 
             
                &:hover svg {
         | 
| 305 | 
            +
                    transform: rotate(360deg);
         | 
| 306 | 
             
                }
         | 
| 307 | 
             
            }
         | 
| 308 |  | 
| 309 | 
            +
            /* Keyframes for popover (بدون تغییر از پاسخ قبلی) */
         | 
| 310 | 
             
            @keyframes popover-drop-in {
         | 
| 311 | 
            +
                0% { opacity: 0; transform: translateY(-100%) scale(0.9); }
         | 
| 312 | 
            +
                70% { opacity: 1; transform: translateY(5px) scale(1.02); }
         | 
| 313 | 
            +
                100% { opacity: 1; transform: translateY(0) scale(1); }
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 314 | 
             
            }
         | 
|  | |
| 315 | 
             
            @keyframes popover-lift-out {
         | 
| 316 | 
            +
                0% { opacity: 1; transform: translateY(0) scale(1); }
         | 
| 317 | 
            +
                100% { opacity: 0; transform: translateY(-100%) scale(0.9); }
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 318 | 
             
            }
         | 
|  | |
| 319 | 
             
            .animate-popover-open-top-center {
         | 
| 320 | 
             
                animation: popover-drop-in 0.4s cubic-bezier(0.68, -0.55, 0.27, 1.55) forwards;
         | 
| 321 | 
             
            }
         | 
