/* PTT Live - Styles globaux */ :root { /* Couleurs */ --color-bg: #0a0a0a; --color-surface: #1a1a1a; --color-surface-hover: #252525; --color-border: #333; --color-text: #ffffff; --color-text-secondary: #999; --color-primary: #3b82f6; --color-primary-hover: #2563eb; --color-success: #10b981; --color-warning: #f59e0b; --color-danger: #ef4444; --color-accent: #8b5cf6; --color-error: #ef4444; /* PTT States */ --color-ptt-idle: #374151; --color-ptt-talking: #ef4444; --color-ptt-listening: #10b981; /* Spacing */ --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 1.5rem; --spacing-xl: 2rem; /* Fonts */ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } * { box-sizing: border-box; margin: 0; padding: 0; } html, body { width: 100%; height: 100%; overflow: hidden; } body { background-color: var(--color-bg); color: var(--color-text); line-height: 1.5; } #root { width: 100%; height: 100%; display: flex; flex-direction: column; } /* Désactiver la sélection sur les éléments interactifs */ button, .no-select { -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; } /* Styles des boutons */ button { font-family: inherit; font-size: 1rem; border: none; cursor: pointer; transition: all 0.15s ease; } button:active { transform: scale(0.98); } button:disabled { opacity: 0.5; cursor: not-allowed; } /* Scrollbars sombres */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--color-surface); } ::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--color-text-secondary); } /* Animations */ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } @keyframes slideInUp { from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .pulse { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } /* Utilitaires */ .text-center { text-align: center; } .flex { display: flex; } .flex-col { flex-direction: column; } .items-center { align-items: center; } .justify-center { justify-content: center; } .gap-sm { gap: var(--spacing-sm); } .gap-md { gap: var(--spacing-md); } .gap-lg { gap: var(--spacing-lg); }