// Fonts - local Nunito via @fontsource @import "@fontsource/nunito/400.css"; @import "@fontsource/nunito/400-italic.css"; @import "@fontsource/nunito/600.css"; @import "@fontsource/nunito/700.css"; @import "@fontsource/nunito/800.css"; body { font-family: 'Nunito', sans-serif; } // Variables @import 'variables'; // Bootstrap @import 'bootstrap/scss/bootstrap'; @import "bootstrap-icons/font/bootstrap-icons.css"; .invalid-feedback { display: block !important; } .nav-link.active { font-weight: bold; } td p { margin-bottom: 0; } .alerts{ position: absolute; right: 0; top: 0; opacity: 0.95; z-index: 999; div { padding-left: 3rem; padding-right: 3rem; } } .table-buttons { position: fixed; right: 0; opacity: 0.7; z-index: 999; } .table-buttons:hover { opacity: 1; } .js-main-table-scroll { overflow: auto; position: relative; z-index: 20; } .js-main-table-scroll:has(.dropdown-menu.show) { overflow: visible; } .js-main-table-scroll .table { margin-bottom: 0; } .js-main-table-scroll thead th { position: sticky; top: 0; z-index: 3; background-color: var(--bs-primary-bg-subtle); } .js-main-table-scroll .table-head-shadow th { box-shadow: 0 8px 14px -10px rgba(0, 0, 0, 0.35); } .js-main-table-scroll thead th:has(.dropdown-menu.show) { z-index: 10; } .js-main-table-scroll thead th .dropdown-menu { z-index: 1080; } .js-subtable-scroll { overflow: auto; } .js-subtable-scroll .table { margin-bottom: 0; } .js-subtable-scroll thead th { position: sticky; top: 0; z-index: 2; background-color: var(--bs-primary-bg-subtle); } .table { tr th { background-color: var(--bs-primary-bg-subtle); vertical-align: middle; } td { cursor: pointer; } th { border-right: 1px solid #d7d7d7; } font-size: 0.8rem; } .table-interactive tbody tr { transition: background-color 0.12s ease-in-out; } .table-interactive tbody tr:hover > td { background-color: #f2f7ff; } .page-header-row { align-items: center; } .page-header-title h3 { margin-bottom: 0; } .page-header-actions { display: flex; justify-content: flex-end; align-items: center; gap: 0.5rem; flex-wrap: wrap; } .page-action-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem; } .page-action-btn__icon { line-height: 1; } .table-interactive tbody tr.is-selected > td { background-color: #dbe7ff; } .table-interactive tbody tr.is-selected:hover > td { background-color: #cfe0ff; } .maf:hover { background-color: #fff8ca; } .quantity { padding: 3px; } .pagination .text-muted { padding-right: 1rem; } .table-pagination-row { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; background-color: var(--bs-body-bg); box-shadow: 0 -8px 14px -10px rgba(0, 0, 0, 0.35); position: relative; z-index: 1; } .table-pagination-row .pagination { margin-bottom: 0; } .table-pagination-row .pagination .page-link { padding: 0.2rem 0.45rem; } .table-pagination-row .col-form-label { margin-bottom: 0; padding-top: 0.15rem; padding-bottom: 0.15rem; } .cursor-pointer { cursor: pointer; } .highlight { background-color: yellow; } .rm-but { position: absolute; margin-left: -18px; margin-top: 1px; } .maf-img { max-height: 100px; max-width: 100px; } .vertical { writing-mode: sideways-lr; vertical-align: middle; text-align: center; } .vertical th{ writing-mode: sideways-lr; vertical-align: middle; text-align: center; } .svod tr { text-align: center; } .svod-6, .svod-7 { background-color: #86b7fe !important; } .svod-8, .svod-9 { background-color: #fec886 !important; } .svod-10, .svod-11 { background-color: #ccffd8 !important; } .svod-12, .svod-13 { background-color: #54ab4e !important; } .svod-14, .svod-15 { background-color: #effc76 !important; } .svod-20, .svod-21, .svod-16, .svod-17, .svod-18, .svod-19{ background-color: #c4c4c4 !important; } .svod-26, .svod-27, .svod-22, .svod-23, .svod-24, .svod-25{ background-color: #a4f7ff !important; } .svod-32, .svod-33, .svod-28, .svod-29, .svod-30, .svod-31{ background-color: #ffc0c0 !important; } // Markdown content styles .markdown-content { scroll-behavior: smooth; h1, h2, h3, h4, h5, h6 { margin-top: 1.5rem; margin-bottom: 0.75rem; scroll-margin-top: 1rem; } h1 { font-size: 1.75rem; } h2 { font-size: 1.5rem; border-bottom: 1px solid #dee2e6; padding-bottom: 0.5rem; } h3 { font-size: 1.25rem; } h4 { font-size: 1.1rem; } table { width: 100%; margin-bottom: 1rem; border-collapse: collapse; th, td { padding: 0.5rem; border: 1px solid #dee2e6; cursor: default; } th { background-color: var(--bs-primary-bg-subtle); } } pre { background-color: #f8f9fa; padding: 1rem; border-radius: 0.25rem; overflow-x: auto; code { color: inherit; } } code { color: #d63384; background-color: #f8f9fa; padding: 0.2rem 0.4rem; border-radius: 0.25rem; } hr { margin: 2rem 0; border-top: 1px solid #dee2e6; } ul, ol { padding-left: 1.5rem; margin-bottom: 1rem; } blockquote { border-left: 4px solid #dee2e6; padding-left: 1rem; color: #6c757d; margin: 1rem 0; } } .is-hidden { display: none; } .max-h-50vh { max-height: 50vh; } .table-initial-hidden { display: none; min-height: 380px; } .img-max-40 { max-height: 40px; } .img-max-50 { max-width: 50px; } .img-max-150 { max-width: 150px; } .img-max-200 { max-width: 200px; } .color-input { height: 32px; } .week-number-input { width: 3rem; } .filter-menu-compact { width: 170px; } .filter-menu-wide { width: 300px; } .filter-list-scroll { max-height: 200px; overflow-y: scroll; } .tooltip-help { cursor: help; text-decoration: underline dotted; } .autocomplete-dropdown { position: absolute; top: 100%; left: 0; right: 0; z-index: 1050; background: white; border: 1px solid #dee2e6; border-top: none; border-radius: 0 0 0.375rem 0.375rem; max-height: 250px; overflow-y: auto; display: none; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .autocomplete-dropdown.autocomplete-dropdown--order { max-height: 300px; } .autocomplete-dropdown .autocomplete-item { padding: 8px 12px; cursor: pointer; border-bottom: 1px solid #f0f0f0; } .autocomplete-dropdown.autocomplete-dropdown--order .autocomplete-item { padding: 10px 12px; } .autocomplete-dropdown .autocomplete-item:last-child { border-bottom: none; } .autocomplete-dropdown .autocomplete-item:hover, .autocomplete-dropdown .autocomplete-item.active { background-color: #e9ecef; } .autocomplete-dropdown .autocomplete-item .code, .autocomplete-dropdown .autocomplete-item .article { font-weight: 600; color: #495057; } .autocomplete-dropdown .autocomplete-item .description, .autocomplete-dropdown .autocomplete-item .used-in-maf { font-size: 0.875em; color: #6c757d; } .spare-part-dropdown { position: absolute; top: 100%; left: 0; right: 0; z-index: 1050; background: white; border: 1px solid #dee2e6; border-top: none; border-radius: 0 0 0.375rem 0.375rem; max-height: 250px; overflow-y: auto; display: none; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .spare-part-dropdown .sp-item { padding: 8px 12px; cursor: pointer; border-bottom: 1px solid #f0f0f0; } .spare-part-dropdown .sp-item:last-child { border-bottom: none; } .spare-part-dropdown .sp-item:hover, .spare-part-dropdown .sp-item.active { background-color: #e9ecef; } .spare-part-dropdown .sp-item .sp-article { font-weight: 600; color: #495057; } .spare-part-dropdown .sp-item .sp-used { font-size: 0.875em; color: #6c757d; } .action-toolbar { display: flex; flex-wrap: wrap; gap: 0.25rem; justify-content: flex-end; align-items: flex-start; } .report-tabs { flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; } .report-tabs .nav-link { white-space: nowrap; } .report-tab-content { padding: 0.75rem; } .schedule-week-controls { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0.5rem; } .schedule-week-controls > div { padding: 0 !important; } @media (min-width: 768px) { .report-tab-content { padding: 3rem; } } @media (max-width: 767.98px) { .page-header-row { row-gap: 0.5rem; } .page-header-title { order: 1; } .page-header-year { order: 2; width: auto; } .page-header-actions { order: 3; width: auto; margin-left: auto; justify-content: flex-end; gap: 0.35rem; } .page-header-year .dropdown > .btn, .page-header-year .dropdown > button { font-size: 1.5rem !important; } .page-action-btn { min-width: 2.2rem; min-height: 2.2rem; padding-left: 0.55rem !important; padding-right: 0.55rem !important; } .page-action-btn__label { display: none; } .navbar { min-height: 3rem; } .navbar .container-fluid { padding-top: 0.25rem; padding-bottom: 0.25rem; } .navbar-brand { font-size: 1rem; margin-right: 0.5rem; } .navbar-toggler { padding: 0.2rem 0.45rem; font-size: 0.95rem; } .navbar .nav-link { padding-top: 0.35rem; padding-bottom: 0.35rem; } .notification-bell-link { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .alerts { position: fixed; left: 0; right: 0; top: 0; padding: 0.5rem; } .alerts div { padding-left: 1rem; padding-right: 1rem; } .table-buttons { position: sticky; bottom: 0; right: auto; width: 100%; display: flex !important; flex-direction: row !important; justify-content: space-around; opacity: 0.96; border-radius: 0.375rem 0.375rem 0 0 !important; } .js-main-table-scroll { padding-bottom: 2.75rem; } .table { font-size: 0.72rem; } .table th, .table td { padding: 0.35rem 0.45rem; } .js-main-table-scroll thead th, .js-subtable-scroll thead th { font-size: 0.68rem; padding: 0.3rem 0.35rem; } .vertical, .vertical th { writing-mode: horizontal-tb; } .filter-menu-wide { width: min(95vw, 320px); } .filter-sort-controls { width: 100% !important; flex-direction: column; gap: 0.5rem; } .filter-menu-wide [id^="bulk-toggle_"], .filter-menu-wide [id^="modal-footer_"] { flex-direction: column; gap: 0.5rem; } .filter-menu-wide .btn.w-50, .filter-menu-wide .btn.w-100 { width: 100% !important; } .table-pagination-row { row-gap: 0.5rem; } .schedule-week-controls { justify-content: flex-start; } .action-toolbar { justify-content: flex-start; } } .notification-bell-link { position: relative; } .notification-badge-dot { position: absolute; top: -2px; right: -2px; width: 9px; height: 9px; border-radius: 50%; background: #dc3545; } .notifications-list { display: flex; flex-direction: column; gap: 8px; } .notification-item { border: 1px solid #ddd; border-radius: 8px; padding: 10px 12px; cursor: pointer; } .mobile-date-picker-open { overflow: hidden; } .mobile-date-picker { position: fixed; inset: 0; z-index: 2000; background: rgba(15, 23, 42, 0.42); padding: env(safe-area-inset-top) 0 env(safe-area-inset-bottom); } .mobile-date-picker[hidden] { display: none !important; } .mobile-date-picker__dialog { background: #fff; width: 100%; height: 100%; display: flex; flex-direction: column; } .mobile-date-picker__header, .mobile-date-picker__month-nav, .mobile-date-picker__footer { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; padding: 1rem 1rem 0; } .mobile-date-picker__title { font-size: 1rem; font-weight: 600; text-align: center; flex: 1; } .mobile-date-picker__close, .mobile-date-picker__today, .mobile-date-picker__nav { text-decoration: none; padding-left: 0.25rem; padding-right: 0.25rem; } .mobile-date-picker__month-nav { padding-top: 0.5rem; } .mobile-date-picker__month-label { font-size: 1.05rem; font-weight: 700; text-align: center; flex: 1; } .mobile-date-picker__weekdays, .mobile-date-picker__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0.35rem; padding-left: 1rem; padding-right: 1rem; } .mobile-date-picker__weekdays { padding-top: 1rem; padding-bottom: 0.5rem; } .mobile-date-picker__weekday { text-align: center; font-size: 0.75rem; color: #6c757d; text-transform: uppercase; } .mobile-date-picker__grid { padding-bottom: 1rem; flex: 1; align-content: start; } .mobile-date-picker__day { border: 1px solid transparent; background: #fff; border-radius: 0.75rem; min-height: 2.75rem; font-weight: 500; color: #212529; } .mobile-date-picker__day.is-outside { color: #adb5bd; } .mobile-date-picker__day.is-today { border-color: #0d6efd; } .mobile-date-picker__day.is-selected { background: #0d6efd; color: #fff; } .mobile-date-picker__footer { padding-top: 0; padding-bottom: max(1rem, env(safe-area-inset-bottom)); } .mobile-date-picker__footer .btn { flex: 1; } .mobile-date-input { cursor: pointer; background-image: none !important; } .mobile-date-input--empty { color: #6c757d; } .notification-unread { background: #fce7ea; cursor: pointer; } .notification-read-platform { background: #e7f1ff; } .notification-read-reclamation { background: #e9f8ef; } .notification-read-schedule { background: #fff4e6; } .ws-notification-container { position: fixed; right: 16px; bottom: 16px; z-index: 2000; display: flex; flex-direction: column; gap: 10px; width: min(360px, calc(100vw - 24px)); } .ws-notification-popup { border: 1px solid #d8d8d8; border-radius: 8px; background: #fff; box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); padding: 10px; } .ws-notification-header { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 6px; } .ws-notification-body { font-size: 14px; } @media (max-width: 767.98px) { .notification-bell-link { display: inline-flex !important; margin-left: auto; } } // Chat component styles (from partials/chat.blade.php) .chat-block { --chat-height: 420px; } .chat-card { border: 1px solid var(--bs-border-color); border-radius: 0.75rem; background: var(--bs-light-bg-subtle, #f8f9fa); } .chat-messages-wrap { position: relative; padding: 0.75rem; } .chat-messages { max-height: var(--chat-height); overflow-y: auto; padding-right: 0.35rem; scroll-behavior: smooth; } .chat-message { border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 0.75rem; background: #fff; padding: 0.75rem 0.875rem; margin-bottom: 0.625rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04); } .chat-message:last-child { margin-bottom: 0; } .chat-message-header { display: flex; justify-content: space-between; gap: 0.75rem; flex-wrap: wrap; font-size: 0.875rem; } .chat-message-text { margin-top: 0.5rem; white-space: pre-wrap; line-height: 1.35; } .chat-message-files { margin-top: 0.625rem; display: flex; flex-wrap: wrap; gap: 0.5rem; } .chat-message-files img { width: 84px; height: 84px; object-fit: cover; } .chat-scroll-bottom { position: absolute; right: 1rem; bottom: 1rem; z-index: 2; border-radius: 999px; box-shadow: 0 0.25rem 1rem rgba(0, 0, 0, 0.18); } .chat-recipient-list { max-height: 320px; overflow-y: auto; border: 1px solid var(--bs-border-color); border-radius: 0.5rem; padding: 0.5rem 0.75rem; } .chat-recipient-item[hidden] { display: none !important; } .chat-recipient-summary { min-height: 1.25rem; } // Schedule calendar styles (from schedule/index.blade.php) .schedule-month { table-layout: fixed; } .schedule-day { height: 110px; vertical-align: top; position: relative; } .schedule-day-link { display: inline-block; font-weight: 600; text-decoration: none; color: #0d6efd; } .schedule-dots { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; } .schedule-dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; border: 1px solid rgba(0, 0, 0, 0.1); } .schedule-outside { background: #f8f9fa; color: #9aa0a6; } .schedule-today { outline: 2px solid rgba(13, 110, 253, 0.5); outline-offset: -2px; } .schedule-legend-items { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center; } .schedule-legend-item { display: inline-flex; align-items: center; gap: 6px; font-size: 0.9rem; } .schedule-legend-name { white-space: nowrap; } .schedule-week-table { thead th { border-top: 1px solid #000; border-bottom: 1px solid #000; } tbody td { border-bottom-color: #000; } tbody tr.schedule-week-address-separator td { border-bottom-width: 1px; } tbody tr.schedule-week-day-end td { border-bottom-width: 2px; } tbody td.schedule-week-day-cell { border-bottom: 2px solid #000; } } // Table sortable header styles (from reports/index.blade.php) .sortable-header { cursor: pointer; user-select: none; } // Notification settings table (from partials/notification-settings-table.blade.php) .section-header-row { background-color: #d4edda; }