您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

2836 行
55KB

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