Update besar apk finance

This commit is contained in:
Wian Drs
2026-09-11 16:03:00 +07:00
parent d42483b350
commit 4ef15c22ae
897 changed files with 98056 additions and 15979 deletions
+901
View File
@@ -0,0 +1,901 @@
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");
:root {
--brand: #ee7800;
--brand-dark: #c85d00;
--brand-soft: #fff2e5;
--ink: #20242c;
--muted: #717784;
--line: #e7e9ee;
--canvas: #f5f6f8;
--surface: #fff;
--sidebar: #17191e;
--sidebar-soft: #24272e;
--radius: 12px;
--shadow: 0 5px 18px rgba(25, 29, 38, 0.07);
--sidebar-width: 258px;
--topbar-height: 72px;
--tap: 44px;
}
html {
background: var(--canvas);
}
body.app-v2 {
margin: 0;
background: var(--canvas);
color: var(--ink);
font-family: Inter, "Segoe UI", sans-serif;
font-size: 12px;
overflow-x: hidden;
}
.app-v2 * {
box-sizing: border-box;
}
.app-shell {
min-height: 100vh;
}
.app-sidebar {
position: fixed;
inset: 0 auto 0 0;
width: var(--sidebar-width);
z-index: 1030;
background: var(--sidebar);
color: #fff;
flex-direction: column;
border-right: 1px solid #ffffff0d;
}
.sidebar-brand,
.drawer-brand {
height: 76px;
display: flex;
align-items: center;
gap: 12px;
padding: 0 18px;
color: #fff;
text-decoration: none;
}
.brand-mark {
width: 40px;
height: 40px;
border-radius: 11px;
background: linear-gradient(145deg, var(--brand), #ff9d3f);
display: grid;
place-items: center;
box-shadow: 0 6px 16px #ee78004d;
flex: none;
}
.brand-mark img {
width: 27px;
height: 27px;
object-fit: contain;
}
.sidebar-brand strong,
.drawer-brand strong {
display: block;
font-size: 15px;
letter-spacing: 0.1px;
}
.sidebar-brand small,
.drawer-brand small {
display: block;
color: #a7abb3;
font-size: 10px;
letter-spacing: 1.1px;
text-transform: uppercase;
margin-top: 2px;
}
.sidebar-search {
height: 42px;
margin: 5px 14px 12px;
display: flex;
align-items: center;
gap: 9px;
padding: 0 12px;
background: #ffffff0a;
border: 1px solid #ffffff12;
border-radius: 10px;
color: #8d929c;
}
.sidebar-search input {
width: 100%;
height: 38px;
min-height: 0 !important;
border: 0;
outline: 0;
background: transparent;
color: #eee;
font-size: 12px;
}
.sidebar-search input::placeholder {
color: #777c86;
}
.sidebar-nav {
padding: 0 10px 16px;
overflow-y: auto;
overflow-x: hidden;
flex: 1;
scrollbar-width: thin;
scrollbar-color: #3a3e47 transparent;
}
.app-menu-item {
margin: 2px 0;
}
.nav-group {
border: 0;
}
.nav-group > summary {
list-style: none;
cursor: pointer;
}
.nav-group > summary::-webkit-details-marker {
display: none;
}
.nav-entry {
width: 100%;
min-height: 43px;
display: flex;
align-items: center;
gap: 10px;
padding: 7px 10px;
border-radius: 9px;
color: #b9bdc5 !important;
text-decoration: none !important;
font-weight: 500;
font-size: 12.5px;
transition:
background 0.16s,
color 0.16s;
}
.nav-entry:hover {
background: #ffffff0b;
color: #fff !important;
transform: none !important;
box-shadow: none !important;
}
.nav-entry.active,
.nav-group.is-active > summary {
background: linear-gradient(90deg, #ee780025, #ee78000a);
color: #fff !important;
}
.nav-entry.active {
box-shadow: inset 3px 0 var(--brand);
}
.nav-entry-icon {
width: 27px;
height: 27px;
border-radius: 7px;
display: grid;
place-items: center;
color: #9297a1;
font-size: 14px;
flex: none;
}
.nav-entry.active .nav-entry-icon,
.nav-group.is-active > summary .nav-entry-icon {
color: #ff9d3f;
}
.nav-entry-label {
flex: 1;
}
.nav-badge {
min-width: 20px;
height: 20px;
padding: 0 6px;
border-radius: 10px;
background: #d9363e;
color: #fff;
display: grid;
place-items: center;
font-size: 10px;
}
.nav-chevron {
font-size: 10px;
color: #70757e;
transition: transform 0.18s;
}
.nav-group[open] > summary .nav-chevron {
transform: rotate(180deg);
}
.nav-children {
margin: 2px 0 6px 23px;
padding: 2px 0 2px 18px;
border-left: 1px solid #343841;
}
.nav-child {
min-height: 34px;
display: flex;
align-items: center;
gap: 9px;
padding: 5px 9px;
color: #9499a3 !important;
text-decoration: none !important;
border-radius: 7px;
font-size: 11.5px;
}
.nav-child > span {
width: 4px;
height: 4px;
background: #555a64;
border-radius: 50%;
flex: none;
}
.nav-child:hover,
.nav-child.active {
background: #ffffff08;
color: #fff !important;
}
.nav-child.active > span {
background: var(--brand);
box-shadow: 0 0 0 3px #ee780025;
}
.sidebar-user {
margin: 10px 12px 14px;
padding: 10px;
display: flex;
align-items: center;
gap: 9px;
background: var(--sidebar-soft);
border: 1px solid #ffffff0a;
border-radius: 11px;
}
.user-avatar {
width: 34px;
height: 34px;
display: grid;
place-items: center;
border-radius: 9px;
background: var(--brand);
font-weight: 700;
}
.user-copy {
min-width: 0;
flex: 1;
}
.user-copy strong,
.user-copy small {
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.user-copy strong {
font-size: 11.5px;
}
.user-copy small {
font-size: 10px;
color: #8d929b;
}
.sidebar-user > a {
width: 30px;
height: 30px;
display: grid;
place-items: center;
color: #8d929b;
border-radius: 7px;
}
.sidebar-user > a:hover {
color: #fff;
background: #ffffff0c;
}
.app-workspace {
min-height: 100vh;
margin-left: var(--sidebar-width);
}
.app-topbar {
height: var(--topbar-height);
position: sticky;
top: 0;
z-index: 1020;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 24px;
background: #fffffff2;
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--line);
}
.topbar-leading,
.topbar-actions {
display: flex;
align-items: center;
gap: 10px;
}
.topbar-kicker {
display: block;
color: var(--muted);
font-size: 9px;
letter-spacing: 1.1px;
text-transform: uppercase;
margin-bottom: 2px;
}
.app-topbar h1 {
font-size: 18px;
line-height: 1.2;
margin: 0;
font-weight: 700;
}
.icon-button {
width: 40px;
height: 40px;
min-height: 40px !important;
display: grid;
place-items: center;
border: 1px solid var(--line);
border-radius: 10px;
background: #fff;
color: #535965;
text-decoration: none;
font-size: 16px;
}
.icon-button:hover {
background: var(--brand-soft);
border-color: #ffd2a8;
color: var(--brand-dark);
}
.quick-button {
background: var(--brand);
border-color: var(--brand);
color: #fff;
}
.quick-button:hover {
background: var(--brand-dark);
color: #fff;
}
.app-content {
min-height: calc(100vh - var(--topbar-height));
padding: 0 24px 30px;
}
.app-breadcrumb {
padding: 13px 1px;
background: transparent !important;
border: 0 !important;
position: static !important;
}
.app-breadcrumb .breadcrumb {
font-size: 11px;
color: var(--muted);
}
.app-breadcrumb a {
color: var(--brand-dark);
text-decoration: none;
}
.app-v2 .container,
.app-v2 .container-fluid {
max-width: none;
}
.app-content > .container,
.app-content > .container-fluid {
padding-left: 0 !important;
padding-right: 0 !important;
margin-top: 0 !important;
}
.app-v2 .card,
.app-v2 .modern-card,
.app-v2 .table-card {
border: 1px solid var(--line) !important;
border-radius: var(--radius) !important;
background: var(--surface);
box-shadow: var(--shadow) !important;
overflow: hidden;
}
.app-v2 .card-header {
padding: 13px 16px;
background: #fff !important;
border-bottom: 1px solid var(--line) !important;
color: var(--ink) !important;
font-weight: 600;
}
.app-v2 .card-body {
padding: 16px;
}
.app-v2 .summary-card {
border: 1px solid var(--line);
border-radius: var(--radius);
box-shadow: var(--shadow);
background: #fff;
}
.app-v2 .summary-card:hover {
transform: none;
border-color: #ffc58c;
}
.app-v2 .table-responsive,
.app-v2 .table-responsive-premium {
border: 1px solid var(--line);
border-radius: 10px;
background: #fff;
overflow: auto;
}
.app-v2 table,
.app-v2 .table,
.app-v2 .modern-table {
margin: 0;
border-collapse: collapse !important;
border-spacing: 0 !important;
}
.app-v2 .table > :not(caption) > * > *,
.app-v2 table.modern-table td {
padding: 11px 12px;
border-bottom: 1px solid #eceef2 !important;
vertical-align: middle;
}
.app-v2 .table thead th,
.app-v2 table.modern-table thead th {
padding: 10px 12px;
background: #f7f8fa !important;
color: #5b616d !important;
border: 0 !important;
border-bottom: 1px solid var(--line) !important;
border-radius: 0 !important;
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.55px;
white-space: nowrap;
}
.app-v2 .table tbody tr,
.app-v2 table.modern-table tbody tr {
background: #fff !important;
box-shadow: none !important;
transform: none !important;
}
.app-v2 .table tbody tr:hover,
.app-v2 table.modern-table tbody tr:hover {
background: #fffaf5 !important;
transform: none !important;
}
.app-v2 .form-label {
margin-bottom: 6px;
font-size: 11.5px;
font-weight: 600;
color: #4a505b;
}
.app-v2 .form-control,
.app-v2 .form-select {
min-height: 42px;
border: 1px solid #dfe2e7;
border-radius: 9px;
background-color: #fff;
font-size: 13px;
}
.app-v2 .form-control:focus,
.app-v2 .form-select:focus {
border-color: #f4a154;
box-shadow: 0 0 0 3px #ee780018;
}
.app-v2 .btn {
min-height: 38px;
border-radius: 8px;
font-size: 12px;
font-weight: 600;
box-shadow: none !important;
transform: none !important;
}
.app-v2 .btn-primary,
.app-v2 .btn-warning,
.app-v2 .btn-add,
.app-v2 .btn-eximport {
background: var(--brand) !important;
border-color: var(--brand) !important;
color: #fff !important;
}
.app-v2 .btn-primary:hover,
.app-v2 .btn-warning:hover,
.app-v2 .btn-add:hover,
.app-v2 .btn-eximport:hover {
background: var(--brand-dark) !important;
}
.app-v2 .modal-content {
border: 0;
border-radius: 14px;
box-shadow: 0 24px 70px #15171c40;
}
.app-v2 .modal-header {
padding: 15px 18px;
border-color: var(--line);
}
.app-v2 .modal-body {
padding: 18px;
}
.app-v2 .modal-footer {
border-color: var(--line);
}
.command-search {
position: relative;
}
.command-search i {
position: absolute;
left: 14px;
top: 50%;
transform: translateY(-50%);
color: #888;
z-index: 2;
}
.command-search input {
padding-left: 40px;
}
.quick-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.quick-action {
min-height: 88px;
padding: 12px;
border: 1px solid var(--line);
border-radius: 11px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 7px;
text-decoration: none;
color: var(--ink);
background: #fff;
}
.quick-action:hover {
border-color: #ffc58c;
background: var(--brand-soft);
color: var(--brand-dark);
}
.quick-action i {
font-size: 20px;
color: var(--brand);
}
.search-menu-results a {
border-color: var(--line) !important;
color: var(--ink);
border-radius: 7px;
}
.search-menu-results a:hover {
background: var(--brand-soft);
}
.global-loading {
position: fixed;
inset: 0;
z-index: 2050;
display: grid;
place-items: center;
background: #17191e35;
backdrop-filter: blur(2px);
}
.global-loading[hidden] {
display: none;
}
.loading-card {
display: flex;
align-items: center;
gap: 10px;
padding: 14px 18px;
background: #fff;
border-radius: 12px;
box-shadow: 0 15px 45px #1114;
font-weight: 600;
}
.loading-card .spinner-border {
width: 20px;
height: 20px;
color: var(--brand);
}
.dataTables_wrapper {
padding: 4px;
}
.dataTables_wrapper .row {
margin: 0 0 10px;
align-items: center;
}
.dataTables_wrapper .dataTables_filter input {
min-height: 36px;
border: 1px solid var(--line);
border-radius: 8px;
margin-left: 7px;
}
.dataTables_wrapper .dataTables_length select {
min-height: 34px;
border: 1px solid var(--line);
border-radius: 7px;
}
.page-item.active .page-link {
background: var(--brand);
border-color: var(--brand);
}
.page-link {
color: var(--brand-dark);
}
.select2-container .select2-selection--single {
height: 42px !important;
border-color: #dfe2e7 !important;
border-radius: 9px !important;
}
.select2-container .select2-selection--single .select2-selection__rendered {
line-height: 40px !important;
}
.select2-container .select2-selection--single .select2-selection__arrow {
height: 40px !important;
}
.ajax-error-toast {
position: fixed;
right: 18px;
bottom: 18px;
z-index: 3000;
max-width: 420px;
padding: 12px 15px;
background: #9f2630;
color: #fff;
border-radius: 10px;
box-shadow: 0 16px 35px #1114;
}
.mobile-action-bar {
display: none !important;
}
@media (max-width: 991.98px) {
:root {
--topbar-height: 64px;
}
.app-workspace {
margin-left: 0;
}
.app-topbar {
height: 64px;
padding: 0 14px;
}
.topbar-kicker {
display: none;
}
.app-topbar h1 {
font-size: 16px;
}
.app-content {
padding: 0 14px 82px;
}
.app-mobile-drawer {
width: min(88vw, 340px) !important;
background: var(--sidebar) !important;
color: #fff;
border: 0 !important;
border-radius: 0 !important;
padding: 0 !important;
}
.app-mobile-drawer .offcanvas-header {
height: 72px;
padding: 0 15px;
border-bottom: 1px solid #ffffff10;
}
.app-mobile-drawer .drawer-brand {
height: auto;
padding: 0;
}
.app-mobile-drawer .btn-close {
filter: invert(1);
opacity: 0.8;
}
.app-mobile-drawer .offcanvas-body {
padding: 8px 6px 20px;
}
.mobile-action-bar {
position: fixed;
left: 10px;
right: 10px;
bottom: 9px;
height: 60px;
z-index: 1040;
display: grid !important;
grid-template-columns: repeat(4, 1fr);
padding: 5px;
background: #fff;
border: 1px solid var(--line);
border-radius: 15px;
box-shadow: 0 10px 35px #20242c25;
}
.mobile-action-bar a,
.mobile-action-bar button {
min-height: 48px;
border: 0;
border-radius: 10px;
background: transparent;
color: #696f79;
text-decoration: none;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 1px;
font-size: 9px;
}
.mobile-action-bar i {
font-size: 17px;
color: var(--brand);
}
.mobile-action-bar a:hover,
.mobile-action-bar button:hover {
background: var(--brand-soft);
}
.app-v2 .modal-dialog {
margin: 8px;
}
.app-v2 .modal-content {
border-radius: 13px;
}
.ajax-error-toast {
left: 12px;
right: 12px;
bottom: 78px;
max-width: none;
}
}
@media (max-width: 767.98px) {
body.app-v2 {
font-size: 13px;
}
.app-content {
padding-left: 10px;
padding-right: 10px;
}
.app-breadcrumb {
padding: 10px 1px;
}
.app-breadcrumb .breadcrumb {
flex-wrap: nowrap;
overflow: auto;
white-space: nowrap;
}
.app-v2 .card-body {
padding: 12px;
}
.app-v2 .card-header {
padding: 11px 12px;
}
.app-v2 .row {
--bs-gutter-x: 12px;
}
.app-v2 .table-responsive {
border: 0;
border-radius: 0;
}
.app-v2 .responsive-detail-table:not(.dataTable) thead {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
}
.app-v2 .responsive-detail-table:not(.dataTable) tbody,
.app-v2 .responsive-detail-table:not(.dataTable) tr,
.app-v2 .responsive-detail-table:not(.dataTable) td {
display: block;
width: 100%;
}
.app-v2 .responsive-detail-table:not(.dataTable) tr {
margin: 8px 0;
border: 1px solid var(--line);
border-radius: 10px;
overflow: hidden;
}
.app-v2 .responsive-detail-table:not(.dataTable) td {
display: flex !important;
justify-content: space-between;
gap: 12px;
text-align: right !important;
}
.app-v2 .responsive-detail-table:not(.dataTable) td:before {
content: attr(data-label);
font-weight: 600;
text-align: left;
color: #5b616d;
}
.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dataTables_filter input {
width: 100%;
margin: 3px 0;
}
.quick-grid {
grid-template-columns: 1fr 1fr;
}
}
@media (min-width: 992px) {
.app-v2 .modal-dialog {
max-width: min(720px, calc(100vw - 40px));
}
.app-v2 .modal-dialog.modal-lg {
max-width: min(980px, calc(100vw - 50px));
}
.app-v2 .modal-dialog.modal-xl {
max-width: min(1200px, calc(100vw - 50px));
}
}
@media print {
.app-sidebar,
.app-topbar,
.app-breadcrumb,
.mobile-action-bar,
.btn,
form {
display: none !important;
}
.app-workspace {
margin: 0;
}
.app-content {
padding: 0;
}
.app-v2 .card {
border: 0 !important;
box-shadow: none !important;
}
}
/* Standar global modal: dialog selalu berada di tengah viewport. */
.app-v2 .modal-dialog.modal-dialog-centered {
min-height: calc(100% - 2rem);
}
.app-v2 .modal-dialog.modal-dialog-centered .modal-content {
width: 100%;
}
.app-v2 .approval-focus {
outline: 3px solid rgba(238, 120, 0, 0.42);
outline-offset: -2px;
background: #fff7ee !important;
animation: approval-focus-pulse 1.2s ease-in-out 2;
}
@keyframes approval-focus-pulse {
50% {
box-shadow: 0 0 0 7px rgba(238, 120, 0, 0.12);
}
}
.nav-badge.nav-badge-warning {
background: #f2b705;
color: #302400;
font-weight: 700;
}
.nav-badge.nav-badge-danger {
background: #d9363e;
color: #fff;
font-weight: 700;
}
/* Alias komponen lama yang masih dipakai view, dengan visual template baru. */
.app-v2 .btn-action {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 5px;
margin: 2px;
padding: 6px 10px;
border: 1px solid transparent;
border-radius: 8px;
text-decoration: none;
}
.app-v2 .btn-edit {
background: #fff7e8;
color: #9a5b00;
border-color: #f2c66d;
}
.app-v2 .btn-edit:hover {
background: #ffedc8;
color: #704100;
}
.app-v2 .btn-delete {
background: #fff0f1;
color: #b4232f;
border-color: #efadb2;
}
.app-v2 .btn-delete:hover {
background: #ffe0e3;
color: #8d1721;
}
.app-v2 .btn-detail {
background: #edf6ff;
color: #1769b0;
border-color: #a9d2f5;
}
.app-v2 .btn-detail:hover {
background: #dceeff;
color: #105487;
}
.app-v2 .btn-add,
.app-v2 .btn-eximport {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 7px 13px;
border-radius: 8px;
text-decoration: none;
}
+1
View File
@@ -0,0 +1 @@
/* Deprecated compatibility asset. Responsive application rules now live in app-final.css. */
+38
View File
@@ -0,0 +1,38 @@
.asset-page{--asset-blue:#1769e0;--asset-ink:#172033;--asset-muted:#687386;color:var(--asset-ink)}.asset-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.asset-hero h2{font-size:1.45rem;margin:2px 0 4px}.asset-hero p,.section-heading p{color:var(--asset-muted);margin:0}.eyebrow{font-size:.68rem;letter-spacing:.13em;color:#798397;font-weight:700}.asset-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.asset-metrics article{background:#fff;border:1px solid #e5e9f0;border-radius:14px;padding:16px;box-shadow:0 4px 16px rgba(22,32,51,.04)}.asset-metrics span,.asset-metrics small{display:block;color:var(--asset-muted);font-size:.78rem}.asset-metrics strong{display:block;font-size:1.18rem;margin:5px 0}.asset-tabs{display:flex;gap:7px;padding:6px;background:#fff;border:1px solid #e4e9f1;border-radius:14px;margin-bottom:14px;overflow:auto}.asset-tabs button{border:0;background:transparent;padding:10px 15px;border-radius:9px;color:#526077;white-space:nowrap}.asset-tabs button.active{background:var(--asset-blue);color:#fff;box-shadow:0 5px 13px rgba(23,105,224,.22)}.asset-tabs i{margin-right:6px}.asset-card{border:1px solid #e4e9f1;border-radius:14px;box-shadow:0 5px 18px rgba(25,36,60,.04);overflow:hidden}.asset-card .card-header{background:#fff;display:flex;align-items:center;justify-content:space-between;padding:14px 16px}.filter-grid{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:10px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin:18px 2px 12px}.section-heading h3{font-size:1.1rem;margin:0 0 3px}.status-pill{display:inline-flex;border-radius:20px;padding:4px 8px;font-size:.68rem;font-weight:700;background:#edf1f6;color:#526077}.status-submitted,.status-approved{background:#fff1c7;color:#8b6000}.status-capitalized,.status-posted,.status-active{background:#dff7ea;color:#087344}.status-rejected,.status-lost,.status-damaged,.status-disposed{background:#ffe2e4;color:#aa2530}.source-choice{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.source-choice input{position:absolute;opacity:0}.source-choice span{display:flex;flex-direction:column;border:1px solid #dfe5ee;border-radius:12px;padding:15px;cursor:pointer}.source-choice input:checked+span{border-color:var(--asset-blue);background:#f2f7ff;box-shadow:0 0 0 2px rgba(23,105,224,.1)}.source-choice i{font-size:1.25rem;color:var(--asset-blue)}.source-choice small,.form-hint{color:var(--asset-muted)}.form-section{border:1px solid #e6eaf0;border-radius:12px;padding:15px;margin-bottom:14px}.form-section h6{font-weight:700;margin-bottom:12px}.source-info{border-radius:10px;background:#f4f7fb;padding:11px;color:#536075}.file-grid{display:flex;flex-wrap:wrap;gap:10px}.file-add,.file-tile{width:92px;height:92px;border:1px dashed #cbd3df;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;overflow:visible;background:#fff}.file-add{cursor:pointer;color:#536075}.file-tile img{width:100%;height:100%;object-fit:cover;border-radius:9px}.file-tile .pdf-icon{font-size:2rem;color:#dc3545}.file-tile button{position:absolute;right:-7px;top:-7px;width:25px;height:25px;border-radius:50%;border:2px solid #fff;background:#e43844;color:#fff;z-index:2;line-height:18px}.report-controls{display:grid;grid-template-columns:2fr 1fr 1fr repeat(3,auto);gap:9px}.report-result{margin-top:15px;overflow:auto}.empty-state{text-align:center;color:#778197;padding:38px!important}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.detail-panel{border:1px solid #e3e8f0;border-radius:12px;padding:14px}.detail-panel h6{font-weight:700}.detail-kv{display:grid;grid-template-columns:150px 1fr;gap:6px 12px;font-size:.86rem}.detail-kv span:nth-child(odd){color:#718096}.timeline{border-left:2px solid #dde5ef;margin-left:7px;padding-left:16px}.timeline article{margin-bottom:13px}.timeline small{color:#718096}.action-grid{display:flex;gap:7px;flex-wrap:wrap}.money{text-align:right;font-variant-numeric:tabular-nums}#pdfModal iframe{width:100%;height:min(80vh,850px);border:0}.opname-line-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 2fr;gap:8px;align-items:center;padding:9px 0;border-bottom:1px solid #edf0f4}
@media(max-width:991.98px){.asset-metrics{grid-template-columns:1fr 1fr}.filter-grid,.report-controls{grid-template-columns:1fr 1fr}.detail-grid{grid-template-columns:1fr}.modal-dialog-scrollable{height:100%;margin:0;max-width:none}.modal-dialog-scrollable .modal-content{min-height:100%;border-radius:0}.opname-line-grid{grid-template-columns:1fr 1fr}.opname-line-grid>*:first-child{grid-column:1/-1}}
@media(max-width:575.98px){.asset-hero{align-items:flex-start;flex-direction:column}.asset-metrics,.filter-grid,.report-controls,.source-choice{grid-template-columns:1fr}.asset-tabs{position:sticky;top:0;z-index:3}.asset-tabs button span{font-size:.78rem}.asset-page{padding-bottom:72px}.detail-kv{grid-template-columns:1fr}.detail-kv span:nth-child(odd){margin-top:6px}}
#assetFormModal .modal-dialog{height:calc(100vh - 2rem);max-height:calc(100vh - 2rem)}#assetFormModal .modal-content,#assetFormModal form{height:100%;min-height:0}#assetFormModal form{display:flex;flex-direction:column}#assetFormModal .modal-header,#assetFormModal .modal-footer{flex:0 0 auto}#assetFormModal .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
@media(max-width:991.98px){#assetFormModal .modal-dialog{height:100%;max-height:100%;margin:0}#assetFormModal .modal-content{height:100vh;max-height:100vh}#assetFormModal .modal-body{padding-bottom:90px}}
/* Dialog transaksi yang dibuka dari Detail Aset dan tombol Buat Opname. */
body[data-page="fixed_assets"] .swal2-container{z-index:1095;padding:18px}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast){width:min(94vw,620px);max-height:calc(100vh - 36px);padding:0;border:1px solid #e2e8f0;border-radius:18px;overflow:hidden;box-shadow:0 24px 70px rgba(20,31,51,.22);font-size:.92rem}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-icon{width:3.7rem;height:3.7rem;margin:22px auto 8px;font-size:.85rem}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-title{padding:20px 24px 4px;color:#172033;font-size:1.2rem;font-weight:700;line-height:1.35}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-icon+.swal2-title{padding-top:8px}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-html-container{display:block;max-height:calc(100vh - 230px);margin:0;padding:14px 24px 18px;overflow-x:hidden;overflow-y:auto;color:#4c596d;text-align:left;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-html-container>input,
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-html-container>select,
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-html-container>textarea,
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-input,
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-select,
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-textarea,
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-file{display:block;width:100%;height:auto;min-height:44px;margin:0 0 12px;padding:10px 12px;border:1px solid #d7dee9;border-radius:10px;background:#fff;color:#172033;font:inherit;box-shadow:none;transition:border-color .15s,box-shadow .15s}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-textarea{min-height:92px;resize:vertical}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-file{padding:8px;background:#f8fafc;font-size:.84rem}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-input:focus,
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-select:focus,
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-textarea:focus{border-color:#1769e0;outline:0;box-shadow:0 0 0 3px rgba(23,105,224,.12)}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-input-label,
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-html-container label{display:block;margin:2px 0 6px!important;color:#344158;font-size:.78rem;font-weight:700;text-align:left}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .asset-swal-label{letter-spacing:.01em}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .select2-container{display:block;width:100%!important;margin-bottom:12px;text-align:left}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .select2-selection{min-height:44px;border-color:#d7dee9;border-radius:10px;padding:7px 9px}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-validation-message{margin:0 24px 10px;border-radius:9px;background:#fff0f1;color:#a51f2b;font-size:.8rem}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-actions{width:100%;margin:0;padding:14px 24px;border-top:1px solid #e7ebf1;background:#f8fafc;justify-content:flex-end;gap:8px}
body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-actions button{min-width:112px;margin:0;padding:10px 16px;border:0;border-radius:9px;font-size:.86rem;font-weight:700;box-shadow:none}
body[data-page="fixed_assets"] .swal2-confirm{background:#1769e0!important}
body[data-page="fixed_assets"] .swal2-cancel{background:#eef1f5!important;color:#3e4a5f!important}
#assetDetailActions{gap:8px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:575.98px){body[data-page="fixed_assets"] .swal2-container{padding:0;align-items:flex-end}body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast){width:100%;max-height:94vh;border-radius:18px 18px 0 0}body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-title{padding-left:18px;padding-right:18px}body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-html-container{max-height:calc(94vh - 190px);padding-left:18px;padding-right:18px}body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-actions{display:grid;grid-template-columns:1fr 1fr;padding:12px 18px calc(12px + env(safe-area-inset-bottom))}body[data-page="fixed_assets"] .swal2-popup:not(.swal2-toast) .swal2-actions button{width:100%;min-width:0}#assetDetailActions{justify-content:stretch}#assetDetailActions .btn{flex:1 1 calc(50% - 8px)}}
+11
View File
@@ -0,0 +1,11 @@
.inventory-hero{background:linear-gradient(125deg,#17253f,#263b62 62%,#ee7800);border-radius:20px;padding:22px 24px;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:20px;box-shadow:0 14px 32px rgba(23,37,63,.16)}
.inventory-hero h2{font-weight:750;font-size:1.3rem}.inventory-hero p{color:rgba(255,255,255,.78)}.inventory-kicker{font-size:.68rem;font-weight:800;letter-spacing:.16em;color:#ffd8ad}.inventory-scan-link{white-space:nowrap}
.inventory-module-nav{display:flex;gap:8px;overflow:auto;padding:7px;background:#fff;border:1px solid #e4e9f1;border-radius:15px;box-shadow:0 6px 18px rgba(27,39,60,.05);scrollbar-width:thin}.inventory-module-nav a{display:flex;align-items:center;gap:7px;padding:10px 13px;border-radius:10px;color:#536075;text-decoration:none;font-size:.82rem;font-weight:650;white-space:nowrap}.inventory-module-nav a:hover{background:#f5f7fb;color:#1e65e8}.inventory-module-nav a.active{background:#1f6ff2;color:#fff;box-shadow:0 5px 12px rgba(31,111,242,.22)}
.inventory-metrics .metric-card,.inventory-card{background:#fff;border:1px solid #e5eaf1;border-radius:16px;box-shadow:0 7px 22px rgba(32,45,68,.055)}.metric-card{padding:16px;height:100%;display:flex;flex-direction:column}.metric-icon{font-size:1.25rem;margin-bottom:13px}.metric-card strong{font-size:1.12rem;color:#1b2433}.metric-card small{color:#748096;margin-top:3px}
.inventory-card{overflow:hidden}.inventory-card-head{padding:16px 18px;border-bottom:1px solid #edf0f5;display:flex;align-items:center;justify-content:space-between;gap:12px}.inventory-card-head h5{font-size:.96rem;font-weight:750;margin:0;color:#202a3a}.inventory-card-head p{font-size:.78rem;color:#7a8597;margin:3px 0 0}.inventory-list a{display:flex;align-items:center;gap:12px;padding:13px 17px;border-bottom:1px solid #eef1f5;color:#273246;text-decoration:none}.inventory-list a:last-child{border:0}.inventory-list a:hover{background:#f8faff}.inventory-list strong,.inventory-list small{display:block}.inventory-list small{font-size:.75rem;color:#7b8799;margin-top:2px}.item-avatar{width:38px;height:38px;border-radius:11px;background:#eaf2ff;color:#1f6ff2;display:grid;place-items:center}.inventory-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:5px;padding:38px 20px;color:#8490a2}.inventory-empty i{font-size:1.5rem;color:#54af84}.inventory-loading{padding:22px;text-align:center;color:#657187}
.status-chip{display:inline-flex;padding:4px 8px;border-radius:20px;font-size:.66rem;font-weight:800;letter-spacing:.03em;background:#eef1f5;color:#596477}.status-draft{background:#eef1f5;color:#5e6878}.status-submitted,.status-reserved{background:#fff2cc;color:#936100}.status-approved,.status-active,.status-available{background:#dff4e9;color:#147447}.status-posted,.status-released,.status-consumed{background:#dceaff;color:#155cc1}.status-rejected,.status-reversed,.status-cancelled,.status-sold_out{background:#fde2e4;color:#ad2931}
.scan-product{border:1px solid #dfe6ef;border-radius:14px;padding:16px}.scan-product h5{font-size:.8rem;margin:12px 0}.scan-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.scan-grid span{font-size:.7rem;color:#798497}.scan-grid strong{display:block;font-size:.8rem;color:#283346;margin-top:2px}.scan-history{margin:14px 0 0;padding:12px 0 0 18px;border-top:1px solid #edf0f4}.scan-history li{margin-bottom:7px;font-size:.76rem}.scan-history span{display:block;color:#7b8697}
.inventory-toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.inventory-toolbar .form-label{font-size:.7rem;font-weight:700;color:#68758a}.inventory-toolbar .filter-field{min-width:150px}.inventory-table thead th{font-size:.67rem;text-transform:uppercase;letter-spacing:.06em;color:#69758a;background:#f7f9fc;white-space:nowrap}.inventory-table td{font-size:.8rem}.inventory-line-table select,.inventory-line-table input{min-width:115px}.inventory-line-table .line-item{min-width:240px}.inventory-balance-box{background:#f6f8fb;border:1px solid #e1e6ed;border-radius:12px;padding:12px}.inventory-balance-box div{display:flex;justify-content:space-between;font-size:.78rem;padding:3px 0}.document-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.document-meta span{font-size:.7rem;color:#778399}.document-meta strong{display:block;color:#263247;font-size:.82rem;margin-top:2px}.timeline-list{list-style:none;padding:0;margin:0}.timeline-list li{border-left:2px solid #dce5f2;padding:0 0 14px 15px;margin-left:5px;font-size:.78rem}.timeline-list li strong,.timeline-list li span{display:block}.timeline-list li span{color:#7c8798}
.inventory-operation-tabs{display:grid;grid-template-columns:repeat(7,minmax(125px,1fr));gap:8px;padding:8px;background:#fff;border:1px solid #e3e9f1;border-radius:16px;overflow:auto}.inventory-operation-tabs button{border:0;border-radius:11px;background:#f5f7fb;color:#526078;padding:11px 10px;display:flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;font-size:.78rem;font-weight:700}.inventory-operation-tabs button:hover{background:#eaf1fc;color:#1f65d7}.inventory-operation-tabs button.active{background:#1f6ff2;color:#fff;box-shadow:0 5px 12px rgba(31,111,242,.2)}
.inventory-attachments{display:flex;gap:10px;flex-wrap:wrap;padding-top:4px}.attachment-add,.attachment-tile{width:92px;height:92px;border:1px dashed #cbd4e1;border-radius:12px;background:#fff;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#607086;overflow:visible}.attachment-add{cursor:pointer}.attachment-add:hover{border-color:#1f6ff2;color:#1f6ff2;background:#f7faff}.attachment-add i{font-size:1.35rem}.attachment-add span,.attachment-tile small{font-size:.66rem;margin-top:4px}.attachment-tile img{width:100%;height:100%;object-fit:cover;border-radius:11px}.attachment-tile small{position:absolute;left:4px;right:4px;bottom:3px;background:rgba(255,255,255,.88);padding:2px;border-radius:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-file-icon{font-size:2rem;color:#d84b55}.remove-attachment{position:absolute;z-index:2;right:-8px;top:-8px;width:25px;height:25px;border-radius:50%;border:2px solid #fff;background:#dc3545;color:#fff;display:grid;place-items:center;padding:0;box-shadow:0 2px 7px rgba(0,0,0,.22)}
@media(max-width:767.98px){.inventory-hero{padding:18px;border-radius:15px;align-items:flex-start}.inventory-hero p{font-size:.78rem}.inventory-scan-link{padding:8px}.inventory-scan-link{font-size:0}.inventory-scan-link i{font-size:.8rem}.inventory-module-nav{margin-left:-4px;margin-right:-4px}.inventory-module-nav a{padding:9px 11px}.inventory-module-nav a span{display:none}.inventory-module-nav a.active span{display:inline}.inventory-operation-tabs{display:flex;margin-left:-4px;margin-right:-4px}.inventory-operation-tabs button{min-width:145px}.scan-grid,.document-meta{grid-template-columns:1fr}.inventory-card-head{align-items:flex-start}.modal.inventory-modal .modal-dialog{margin:0;max-width:none;height:100%}.modal.inventory-modal .modal-content{height:100%;border-radius:0}.modal.inventory-modal .modal-body{overflow:auto}.inventory-toolbar>*{width:100%}.inventory-toolbar .filter-field{min-width:100%}}
+206
View File
@@ -0,0 +1,206 @@
.invoice-editor-page .invoice-editor-grid,
.invoice-editor-page .invoice-editor-grid.is-creating {
grid-template-columns: minmax(310px, 360px) minmax(0, 1fr);
align-items: start;
}
.invoice-editor-main {
grid-column: 2;
grid-row: 1;
min-width: 0;
}
.invoice-editor-sidebar {
grid-column: 1;
grid-row: 1;
}
.invoice-editor-sidebar-inner {
position: sticky;
top: 82px;
display: grid;
gap: 12px;
}
.add-invoice-item-button {
min-height: 52px;
box-shadow: 0 8px 20px rgba(239, 125, 0, .18);
}
.invoice-sidebar-actions .card-body {
display: grid;
gap: 12px;
}
.sidebar-next-status small {
display: block;
margin-bottom: 3px;
color: #667085;
}
.sidebar-next-status b {
display: block;
line-height: 1.4;
}
.sidebar-action-buttons {
display: grid;
gap: 8px;
}
.sidebar-action-buttons .btn {
width: 100%;
}
.auto-rule-note,
.selected-customer-preview {
display: block;
margin-top: 12px;
padding: 10px 12px;
border-radius: 9px;
background: #f8fafc;
color: #667085;
font-size: 12px;
}
.invoice-item-modal .modal-content {
max-height: 92vh;
overflow: hidden;
}
.invoice-item-modal #invoiceLineForm {
display: flex;
flex: 1 1 auto;
flex-direction: column;
min-height: 0;
overflow: hidden;
}
.invoice-item-modal .modal-header,
.invoice-item-modal .modal-footer {
flex: 0 0 auto;
}
.invoice-item-modal .modal-body {
flex: 1 1 auto;
min-height: 0;
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: contain;
}
.invoice-item-modal .modal-header small { display: block; color: #667085; }
.invoice-item-modal .modal-body { padding: 20px; }
.invoice-item-modal label { margin-bottom: 5px; font-size: 12px; font-weight: 600; }
.invoice-item-modal .barcode-panel { min-height: 150px; }
.invoice-item-modal .selected-barcodes {
max-height: 220px;
overflow-y: auto;
padding-right: 4px;
}
.invoice-item-modal .line-type-switch {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.invoice-batch-common {
padding: 16px;
border: 1px solid #dbe5f0;
border-radius: 12px;
background: #f8fbff;
}
.invoice-batch-composer {
margin-top: 16px;
padding: 16px;
border: 1px solid #e4e7ec;
border-radius: 12px;
background: #fff;
}
.invoice-batch-list {
overflow: hidden;
border: 1px solid #e4e7ec;
border-radius: 12px;
}
.invoice-batch-list > div:first-child {
padding: 12px 14px 0;
}
.invoice-batch-list small,
.invoice-batch-list td small {
display: block;
color: #667085;
}
.invoice-batch-list .batch-empty-row td {
padding: 26px 12px;
color: #667085;
text-align: center;
}
.batch-live-summary {
display: flex;
flex-wrap: wrap;
gap: 8px 18px;
}
.batch-live-summary span {
display: grid;
gap: 2px;
min-width: 125px;
color: #667085;
font-size: 11px;
}
.batch-live-summary b,
.batch-live-summary strong {
color: #1d2939;
font-size: 14px;
}
.invoice-item-footer {
justify-content: space-between;
gap: 16px;
}
.invoice-item-footer .line-live-total {
min-width: 240px;
margin: 0;
}
.invoice-item-footer > div:last-child { display: flex; gap: 8px; }
.invoice-item-modal.editing-line .invoice-batch-list,
.invoice-item-modal.editing-line .batch-live-summary,
.invoice-item-modal.editing-line .batch-submit-button {
display: none !important;
}
.invoice-item-modal.editing-line .invoice-item-footer {
justify-content: flex-end;
}
@media (max-width: 991px) {
.invoice-editor-page .invoice-editor-grid,
.invoice-editor-page .invoice-editor-grid.is-creating { grid-template-columns: 1fr; }
.invoice-editor-main,
.invoice-editor-sidebar { grid-column: auto; grid-row: auto; }
.invoice-editor-sidebar { order: -1; }
.invoice-editor-sidebar-inner { position: static; }
}
@media (max-width: 767px) {
.invoice-item-modal .modal-content {
min-height: 100%;
max-height: 100dvh;
}
.invoice-item-footer { align-items: stretch; flex-direction: column; }
.invoice-item-footer .line-live-total,
.invoice-item-footer > div:last-child,
.invoice-item-footer .btn { width: 100%; }
.batch-live-summary { width: 100%; }
.batch-live-summary span { flex: 1 1 30%; min-width: 90px; }
.invoice-item-modal .line-type-switch { grid-template-columns: 1fr; }
}
+557
View File
@@ -0,0 +1,557 @@
.invoice-workspace {
padding: 20px;
background: #f4f6f9;
min-height: calc(100vh - 72px);
color: #1d2939;
}
.invoice-hero {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 18px;
margin-bottom: 8px;
}
.invoice-hero > div:first-child > span {
font-size: 11px;
letter-spacing: 0.14em;
color: #667085;
}
.invoice-hero h2 {
margin: 3px 0 2px;
font-weight: 700;
}
.invoice-hero p,
.editor-card .card-header small,
.invoice-list-card .card-header small {
display: block;
color: #667085;
}
.hero-actions {
display: flex;
gap: 8px;
flex-wrap: wrap;
}
.sales-section-nav {
display: flex;
gap: 7px;
padding: 7px;
margin-bottom: 16px;
background: #fff;
border: 1px solid #e4e7ec;
border-radius: 13px;
overflow-x: auto;
}
.sales-section-nav a {
display: flex;
align-items: center;
gap: 7px;
padding: 9px 13px;
border-radius: 8px;
color: #475467;
text-decoration: none;
white-space: nowrap;
}
.sales-section-nav a.active {
background: #ef7d00;
color: #fff;
}
.sales-section-nav b {
min-width: 19px;
padding: 1px 6px;
border-radius: 10px;
background: #dc3545;
color: #fff;
text-align: center;
font-size: 11px;
}
.invoice-metrics {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 12px;
margin-bottom: 16px;
}
.invoice-metrics article {
padding: 15px;
background: #fff;
border: 1px solid #e4e7ec;
border-radius: 12px;
}
.invoice-metrics small,
.invoice-metrics span {
display: block;
color: #667085;
}
.invoice-metrics strong {
display: block;
margin: 5px 0;
font-size: 20px;
}
.invoice-list-card,
.editor-card {
border: 1px solid #e4e7ec;
border-radius: 13px;
box-shadow: 0 5px 20px rgba(16, 24, 40, 0.04);
overflow: hidden;
}
.invoice-list-card > .card-header,
.editor-card > .card-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 14px 16px;
background: #fff;
}
.invoice-filters {
display: grid;
grid-template-columns: repeat(5, minmax(135px, 1fr)) auto;
gap: 10px;
align-items: end;
padding: 14px 16px;
background: #f8fafc;
border-top: 1px solid #eaecf0;
border-bottom: 1px solid #eaecf0;
}
.invoice-filters label,
.item-form-card label {
font-size: 12px;
font-weight: 600;
margin-bottom: 5px;
}
.filter-action {
display: flex;
gap: 6px;
}
.invoice-list-card th,
.item-list-card th {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #667085;
background: #f8fafc;
white-space: nowrap;
}
.invoice-list-card td small,
.item-list-card td small {
display: block;
color: #667085;
}
.invoice-table-actions {
display: flex;
gap: 5px;
flex-wrap: wrap;
min-width: 215px;
}
.invoice-status {
display: inline-flex;
padding: 4px 9px;
border-radius: 15px;
font-size: 11px;
font-weight: 700;
background: #eef2f6;
color: #344054;
}
.status-draft {
background: #e0f2fe;
color: #026aa2;
}
.status-submitted {
background: #fef0c7;
color: #b54708;
}
.status-posted {
background: #dcfae6;
color: #067647;
}
.status-rejected {
background: #fee4e2;
color: #b42318;
}
#invoicePdfModal iframe {
width: 100%;
height: min(84vh, 940px);
border: 0;
}
#invoicePdfModal .modal-content {
max-height: 94vh;
}
.invoice-progress {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 2px;
margin-bottom: 15px;
background: #eaecf0;
border-radius: 11px;
overflow: hidden;
}
.invoice-progress span {
padding: 11px;
text-align: center;
background: #f8fafc;
color: #667085;
font-size: 12px;
}
.invoice-progress span.done {
background: #ecfdf3;
color: #067647;
font-weight: 700;
}
.invoice-editor-grid {
display: grid;
grid-template-columns: minmax(330px, 37%) minmax(0, 63%);
gap: 15px;
align-items: start;
}
.invoice-editor-grid.is-creating {
grid-template-columns: minmax(360px, 42%) minmax(0, 58%);
}
.invoice-editor-left {
display: grid;
gap: 15px;
}
.editor-card .card-body {
padding: 16px;
}
.disabled-card .card-body,
.invoice-empty {
min-height: 180px;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
text-align: center;
color: #667085;
}
.disabled-card i,
.invoice-empty i {
font-size: 36px;
color: #98a2b3;
margin-bottom: 8px;
}
.invoice-rule-list {
display: grid;
gap: 0;
margin: 0;
}
.invoice-rule-list > div {
display: flex;
justify-content: space-between;
gap: 15px;
padding: 8px 0;
border-bottom: 1px solid #eaecf0;
}
.invoice-rule-list dt {
color: #667085;
font-weight: 500;
}
.invoice-rule-list dd {
text-align: right;
font-weight: 600;
margin: 0;
}
.invoice-note {
margin-top: 12px;
padding: 10px;
border-radius: 9px;
background: #f8fafc;
}
.invoice-note small {
display: block;
color: #667085;
}
.line-type-switch {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
}
.line-type-switch input {
position: absolute;
opacity: 0;
}
.line-type-switch span {
display: flex;
align-items: center;
justify-content: center;
gap: 7px;
padding: 10px;
border: 1px solid #d0d5dd;
border-radius: 9px;
cursor: pointer;
font-size: 12px;
}
.line-type-switch input:checked + span {
border-color: #ef7d00;
background: #fff6ed;
color: #b54708;
font-weight: 700;
}
.form-text {
font-size: 11px;
color: #667085;
}
.barcode-panel {
padding: 12px;
border: 1px solid #e4e7ec;
border-radius: 10px;
background: #f8fafc;
}
.barcode-scan {
display: flex;
gap: 6px;
}
.selected-barcodes {
display: grid;
gap: 6px;
margin-top: 9px;
}
.selected-barcode {
display: grid;
grid-template-columns: minmax(0, 1fr) 90px 30px;
gap: 7px;
align-items: center;
padding: 7px;
background: #fff;
border: 1px solid #e4e7ec;
border-radius: 8px;
}
.selected-barcode small {
display: block;
color: #667085;
overflow: hidden;
text-overflow: ellipsis;
}
.selected-barcode button {
border: 0;
background: transparent;
color: #dc3545;
}
.line-live-total {
display: flex;
justify-content: space-between;
align-items: center;
margin: 15px 0 10px;
padding: 11px;
border-radius: 9px;
background: #fff6ed;
color: #7a2e0e;
}
.item-list-card {
min-height: 520px;
}
.item-list-card > .card-body {
padding: 0;
}
.item-list-card .dataTables_wrapper {
padding: 12px;
}
.count-badge {
padding: 4px 9px;
background: #eef2f6;
border-radius: 12px;
font-size: 11px;
}
.invoice-summary {
margin-left: auto;
width: min(430px, 100%);
padding: 14px 18px;
}
.invoice-summary > div {
display: flex;
justify-content: space-between;
padding: 5px 0;
}
.invoice-summary .grand {
margin-top: 6px;
padding-top: 10px;
border-top: 2px solid #e4e7ec;
font-size: 17px;
}
.editor-actions {
position: sticky;
bottom: 10px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-top: 12px;
padding: 13px 15px;
background: #fff;
border: 1px solid #e4e7ec;
border-radius: 12px;
box-shadow: 0 8px 25px rgba(16, 24, 40, 0.12);
z-index: 4;
}
.editor-actions small {
display: block;
color: #667085;
}
.editor-actions > div:last-child {
display: flex;
gap: 7px;
flex-wrap: wrap;
}
.money-input {
text-align: right;
}
.barcode-cell {
max-width: 220px;
white-space: normal;
}
.barcode-cell span {
display: block;
font-size: 11px;
}
.dataTables_processing {
z-index: 5;
}
.select2-container {
width: 100% !important;
}
@media (max-width: 1199px) {
.invoice-filters {
grid-template-columns: repeat(3, 1fr);
}
.invoice-editor-grid,
.invoice-editor-grid.is-creating {
grid-template-columns: 40% 60%;
}
}
@media (max-width: 991px) {
.invoice-editor-grid,
.invoice-editor-grid.is-creating {
grid-template-columns: 1fr;
}
.invoice-editor-left {
order: 1;
}
.invoice-editor-right {
order: 2;
}
.invoice-metrics {
grid-template-columns: repeat(2, 1fr);
}
.invoice-progress {
overflow-x: auto;
grid-template-columns: repeat(4, minmax(155px, 1fr));
}
.item-list-card {
min-height: 360px;
}
}
@media (max-width: 767px) {
.invoice-workspace {
padding: 12px;
}
.invoice-hero {
flex-direction: column;
}
.hero-actions,
.hero-actions .btn {
width: 100%;
}
.invoice-filters {
display: none;
grid-template-columns: 1fr 1fr;
}
.invoice-filters.open {
display: grid;
}
.filter-action {
grid-column: 1/-1;
}
.invoice-metrics {
grid-template-columns: 1fr 1fr;
}
.invoice-metrics article {
padding: 12px;
}
.invoice-metrics strong {
font-size: 16px;
}
.line-type-switch {
grid-template-columns: 1fr;
}
.editor-actions {
align-items: stretch;
flex-direction: column;
bottom: 66px;
}
.editor-actions > div:last-child,
.editor-actions .btn,
.editor-actions a {
width: 100%;
}
.invoice-rule-list > div {
flex-direction: column;
gap: 2px;
}
.invoice-rule-list dd {
text-align: left;
}
.modal-dialog {
margin: 0;
max-width: none;
height: 100%;
}
.modal-content {
min-height: 100%;
border-radius: 0;
}
}
@media (max-width: 767px) {
#invoiceTable thead,
#invoiceLinesTable thead {
display: none;
}
#invoiceTable,
#invoiceTable tbody,
#invoiceTable tr,
#invoiceTable td,
#invoiceLinesTable,
#invoiceLinesTable tbody,
#invoiceLinesTable tr,
#invoiceLinesTable td {
display: block;
width: 100% !important;
}
#invoiceTable tbody tr,
#invoiceLinesTable tbody tr {
margin: 10px 0;
padding: 8px;
border: 1px solid #e4e7ec;
border-radius: 11px;
background: #fff;
}
#invoiceTable tbody td,
#invoiceLinesTable tbody td {
position: relative;
min-height: 34px;
padding: 7px 8px 7px 42% !important;
border: 0;
border-bottom: 1px dashed #eaecf0;
text-align: left !important;
white-space: normal;
}
#invoiceTable tbody td:last-child,
#invoiceLinesTable tbody td:last-child {
border-bottom: 0;
}
#invoiceTable tbody td:before,
#invoiceLinesTable tbody td:before {
content: attr(data-label);
position: absolute;
left: 8px;
top: 8px;
width: 37%;
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
color: #667085;
}
.invoice-table-actions {
min-width: 0;
}
.item-list-card .dataTables_wrapper {
padding: 7px;
}
}
+3
View File
@@ -0,0 +1,3 @@
.receivable-workspace{padding:20px;background:#f4f6f9;min-height:calc(100vh - 72px);color:#1d2939}.receivable-grid{display:grid;grid-template-columns:minmax(350px,42%) minmax(0,58%);gap:14px}.receivable-card{border:1px solid #e4e7ec;border-radius:13px;box-shadow:0 5px 20px rgba(16,24,40,.04);overflow:hidden}.receivable-card>.card-header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:#fff}.receivable-card>.card-header small{display:block;color:#667085}.receivable-card>.card-body{padding:16px}.allocation-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:14px 0 9px;color:#667085;font-size:12px}.allocation-toolbar>div{display:flex;gap:5px}.invoice-allocation-list{display:grid;gap:8px;max-height:560px;overflow:auto}.invoice-allocation{padding:12px;border:1px solid #e4e7ec;border-radius:10px;background:#fff}.invoice-allocation.is-overdue{border-color:#fda29b;background:#fffafa}.invoice-allocation-head{display:flex;justify-content:space-between;gap:10px}.invoice-allocation-head small,.invoice-allocation-meta{display:block;color:#667085}.invoice-allocation-meta{display:flex;justify-content:space-between;margin:8px 0;font-size:12px}.invoice-allocation-input{display:grid;grid-template-columns:1fr 150px;gap:8px;align-items:center;padding-top:8px;border-top:1px solid #eaecf0}.invoice-allocation-input input{text-align:right}.ar-empty{min-height:130px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px;color:#667085;text-align:center}.ar-empty i{font-size:29px;color:#98a2b3}.source-title{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:17px 0 8px}.source-title small{display:block;color:#667085}.payment-source-row{display:grid;grid-template-columns:minmax(0,1fr) 160px 38px;gap:7px;margin-bottom:8px}.payment-source-row .source-amount{text-align:right}.remove-payment-source{border:1px solid #fda29b;border-radius:8px;background:#fff;color:#d92d20}.payment-balance{margin-top:13px;padding:12px;border:1px solid #e4e7ec;border-radius:10px;background:#f8fafc}.payment-balance>div{display:flex;justify-content:space-between;padding:4px}.payment-balance .difference{margin-top:4px;padding-top:9px;border-top:1px solid #d0d5dd}.payment-balance .is-negative{color:#d92d20}.payment-balance .is-positive{color:#b54708}.payment-attachment-grid{display:flex;flex-wrap:wrap;gap:9px}.attachment-add,.payment-file-tile{position:relative;width:92px;height:92px;border:1px dashed #98a2b3;border-radius:10px;background:#fff;overflow:visible}.attachment-add{display:flex;align-items:center;justify-content:center;flex-direction:column;color:#475467}.payment-file-tile{border-style:solid}.payment-file-tile img{width:100%;height:100%;object-fit:cover;border-radius:9px}.payment-file-tile .pdf-icon{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#d92d20}.payment-file-tile .pdf-icon i{font-size:28px}.payment-file-tile .file-remove{position:absolute;z-index:3;right:-7px;top:-7px;width:23px;height:23px;border:2px solid #fff;border-radius:50%;background:#d92d20;color:#fff;line-height:17px}.payment-file-open{position:absolute;inset:0;border:0;background:transparent}.payment-file-tile small{position:absolute;bottom:2px;left:3px;right:3px;padding:2px;background:rgba(255,255,255,.85);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:9px}.payment-history-list{display:grid;gap:8px}.payment-history-row{display:grid;grid-template-columns:160px minmax(0,1fr) 150px auto;gap:12px;align-items:center;padding:11px;border:1px solid #e4e7ec;border-radius:9px}.payment-history-row small{display:block;color:#667085}#paymentPreviewModal iframe,#paymentPreviewModal img{display:none;width:100%;height:min(84vh,920px);border:0;object-fit:contain;background:#1d2939}#paymentPreviewModal .modal-content{max-height:94vh}
@media(max-width:991px){.receivable-grid{grid-template-columns:1fr}.invoice-allocation-list{max-height:none}}
@media(max-width:767px){.receivable-workspace{padding:12px}.allocation-toolbar{align-items:flex-start;flex-direction:column}.invoice-allocation-input{grid-template-columns:1fr}.payment-source-row{grid-template-columns:minmax(0,1fr) 110px 38px}.payment-history-row{grid-template-columns:1fr}.receivable-card table{min-width:800px}#paymentPreviewModal .modal-dialog{margin:0;max-width:none;height:100%}#paymentPreviewModal .modal-content{min-height:100%;border-radius:0}}
+267
View File
@@ -0,0 +1,267 @@
.sales-page {
padding: 20px;
background: #f4f6f9;
min-height: calc(100vh - 70px);
}
.sales-hero,
.card-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.sales-hero span {
font-size: 11px;
letter-spacing: 0.14em;
color: #667085;
}
.sales-hero h2 {
margin: 3px 0;
}
.sales-hero p,
.card-header small,
td small {
display: block;
color: #667085;
}
.sales-metrics {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 12px;
margin: 18px 0;
}
.sales-metrics article {
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 12px;
padding: 16px;
}
.sales-metrics strong {
display: block;
font-size: 20px;
margin: 5px 0;
}
.sales-metrics span {
font-size: 12px;
color: #667085;
}
.sales-tabs {
display: flex;
gap: 8px;
background: #fff;
border: 1px solid #e5e7eb;
padding: 7px;
border-radius: 12px;
margin-bottom: 15px;
overflow: auto;
}
.sales-tabs button,
.sales-tabs a {
border: 0;
background: transparent;
color: #475467;
padding: 10px 14px;
border-radius: 8px;
white-space: nowrap;
text-decoration: none;
}
.sales-tabs .active {
background: #0d6efd;
color: #fff;
}
.sales-tabs b {
background: #f79009;
color: #fff;
border-radius: 10px;
padding: 1px 6px;
margin-left: 5px;
}
.sales-page .card {
border: 1px solid #e5e7eb;
border-radius: 12px;
box-shadow: 0 5px 18px rgba(16, 24, 40, 0.04);
}
.sales-page .card-header {
background: #fff;
padding: 15px;
}
.sales-page th {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #667085;
background: #f8fafc;
}
.actions {
min-width: 260px;
}
.actions .btn {
margin: 2px;
}
.status {
display: inline-block;
padding: 4px 8px;
border-radius: 14px;
font-size: 11px;
font-weight: 700;
background: #eef2f6;
}
.status-posted,
.status-completed {
background: #dcfae6;
color: #067647;
}
.status-submitted,
.status-received {
background: #fef0c7;
color: #b54708;
}
.status-draft {
background: #e0f2fe;
color: #026aa2;
}
.empty {
padding: 40px !important;
text-align: center;
color: #667085;
}
.modal-dialog-scrollable .modal-content {
max-height: 92vh;
}
.invoice-head,
.line-builder {
border: 1px solid #e5e7eb;
border-radius: 10px;
padding: 14px;
margin-bottom: 15px;
}
.line-builder h6 {
margin-bottom: 12px;
}
.barcode-choices {
display: flex;
gap: 8px;
flex-wrap: wrap;
margin-top: 10px;
}
.barcode-choices label {
border: 1px solid #d0d5dd;
border-radius: 8px;
padding: 6px 10px;
}
.invoice-total {
display: flex;
justify-content: flex-end;
gap: 30px;
border-top: 2px solid #e5e7eb;
padding: 14px;
font-size: 18px;
}
.payment-balance {
background: #f8fafc;
border: 1px solid #e5e7eb;
border-radius: 9px;
padding: 12px;
margin-top: 12px;
}
.payment-balance div {
display: flex;
justify-content: space-between;
}
.file-picker {
display: flex;
gap: 8px;
flex-wrap: wrap;
}
.file-picker > label,
.file-thumb {
width: 84px;
height: 84px;
border: 1px dashed #98a2b3;
border-radius: 9px;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
position: relative;
overflow: visible;
}
.file-thumb img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 9px;
}
.file-thumb button {
position: absolute;
right: -7px;
top: -7px;
border: 0;
border-radius: 50%;
background: #dc3545;
color: #fff;
width: 23px;
height: 23px;
z-index: 2;
}
#pdfModal iframe {
width: 100%;
height: min(82vh, 900px);
border: 0;
}
.detail-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 12px;
}
.detail-card {
border: 1px solid #e5e7eb;
border-radius: 10px;
padding: 14px;
}
.detail-card.wide {
grid-column: 1/-1;
}
.return-row {
border: 1px solid #e5e7eb;
border-radius: 9px;
padding: 10px;
margin-bottom: 8px;
}
.money-field {
text-align: right;
}
@media (max-width: 767px) {
.sales-page {
padding: 12px;
}
.sales-hero {
align-items: flex-start;
}
.sales-metrics {
grid-template-columns: repeat(2, 1fr);
}
.sales-tabs button,
.sales-tabs a {
padding: 9px;
}
.modal-dialog {
margin: 0;
max-width: none;
height: 100%;
}
.modal-content {
min-height: 100%;
border-radius: 0;
}
.detail-grid {
grid-template-columns: 1fr;
}
.actions {
min-width: 220px;
}
.sales-page td,
.sales-page th {
white-space: nowrap;
}
}
+121 -1124
View File
File diff suppressed because it is too large Load Diff
+10
View File
@@ -0,0 +1,10 @@
.tech-shell{--tech-navy:#172845;--tech-orange:#f47c00;--tech-border:#dfe5ee;--tech-muted:#68748a}.tech-subnav{display:flex;gap:.45rem;overflow-x:auto;background:#fff;border:1px solid var(--tech-border);border-radius:14px;padding:.5rem;margin-bottom:1rem;scrollbar-width:thin}.tech-subnav a{display:flex;align-items:center;gap:.45rem;white-space:nowrap;text-decoration:none;color:#41506a;padding:.65rem .85rem;border-radius:9px;font-weight:600}.tech-subnav a.active{background:var(--tech-navy);color:#fff}.tech-subnav .badge{background:#dc3545}.tech-summary{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:.75rem}.tech-stat,.tech-card{background:#fff;border:1px solid var(--tech-border);border-radius:14px;box-shadow:0 5px 18px rgba(31,45,72,.045)}.tech-stat{padding:1rem}.tech-stat small{display:block;color:var(--tech-muted);margin-bottom:.25rem}.tech-stat strong{font-size:1.5rem;color:var(--tech-navy)}.tech-card{padding:1rem;margin-top:1rem}.tech-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.tech-card-head h5{margin:0;color:#202b3c}.tech-card-head p{margin:.2rem 0 0;color:var(--tech-muted);font-size:.88rem}.tech-scan{display:grid;grid-template-columns:1fr auto;gap:.65rem}.tech-scan input{min-height:48px;font-size:1rem}.tech-scan-result{border:1px dashed #bdc9da;border-radius:12px;padding:1rem;margin-top:1rem}.tech-identity{display:grid;grid-template-columns:2fr repeat(4,1fr);gap:.75rem}.tech-kv{background:#f7f9fc;border-radius:9px;padding:.7rem}.tech-kv small{display:block;color:var(--tech-muted)}.tech-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.8rem}.tech-actions .btn{min-height:40px}.tech-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem}.tech-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.tech-form-grid .full{grid-column:1/-1}.tech-table-wrap{overflow-x:auto}.tech-table{min-width:760px;margin:0}.tech-table th{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:#5d6980;background:#f6f8fb}.tech-empty{text-align:center;color:var(--tech-muted);padding:2rem}.tech-file-box{display:flex;gap:.65rem;flex-wrap:wrap}.tech-add-file,.tech-thumb{width:82px;height:82px;border-radius:10px}.tech-add-file{display:grid;place-items:center;border:2px dashed #bdc7d6;background:#fff;color:#506078;cursor:pointer}.tech-thumb{position:relative;border:1px solid #dce2eb;background:#f4f6f9;overflow:visible}.tech-thumb img,.tech-thumb .tech-pdf{width:100%;height:100%;object-fit:cover;border-radius:9px;display:grid;place-items:center;cursor:pointer}.tech-thumb button{position:absolute;right:-7px;top:-7px;width:24px;height:24px;border:0;border-radius:50%;background:#dc3545;color:#fff;z-index:3;line-height:1}.tech-modal-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}.tech-modal-summary>div{border:1px solid var(--tech-border);border-radius:9px;padding:.65rem}.tech-modal-summary small{display:block;color:var(--tech-muted)}.tech-owner-customer{color:#7c3aed}.tech-owner-company{color:#087f5b}.tech-local-loading{position:absolute;inset:0;background:rgba(255,255,255,.82);display:none;z-index:5;place-items:center;border-radius:14px}.tech-card.is-loading{position:relative}.tech-card.is-loading .tech-local-loading{display:grid}.tech-step-label{font-size:.75rem;font-weight:700;color:var(--tech-orange);letter-spacing:.06em;text-transform:uppercase}.tech-status{display:inline-flex;padding:.2rem .5rem;border-radius:999px;background:#eaf1ff;color:#2456a6;font-size:.75rem}.tech-warning{background:#fff7df;border:1px solid #ffe2a2;border-radius:10px;padding:.75rem;color:#72520b}.tech-check{display:flex;gap:.5rem;align-items:flex-start}.tech-check input{margin-top:.28rem}.tech-doc-actions{display:flex;gap:.35rem}.tech-doc-actions .btn{white-space:nowrap}
@media(max-width:1100px){.tech-summary{grid-template-columns:repeat(3,1fr)}.tech-identity{grid-template-columns:repeat(3,1fr)}}
@media(max-width:767.98px){.tech-summary{grid-template-columns:repeat(2,1fr)}.tech-two,.tech-form-grid{grid-template-columns:1fr}.tech-identity,.tech-modal-summary{grid-template-columns:1fr 1fr}.tech-card{padding:.8rem}.tech-card-head{display:block}.tech-card-head .btn{margin-top:.6rem;width:100%}.tech-scan{grid-template-columns:1fr}.tech-scan .btn{min-height:46px}.modal.tech-modal .modal-dialog{margin:0;max-width:none;height:100%}.modal.tech-modal .modal-content{min-height:100%;border:0;border-radius:0}.modal.tech-modal .modal-body{overflow:auto}.tech-actions .btn{flex:1 1 46%}}
@media(max-width:420px){.tech-identity,.tech-modal-summary{grid-template-columns:1fr}.tech-summary{grid-template-columns:1fr 1fr}.tech-stat{padding:.75rem}.tech-stat strong{font-size:1.15rem}}
.tech-bulk-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.tech-bulk-action{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:.75rem;text-align:left;align-items:center;border:1px solid var(--tech-border);border-radius:12px;background:#fff;color:#33435d;padding:.9rem;min-height:78px}.tech-bulk-action i{grid-row:1/3;font-size:1.45rem;color:var(--tech-orange)}.tech-bulk-action strong,.tech-bulk-action small{display:block}.tech-bulk-action small{color:var(--tech-muted)}.tech-bulk-action.active{border-color:var(--tech-navy);background:var(--tech-navy);color:#fff;box-shadow:0 8px 20px rgba(23,40,69,.15)}.tech-bulk-action.active small,.tech-bulk-action.active i{color:#fff}.tech-search-results{margin-top:.6rem;border:1px solid var(--tech-border);border-radius:12px;background:#fff;box-shadow:0 12px 26px rgba(22,38,65,.1);overflow:hidden;max-height:320px;overflow-y:auto}.tech-search-option{width:100%;border:0;border-bottom:1px solid #edf0f5;background:#fff;padding:.75rem .9rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;text-align:left}.tech-search-option:last-child{border-bottom:0}.tech-search-option:hover,.tech-search-option:focus{background:#f2f6fd}.tech-search-option span,.tech-search-option small{display:block}.tech-search-option>span:last-child{text-align:right;white-space:nowrap}.tech-search-option small{color:var(--tech-muted)}.tech-bulk-submit{position:sticky;bottom:.75rem;z-index:10;margin-top:1rem;padding:.85rem 1rem;border:1px solid #ccd5e2;border-radius:14px;background:rgba(255,255,255,.96);box-shadow:0 10px 28px rgba(17,31,52,.13);display:flex;align-items:center;justify-content:space-between;gap:1rem;backdrop-filter:blur(8px)}.tech-bulk-submit small{display:block;color:var(--tech-muted)}
@media(max-width:767.98px){.tech-bulk-actions{grid-template-columns:1fr}.tech-bulk-submit{bottom:0;border-radius:12px 12px 0 0;display:block}.tech-bulk-submit .btn{width:100%;margin-top:.65rem}}
.tech-search-option{color:#33435d;text-decoration:none}.tech-search-option:hover{color:#172845}
.tech-technician-stock{border:1px solid var(--tech-border);border-radius:12px;background:#fff;overflow:hidden}.tech-stock-toolbar,.tech-selected-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem .9rem}.tech-stock-toolbar{background:#f7f9fc;border-bottom:1px solid var(--tech-border)}.tech-stock-toolbar small,.tech-selected-head small{display:block;color:var(--tech-muted)}.tech-stock-list{max-height:360px;overflow:auto}.tech-stock-list thead{position:sticky;top:0;z-index:2}.tech-stock-check{width:1.1rem;height:1.1rem;cursor:pointer}.tech-stock-row-selected{background:#f0f7ff!important}
@media(max-width:767.98px){.tech-stock-toolbar,.tech-selected-head{align-items:flex-start;flex-direction:column}.tech-stock-toolbar>div:last-child{width:100%}.tech-stock-toolbar .btn{flex:1}}
.tech-inline-search{display:flex;gap:.5rem}.tech-inline-search .form-control{min-width:0}.tech-selection-info{min-height:42px;border:1px solid var(--tech-border);border-radius:10px;background:#f7f9fc;padding:.6rem .75rem;color:#526078;font-size:.85rem}.tech-selection-info strong{color:var(--tech-navy)}