app.scss 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  1. // Fonts
  2. //@import url('https://fonts.bunny.net/css?family=Nunito');
  3. // Variables
  4. @import 'variables';
  5. // Bootstrap
  6. @import 'bootstrap/scss/bootstrap';
  7. @import "bootstrap-icons/font/bootstrap-icons.css";
  8. .invalid-feedback {
  9. display: block !important;
  10. }
  11. .nav-link.active {
  12. font-weight: bold;
  13. }
  14. .alerts{
  15. position: absolute;
  16. right: 0;
  17. top: 0;
  18. opacity: 0.95;
  19. z-index: 999;
  20. div {
  21. padding-left: 3rem;
  22. padding-right: 3rem;
  23. }
  24. }
  25. .table-buttons {
  26. position: fixed;
  27. right: 0;
  28. opacity: 0.7;
  29. z-index: 999;
  30. }
  31. .table-buttons:hover {
  32. opacity: 1;
  33. }
  34. .js-main-table-scroll {
  35. overflow: auto;
  36. position: relative;
  37. z-index: 20;
  38. }
  39. .js-main-table-scroll:has(.dropdown-menu.show) {
  40. overflow: visible;
  41. }
  42. .js-main-table-scroll .table {
  43. margin-bottom: 0;
  44. }
  45. .js-main-table-scroll thead th {
  46. position: sticky;
  47. top: 0;
  48. z-index: 3;
  49. background-color: var(--bs-primary-bg-subtle);
  50. }
  51. .js-main-table-scroll .table-head-shadow th {
  52. box-shadow: 0 8px 14px -10px rgba(0, 0, 0, 0.35);
  53. }
  54. .js-main-table-scroll thead th:has(.dropdown-menu.show) {
  55. z-index: 10;
  56. }
  57. .js-main-table-scroll thead th .dropdown-menu {
  58. z-index: 1080;
  59. }
  60. .js-subtable-scroll {
  61. overflow: auto;
  62. }
  63. .js-subtable-scroll .table {
  64. margin-bottom: 0;
  65. }
  66. .js-subtable-scroll thead th {
  67. position: sticky;
  68. top: 0;
  69. z-index: 2;
  70. background-color: var(--bs-primary-bg-subtle);
  71. }
  72. .table {
  73. tr th {
  74. background-color: var(--bs-primary-bg-subtle);
  75. vertical-align: middle;
  76. }
  77. td {
  78. cursor: pointer;
  79. }
  80. th {
  81. border-right: 1px solid #d7d7d7;
  82. }
  83. font-size: 0.8rem;
  84. }
  85. .table-interactive tbody tr {
  86. transition: background-color 0.12s ease-in-out;
  87. }
  88. .table-interactive tbody tr:hover > td {
  89. background-color: #f2f7ff;
  90. }
  91. .table-interactive tbody tr.is-selected > td {
  92. background-color: #dbe7ff;
  93. }
  94. .table-interactive tbody tr.is-selected:hover > td {
  95. background-color: #cfe0ff;
  96. }
  97. .maf:hover {
  98. background-color: #fff8ca;
  99. }
  100. .quantity {
  101. padding: 3px;
  102. }
  103. .pagination .text-muted {
  104. padding-right: 1rem;
  105. }
  106. .table-pagination-row {
  107. padding-top: 0.25rem !important;
  108. padding-bottom: 0.25rem !important;
  109. background-color: var(--bs-body-bg);
  110. box-shadow: 0 -8px 14px -10px rgba(0, 0, 0, 0.35);
  111. position: relative;
  112. z-index: 1;
  113. }
  114. .table-pagination-row .pagination {
  115. margin-bottom: 0;
  116. }
  117. .table-pagination-row .pagination .page-link {
  118. padding: 0.2rem 0.45rem;
  119. }
  120. .table-pagination-row .col-form-label {
  121. margin-bottom: 0;
  122. padding-top: 0.15rem;
  123. padding-bottom: 0.15rem;
  124. }
  125. .cursor-pointer {
  126. cursor: pointer;
  127. }
  128. .highlight {
  129. background-color: yellow;
  130. }
  131. .rm-but {
  132. position: absolute;
  133. margin-left: -18px;
  134. margin-top: 1px;
  135. }
  136. .maf-img {
  137. max-height: 100px;
  138. max-width: 100px;
  139. }
  140. .vertical {
  141. writing-mode: sideways-lr;
  142. vertical-align: middle;
  143. text-align: center;
  144. }
  145. .vertical th{
  146. writing-mode: sideways-lr;
  147. vertical-align: middle;
  148. text-align: center;
  149. }
  150. .svod tr {
  151. text-align: center;
  152. }
  153. .svod-6, .svod-7 {
  154. background-color: #86b7fe !important;
  155. }
  156. .svod-8, .svod-9 {
  157. background-color: #fec886 !important;
  158. }
  159. .svod-10, .svod-11 {
  160. background-color: #ccffd8 !important;
  161. }
  162. .svod-12, .svod-13 {
  163. background-color: #54ab4e !important;
  164. }
  165. .svod-14, .svod-15 {
  166. background-color: #effc76 !important;
  167. }
  168. .svod-20, .svod-21, .svod-16, .svod-17, .svod-18, .svod-19{
  169. background-color: #c4c4c4 !important;
  170. }
  171. .svod-26, .svod-27, .svod-22, .svod-23, .svod-24, .svod-25{
  172. background-color: #a4f7ff !important;
  173. }
  174. .svod-32, .svod-33, .svod-28, .svod-29, .svod-30, .svod-31{
  175. background-color: #ffc0c0 !important;
  176. }
  177. // Markdown content styles
  178. .markdown-content {
  179. scroll-behavior: smooth;
  180. h1, h2, h3, h4, h5, h6 {
  181. margin-top: 1.5rem;
  182. margin-bottom: 0.75rem;
  183. scroll-margin-top: 1rem;
  184. }
  185. h1 { font-size: 1.75rem; }
  186. h2 { font-size: 1.5rem; border-bottom: 1px solid #dee2e6; padding-bottom: 0.5rem; }
  187. h3 { font-size: 1.25rem; }
  188. h4 { font-size: 1.1rem; }
  189. table {
  190. width: 100%;
  191. margin-bottom: 1rem;
  192. border-collapse: collapse;
  193. th, td {
  194. padding: 0.5rem;
  195. border: 1px solid #dee2e6;
  196. cursor: default;
  197. }
  198. th {
  199. background-color: var(--bs-primary-bg-subtle);
  200. }
  201. }
  202. pre {
  203. background-color: #f8f9fa;
  204. padding: 1rem;
  205. border-radius: 0.25rem;
  206. overflow-x: auto;
  207. code {
  208. color: inherit;
  209. }
  210. }
  211. code {
  212. color: #d63384;
  213. background-color: #f8f9fa;
  214. padding: 0.2rem 0.4rem;
  215. border-radius: 0.25rem;
  216. }
  217. hr {
  218. margin: 2rem 0;
  219. border-top: 1px solid #dee2e6;
  220. }
  221. ul, ol {
  222. padding-left: 1.5rem;
  223. margin-bottom: 1rem;
  224. }
  225. blockquote {
  226. border-left: 4px solid #dee2e6;
  227. padding-left: 1rem;
  228. color: #6c757d;
  229. margin: 1rem 0;
  230. }
  231. }
  232. .is-hidden {
  233. display: none;
  234. }
  235. .max-h-50vh {
  236. max-height: 50vh;
  237. }
  238. .table-initial-hidden {
  239. display: none;
  240. min-height: 380px;
  241. }
  242. .img-max-40 {
  243. max-height: 40px;
  244. }
  245. .img-max-50 {
  246. max-width: 50px;
  247. }
  248. .img-max-150 {
  249. max-width: 150px;
  250. }
  251. .img-max-200 {
  252. max-width: 200px;
  253. }
  254. .color-input {
  255. height: 32px;
  256. }
  257. .week-number-input {
  258. width: 3rem;
  259. }
  260. .filter-menu-compact {
  261. width: 170px;
  262. }
  263. .filter-menu-wide {
  264. width: 300px;
  265. }
  266. .filter-list-scroll {
  267. max-height: 200px;
  268. overflow-y: scroll;
  269. }
  270. .tooltip-help {
  271. cursor: help;
  272. text-decoration: underline dotted;
  273. }
  274. .autocomplete-dropdown {
  275. position: absolute;
  276. top: 100%;
  277. left: 0;
  278. right: 0;
  279. z-index: 1050;
  280. background: white;
  281. border: 1px solid #dee2e6;
  282. border-top: none;
  283. border-radius: 0 0 0.375rem 0.375rem;
  284. max-height: 250px;
  285. overflow-y: auto;
  286. display: none;
  287. box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  288. }
  289. .autocomplete-dropdown.autocomplete-dropdown--order {
  290. max-height: 300px;
  291. }
  292. .autocomplete-dropdown .autocomplete-item {
  293. padding: 8px 12px;
  294. cursor: pointer;
  295. border-bottom: 1px solid #f0f0f0;
  296. }
  297. .autocomplete-dropdown.autocomplete-dropdown--order .autocomplete-item {
  298. padding: 10px 12px;
  299. }
  300. .autocomplete-dropdown .autocomplete-item:last-child {
  301. border-bottom: none;
  302. }
  303. .autocomplete-dropdown .autocomplete-item:hover,
  304. .autocomplete-dropdown .autocomplete-item.active {
  305. background-color: #e9ecef;
  306. }
  307. .autocomplete-dropdown .autocomplete-item .code,
  308. .autocomplete-dropdown .autocomplete-item .article {
  309. font-weight: 600;
  310. color: #495057;
  311. }
  312. .autocomplete-dropdown .autocomplete-item .description,
  313. .autocomplete-dropdown .autocomplete-item .used-in-maf {
  314. font-size: 0.875em;
  315. color: #6c757d;
  316. }
  317. .spare-part-dropdown {
  318. position: absolute;
  319. top: 100%;
  320. left: 0;
  321. right: 0;
  322. z-index: 1050;
  323. background: white;
  324. border: 1px solid #dee2e6;
  325. border-top: none;
  326. border-radius: 0 0 0.375rem 0.375rem;
  327. max-height: 250px;
  328. overflow-y: auto;
  329. display: none;
  330. box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  331. }
  332. .spare-part-dropdown .sp-item {
  333. padding: 8px 12px;
  334. cursor: pointer;
  335. border-bottom: 1px solid #f0f0f0;
  336. }
  337. .spare-part-dropdown .sp-item:last-child {
  338. border-bottom: none;
  339. }
  340. .spare-part-dropdown .sp-item:hover,
  341. .spare-part-dropdown .sp-item.active {
  342. background-color: #e9ecef;
  343. }
  344. .spare-part-dropdown .sp-item .sp-article {
  345. font-weight: 600;
  346. color: #495057;
  347. }
  348. .spare-part-dropdown .sp-item .sp-used {
  349. font-size: 0.875em;
  350. color: #6c757d;
  351. }
  352. .action-toolbar {
  353. display: flex;
  354. flex-wrap: wrap;
  355. gap: 0.25rem;
  356. justify-content: flex-end;
  357. align-items: flex-start;
  358. }
  359. .report-tabs {
  360. flex-wrap: nowrap;
  361. overflow-x: auto;
  362. overflow-y: hidden;
  363. -webkit-overflow-scrolling: touch;
  364. }
  365. .report-tabs .nav-link {
  366. white-space: nowrap;
  367. }
  368. .report-tab-content {
  369. padding: 0.75rem;
  370. }
  371. .schedule-week-controls {
  372. display: flex;
  373. flex-wrap: wrap;
  374. justify-content: flex-end;
  375. gap: 0.5rem;
  376. }
  377. .schedule-week-controls > div {
  378. padding: 0 !important;
  379. }
  380. @media (min-width: 768px) {
  381. .report-tab-content {
  382. padding: 3rem;
  383. }
  384. }
  385. @media (max-width: 767.98px) {
  386. .alerts {
  387. position: fixed;
  388. left: 0;
  389. right: 0;
  390. top: 0;
  391. padding: 0.5rem;
  392. }
  393. .alerts div {
  394. padding-left: 1rem;
  395. padding-right: 1rem;
  396. }
  397. .table-buttons {
  398. position: sticky;
  399. bottom: 0;
  400. right: auto;
  401. width: 100%;
  402. display: flex !important;
  403. flex-direction: row !important;
  404. justify-content: space-around;
  405. opacity: 0.96;
  406. border-radius: 0.375rem 0.375rem 0 0 !important;
  407. }
  408. .js-main-table-scroll {
  409. padding-bottom: 2.75rem;
  410. }
  411. .table {
  412. font-size: 0.875rem;
  413. }
  414. .vertical,
  415. .vertical th {
  416. writing-mode: horizontal-tb;
  417. }
  418. .filter-menu-wide {
  419. width: min(95vw, 320px);
  420. }
  421. .filter-sort-controls {
  422. width: 100% !important;
  423. flex-direction: column;
  424. gap: 0.5rem;
  425. }
  426. .filter-menu-wide [id^="bulk-toggle_"],
  427. .filter-menu-wide [id^="modal-footer_"] {
  428. flex-direction: column;
  429. gap: 0.5rem;
  430. }
  431. .filter-menu-wide .btn.w-50,
  432. .filter-menu-wide .btn.w-100 {
  433. width: 100% !important;
  434. }
  435. .table-pagination-row {
  436. row-gap: 0.5rem;
  437. }
  438. .schedule-week-controls {
  439. justify-content: flex-start;
  440. }
  441. .action-toolbar {
  442. justify-content: flex-start;
  443. }
  444. }
  445. .notification-bell-link {
  446. position: relative;
  447. }
  448. .notification-badge-dot {
  449. position: absolute;
  450. top: -2px;
  451. right: -2px;
  452. width: 9px;
  453. height: 9px;
  454. border-radius: 50%;
  455. background: #dc3545;
  456. }
  457. .notifications-list {
  458. display: flex;
  459. flex-direction: column;
  460. gap: 8px;
  461. }
  462. .notification-item {
  463. border: 1px solid #ddd;
  464. border-radius: 8px;
  465. padding: 10px 12px;
  466. cursor: pointer;
  467. }
  468. .notification-unread {
  469. background: #fce7ea;
  470. }
  471. .notification-read-platform {
  472. background: #e7f1ff;
  473. }
  474. .notification-read-reclamation {
  475. background: #e9f8ef;
  476. }
  477. .notification-read-schedule {
  478. background: #fff4e6;
  479. }
  480. .ws-notification-container {
  481. position: fixed;
  482. right: 16px;
  483. bottom: 16px;
  484. z-index: 2000;
  485. display: flex;
  486. flex-direction: column;
  487. gap: 10px;
  488. width: min(360px, calc(100vw - 24px));
  489. }
  490. .ws-notification-popup {
  491. border: 1px solid #d8d8d8;
  492. border-radius: 8px;
  493. background: #fff;
  494. box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
  495. padding: 10px;
  496. }
  497. .ws-notification-header {
  498. display: flex;
  499. justify-content: space-between;
  500. align-items: center;
  501. gap: 8px;
  502. margin-bottom: 6px;
  503. }
  504. .ws-notification-body {
  505. font-size: 14px;
  506. }
  507. @media (max-width: 767.98px) {
  508. .notification-bell-link {
  509. display: inline-flex !important;
  510. margin-left: auto;
  511. }
  512. }