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.

3053 line
56KB

  1. :root {
  2. --main-color: #2B99B4;
  3. --main-color-hover: #238a9f;
  4. --main-color-light: #3db3d1;
  5. --secondary-color: #27607F;
  6. --secondary-color-hover: #1f4d66;
  7. --secondary-color-light: #3a7a9e;
  8. --third-color: #243B5D;
  9. --third-color-hover: #1a2d47;
  10. --third-color-light: #2f4d75;
  11. --contrast: #F63E63;
  12. --contrast-hover: #e02851;
  13. --contrast-light: #f85979;
  14. --gray-primary: #6c757d;
  15. --gray-hover: #5a6268;
  16. --gray-light: #868e96;
  17. --gray-bg: #e9ecef;
  18. --yellow: #F5A623;
  19. --yellow-hover: #D68910;
  20. --font-size: 16px;
  21. --contrast-soft: #F48FB1;
  22. --contrast-soft-hover: #F06292;
  23. --secondary: #2984a1;
  24. --bg-light: #eaf8ff;
  25. --text-dark: #243b5d;
  26. --text-light: #6c757d;
  27. --border: #e5e7eb;
  28. }
  29. html, body {
  30. font-family: 'Montserrat', Arial, sans-serif;
  31. height: 100%;
  32. width: 100%;
  33. margin: 0;
  34. padding: 0;
  35. overflow: hidden;
  36. }
  37. h1:focus {
  38. outline: none;
  39. }
  40. a, .btn-link {
  41. color: #0071c1;
  42. }
  43. .btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  44. box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
  45. }
  46. /* AJOUT GTO */
  47. .page-container {
  48. padding: 1.5rem;
  49. min-height: 100%;
  50. }
  51. .page-header {
  52. display: flex;
  53. justify-content: space-between;
  54. align-items: center;
  55. margin-bottom: 1.5rem;
  56. padding: 1.25rem;
  57. background-color: white;
  58. border-radius: 8px;
  59. box-shadow: 0 2px 4px rgba(0,0,0,0.08);
  60. }
  61. .page-title-section {
  62. display: flex;
  63. align-items: center;
  64. gap: 1rem;
  65. }
  66. .page-title {
  67. font-size: 1.5rem;
  68. font-weight: 600;
  69. color: #2c3e50;
  70. margin: 0;
  71. }
  72. .page-subtitle {
  73. font-size: 1.1rem;
  74. font-weight: 400;
  75. color: #6c757d;
  76. margin: 0.25rem 0 0 0;
  77. }
  78. /*login*/
  79. .login-background {
  80. background-image: url('/images/fond-login.jpg');
  81. background-size: cover;
  82. background-repeat: no-repeat;
  83. background-position: center;
  84. height: 50vh; /* plein écran */
  85. display: flex;
  86. align-items: baseline;
  87. justify-content: center;
  88. }
  89. .login-container {
  90. display: flex;
  91. flex-direction: row-reverse;
  92. position: fixed;
  93. top: 0;
  94. left: 0;
  95. right: 0;
  96. bottom: 0;
  97. width: 100vw;
  98. height: 100vh;
  99. }
  100. .login-image {
  101. flex: 1;
  102. background-image: url('/images/fond-login.jpg');
  103. background-size: cover;
  104. background-position: center;
  105. background-repeat: no-repeat;
  106. }
  107. .login-form-section {
  108. flex: 1;
  109. display: flex;
  110. flex-direction: column;
  111. justify-content: center;
  112. align-items: center;
  113. padding: 2rem;
  114. background: white;
  115. }
  116. .login-form-section h1 {
  117. margin-bottom: 0.5rem;
  118. color: #333;
  119. }
  120. .login-form-section p {
  121. margin-bottom: 2rem;
  122. text-align: center;
  123. color: #666;
  124. }
  125. .login-form-section h3 {
  126. margin-bottom: 1.5rem;
  127. color: #333;
  128. }
  129. /* Formulaire */
  130. .login-form {
  131. width: 100%;
  132. max-width: 350px;
  133. display: flex;
  134. flex-direction: column;
  135. gap: 1rem;
  136. }
  137. .form-input {
  138. padding: 0.75rem;
  139. border: 1px solid #ddd;
  140. border-radius: 4px;
  141. font-size: 1rem;
  142. width: 100%;
  143. box-sizing: border-box;
  144. }
  145. .form-input:focus {
  146. outline: none;
  147. border-color: #ffc107;
  148. }
  149. /* les boutons*/
  150. .btn {
  151. padding: 0.75rem;
  152. border: none;
  153. border-radius: 4px;
  154. font-size: 1rem;
  155. cursor: pointer;
  156. width: 100%;
  157. }
  158. .btn-close {
  159. border: none;
  160. font-size: 1.5rem;
  161. font-weight: 700;
  162. line-height: 1;
  163. color: #000;
  164. opacity: 0.5;
  165. padding: 0;
  166. cursor: pointer;
  167. }
  168. .btn-close:hover {
  169. opacity: 0.75;
  170. }
  171. .btn-action {
  172. display: inline-flex;
  173. align-items: center;
  174. gap: 0.5rem;
  175. padding: 0.2rem 0.7rem;
  176. border-radius: 8px;
  177. font-weight: 500;
  178. font-size: 0.9rem;
  179. transition: all 0.2s ease;
  180. border: none;
  181. cursor: pointer;
  182. white-space: nowrap;
  183. color: snow;
  184. }
  185. .btn-action:hover {
  186. transform: translateY(-2px);
  187. box-shadow: 0 4px 8px rgba(0,0,0,0.15);
  188. }
  189. .btn-action:active {
  190. transform: translateY(0);
  191. }
  192. .btn-action i {
  193. font-size: 1rem;
  194. }
  195. .btn-icon {
  196. display: inline-flex;
  197. align-items: center;
  198. justify-content: center;
  199. width: 36px;
  200. height: 36px;
  201. border-radius: 6px;
  202. border: none;
  203. cursor: pointer;
  204. transition: all 0.2s ease;
  205. font-size: 0.95rem;
  206. }
  207. .btn-icon:hover {
  208. transform: translateY(-2px);
  209. box-shadow: 0 4px 8px rgba(0,0,0,0.15);
  210. }
  211. .btn-icon:active {
  212. transform: translateY(0);
  213. }
  214. .btn-compact {
  215. display: flex;
  216. align-items: center;
  217. gap: 0.5rem;
  218. padding: 0.6rem 1.2rem;
  219. font-size: 0.95rem;
  220. max-width: 120px;
  221. }
  222. .btn-compact2 {
  223. width: 190px;
  224. }
  225. .btn-compact3 {
  226. width: 140px;
  227. }
  228. .btn-primary {
  229. background-color: var(--main-color);
  230. }
  231. .btn-primary:hover {
  232. background-color: var(--main-color-hover)
  233. }
  234. .btn-secondary {
  235. background-color: var(--gray-primary);
  236. }
  237. .btn-secondary:hover {
  238. background-color: var(--gray-hover);
  239. }
  240. .btn-tertiary {
  241. background-color: var(--third-color);
  242. color: ivory;
  243. }
  244. .btn-tertiary:hover {
  245. background-color: var(--third-color-hover);
  246. color: ivory;
  247. }
  248. .btn-warning {
  249. background-color: var(--yellow);
  250. color: #000;
  251. width:230px;
  252. font-weight: 500;
  253. }
  254. .btn-warning:hover {
  255. background-color: var(--yellow-hover);
  256. }
  257. .btn-view {
  258. background-color: var(--secondary-color);
  259. color: white;
  260. }
  261. .btn-view:hover {
  262. background-color: var(--secondary-color-hover);
  263. }
  264. .btn-edit {
  265. background-color: var(--yellow);
  266. color: #ffffff;
  267. }
  268. .btn-edit:hover {
  269. background-color: var(--yellow-hover);
  270. }
  271. .btn-delete {
  272. background-color: var(--contrast);
  273. color: white;
  274. }
  275. .btn-delete:hover {
  276. background-color: var(--contrast-hover);
  277. color: white;
  278. }
  279. .btn-danger {
  280. background-color: var(--contrast-soft);
  281. }
  282. .btn-danger:hover {
  283. background-color: var(--contrast-soft-hover);
  284. }
  285. .error-message {
  286. color: #dc3545;
  287. margin-top: 1rem;
  288. text-align: center;
  289. }
  290. .nocollapsible {
  291. cursor: auto;
  292. padding: 10px;
  293. background-color: #eaeaea;
  294. border: none;
  295. text-align: left;
  296. font-size: 14px;
  297. /*font-weight:bold;*/
  298. width: 100%;
  299. }
  300. .collapsible {
  301. cursor: pointer;
  302. padding: 10px;
  303. background-color: #eaeaea;
  304. border: none;
  305. text-align: left;
  306. font-size: 14px;
  307. font-weight: lighter;
  308. width: 100%;
  309. }
  310. .collapsible::before {
  311. content: "▶ ";
  312. }
  313. .collapsibleexpanded {
  314. cursor: pointer;
  315. padding: 10px;
  316. background-color: #eaeaea;
  317. border: none;
  318. text-align: left;
  319. font-size: 14px;
  320. font-weight: lighter;
  321. width: 100%;
  322. }
  323. .collapsibleexpanded::before {
  324. content: "▼ ";
  325. }
  326. .contentinfo {
  327. padding: 0px 0px;
  328. background-color: #f9f9f9;
  329. border-left: 3px solid #ccc;
  330. font-size: 11px;
  331. }
  332. .content {
  333. padding: 5px 5px;
  334. padding-top: 1.1rem;
  335. background-color: #f9f9f9;
  336. border-left: 3px solid #ccc;
  337. font-size: 14px;
  338. }
  339. .liste-utilisateurs {
  340. border: 1px solid #ccc;
  341. padding: 10px;
  342. }
  343. .item-utilisateur {
  344. padding: 5px;
  345. border-bottom: 1px solid #eee;
  346. }
  347. .filter-bool {
  348. min-width: 600px; /* ou plus selon besoin */
  349. }
  350. .modal-header-custom {
  351. display: grid;
  352. grid-template-columns: auto 1fr auto;
  353. align-items: center;
  354. gap: 10px;
  355. margin-bottom: 0.5rem;
  356. }
  357. .message-zone {
  358. text-align: center;
  359. }
  360. .display-message {
  361. font-weight: bold;
  362. white-space: nowrap;
  363. }
  364. .display-message-container {
  365. min-height: 40px; /* Pour éviter que les boutons ne masquent le texte */
  366. padding: 0 40px; /* Pour laisser de l'espace au texte entre les boutons */
  367. }
  368. .modal-custom-large {
  369. max-width: 100px;
  370. width: 100%;
  371. margin: auto;
  372. position: relative;
  373. top: 50%;
  374. transform: translateY(-50%);
  375. }
  376. body.modal-open {
  377. overflow: hidden;
  378. }
  379. .modal-backdrop {
  380. background-color: rgba(0, 0, 0, 0.5);
  381. }
  382. .modal-content {
  383. border-radius: 8px;
  384. border: none;
  385. box-shadow: 0 4px 12px rgba(0,0,0,0.15);
  386. overflow: hidden;
  387. }
  388. .modal-dialog {
  389. animation: modalSlideIn 0.3s ease-out;
  390. }
  391. .modal-content .btn-icon {
  392. width: 36px;
  393. height: 36px;
  394. color: white;
  395. }
  396. .modal-content .btn-icon:hover {
  397. background-color: #238a9f !important;
  398. }
  399. .modal-content .form-input:disabled,
  400. .modal-content .form-control:disabled {
  401. background-color: #f3f4f6;
  402. cursor: not-allowed;
  403. opacity: 0.7;
  404. }
  405. .access-section h6 {
  406. color: white;
  407. }
  408. .access-section summary {
  409. color: white;
  410. }
  411. .hover-cursor {
  412. cursor: pointer; /* s-resize; */ /* pointer;*/
  413. font-weight: bold;
  414. }
  415. .hover-cursor:hover {
  416. background-color: #f0f0f0;
  417. }
  418. table {
  419. font-size: 11px;
  420. }
  421. .table_standard {
  422. font-size: 12px;
  423. width: 100%; /* Le tableau occupe 100% de son conteneur */
  424. table-layout: fixed; /* Laisse le tableau adapter sa taille selon le contenu */
  425. word-wrap: break-word;
  426. }
  427. .table_standard th,
  428. .table_standard td {
  429. white-space: normal !important;
  430. overflow-wrap: break-word;
  431. }
  432. .table_collapse {
  433. font-size: 12px;
  434. width: 100%; /* Le tableau occupe 100% de son conteneur */
  435. table-layout: fixed; /* Force un layout fixe pour les colonnes */
  436. }
  437. /* Liste version "CARD" , partie Header */
  438. .card-custom-font-header {
  439. font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  440. font-size: 14px;
  441. }
  442. /* Liste version "CARD" , partie Body */
  443. .card-custom-font-body {
  444. font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  445. font-size: 10px;
  446. }
  447. /* Liste version "CARD" , partie Header + body (en cas de besoin) */
  448. .card-custom-font {
  449. font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  450. font-size: 10px;
  451. }
  452. .th_td_standard {
  453. word-wrap: normal; /* Le texte se coupe et passe à la ligne si nécessaire */
  454. white-space: nowrap; /* Empêche les retours à la ligne automatiques */
  455. overflow: visible; /* Le texte s'adapte à la largeur sans troncature */
  456. }
  457. .th_td_collapse {
  458. /*width: 20%; */ /* Chaque colonne prendra 20% de la largeur totale du tableau */
  459. word-wrap: break-word; /* Permet au texte de se couper et d'aller à la ligne */
  460. white-space: normal; /* Autorise les retours à la ligne naturels */
  461. text-align: left; /* Aligne le texte à gauche pour une meilleure lisibilité */
  462. padding: 10px; /* Ajoute un espace autour du texte */
  463. overflow: hidden; /* Évite les débordements */
  464. box-sizing: border-box; /* Inclut le padding dans la largeur */
  465. }
  466. .th_td_col-10 {
  467. width: 10%;
  468. }
  469. .th_td_col-20 {
  470. width: 20%;
  471. }
  472. .th_td_col-30 {
  473. width: 30%;
  474. }
  475. .th_td_col-40 {
  476. width: 40%;
  477. }
  478. .th_td_col-50 {
  479. width: 50%;
  480. }
  481. th:hover {
  482. color: #007bff;
  483. }
  484. @media (max-width: 768px) {
  485. .th, .td {
  486. font-size: 14px;
  487. }
  488. .btn {
  489. font-size: 12px;
  490. }
  491. .input {
  492. width: 100%;
  493. }
  494. }
  495. .same-width {
  496. width: 100px;
  497. }
  498. button.btn-sm i {
  499. font-size: 16px; /* Taille des icônes */
  500. }
  501. button.btn-sm {
  502. padding: 5px; /* Réduit la taille des boutons */
  503. }
  504. .button-container button {
  505. margin-right: 10px; /* Ajoute un espace à droite de chaque bouton */
  506. }
  507. .button-container button:last-child {
  508. margin-right: 0; /* Supprime l'espace pour le dernier bouton */
  509. }
  510. .custom-dropdown {
  511. background-color: #1b6ec2; /* Fond clair */
  512. border: 1px solid #ccc; /* Bordure grise */
  513. border-radius: 5px; /* Bordure arrondie */
  514. }
  515. .dropdown-item:hover {
  516. background-color: #007bff; /* Fond bleu */
  517. border-radius: 5px; /* Bordure arrondie au survol */
  518. }
  519. .valid.modified:not([type=checkbox]) {
  520. outline: 1px solid #26b050;
  521. }
  522. .invalid {
  523. outline: 1px solid red;
  524. }
  525. .validation-message {
  526. color: red;
  527. }
  528. #blazor-error-ui {
  529. background: lightyellow;
  530. bottom: 0;
  531. box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
  532. display: none;
  533. left: 0;
  534. padding: 0.6rem 1.25rem 0.7rem 1.25rem;
  535. position: fixed;
  536. width: 100%;
  537. z-index: 1000;
  538. }
  539. #blazor-error-ui .dismiss {
  540. cursor: pointer;
  541. position: absolute;
  542. right: 0.75rem;
  543. top: 0.5rem;
  544. }
  545. .blazor-error-boundary {
  546. background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
  547. padding: 1rem 1rem 1rem 3.7rem;
  548. color: white;
  549. }
  550. .blazor-error-boundary::after {
  551. content: "An error has occurred."
  552. }
  553. .loading-progress {
  554. position: relative;
  555. display: block;
  556. width: 8rem;
  557. height: 8rem;
  558. margin: 20vh auto 1rem auto;
  559. }
  560. .loading-progress circle {
  561. fill: none;
  562. stroke: #e0e0e0;
  563. stroke-width: 0.6rem;
  564. transform-origin: 50% 50%;
  565. transform: rotate(-90deg);
  566. }
  567. .loading-progress circle:last-child {
  568. stroke: #1b6ec2;
  569. stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%;
  570. transition: stroke-dasharray 0.05s ease-in-out;
  571. }
  572. .loading-progress-text {
  573. position: absolute;
  574. text-align: center;
  575. font-weight: bold;
  576. inset: calc(20vh + 3.25rem) 0 auto 0.2rem;
  577. }
  578. .loading-progress-text:after {
  579. content: var(--blazor-load-percentage-text, "Loading");
  580. }
  581. code {
  582. color: #c02d76;
  583. }
  584. /* Container principal */
  585. .home-container {
  586. margin: 0 auto;
  587. }
  588. /* En-tête */
  589. .home-header {
  590. background: linear-gradient(45deg, var(--secondary-color) 0%, var(--main-color) 70%);
  591. color: white;
  592. padding: 2rem;
  593. border-radius: 12px;
  594. margin-bottom: 2rem;
  595. box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  596. }
  597. .home-title {
  598. font-size: 2.5rem;
  599. font-weight: 700;
  600. margin: 0 0 0.5rem 0;
  601. }
  602. .home-version {
  603. font-size: 0.875rem;
  604. opacity: 0.9;
  605. margin: 0 0 1rem 0;
  606. }
  607. .home-welcome {
  608. font-size: 1.125rem;
  609. margin: 0;
  610. }
  611. .home-welcome strong {
  612. font-weight: 600;
  613. }
  614. /* Badges de rôle */
  615. .role-badges {
  616. display: flex;
  617. gap: 0.75rem;
  618. margin-top: 1rem;
  619. flex-wrap: wrap;
  620. }
  621. .role-badge {
  622. display: inline-flex;
  623. align-items: center;
  624. padding: 0.5rem 1rem;
  625. background-color: rgba(255, 255, 255, 0.2);
  626. border-radius: 20px;
  627. font-size: 0.875rem;
  628. font-weight: 500;
  629. backdrop-filter: blur(10px);
  630. }
  631. .role-badge::before {
  632. content: '✓';
  633. margin-right: 0.5rem;
  634. font-weight: bold;
  635. }
  636. /* Section des informations */
  637. .info-section {
  638. background: white;
  639. border-radius: 12px;
  640. padding: 1.5rem;
  641. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  642. margin-bottom: 2rem;
  643. }
  644. /* Accordéons personnalisés */
  645. .accordion-item {
  646. margin-bottom: 0.75rem;
  647. border-radius: 8px;
  648. overflow: hidden;
  649. box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  650. transition: box-shadow 0.2s ease;
  651. }
  652. .accordion-item:hover {
  653. box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
  654. }
  655. .accordion-button {
  656. width: 100%;
  657. padding: 1rem 1.25rem;
  658. background-color: var(--secondary-color);
  659. border: none;
  660. text-align: left;
  661. font-size: 1rem;
  662. font-weight: 500;
  663. cursor: pointer;
  664. display: flex;
  665. align-items: center;
  666. transition: all 0.2s ease;
  667. color: #333;
  668. }
  669. .accordion-button:hover {
  670. background-color: #e9ecef;
  671. }
  672. .accordion-button.expanded {
  673. background-color: #667eea;
  674. color: white;
  675. }
  676. /* Flèche Bootstrap - rotation */
  677. .accordion-button::after {
  678. transition: transform 0.3s ease-in-out;
  679. }
  680. .accordion-button.expanded::after {
  681. transform: rotate(0deg);
  682. background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffffff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
  683. }
  684. .accordion-static {
  685. padding: 1rem 1.25rem;
  686. background-color: var(--main-color);
  687. border-radius: 8px;
  688. }
  689. .accordion-static.bold {
  690. font-weight: 600;
  691. background-color: #e7f1ff;
  692. color: var(--third-color);
  693. }
  694. .accordion-content {
  695. background-color: #ffffff;
  696. border-left: 3px solid #667eea;
  697. padding: 0.75rem 1.25rem;
  698. }
  699. .accordion-content ul {
  700. margin: 0;
  701. padding-left: 1.5rem;
  702. }
  703. .accordion-content li {
  704. padding: 0.375rem 0;
  705. line-height: 1.5;
  706. color: #555;
  707. }
  708. .accordion-content li::marker {
  709. color: #667eea;
  710. }
  711. /* Responsive */
  712. @media (max-width: 768px) {
  713. .home-container {
  714. }
  715. .home-header {
  716. padding: 1.5rem;
  717. }
  718. .home-title {
  719. font-size: 1.75rem;
  720. }
  721. .accordion-button,
  722. .accordion-static {
  723. padding: 0.875rem 1rem;
  724. font-size: 0.9375rem;
  725. }
  726. .role-badges {
  727. flex-direction: column;
  728. }
  729. .role-badge {
  730. width: 100%;
  731. justify-content: center;
  732. }
  733. }
  734. /* Animation d'entrée */
  735. @keyframes fadeInUp {
  736. from {
  737. opacity: 0;
  738. transform: translateY(20px);
  739. }
  740. to {
  741. opacity: 1;
  742. transform: translateY(0);
  743. }
  744. }
  745. .accordion-item {
  746. animation: fadeInUp 0.3s ease forwards;
  747. }
  748. .accordion-item:nth-child(1) {
  749. animation-delay: 0.05s;
  750. }
  751. .accordion-item:nth-child(2) {
  752. animation-delay: 0.1s;
  753. }
  754. .accordion-item:nth-child(3) {
  755. animation-delay: 0.15s;
  756. }
  757. .accordion-item:nth-child(4) {
  758. animation-delay: 0.2s;
  759. }
  760. .accordion-item:nth-child(5) {
  761. animation-delay: 0.25s;
  762. }
  763. .button-container {
  764. display: flex;
  765. }
  766. /* NavMenu.razor.css */
  767. .nav-menu {
  768. padding: 1rem;
  769. height: 100%;
  770. }
  771. /* Éléments de navigation */
  772. .nav-item {
  773. margin-bottom: 0.5rem;
  774. }
  775. .nav-link2 {
  776. display: flex;
  777. align-items: center;
  778. padding: 0.75rem 1rem;
  779. color: white !important;
  780. text-decoration: none;
  781. border-radius: 8px;
  782. transition: all 0.2s ease;
  783. font-weight: 500;
  784. }
  785. .nav-link2:hover {
  786. background-color: rgba(255, 255, 255, 0.1);
  787. color: white !important;
  788. }
  789. .nav-link2.active {
  790. background-color: rgba(255, 255, 255, 0.2);
  791. color: white !important;
  792. font-weight: 600;
  793. }
  794. .nav-icon {
  795. margin-right: 0.75rem;
  796. font-size: 1.1rem;
  797. }
  798. /* Sections avec détails */
  799. .nav-section {
  800. margin-bottom: 0.5rem;
  801. }
  802. .nav-section details {
  803. border-radius: 8px;
  804. }
  805. .nav-section details[open] {
  806. background-color: rgba(0, 0, 0, 0.1);
  807. }
  808. .nav-section-header {
  809. display: flex;
  810. align-items: center;
  811. padding: 0.75rem 1rem;
  812. color: white;
  813. cursor: pointer;
  814. user-select: none;
  815. border-radius: 8px;
  816. transition: all 0.2s ease;
  817. font-weight: 500;
  818. }
  819. .nav-section-header::after {
  820. content: '▶';
  821. position: absolute;
  822. right: 1rem;
  823. font-size: 0.7rem;
  824. transition: transform 0.2s ease;
  825. opacity: 0.7;
  826. }
  827. details[open] .nav-section-header::after {
  828. transform: rotate(90deg);
  829. }
  830. .nav-section-header:hover {
  831. background-color: rgba(255, 255, 255, 0.1);
  832. color: white;
  833. }
  834. .nav-section-content {
  835. padding: 0.5rem 0;
  836. }
  837. /* Sous-liens - couleur ivoire */
  838. .sub-link {
  839. padding-left: 3rem;
  840. font-size: 0.9rem;
  841. color: ivory !important;
  842. font-weight: 400;
  843. }
  844. .sub-link:hover {
  845. background-color: rgba(255, 255, 255, 0.08);
  846. color: white !important;
  847. }
  848. .sub-link.active {
  849. background-color: rgba(255, 255, 255, 0.15);
  850. color: white !important;
  851. }
  852. /* Remove default details marker */
  853. details summary::-webkit-details-marker {
  854. display: none;
  855. }
  856. details summary::marker {
  857. display: none;
  858. }
  859. /* Animation pour l'ouverture/fermeture */
  860. details[open] .nav-section-content {
  861. animation: slideDown 0.2s ease-out;
  862. }
  863. @keyframes slideDown {
  864. from {
  865. opacity: 0;
  866. transform: translateY(-10px);
  867. }
  868. to {
  869. opacity: 1;
  870. transform: translateY(0);
  871. }
  872. }
  873. .total-badge {
  874. background-color: #17a2b8;
  875. color: white;
  876. padding: 0.4rem 0.9rem;
  877. border-radius: 20px;
  878. font-size: 0.875rem;
  879. font-weight: 500;
  880. }
  881. .button-container {
  882. display: flex;
  883. gap: 0.75rem;
  884. flex-wrap: wrap;
  885. }
  886. .vision-options {
  887. display: flex;
  888. gap: 2rem;
  889. margin-bottom: 1.5rem;
  890. padding: 1rem;
  891. background-color: white;
  892. border-radius: 8px;
  893. box-shadow: 0 2px 4px rgba(0,0,0,0.08);
  894. }
  895. .vision-checkbox {
  896. display: flex;
  897. align-items: center;
  898. gap: 0.6rem;
  899. cursor: pointer;
  900. font-weight: 500;
  901. color: #2c3e50;
  902. user-select: none;
  903. }
  904. .vision-checkbox input[type="checkbox"] {
  905. width: 20px;
  906. height: 20px;
  907. cursor: pointer;
  908. accent-color: #17a2b8;
  909. }
  910. .vision-checkbox:hover {
  911. color: #17a2b8;
  912. }
  913. .table-container {
  914. background-color: white;
  915. border-radius: 8px;
  916. overflow: hidden;
  917. box-shadow: 0 2px 4px rgba(0,0,0,0.08);
  918. width: 100%;
  919. }
  920. .table-responsive {
  921. overflow-x: auto !important;
  922. overflow-y: visible;
  923. -webkit-overflow-scrolling: touch;
  924. }
  925. /* Scrollbar personnalisée pour le tableau */
  926. .table-responsive::-webkit-scrollbar {
  927. height: 8px;
  928. }
  929. .table-responsive::-webkit-scrollbar-track {
  930. background: #f1f1f1;
  931. border-radius: 4px;
  932. }
  933. .table-responsive::-webkit-scrollbar-thumb {
  934. background: #888;
  935. border-radius: 4px;
  936. }
  937. .table-responsive::-webkit-scrollbar-thumb:hover {
  938. background: #555;
  939. }
  940. .table-modern {
  941. width: 100%;
  942. margin-bottom: 0;
  943. border-collapse: collapse;
  944. min-width: 1100px
  945. }
  946. .table-modern thead {
  947. background-color: #2c3e50;
  948. }
  949. .table-modern thead th {
  950. color: white;
  951. font-weight: 600;
  952. border: none;
  953. vertical-align: middle;
  954. white-space: nowrap;
  955. background-color: #2c3e50;
  956. }
  957. /* Ligne de filtres */
  958. .table-modern .filter-row th {
  959. padding: 0.6rem;
  960. background-color: #2c3e50;
  961. }
  962. /* Ligne d'en-têtes */
  963. .table-modern .header-row th {
  964. padding: 0.9rem 0.70rem;
  965. background-color: #2c3e50;
  966. }
  967. /* Colonnes triables */
  968. .table-modern .sortable {
  969. cursor: pointer;
  970. user-select: none;
  971. transition: background-color 0.2s ease;
  972. }
  973. .table-modern .sortable:hover {
  974. background-color: #34495e;
  975. }
  976. .table-modern .sortable span {
  977. display: inline-block;
  978. }
  979. .table-modern .sort-icon {
  980. margin-left: 0.4rem;
  981. opacity: 0.7;
  982. font-size: 0.85rem;
  983. }
  984. .col-workforce {
  985. width: 15%;
  986. min-width: 70px;
  987. }
  988. .col-type {
  989. width: 12%;
  990. min-width: 100px;
  991. }
  992. .col-status {
  993. width: 10%;
  994. min-width: 90px;
  995. }
  996. .col-date {
  997. width: 10%;
  998. min-width: 100px;
  999. text-align: center;
  1000. }
  1001. .col-boolean {
  1002. width: 7%;
  1003. min-width: 80px;
  1004. text-align: center;
  1005. }
  1006. .col-actions {
  1007. width: 10%;
  1008. min-width: 110px;
  1009. text-align: center;
  1010. }
  1011. .col-libelle {
  1012. width: 15%;
  1013. min-width: 130px;
  1014. }
  1015. .col-number {
  1016. width: 8%;
  1017. min-width: 70px;
  1018. text-align: center;
  1019. }
  1020. .col-actions-wide {
  1021. width: 12%;
  1022. min-width: 140px;
  1023. text-align: center;
  1024. }
  1025. .col-comment {
  1026. width: 20%;
  1027. min-width: 180px;
  1028. max-width: 400px;
  1029. }
  1030. .col-trigramme {
  1031. min-width: 100px;
  1032. }
  1033. .col-email {
  1034. min-width: 200px;
  1035. }
  1036. .col-libelle-wide {
  1037. min-width: 250px;
  1038. max-width: 400px;
  1039. }
  1040. .table-modern .form-control-sm,
  1041. .table-modern .form-select-sm {
  1042. font-size: 0.85rem;
  1043. padding: 0.4rem 0.6rem;
  1044. border-radius: 4px;
  1045. border: 1px solid rgba(255,255,255,0.3);
  1046. background-color: rgba(255,255,255,0.95);
  1047. transition: all 0.2s ease;
  1048. width: 100%;
  1049. }
  1050. .table-modern .form-control-sm:focus,
  1051. .table-modern .form-select-sm:focus {
  1052. border-color: #17a2b8;
  1053. box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.25);
  1054. outline: none;
  1055. background-color: white;
  1056. }
  1057. .table-modern .form-select-sm {
  1058. cursor: pointer;
  1059. padding-right: 2rem;
  1060. }
  1061. .table-modern tbody tr {
  1062. transition: background-color 0.15s ease;
  1063. border-bottom: 1px solid #e9ecef;
  1064. }
  1065. .table-modern tbody tr:hover {
  1066. background-color: #f8f9fa;
  1067. }
  1068. .table-modern tbody tr:nth-child(even) {
  1069. background-color: #fafbfc;
  1070. }
  1071. .table-modern tbody tr:nth-child(even):hover {
  1072. background-color: #f0f2f5;
  1073. }
  1074. .table-modern tbody td {
  1075. padding: 0.45rem 0.35rem;
  1076. vertical-align: middle;
  1077. color: #495057;
  1078. }
  1079. .badge {
  1080. display: inline-block;
  1081. padding: 0.35rem 0.75rem;
  1082. border-radius: 12px;
  1083. font-size: 0.8rem;
  1084. font-weight: 600;
  1085. letter-spacing: 0.3px;
  1086. }
  1087. .badge-active {
  1088. background-color: #d4edda;
  1089. color: #155724;
  1090. }
  1091. .badge-inactive {
  1092. background-color: #f8d7da;
  1093. color: #721c24;
  1094. }
  1095. .action-buttons {
  1096. display: flex;
  1097. gap: 0.5rem;
  1098. justify-content: center;
  1099. align-items: center;
  1100. }
  1101. .loading-alert {
  1102. display: flex;
  1103. align-items: center;
  1104. justify-content: center;
  1105. gap: 1rem;
  1106. padding: 2rem;
  1107. background-color: white;
  1108. border-radius: 8px;
  1109. box-shadow: 0 2px 4px rgba(0,0,0,0.08);
  1110. color: #17a2b8;
  1111. font-weight: 500;
  1112. font-size: 1.1rem;
  1113. }
  1114. .loading-alert i {
  1115. font-size: 1.5rem;
  1116. animation: spin 2s linear infinite;
  1117. }
  1118. @keyframes spin {
  1119. 0% {
  1120. transform: rotate(0deg);
  1121. }
  1122. 100% {
  1123. transform: rotate(360deg);
  1124. }
  1125. }
  1126. @media (max-width: 1200px) {
  1127. .col-workforce,
  1128. .col-workforce {
  1129. width: 12%;
  1130. }
  1131. }
  1132. @media (max-width: 992px) {
  1133. .page-header {
  1134. flex-direction: column;
  1135. gap: 1rem;
  1136. align-items: flex-start;
  1137. }
  1138. .button-container {
  1139. width: 100%;
  1140. justify-content: flex-start;
  1141. }
  1142. }
  1143. @media (max-width: 768px) {
  1144. .page-container {
  1145. padding: 1rem;
  1146. }
  1147. .page-title {
  1148. font-size: 1.25rem;
  1149. }
  1150. .total-badge {
  1151. font-size: 0.8rem;
  1152. padding: 0.3rem 0.7rem;
  1153. }
  1154. .button-container {
  1155. flex-direction: column;
  1156. width: 100%;
  1157. }
  1158. .btn-action {
  1159. width: 100%;
  1160. justify-content: center;
  1161. }
  1162. .vision-options {
  1163. flex-direction: column;
  1164. gap: 1rem;
  1165. }
  1166. .table-modern {
  1167. font-size: 0.85rem;
  1168. }
  1169. .table-modern tbody td {
  1170. padding: 0.6rem 0.5rem;
  1171. }
  1172. .btn-icon {
  1173. width: 32px;
  1174. height: 32px;
  1175. font-size: 0.85rem;
  1176. }
  1177. }
  1178. .home-container {
  1179. display: flex;
  1180. flex-direction: column;
  1181. height: 100%;
  1182. overflow: hidden;
  1183. }
  1184. .home-content {
  1185. flex: 1;
  1186. display: flex;
  1187. flex-direction: column;
  1188. align-items: center;
  1189. overflow-y: auto;
  1190. max-width: 1400px;
  1191. margin: 0 auto;
  1192. width: 100%;
  1193. padding: 0.5rem;
  1194. }
  1195. .welcome-section {
  1196. text-align: center;
  1197. margin-bottom: 1rem;
  1198. }
  1199. .welcome-title {
  1200. font-size: 3rem;
  1201. font-weight: 600;
  1202. color: var(--text-dark);
  1203. margin-bottom: 0.5rem;
  1204. }
  1205. .welcome-subtitle {
  1206. font-size: 1.5rem;
  1207. color: var(--text-light);
  1208. font-weight: 400;
  1209. margin: 0;
  1210. }
  1211. .input-container {
  1212. width: 100%;
  1213. padding: 16px 24px;
  1214. background: transparent;
  1215. display: flex;
  1216. flex-direction: column;
  1217. justify-content: center;
  1218. position: relative;
  1219. }
  1220. .input-files {
  1221. display: flex;
  1222. flex-wrap: wrap;
  1223. gap: 8px;
  1224. padding: 12px 16px;
  1225. max-width: 1000px;
  1226. margin: 0 auto;
  1227. width: 100%;
  1228. }
  1229. .file-item {
  1230. display: flex;
  1231. align-items: center;
  1232. gap: 8px;
  1233. padding: 8px 12px;
  1234. background: #ffffff;
  1235. border: 1px solid var(--border);
  1236. border-radius: 8px;
  1237. max-width: 32%;
  1238. transition: all 0.2s ease;
  1239. }
  1240. .file-item:hover {
  1241. border-color: #d1d5db;
  1242. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
  1243. }
  1244. .file-info {
  1245. flex: 1;
  1246. min-width: 0;
  1247. display: flex;
  1248. flex-direction: column;
  1249. gap: 2px;
  1250. }
  1251. .file-name {
  1252. font-size: 13px;
  1253. font-weight: 500;
  1254. color: #374151;
  1255. white-space: nowrap;
  1256. overflow: hidden;
  1257. text-overflow: ellipsis;
  1258. }
  1259. .remove-file-button {
  1260. flex-shrink: 0;
  1261. width: 24px;
  1262. height: 24px;
  1263. display: flex;
  1264. align-items: center;
  1265. justify-content: center;
  1266. background: transparent;
  1267. border: none;
  1268. border-radius: 4px;
  1269. color: #9ca3af;
  1270. cursor: pointer;
  1271. transition: all 0.2s ease;
  1272. }
  1273. .remove-file-button:hover {
  1274. background: #ffffff;
  1275. color: #ef4444;
  1276. }
  1277. .input-wrapper {
  1278. width: 100%;
  1279. max-width: 1000px;
  1280. margin: 0 auto;
  1281. background: #ffffff;
  1282. border: 1px solid var(--border);
  1283. border-radius: 16px;
  1284. padding: 16px 20px;
  1285. display: flex;
  1286. flex-direction: column;
  1287. gap: 12px;
  1288. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
  1289. transition: all 0.2s ease;
  1290. }
  1291. .input-wrapper.has-files {
  1292. border-radius: 0 0 16px 16px;
  1293. border-top: none;
  1294. padding-top: 12px;
  1295. }
  1296. .input-wrapper:focus-within {
  1297. border-color: var(--secondary);
  1298. box-shadow: 0 4px 12px rgba(41, 132, 161, 0.12);
  1299. }
  1300. .input-wrapper textarea {
  1301. width: 100%;
  1302. border: none;
  1303. outline: none;
  1304. resize: none;
  1305. font-size: 15px;
  1306. font-family: inherit;
  1307. color: var(--text-dark);
  1308. background: transparent;
  1309. min-height: 24px;
  1310. max-height: 200px;
  1311. line-height: 1.5;
  1312. padding: 0;
  1313. }
  1314. .input-wrapper textarea::placeholder {
  1315. color: #9ca3af;
  1316. }
  1317. .input-wrapper textarea:disabled {
  1318. opacity: 0.6;
  1319. cursor: not-allowed;
  1320. }
  1321. .input-actions {
  1322. display: flex;
  1323. justify-content: space-between;
  1324. align-items: center;
  1325. padding-top: 4px;
  1326. }
  1327. .attach-button {
  1328. display: flex;
  1329. align-items: center;
  1330. gap: 8px;
  1331. padding: 0;
  1332. background: transparent;
  1333. border: none;
  1334. color: #6b7280;
  1335. cursor: pointer;
  1336. font-size: 13px;
  1337. font-weight: 500;
  1338. transition: color 0.2s ease;
  1339. }
  1340. .attach-button:hover {
  1341. color: var(--secondary);
  1342. }
  1343. .attach-button span {
  1344. display: none;
  1345. }
  1346. @media (min-width: 640px) {
  1347. .attach-button span {
  1348. display: inline;
  1349. }
  1350. }
  1351. .input-right-actions {
  1352. display: flex;
  1353. align-items: center;
  1354. gap: 8px;
  1355. }
  1356. .history-button {
  1357. display: flex;
  1358. align-items: center;
  1359. justify-content: center;
  1360. width: 36px;
  1361. height: 36px;
  1362. background: transparent;
  1363. border: none;
  1364. color: #6b7280;
  1365. cursor: pointer;
  1366. border-radius: 8px;
  1367. transition: all 0.2s ease;
  1368. }
  1369. .history-button:hover {
  1370. background: #f3f4f6;
  1371. color: var(--text-dark);
  1372. }
  1373. .active {
  1374. transform:scale(1.05);
  1375. background-color:var(--main-color);
  1376. color:white;
  1377. }
  1378. .desactive {
  1379. transform: scale(0.95);
  1380. }
  1381. .voice-button {
  1382. display: flex;
  1383. align-items: center;
  1384. justify-content: center;
  1385. width: 36px;
  1386. height: 36px;
  1387. background: transparent;
  1388. border: none;
  1389. color: #6b7280;
  1390. cursor: pointer;
  1391. border-radius: 8px;
  1392. transition: all 0.2s ease;
  1393. }
  1394. .voice-button:hover {
  1395. background: #f3f4f6;
  1396. color: var(--text-dark);
  1397. }
  1398. .send-button {
  1399. display: flex;
  1400. align-items: center;
  1401. justify-content: center;
  1402. width: 36px;
  1403. height: 36px;
  1404. background: var( --contrast);
  1405. border: none;
  1406. color: #ffffff;
  1407. cursor: pointer;
  1408. border-radius: 8px;
  1409. transition: all 0.2s ease;
  1410. }
  1411. .send-button:hover:not(:disabled) {
  1412. transform: scale(1.05);
  1413. box-shadow: 0 4px 12px rgba(246, 62, 99, 0.3);
  1414. }
  1415. .send-button:active:not(:disabled) {
  1416. transform: scale(0.98);
  1417. }
  1418. .send-button:disabled {
  1419. background: #e5e7eb;
  1420. cursor: not-allowed;
  1421. opacity: 0.6;
  1422. }
  1423. .send-button:disabled svg {
  1424. color: #9ca3af;
  1425. }
  1426. .agents-grid {
  1427. display: grid;
  1428. grid-template-columns: repeat(auto-fit, minmax(480px, 1fr));
  1429. gap: 1.5rem;
  1430. width: 100%;
  1431. max-width: 1200px;
  1432. }
  1433. .agent-card {
  1434. display: flex;
  1435. flex-direction: row;
  1436. gap: 16px;
  1437. padding: 20px 20px 30px 20px;
  1438. background: #ffffff;
  1439. border: 1px solid var(--border);
  1440. border-radius: 12px;
  1441. cursor: pointer;
  1442. transition: all 0.2s ease;
  1443. min-height: 100px;
  1444. align-items: flex-start;
  1445. }
  1446. .agent-card:hover {
  1447. border-color: var(--secondary);
  1448. box-shadow: 0 4px 12px rgba(41, 132, 161, 0.1);
  1449. transform: translateY(-2px);
  1450. }
  1451. .agent-card:hover .agent-icon {
  1452. background-color: #ecf9ff;
  1453. transform: scale(1.05);
  1454. }
  1455. .agent-card:active {
  1456. transform: translateY(0);
  1457. }
  1458. .agent-icon {
  1459. flex-shrink: 0;
  1460. width: 48px;
  1461. height: 48px;
  1462. border-radius: 10px;
  1463. background-color: #ecf9ff;
  1464. display: flex;
  1465. align-items: center;
  1466. justify-content: center;
  1467. transition: all 0.2s ease;
  1468. color: var( --third-color);
  1469. }
  1470. .agent-content {
  1471. flex: 1;
  1472. display: flex;
  1473. flex-direction: column;
  1474. gap: 8px;
  1475. min-width: 0;
  1476. }
  1477. .agent-name {
  1478. margin: 0;
  1479. font-size: 16px;
  1480. font-weight: 600;
  1481. color: #1f2937;
  1482. line-height: 1.4;
  1483. }
  1484. .agent-description {
  1485. margin: 0;
  1486. font-size: 14px;
  1487. font-weight: 400;
  1488. color: #6b7280;
  1489. line-height: 1.5;
  1490. display: -webkit-box;
  1491. -webkit-line-clamp: 2;
  1492. -webkit-box-orient: vertical;
  1493. overflow: hidden;
  1494. }
  1495. .home-content::-webkit-scrollbar {
  1496. width: 8px;
  1497. }
  1498. .home-content::-webkit-scrollbar-track {
  1499. background: transparent;
  1500. }
  1501. .home-content::-webkit-scrollbar-thumb {
  1502. background: var(--secondary);
  1503. border-radius: 4px;
  1504. }
  1505. .home-content::-webkit-scrollbar-thumb:hover {
  1506. background: var( --third-color);
  1507. }
  1508. @media (max-width: 768px) {
  1509. .welcome-title {
  1510. font-size: 2rem;
  1511. }
  1512. .welcome-subtitle {
  1513. font-size: 1.2rem;
  1514. }
  1515. .agents-grid {
  1516. grid-template-columns: 1fr;
  1517. }
  1518. .home-content {
  1519. padding: 1rem;
  1520. }
  1521. .input-container {
  1522. padding: 12px 16px;
  1523. }
  1524. .input-files {
  1525. padding: 10px 12px;
  1526. gap: 6px;
  1527. }
  1528. .file-item {
  1529. padding: 6px 10px;
  1530. max-width: 200px;
  1531. }
  1532. .input-wrapper {
  1533. padding: 12px 16px;
  1534. border-radius: 14px;
  1535. }
  1536. .input-wrapper.has-files {
  1537. border-radius: 0 0 14px 14px;
  1538. }
  1539. .input-wrapper textarea {
  1540. font-size: 14px;
  1541. }
  1542. .input-right-actions .voice-button,
  1543. .input-right-actions .send-button {
  1544. width: 32px;
  1545. height: 32px;
  1546. }
  1547. .agent-card {
  1548. padding: 16px;
  1549. }
  1550. .agent-icon {
  1551. width: 40px;
  1552. height: 40px;
  1553. }
  1554. .agent-name {
  1555. font-size: 15px;
  1556. }
  1557. .agent-description {
  1558. font-size: 13px;
  1559. }
  1560. }
  1561. @media (max-width: 480px) {
  1562. .welcome-title {
  1563. font-size: 1.75rem;
  1564. }
  1565. .welcome-subtitle {
  1566. font-size: 1rem;
  1567. }
  1568. .input-container {
  1569. padding: 1rem;
  1570. }
  1571. }
  1572. @keyframes fileSlideIn {
  1573. from {
  1574. opacity: 0;
  1575. transform: translateY(-10px);
  1576. }
  1577. to {
  1578. opacity: 1;
  1579. transform: translateY(0);
  1580. }
  1581. }
  1582. .file-item {
  1583. animation: fileSlideIn 0.3s ease;
  1584. }
  1585. .chatroom-container {
  1586. display: flex;
  1587. flex-direction: column;
  1588. height: 100%;
  1589. }
  1590. .chatroom-messages {
  1591. flex: 1;
  1592. overflow-y: auto;
  1593. padding: 2rem;
  1594. display: flex;
  1595. flex-direction: column;
  1596. gap: 1.5rem;
  1597. }
  1598. .chatroom-messages::-webkit-scrollbar {
  1599. width: 8px;
  1600. }
  1601. .chatroom-messages::-webkit-scrollbar-track {
  1602. background: transparent;
  1603. }
  1604. .chatroom-messages::-webkit-scrollbar-thumb {
  1605. background: var(--secondary);
  1606. border-radius: 4px;
  1607. }
  1608. .chatroom-messages::-webkit-scrollbar-thumb:hover {
  1609. background: var( --third-color);
  1610. }
  1611. .chatroom-empty {
  1612. display: flex;
  1613. flex-direction: column;
  1614. align-items: center;
  1615. justify-content: center;
  1616. height: 100%;
  1617. color: var(--text-light);
  1618. text-align: center;
  1619. }
  1620. .empty-icon {
  1621. font-size: 4rem;
  1622. color: var(--secondary);
  1623. margin-bottom: 1rem;
  1624. opacity: 0.5;
  1625. }
  1626. .chatroom-empty h3 {
  1627. font-size: 1.5rem;
  1628. color: var(--text-dark);
  1629. margin-bottom: 0.5rem;
  1630. }
  1631. .chatroom-empty p {
  1632. font-size: 1rem;
  1633. margin: 0;
  1634. }
  1635. /* Messages */
  1636. .message-row {
  1637. display: flex;
  1638. align-items: flex-start;
  1639. gap: 0.75rem;
  1640. animation: fadeIn 0.3s ease;
  1641. }
  1642. @keyframes fadeIn {
  1643. from {
  1644. opacity: 0;
  1645. transform: translateY(10px);
  1646. }
  1647. to {
  1648. opacity: 1;
  1649. transform: translateY(0);
  1650. }
  1651. }
  1652. .message-row.user {
  1653. flex-direction: row-reverse;
  1654. justify-content: flex-start;
  1655. }
  1656. .message-row.assistant {
  1657. flex-direction: row;
  1658. justify-content: flex-start;
  1659. }
  1660. .avatar {
  1661. width: 40px;
  1662. height: 40px;
  1663. border-radius: 50%;
  1664. display: flex;
  1665. align-items: center;
  1666. justify-content: center;
  1667. flex-shrink: 0;
  1668. }
  1669. .avatar-user {
  1670. background: linear-gradient(135deg, var(--secondary) 0%, var( --third-color) 100%);
  1671. color: white;
  1672. }
  1673. .avatar-assistant {
  1674. background: linear-gradient(135deg, var( --contrast) 0%, #e02851 100%);
  1675. color: white;
  1676. }
  1677. .message-content-wrapper {
  1678. display: flex;
  1679. flex-direction: column;
  1680. max-width: 70%;
  1681. gap: 0.5rem;
  1682. }
  1683. .message-row.user .message-content-wrapper {
  1684. align-items: flex-end;
  1685. }
  1686. .message-row.assistant .message-content-wrapper {
  1687. align-items: flex-start;
  1688. }
  1689. .bubble {
  1690. padding: 1rem 1.25rem;
  1691. border-radius: 16px;
  1692. font-size: 1rem;
  1693. line-height: 1.6;
  1694. word-wrap: break-word;
  1695. white-space: pre-wrap;
  1696. }
  1697. .bubble-user {
  1698. background: linear-gradient(135deg, var(--secondary) 0%, var( --third-color) 100%);
  1699. color: white;
  1700. border-bottom-right-radius: 4px;
  1701. }
  1702. .bubble-assistant {
  1703. background: white;
  1704. color: var(--text-dark);
  1705. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1706. border-bottom-left-radius: 4px;
  1707. }
  1708. .message-actions {
  1709. display: flex;
  1710. gap: 0.5rem;
  1711. }
  1712. .btn-message-action {
  1713. width: 32px;
  1714. height: 32px;
  1715. border-radius: 6px;
  1716. border: none;
  1717. background: transparent;
  1718. color: var(--text-light);
  1719. cursor: pointer;
  1720. display: flex;
  1721. align-items: center;
  1722. justify-content: center;
  1723. transition: all 0.2s ease;
  1724. }
  1725. .btn-message-action:hover {
  1726. background: var(--bg-light);
  1727. color: var( --third-color);
  1728. }
  1729. .typing-indicator {
  1730. display: flex;
  1731. gap: 0.4rem;
  1732. padding: 0.5rem 0;
  1733. }
  1734. .typing-indicator span {
  1735. width: 8px;
  1736. height: 8px;
  1737. border-radius: 50%;
  1738. background-color: var(--secondary);
  1739. animation: typing 1.4s infinite;
  1740. }
  1741. .typing-indicator span:nth-child(2) {
  1742. animation-delay: 0.2s;
  1743. }
  1744. .typing-indicator span:nth-child(3) {
  1745. animation-delay: 0.4s;
  1746. }
  1747. @keyframes typing {
  1748. 0%, 60%, 100% {
  1749. transform: translateY(0);
  1750. opacity: 0.7;
  1751. }
  1752. 30% {
  1753. transform: translateY(-10px);
  1754. opacity: 1;
  1755. }
  1756. }
  1757. .chat-input-container {
  1758. width: 100%;
  1759. padding: 16px 24px;
  1760. background: transparent;
  1761. display: flex;
  1762. flex-direction: column;
  1763. justify-content: center;
  1764. position: fixed;
  1765. }
  1766. /* Fichiers attachés */
  1767. .attached-files {
  1768. display: flex;
  1769. flex-wrap: wrap;
  1770. gap: 8px;
  1771. padding: 12px 16px;
  1772. max-width: 1000px;
  1773. margin: 0 auto;
  1774. width: 100%;
  1775. }
  1776. .file-item {
  1777. display: flex;
  1778. align-items: center;
  1779. gap: 8px;
  1780. padding: 8px 12px;
  1781. background: #ffffff;
  1782. border: 1px solid var(--border);
  1783. border-radius: 8px;
  1784. max-width: 32%;
  1785. transition: all 0.2s ease;
  1786. animation: fileSlideIn 0.3s ease;
  1787. }
  1788. .file-item:hover {
  1789. border-color: #d1d5db;
  1790. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
  1791. }
  1792. .file-preview {
  1793. flex-shrink: 0;
  1794. width: 40px;
  1795. height: 40px;
  1796. border-radius: 6px;
  1797. overflow: hidden;
  1798. background: #ffffff;
  1799. display: flex;
  1800. align-items: center;
  1801. justify-content: center;
  1802. border: 1px solid var(--border);
  1803. }
  1804. .file-icon {
  1805. font-size: 20px;
  1806. color: var(--secondary);
  1807. }
  1808. .file-info {
  1809. flex: 1;
  1810. min-width: 0;
  1811. display: flex;
  1812. flex-direction: column;
  1813. gap: 2px;
  1814. }
  1815. .file-name {
  1816. font-size: 13px;
  1817. font-weight: 500;
  1818. color: #374151;
  1819. white-space: nowrap;
  1820. overflow: hidden;
  1821. text-overflow: ellipsis;
  1822. }
  1823. .file-size {
  1824. font-size: 11px;
  1825. color: #9ca3af;
  1826. }
  1827. .remove-file-button {
  1828. flex-shrink: 0;
  1829. width: 24px;
  1830. height: 24px;
  1831. display: flex;
  1832. align-items: center;
  1833. justify-content: center;
  1834. background: transparent;
  1835. border: none;
  1836. border-radius: 4px;
  1837. color: #9ca3af;
  1838. cursor: pointer;
  1839. transition: all 0.2s ease;
  1840. }
  1841. .remove-file-button:hover {
  1842. background: #fee2e2;
  1843. color: #ef4444;
  1844. }
  1845. @keyframes fileSlideIn {
  1846. from {
  1847. opacity: 0;
  1848. transform: translateY(-10px);
  1849. }
  1850. to {
  1851. opacity: 1;
  1852. transform: translateY(0);
  1853. }
  1854. }
  1855. /* Input wrapper */
  1856. .input-wrapper {
  1857. width: 100%;
  1858. max-width: 1000px;
  1859. margin: 0 auto;
  1860. background: #ffffff;
  1861. border: 1px solid var(--border);
  1862. border-radius: 16px;
  1863. padding: 16px 20px;
  1864. display: flex;
  1865. flex-direction: column;
  1866. gap: 12px;
  1867. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
  1868. transition: all 0.2s ease;
  1869. }
  1870. .input-wrapper.has-files {
  1871. border-radius: 0 0 16px 16px;
  1872. border-top: none;
  1873. padding-top: 12px;
  1874. }
  1875. .input-wrapper:focus-within {
  1876. border-color: var(--secondary);
  1877. box-shadow: 0 4px 12px rgba(41, 132, 161, 0.12);
  1878. }
  1879. .input-wrapper textarea {
  1880. width: 100%;
  1881. border: none;
  1882. outline: none;
  1883. resize: none;
  1884. font-size: 15px;
  1885. font-family: inherit;
  1886. color: #1f2937;
  1887. background: transparent;
  1888. min-height: 24px;
  1889. max-height: 200px;
  1890. line-height: 1.5;
  1891. padding: 0;
  1892. }
  1893. .input-wrapper textarea::placeholder {
  1894. color: #9ca3af;
  1895. }
  1896. .input-wrapper textarea:disabled {
  1897. opacity: 0.6;
  1898. cursor: not-allowed;
  1899. }
  1900. /* Actions row */
  1901. .actions-row {
  1902. display: flex;
  1903. justify-content: space-between;
  1904. align-items: center;
  1905. padding-top: 4px;
  1906. }
  1907. .attach-button {
  1908. display: flex;
  1909. align-items: center;
  1910. gap: 8px;
  1911. padding: 0;
  1912. background: transparent;
  1913. border: none;
  1914. color: #6b7280;
  1915. cursor: pointer;
  1916. font-size: 13px;
  1917. font-weight: 500;
  1918. transition: color 0.2s ease;
  1919. }
  1920. .attach-button:hover {
  1921. color: var(--secondary);
  1922. }
  1923. .attach-button span {
  1924. display: none;
  1925. }
  1926. @media (min-width: 640px) {
  1927. .attach-button span {
  1928. display: inline;
  1929. }
  1930. }
  1931. .right-actions {
  1932. display: flex;
  1933. align-items: center;
  1934. gap: 8px;
  1935. }
  1936. .domain-select {
  1937. padding: 6px 12px;
  1938. border: 1px solid var(--border);
  1939. border-radius: 8px;
  1940. background: white;
  1941. color: var(--text-dark);
  1942. font-size: 13px;
  1943. cursor: pointer;
  1944. transition: all 0.2s ease;
  1945. }
  1946. .domain-select:hover {
  1947. border-color: var(--secondary);
  1948. }
  1949. .domain-select:focus {
  1950. outline: none;
  1951. border-color: var(--secondary);
  1952. box-shadow: 0 0 0 3px rgba(41, 132, 161, 0.1);
  1953. }
  1954. .voice-button {
  1955. display: flex;
  1956. align-items: center;
  1957. justify-content: center;
  1958. width: 36px;
  1959. height: 36px;
  1960. background: transparent;
  1961. border: none;
  1962. color: #6b7280;
  1963. cursor: pointer;
  1964. border-radius: 8px;
  1965. transition: all 0.2s ease;
  1966. }
  1967. .voice-button:hover {
  1968. background: #f3f4f6;
  1969. color: var(--text-dark);
  1970. }
  1971. .send-button {
  1972. display: flex;
  1973. align-items: center;
  1974. justify-content: center;
  1975. width: 36px;
  1976. height: 36px;
  1977. background: var( --contrast);
  1978. border: none;
  1979. color: #ffffff;
  1980. cursor: pointer;
  1981. border-radius: 8px;
  1982. transition: all 0.2s ease;
  1983. }
  1984. .send-button:hover:not(:disabled) {
  1985. transform: scale(1.05);
  1986. box-shadow: 0 4px 12px rgba(246, 62, 99, 0.3);
  1987. }
  1988. .send-button:active:not(:disabled) {
  1989. transform: scale(0.98);
  1990. }
  1991. .send-button:disabled {
  1992. background: #e5e7eb;
  1993. cursor: not-allowed;
  1994. opacity: 0.6;
  1995. }
  1996. .send-button:disabled svg {
  1997. color: #9ca3af;
  1998. }
  1999. @media (max-width: 768px) {
  2000. .chatroom-messages {
  2001. padding: 1rem;
  2002. }
  2003. .message-content-wrapper {
  2004. max-width: 85%;
  2005. }
  2006. .chat-input-container {
  2007. padding: 12px 16px;
  2008. }
  2009. .attached-files {
  2010. padding: 10px 12px;
  2011. gap: 6px;
  2012. }
  2013. .file-item {
  2014. padding: 6px 10px;
  2015. max-width: 200px;
  2016. }
  2017. .file-preview {
  2018. width: 36px;
  2019. height: 36px;
  2020. }
  2021. .file-name {
  2022. font-size: 12px;
  2023. }
  2024. .file-size {
  2025. font-size: 10px;
  2026. }
  2027. .remove-file-button {
  2028. width: 20px;
  2029. height: 20px;
  2030. }
  2031. .input-wrapper {
  2032. padding: 12px 16px;
  2033. border-radius: 14px;
  2034. }
  2035. .input-wrapper.has-files {
  2036. border-radius: 0 0 14px 14px;
  2037. }
  2038. .input-wrapper textarea {
  2039. font-size: 14px;
  2040. }
  2041. .actions-row .right-actions {
  2042. gap: 6px;
  2043. }
  2044. .voice-button,
  2045. .send-button {
  2046. width: 32px;
  2047. height: 32px;
  2048. }
  2049. .domain-select {
  2050. font-size: 12px;
  2051. padding: 4px 8px;
  2052. }
  2053. }
  2054. @media (max-width: 480px) {
  2055. .bubble {
  2056. padding: 0.875rem 1rem;
  2057. font-size: 0.95rem;
  2058. }
  2059. .avatar {
  2060. width: 36px;
  2061. height: 36px;
  2062. }
  2063. }
  2064. .sidebar {
  2065. width: 280px;
  2066. height: 100%;
  2067. background: #243b5d;
  2068. color: #ffffff;
  2069. display: flex;
  2070. flex-direction: column;
  2071. transition: width 0.3s ease;
  2072. position: relative;
  2073. overflow-x: hidden;
  2074. overflow-y: auto;
  2075. }
  2076. .sidebar.collapsed {
  2077. width: 64px;
  2078. }
  2079. .sidebar.collapsed .sidebar-section {
  2080. margin-bottom: 8px;
  2081. }
  2082. .sidebar-header {
  2083. display: flex;
  2084. justify-content: space-between;
  2085. align-items: center;
  2086. padding: 12px 16px;
  2087. min-height: 56px;
  2088. flex-shrink: 0;
  2089. gap: 12px;
  2090. }
  2091. .home-button {
  2092. display: flex;
  2093. align-items: center;
  2094. gap: 12px;
  2095. padding: 10px 16px;
  2096. background: transparent;
  2097. border: 1px solid rgba(255, 255, 255, 0.2);
  2098. border-radius: 8px;
  2099. color: #ffffff;
  2100. cursor: pointer;
  2101. font-size: 14px;
  2102. font-weight: 500;
  2103. transition: all 0.2s ease;
  2104. flex: 1;
  2105. }
  2106. .home-button:hover {
  2107. background-color: rgba(255, 255, 255, 0.1);
  2108. border-color: rgba(255, 255, 255, 0.3);
  2109. }
  2110. .home-button-collapsed {
  2111. display: flex;
  2112. align-items: center;
  2113. justify-content: center;
  2114. padding: 10px;
  2115. background: transparent;
  2116. border: 1px solid rgba(255, 255, 255, 0.2);
  2117. border-radius: 8px;
  2118. color: #ffffff;
  2119. cursor: pointer;
  2120. transition: all 0.2s ease;
  2121. }
  2122. .home-button-collapsed:hover {
  2123. background-color: rgba(255, 255, 255, 0.1);
  2124. border-color: rgba(255, 255, 255, 0.3);
  2125. }
  2126. .toggle-button {
  2127. background: transparent;
  2128. border: none;
  2129. color: #ffffff;
  2130. cursor: pointer;
  2131. padding: 8px;
  2132. border-radius: 4px;
  2133. display: flex;
  2134. align-items: center;
  2135. justify-content: center;
  2136. transition: background-color 0.2s ease;
  2137. flex-shrink: 0;
  2138. }
  2139. .toggle-button:hover {
  2140. background-color: rgba(255, 255, 255, 0.1);
  2141. }
  2142. .nav-item {
  2143. margin: 8px 16px;
  2144. }
  2145. .nav-link {
  2146. display: flex;
  2147. align-items: center;
  2148. gap: 12px;
  2149. padding: 12px 16px;
  2150. border-radius: 8px;
  2151. color: #ffffff;
  2152. text-decoration: none;
  2153. font-size: 14px;
  2154. font-weight: 500;
  2155. transition: all 0.2s ease;
  2156. }
  2157. .nav-link:hover {
  2158. background-color: rgba(255, 255, 255, 0.1);
  2159. }
  2160. .nav-link.active {
  2161. background-color: rgba(52, 152, 219, 0.3);
  2162. border-left: 3px solid #3498db;
  2163. font-weight: 600;
  2164. }
  2165. .nav-icon {
  2166. font-size: 18px;
  2167. }
  2168. .icon {
  2169. font-size: 18px;
  2170. }
  2171. .sidebar-section {
  2172. margin-bottom: 16px;
  2173. max-height: 46vh;
  2174. overflow: hidden;
  2175. }
  2176. .section-title {
  2177. font-size: 14px;
  2178. font-weight: 600;
  2179. text-transform: uppercase;
  2180. color: rgba(255, 255, 255, 0.5);
  2181. padding: 0 16px;
  2182. margin: 0 0 8px 0;
  2183. letter-spacing: 0.5px;
  2184. }
  2185. .section-header {
  2186. display: flex;
  2187. align-items: center;
  2188. justify-content: space-between;
  2189. padding: 0 16px;
  2190. cursor: pointer;
  2191. transition: background-color 0.2s ease;
  2192. }
  2193. .section-header:hover {
  2194. background-color: rgba(255, 255, 255, 0.05);
  2195. }
  2196. .section-header .section-title {
  2197. margin: 0;
  2198. padding: 8px 0;
  2199. flex: 1;
  2200. }
  2201. .section-header .expand-icon {
  2202. font-size: 12px;
  2203. color: rgba(255, 255, 255, 0.5);
  2204. }
  2205. .sidebar-icon-button {
  2206. width: 100%;
  2207. display: flex;
  2208. justify-content: center;
  2209. align-items: center;
  2210. padding: 14px 0;
  2211. background: transparent;
  2212. border: none;
  2213. color: rgba(255, 255, 255, 0.7);
  2214. cursor: pointer;
  2215. transition: all 0.2s ease;
  2216. position: relative;
  2217. }
  2218. .sidebar-icon-button::before {
  2219. content: '';
  2220. position: absolute;
  2221. left: 0;
  2222. top: 50%;
  2223. transform: translateY(-50%);
  2224. width: 3px;
  2225. height: 0;
  2226. background: #3498db;
  2227. transition: height 0.2s ease;
  2228. }
  2229. .sidebar-icon-button:hover {
  2230. background-color: rgba(255, 255, 255, 0.05);
  2231. color: #ffffff;
  2232. }
  2233. .sidebar-icon-button:hover::before {
  2234. height: 60%;
  2235. }
  2236. .new-chat-button {
  2237. display: flex;
  2238. align-items: center;
  2239. gap: 12px;
  2240. padding: 6px 16px;
  2241. margin: 8px;
  2242. background: #2984a1;
  2243. border: none;
  2244. border-radius: 8px;
  2245. color: #ffffff;
  2246. cursor: pointer;
  2247. font-size: 12px;
  2248. font-weight: 400;
  2249. transition: all 0.2s ease;
  2250. }
  2251. .new-chat-button:hover {
  2252. transform: translateY(-2px);
  2253. box-shadow: 0 4px 12px rgba(52, 152, 219, 0.4);
  2254. }
  2255. .conversations-section {
  2256. max-height: calc(45vh - 60px);
  2257. overflow-y: auto;
  2258. padding: 0 8px;
  2259. }
  2260. .conversations-section::-webkit-scrollbar {
  2261. width: 4px;
  2262. }
  2263. .conversations-section::-webkit-scrollbar-track {
  2264. background: rgba(255, 255, 255, 0.05);
  2265. border-radius: 2px;
  2266. }
  2267. .conversations-section::-webkit-scrollbar-thumb {
  2268. background: rgba(255, 255, 255, 0.2);
  2269. border-radius: 2px;
  2270. }
  2271. .conversations-section::-webkit-scrollbar-thumb:hover {
  2272. background: rgba(255, 255, 255, 0.3);
  2273. }
  2274. .conversations-list {
  2275. display: flex;
  2276. flex-direction: column;
  2277. gap: 4px;
  2278. }
  2279. .conversation-item {
  2280. padding: 10px 12px;
  2281. border-radius: 6px;
  2282. cursor: pointer;
  2283. transition: all 0.2s ease;
  2284. display: flex;
  2285. align-items: center;
  2286. gap: 10px;
  2287. }
  2288. .conversation-item:hover {
  2289. background-color: rgba(255, 255, 255, 0.1);
  2290. }
  2291. .conversation-item.active {
  2292. background-color: rgba(52, 152, 219, 0.3);
  2293. border-left: 3px solid #3498db;
  2294. }
  2295. .conversation-item.sub-item {
  2296. margin-left: 20px;
  2297. padding: 8px 12px;
  2298. font-size: 13px;
  2299. }
  2300. .conversation-icon {
  2301. font-size: 14px;
  2302. color: rgba(255, 255, 255, 0.7);
  2303. flex-shrink: 0;
  2304. }
  2305. .conversation-title {
  2306. white-space: nowrap;
  2307. overflow: hidden;
  2308. text-overflow: ellipsis;
  2309. font-size: 12px;
  2310. flex: 1;
  2311. }
  2312. .projects-section {
  2313. max-height: calc(45vh - 60px); /* Augmenté de 30vh à 45vh */
  2314. overflow-y: auto;
  2315. padding: 0 8px;
  2316. }
  2317. .projects-section::-webkit-scrollbar {
  2318. width: 4px;
  2319. }
  2320. .projects-section::-webkit-scrollbar-track {
  2321. background: rgba(255, 255, 255, 0.05);
  2322. border-radius: 2px;
  2323. }
  2324. .projects-section::-webkit-scrollbar-thumb {
  2325. background: rgba(255, 255, 255, 0.2);
  2326. border-radius: 2px;
  2327. }
  2328. .projects-section::-webkit-scrollbar-thumb:hover {
  2329. background: rgba(255, 255, 255, 0.3);
  2330. }
  2331. .projects-list {
  2332. display: flex;
  2333. flex-direction: column;
  2334. gap: 4px;
  2335. }
  2336. .project-wrapper {
  2337. margin-bottom: 4px;
  2338. }
  2339. .project-item {
  2340. display: flex;
  2341. align-items: center;
  2342. gap: 10px;
  2343. padding: 10px 12px;
  2344. border-radius: 6px;
  2345. cursor: pointer;
  2346. transition: all 0.2s ease;
  2347. }
  2348. .project-item:hover {
  2349. background-color: rgba(255, 255, 255, 0.1);
  2350. }
  2351. .project-icon {
  2352. font-size: 16px;
  2353. color: rgba(255, 255, 255, 0.7);
  2354. }
  2355. .project-name {
  2356. flex: 1;
  2357. white-space: nowrap;
  2358. overflow: hidden;
  2359. text-overflow: ellipsis;
  2360. font-size: 14px;
  2361. font-weight: 500;
  2362. }
  2363. .expand-icon {
  2364. font-size: 12px;
  2365. color: rgba(255, 255, 255, 0.5);
  2366. }
  2367. .project-conversations {
  2368. margin-top: 4px;
  2369. display: flex;
  2370. flex-direction: column;
  2371. gap: 2px;
  2372. }
  2373. .project-empty {
  2374. padding: 8px 12px 8px 42px;
  2375. font-size: 13px;
  2376. color: rgba(255, 255, 255, 0.5);
  2377. font-style: italic;
  2378. }
  2379. .emails-section {
  2380. padding: 0 8px;
  2381. }
  2382. .emails-list {
  2383. display: flex;
  2384. flex-direction: column;
  2385. gap: 4px;
  2386. }
  2387. .emails-list .nav-link {
  2388. padding: 10px 12px;
  2389. margin: 0;
  2390. }
  2391. .loading,
  2392. .empty-state {
  2393. padding: 12px;
  2394. text-align: center;
  2395. font-size: 13px;
  2396. color: rgba(255, 255, 255, 0.5);
  2397. font-style: italic;
  2398. }
  2399. .loading {
  2400. display: flex;
  2401. align-items: center;
  2402. justify-content: center;
  2403. gap: 8px;
  2404. }
  2405. .loading::before {
  2406. content: '';
  2407. width: 16px;
  2408. height: 16px;
  2409. border: 2px solid rgba(255, 255, 255, 0.2);
  2410. border-top-color: rgba(255, 255, 255, 0.6);
  2411. border-radius: 50%;
  2412. animation: spin 0.8s linear infinite;
  2413. }
  2414. @keyframes spin {
  2415. to {
  2416. transform: rotate(360deg);
  2417. }
  2418. }
  2419. .sidebar-footer {
  2420. margin-top: auto;
  2421. padding: 16px;
  2422. border-top: 1px solid rgba(255, 255, 255, 0.1);
  2423. display: flex;
  2424. justify-content: center;
  2425. gap: 12px;
  2426. flex-shrink: 0;
  2427. }
  2428. .sidebar-footer-collapsed {
  2429. margin-top: auto;
  2430. padding: 16px;
  2431. border-top: 1px solid rgba(255, 255, 255, 0.1);
  2432. display: flex;
  2433. flex-direction: column;
  2434. gap: 8px;
  2435. flex-shrink: 0;
  2436. }
  2437. .footer-button {
  2438. background: transparent;
  2439. border: none;
  2440. color: rgba(255, 255, 255, 0.6);
  2441. cursor: pointer;
  2442. padding: 10px;
  2443. border-radius: 6px;
  2444. display: flex;
  2445. align-items: center;
  2446. justify-content: center;
  2447. gap: 8px;
  2448. transition: all 0.2s ease;
  2449. font-size: 14px;
  2450. }
  2451. .footer-button:hover {
  2452. background-color: rgba(255, 255, 255, 0.1);
  2453. color: #ffffff;
  2454. }
  2455. .footer-button span:not(.icon) {
  2456. font-weight: 500;
  2457. }
  2458. @keyframes fadeIn {
  2459. from {
  2460. opacity: 0;
  2461. transform: translateY(10px);
  2462. }
  2463. to {
  2464. opacity: 1;
  2465. transform: translateY(0);
  2466. }
  2467. }
  2468. .conversation-item,
  2469. .project-item {
  2470. animation: fadeIn 0.3s ease;
  2471. }
  2472. .section-title-button {
  2473. display: flex;
  2474. align-items: center;
  2475. gap: 8px;
  2476. width: 100%;
  2477. padding: 8px;
  2478. background: transparent;
  2479. border: none;
  2480. cursor: pointer;
  2481. transition: background-color 0.2s;
  2482. color:white;
  2483. }
  2484. .section-title-button:hover {
  2485. background-color: rgba(0, 0, 0, 0.05);
  2486. }
  2487. .chevron {
  2488. margin-left: auto;
  2489. transition: transform 0.2s;
  2490. transform: rotate(270deg);
  2491. }
  2492. .chevron.open {
  2493. transform: rotate(360deg);
  2494. }