You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

336 lines
6.0KB

  1. /* Page principale */
  2. .page {
  3. display: flex;
  4. height: 100vh;
  5. width: 100vw;
  6. overflow: hidden;
  7. background-image: url(images/bg.png);
  8. background-size: cover;
  9. }
  10. .main-container {
  11. display: flex;
  12. flex: 1;
  13. overflow: hidden;
  14. }
  15. .sidebar {
  16. width: 280px;
  17. background: linear-gradient(180deg, var(--secondary-color), var(--main-color));
  18. height: 100vh; /* Prend toute la hauteur de l'écran */
  19. overflow-y: auto;
  20. overflow-x: hidden;
  21. flex-shrink: 0;
  22. transition: transform 0.3s ease;
  23. }
  24. .sidebar::-webkit-scrollbar {
  25. width: 6px;
  26. }
  27. .sidebar::-webkit-scrollbar-track {
  28. background: rgba(255, 255, 255, 0.1);
  29. }
  30. .sidebar::-webkit-scrollbar-thumb {
  31. background: rgba(255, 255, 255, 0.3);
  32. border-radius: 3px;
  33. }
  34. .sidebar::-webkit-scrollbar-thumb:hover {
  35. background: rgba(255, 255, 255, 0.5);
  36. }
  37. .content-area {
  38. flex: 1;
  39. display: flex;
  40. flex-direction: column;
  41. overflow: hidden;
  42. }
  43. .top-bar {
  44. height: 60px;
  45. background-color: #e9ecef;
  46. border-bottom: 1px solid #dee2e6;
  47. z-index: 100;
  48. box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  49. flex-shrink: 0;
  50. }
  51. .top-bar-content {
  52. height: 100%;
  53. padding: 0 2rem;
  54. display: flex;
  55. justify-content: space-between;
  56. align-items: center;
  57. }
  58. /* Partie gauche avec logo + titre */
  59. .top-bar-left {
  60. display: flex;
  61. align-items: center;
  62. gap: 1rem;
  63. }
  64. /* Menu Burger */
  65. .burger-menu {
  66. display: none;
  67. flex-direction: column;
  68. justify-content: space-around;
  69. width: 30px;
  70. height: 25px;
  71. background: transparent;
  72. border: none;
  73. cursor: pointer;
  74. padding: 0;
  75. z-index: 1001;
  76. }
  77. .burger-menu span {
  78. width: 100%;
  79. height: 3px;
  80. background-color: #212529;
  81. border-radius: 10px;
  82. transition: all 0.3s ease;
  83. }
  84. .burger-menu.active span:nth-child(1) {
  85. transform: rotate(45deg) translate(8px, 8px);
  86. }
  87. .burger-menu.active span:nth-child(2) {
  88. opacity: 0;
  89. }
  90. .burger-menu.active span:nth-child(3) {
  91. transform: rotate(-45deg) translate(7px, -7px);
  92. }
  93. /* Logo */
  94. .logo-link {
  95. display: flex;
  96. align-items: center;
  97. transition: opacity 0.2s ease;
  98. }
  99. .logo-link:hover {
  100. opacity: 0.8;
  101. }
  102. /* Titre de l'application */
  103. .app-title {
  104. font-size: 1.5rem;
  105. font-weight: 600;
  106. color: #212529;
  107. text-decoration: none;
  108. margin: 0;
  109. }
  110. .app-title:hover {
  111. color: #0056b3;
  112. }
  113. /* Partie droite - Menu utilisateur */
  114. .top-bar-right {
  115. display: flex;
  116. align-items: center;
  117. }
  118. .user-menu {
  119. position: relative;
  120. }
  121. /* Bouton du menu utilisateur */
  122. .user-menu-button {
  123. background: none;
  124. border: none;
  125. cursor: pointer;
  126. padding: 0;
  127. border-radius: 50%;
  128. transition: all 0.2s ease;
  129. display: flex;
  130. align-items: center;
  131. justify-content: center;
  132. }
  133. .user-menu-button:hover {
  134. background-color: #f0f0f0;
  135. transform: scale(1.05);
  136. }
  137. /* Menu déroulant utilisateur */
  138. .user-menu-dropdown {
  139. position: absolute;
  140. top: calc(100% + 10px);
  141. right: 0;
  142. background-color: white;
  143. border: 1px solid #dee2e6;
  144. border-radius: 8px;
  145. box-shadow: 0 4px 12px rgba(0,0,0,0.15);
  146. min-width: 220px;
  147. opacity: 0;
  148. visibility: hidden;
  149. transform: translateY(-10px);
  150. transition: all 0.2s ease;
  151. z-index: 1001;
  152. }
  153. .user-menu-dropdown.show {
  154. opacity: 1;
  155. visibility: visible;
  156. transform: translateY(0);
  157. }
  158. /* Items du menu déroulant */
  159. .dropdown-item {
  160. display: flex;
  161. align-items: center;
  162. padding: 0.75rem 1.25rem;
  163. color: #212529;
  164. text-decoration: none;
  165. transition: background-color 0.2s ease;
  166. border: none;
  167. background: none;
  168. width: 100%;
  169. text-align: left;
  170. cursor: pointer;
  171. font-size: 0.95rem;
  172. }
  173. .dropdown-item:hover {
  174. background-color: #f8f9fa;
  175. }
  176. .dropdown-item:first-child {
  177. border-radius: 8px 8px 0 0;
  178. }
  179. .dropdown-item:last-child {
  180. border-radius: 0 0 8px 8px;
  181. }
  182. /* Icône dans le menu déroulant */
  183. .dropdown-icon {
  184. margin-right: 0.75rem;
  185. font-size: 1.1rem;
  186. }
  187. /* Séparateur dans le menu déroulant */
  188. .dropdown-divider {
  189. height: 1px;
  190. background-color: #dee2e6;
  191. margin: 0.5rem 0;
  192. }
  193. /* Bouton de déconnexion */
  194. .content-wrapper {
  195. flex: 1;
  196. display: flex;
  197. flex-direction: column;
  198. overflow: hidden;
  199. }
  200. .main-content {
  201. flex: 1;
  202. overflow-y: auto;
  203. }
  204. .main-content::-webkit-scrollbar {
  205. width: 8px;
  206. }
  207. .main-content::-webkit-scrollbar-track {
  208. /* Conteneur de droite qui héberge le contenu principal et le footer */
  209. }
  210. .main-content::-webkit-scrollbar-thumb {
  211. background: #888;
  212. border-radius: 4px;
  213. }
  214. /* Contenu principal : scrollable si trop long */
  215. background: #555;
  216. }
  217. .footer {
  218. padding: 1rem;
  219. background-color: #e9ecef;
  220. border-top: 1px solid #dee2e6;
  221. text-align: center;
  222. flex-shrink: 0;
  223. }
  224. .footer p {
  225. margin: 0;
  226. color: #6c757d;
  227. }
  228. .sidebar-overlay {
  229. display: none;
  230. position: fixed;
  231. top: 0;
  232. left: 0;
  233. right: 0;
  234. bottom: 0;
  235. background-color: rgba(0, 0, 0, 0.5);
  236. z-index: 998;
  237. opacity: 0;
  238. transition: opacity 0.3s ease;
  239. }
  240. .sidebar-overlay.active {
  241. display: block;
  242. opacity: 1;
  243. }
  244. @media (max-width: 768px) {
  245. /* Afficher le bouton burger sur mobile */
  246. .burger-menu {
  247. display: flex;
  248. }
  249. /* Cacher le titre sur très petit écran */
  250. @media (max-width: 480px) {
  251. .app-title {
  252. display: none;
  253. }
  254. }
  255. .sidebar {
  256. position: fixed;
  257. top: 0;
  258. left: 0;
  259. bottom: 0;
  260. width: 280px;
  261. z-index: 999;
  262. transform: translateX(-100%);
  263. }
  264. .sidebar.active {
  265. transform: translateX(0);
  266. box-shadow: 2px 0 8px rgba(0, 0, 0, 0.3);
  267. }
  268. .main-content {
  269. padding: 1rem;
  270. }
  271. .top-bar-content {
  272. padding: 0 1rem;
  273. }
  274. }