Ergänzt die lesende Historien-API mit Verlaufsanzeige und ordnet Auftragskunden dem effektiven Zahler zu. Enthält VS-Code-Debugkonfiguration, Dokumentation und Regressionstests. Validiert mit Frontend-Build, 76 Backend-Tests und 25 Browsertests. Live-Datenbankprüfung wegen fehlender Erreichbarkeit offen.
3048 lines
51 KiB
CSS
3048 lines
51 KiB
CSS
:root {
|
|
font-family: Arial, Helvetica, sans-serif;
|
|
color: #24233b;
|
|
background: #f3f4f9;
|
|
font-synthesis: none;
|
|
font-size: 13px;
|
|
line-height: 1.45;
|
|
font-weight: 400;
|
|
--purple: #4031a0;
|
|
--purple-dark: #272062;
|
|
--border: #e7e7f0;
|
|
--muted: #858596;
|
|
--ink: #26253c;
|
|
--surface: #fff;
|
|
--soft: #f5f4fc;
|
|
}
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
body {
|
|
margin: 0;
|
|
}
|
|
button,
|
|
input,
|
|
textarea,
|
|
select {
|
|
font: inherit;
|
|
}
|
|
button,
|
|
a,
|
|
input,
|
|
select,
|
|
textarea {
|
|
-webkit-tap-highlight-color: transparent;
|
|
}
|
|
button {
|
|
cursor: pointer;
|
|
}
|
|
button:disabled {
|
|
cursor: not-allowed;
|
|
opacity: 0.5;
|
|
}
|
|
button,
|
|
a {
|
|
transition:
|
|
background 0.15s,
|
|
color 0.15s,
|
|
border-color 0.15s;
|
|
}
|
|
button {
|
|
color: inherit;
|
|
}
|
|
a {
|
|
color: var(--purple);
|
|
text-decoration: none;
|
|
}
|
|
button:focus-visible,
|
|
a:focus-visible,
|
|
input:focus-visible,
|
|
select:focus-visible,
|
|
textarea:focus-visible,
|
|
tr:focus-visible {
|
|
outline: 3px solid #afa3ef;
|
|
outline-offset: 2px;
|
|
}
|
|
input,
|
|
textarea,
|
|
select {
|
|
border: 1px solid #dedee9;
|
|
border-radius: 6px;
|
|
background: #fff;
|
|
color: #302f43;
|
|
padding: 9px 10px;
|
|
min-width: 0;
|
|
outline-offset: 0;
|
|
transition: border-color 0.15s;
|
|
}
|
|
input:focus,
|
|
textarea:focus,
|
|
select:focus {
|
|
border-color: #8873d4;
|
|
}
|
|
input::placeholder,
|
|
textarea::placeholder {
|
|
color: #9898a9;
|
|
}
|
|
input[type="checkbox"] {
|
|
accent-color: var(--purple);
|
|
width: 14px;
|
|
height: 14px;
|
|
padding: 0;
|
|
vertical-align: middle;
|
|
}
|
|
input[type="date"],
|
|
input[type="datetime-local"] {
|
|
color-scheme: light;
|
|
}
|
|
textarea {
|
|
resize: vertical;
|
|
}
|
|
select {
|
|
padding-right: 30px;
|
|
}
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
p {
|
|
margin: 0;
|
|
}
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4 {
|
|
color: #262438;
|
|
}
|
|
h1 {
|
|
font-size: 29px;
|
|
font-weight: 700;
|
|
letter-spacing: -0.9px;
|
|
line-height: 1.25;
|
|
}
|
|
h2 {
|
|
font-size: 17px;
|
|
letter-spacing: -0.3px;
|
|
}
|
|
h3 {
|
|
font-size: 14px;
|
|
}
|
|
small {
|
|
font-size: 11px;
|
|
}
|
|
.muted {
|
|
color: var(--muted);
|
|
}
|
|
.normal {
|
|
font-weight: 400;
|
|
}
|
|
.align-right {
|
|
text-align: right !important;
|
|
}
|
|
.full {
|
|
width: 100%;
|
|
}
|
|
.truncate {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.spin {
|
|
animation: spin 1s linear infinite;
|
|
}
|
|
@keyframes spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
.button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 7px;
|
|
white-space: nowrap;
|
|
padding: 9px 13px;
|
|
border: 1px solid #dedee9;
|
|
border-radius: 6px;
|
|
background: #fff;
|
|
font-weight: 500;
|
|
font-size: 12px;
|
|
min-height: 36px;
|
|
}
|
|
.button:hover {
|
|
background: #f8f7fc;
|
|
border-color: #c9c4df;
|
|
}
|
|
.button.primary {
|
|
color: #fff;
|
|
background: var(--purple);
|
|
border-color: var(--purple);
|
|
box-shadow: 0 2px 3px #34217812;
|
|
}
|
|
.button.primary:hover {
|
|
background: #352788;
|
|
}
|
|
.button.selected {
|
|
background: #f0edf9;
|
|
border-color: #bcb0e2;
|
|
color: var(--purple);
|
|
}
|
|
.button.danger {
|
|
background: #c92f4c;
|
|
border-color: #c92f4c;
|
|
color: #fff;
|
|
}
|
|
.button.danger-quiet {
|
|
color: #be3b51;
|
|
}
|
|
.button.danger-quiet:hover {
|
|
background: #fff1f3;
|
|
}
|
|
.icon-button {
|
|
border: 0;
|
|
background: transparent;
|
|
width: 29px;
|
|
height: 29px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: #858496;
|
|
border-radius: 5px;
|
|
padding: 3px;
|
|
}
|
|
.icon-button:hover {
|
|
background: #eeecf8;
|
|
color: var(--purple);
|
|
}
|
|
.text-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 5px;
|
|
border: 0;
|
|
background: transparent;
|
|
color: var(--purple);
|
|
padding: 6px 0;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
}
|
|
.text-button:hover {
|
|
text-decoration: underline;
|
|
}
|
|
.eyebrow {
|
|
display: block;
|
|
letter-spacing: 1.6px;
|
|
font-weight: 600;
|
|
font-size: 9px;
|
|
color: #8c86a5;
|
|
margin-bottom: 7px;
|
|
}
|
|
.topbar {
|
|
height: 73px;
|
|
background: #fff;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 0 34px;
|
|
border-bottom: 1px solid #f1f0f6;
|
|
}
|
|
.product-lockup,
|
|
.topbar-right {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.wordmark {
|
|
display: inline-flex;
|
|
align-items: baseline;
|
|
gap: 6px;
|
|
font-size: 30px;
|
|
color: #302672;
|
|
font-weight: 800;
|
|
font-style: italic;
|
|
letter-spacing: -1.6px;
|
|
}
|
|
.wordmark > span {
|
|
font-size: 12px;
|
|
letter-spacing: 0.1px;
|
|
font-weight: 600;
|
|
font-style: normal;
|
|
color: #877da9;
|
|
border: 1px solid #d5cde7;
|
|
border-radius: 4px;
|
|
padding: 0 4px;
|
|
line-height: 19px;
|
|
position: relative;
|
|
top: -2px;
|
|
}
|
|
.product-divider {
|
|
height: 25px;
|
|
width: 1px;
|
|
background: #e4e1ed;
|
|
margin: 0 18px;
|
|
}
|
|
.product-caption {
|
|
font-size: 9px;
|
|
letter-spacing: 1.25px;
|
|
font-weight: 600;
|
|
color: #8e89a1;
|
|
}
|
|
.topbar-right {
|
|
gap: 18px;
|
|
}
|
|
.organization {
|
|
font-size: 11px;
|
|
color: #777384;
|
|
}
|
|
.header-logo {
|
|
width: 130px;
|
|
height: auto;
|
|
object-fit: contain;
|
|
margin-left: 1px;
|
|
}
|
|
.user-avatar {
|
|
height: 31px;
|
|
width: 31px;
|
|
display: grid;
|
|
place-items: center;
|
|
background: #efedf8;
|
|
border: 1px solid #e2ddef;
|
|
color: #57448f;
|
|
font-size: 11px;
|
|
border-radius: 50%;
|
|
margin-left: 9px;
|
|
font-weight: 700;
|
|
}
|
|
.connection-badge {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
letter-spacing: 0.6px;
|
|
font-size: 8px;
|
|
font-weight: 600;
|
|
color: #818493;
|
|
border: 1px solid #e4e7ed;
|
|
border-radius: 4px;
|
|
padding: 4px 6px;
|
|
}
|
|
.connection-badge i,
|
|
.online-dot {
|
|
display: inline-block;
|
|
width: 5px;
|
|
height: 5px;
|
|
background: #45ad85;
|
|
border-radius: 100%;
|
|
flex-shrink: 0;
|
|
}
|
|
.connection-badge.disconnected {
|
|
color: #a77543;
|
|
}
|
|
.connection-badge.disconnected i {
|
|
background: #d89550;
|
|
}
|
|
.main-nav {
|
|
background: linear-gradient(90deg, #302779, #292168);
|
|
height: 54px;
|
|
display: flex;
|
|
align-items: stretch;
|
|
justify-content: space-between;
|
|
padding: 0 29px;
|
|
box-shadow: 0 3px 7px #29206716;
|
|
}
|
|
.nav-links {
|
|
display: flex;
|
|
gap: 6px;
|
|
}
|
|
.nav-links > button {
|
|
display: flex;
|
|
gap: 9px;
|
|
align-items: center;
|
|
padding: 0 18px;
|
|
background: transparent;
|
|
border: 0;
|
|
position: relative;
|
|
color: #c6c1e6;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
}
|
|
.nav-links > button.active {
|
|
color: #fff;
|
|
background: #ffffff0d;
|
|
}
|
|
.nav-links > button.active:after {
|
|
content: "";
|
|
height: 3px;
|
|
background: #a99af7;
|
|
position: absolute;
|
|
left: 15px;
|
|
right: 15px;
|
|
bottom: 0;
|
|
border-radius: 3px 3px 0 0;
|
|
}
|
|
.nav-links > button:hover {
|
|
background: #ffffff0f;
|
|
color: #fff;
|
|
}
|
|
.nav-links > button > span {
|
|
font-size: 10px;
|
|
color: #e4defe;
|
|
padding: 1px 6px;
|
|
border-radius: 4px;
|
|
background: #ffffff14;
|
|
}
|
|
.nav-context {
|
|
color: #beb8df;
|
|
font-size: 10px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
padding-right: 8px;
|
|
}
|
|
.nav-context .online-dot {
|
|
background: #97d2b1;
|
|
}
|
|
main {
|
|
max-width: 1810px;
|
|
margin: auto;
|
|
padding: 0 35px;
|
|
}
|
|
.breadcrumb {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
color: #9692a7;
|
|
font-size: 10px;
|
|
padding-top: 21px;
|
|
}
|
|
.breadcrumb > span {
|
|
margin-left: auto;
|
|
color: #9793a5;
|
|
font-size: 10px;
|
|
}
|
|
.page-heading {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin: 26px 0 24px;
|
|
gap: 20px;
|
|
}
|
|
.page-heading .eyebrow {
|
|
font-size: 9px;
|
|
margin-bottom: 6px;
|
|
}
|
|
.page-heading h1 {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
}
|
|
.page-heading p {
|
|
color: #8b879b;
|
|
margin-top: 8px;
|
|
font-size: 12px;
|
|
}
|
|
.count-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-width: 26px;
|
|
padding: 3px 7px;
|
|
border: 1px solid #dfdbe9;
|
|
background: #ece9f5;
|
|
color: #706292;
|
|
border-radius: 6px;
|
|
font-size: 11px;
|
|
line-height: 17px;
|
|
font-weight: 500;
|
|
letter-spacing: 0;
|
|
vertical-align: middle;
|
|
}
|
|
.heading-actions {
|
|
display: flex;
|
|
gap: 9px;
|
|
margin-top: 10px;
|
|
}
|
|
.metrics {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
gap: 15px;
|
|
margin-bottom: 23px;
|
|
}
|
|
.metric {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
background: #fff;
|
|
border: 1px solid var(--border);
|
|
border-radius: 9px;
|
|
padding: 19px 20px 18px;
|
|
box-shadow: 0 2px 4px #24204702;
|
|
min-height: 110px;
|
|
}
|
|
.metric > div {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.metric-label {
|
|
font-size: 11px;
|
|
color: #8a859c;
|
|
margin-bottom: 6px;
|
|
font-weight: 500;
|
|
}
|
|
.metric strong {
|
|
font-size: 27px;
|
|
letter-spacing: -0.9px;
|
|
line-height: 1.3;
|
|
font-weight: 600;
|
|
color: #302b46;
|
|
}
|
|
.metric-detail {
|
|
font-size: 10px;
|
|
color: #a39cac;
|
|
margin-top: 6px;
|
|
}
|
|
.metric-icon {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 39px;
|
|
height: 39px;
|
|
border-radius: 9px;
|
|
margin-top: 4px;
|
|
background: #f0edf9;
|
|
color: #7960bd;
|
|
}
|
|
.metric-icon.amber {
|
|
background: #fff5e8;
|
|
color: #dba24d;
|
|
}
|
|
.metric-icon.blue {
|
|
background: #edf4fe;
|
|
color: #6a93d0;
|
|
}
|
|
.metric-icon.green {
|
|
background: #ebf7f0;
|
|
color: #67ae86;
|
|
}
|
|
.panel {
|
|
background: #fff;
|
|
border: 1px solid var(--border);
|
|
border-radius: 9px;
|
|
box-shadow: 0 3px 6px #2e214503;
|
|
overflow: hidden;
|
|
}
|
|
.panel-tabs {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 0 18px;
|
|
border-bottom: 1px solid #edebf3;
|
|
height: 57px;
|
|
}
|
|
.tabs {
|
|
display: flex;
|
|
gap: 24px;
|
|
height: 100%;
|
|
}
|
|
.tabs > button {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
border: 0;
|
|
background: transparent;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
color: #8b859b;
|
|
position: relative;
|
|
padding: 0 0 2px;
|
|
}
|
|
.tabs > button > span {
|
|
font-size: 9px;
|
|
background: #f2f0f7;
|
|
color: #a198b1;
|
|
border-radius: 4px;
|
|
padding: 1px 5px;
|
|
}
|
|
.tabs > button.active {
|
|
color: #514192;
|
|
}
|
|
.tabs > button.active > span {
|
|
background: #eee9fa;
|
|
color: #8b71c6;
|
|
}
|
|
.tabs > button.active:after {
|
|
content: "";
|
|
position: absolute;
|
|
height: 2px;
|
|
background: #7560b9;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
}
|
|
.view-toggle {
|
|
display: flex;
|
|
border: 1px solid #e8e4ef;
|
|
border-radius: 5px;
|
|
padding: 3px;
|
|
gap: 2px;
|
|
}
|
|
.view-toggle button {
|
|
height: 25px;
|
|
width: 29px;
|
|
border: 0;
|
|
background: transparent;
|
|
color: #aca3bc;
|
|
border-radius: 3px;
|
|
display: grid;
|
|
place-items: center;
|
|
}
|
|
.view-toggle button.active {
|
|
background: #f0ebfa;
|
|
color: #81709c;
|
|
}
|
|
.filter-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
padding: 17px 18px;
|
|
}
|
|
.filter-row select {
|
|
font-size: 11px;
|
|
width: 143px;
|
|
padding: 9px 10px;
|
|
height: 35px;
|
|
color: #898296;
|
|
}
|
|
.filter-row select:nth-of-type(2) {
|
|
width: 147px;
|
|
}
|
|
.search-box {
|
|
display: flex;
|
|
align-items: center;
|
|
background: #fff;
|
|
border: 1px solid #e4e0ec;
|
|
border-radius: 6px;
|
|
color: #a8a0b8;
|
|
padding-left: 11px;
|
|
min-width: 180px;
|
|
}
|
|
.search-box input {
|
|
border: 0;
|
|
background: transparent;
|
|
padding: 9px 11px;
|
|
font-size: 11px;
|
|
flex: 1;
|
|
width: 100%;
|
|
color: #534963;
|
|
}
|
|
.search-box input:focus {
|
|
outline: none;
|
|
}
|
|
.search-box:focus-within {
|
|
border-color: #a08bbb;
|
|
box-shadow: 0 0 0 2px #b9a5e624;
|
|
}
|
|
.filter-row .search-box {
|
|
flex: 1;
|
|
margin-right: 3px;
|
|
}
|
|
.filter-row .button {
|
|
font-size: 11px;
|
|
min-height: 35px;
|
|
padding: 8px 11px;
|
|
color: #837a92;
|
|
}
|
|
.filter-dot {
|
|
height: 5px;
|
|
width: 5px;
|
|
background: var(--purple);
|
|
border-radius: 50%;
|
|
}
|
|
.filter-row .export-button {
|
|
margin-left: 3px;
|
|
}
|
|
.expanded-filters {
|
|
padding: 0 18px 17px;
|
|
display: flex;
|
|
align-items: flex-end;
|
|
gap: 14px;
|
|
background: #fff;
|
|
}
|
|
.expanded-filters .field {
|
|
margin: 0;
|
|
min-width: 150px;
|
|
}
|
|
.expanded-filters .field:first-child {
|
|
width: 260px;
|
|
}
|
|
.expanded-filters .text-button {
|
|
margin-left: auto;
|
|
align-self: center;
|
|
padding-top: 17px;
|
|
}
|
|
.table-scroll {
|
|
overflow-x: auto;
|
|
overscroll-behavior-x: contain;
|
|
}
|
|
.data-table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
font-size: 11px;
|
|
text-align: left;
|
|
white-space: nowrap;
|
|
}
|
|
.data-table thead {
|
|
background: #f7f6fb;
|
|
}
|
|
.data-table th {
|
|
font-size: 10px;
|
|
font-weight: 500;
|
|
color: #91879f;
|
|
padding: 11px 16px;
|
|
border-top: 1px solid #eeebf3;
|
|
border-bottom: 1px solid #ebe8f2;
|
|
letter-spacing: 0.1px;
|
|
}
|
|
.data-table th:first-child,
|
|
.data-table td:first-child {
|
|
padding-left: 20px;
|
|
}
|
|
.data-table td {
|
|
padding: 16px 16px;
|
|
border-bottom: 1px solid #f0edf5;
|
|
color: #766b85;
|
|
font-size: 11px;
|
|
line-height: 1.45;
|
|
}
|
|
.data-table tbody tr:last-child td {
|
|
border-bottom: 0;
|
|
}
|
|
.data-table tbody tr {
|
|
transition: background 0.1s;
|
|
}
|
|
.data-table tbody tr[tabindex],
|
|
.order-table tbody tr {
|
|
cursor: pointer;
|
|
}
|
|
.data-table tbody tr:hover {
|
|
background: #faf9fe;
|
|
}
|
|
.data-table td strong {
|
|
color: #6a597f;
|
|
font-weight: 500;
|
|
font-size: 11px;
|
|
}
|
|
.data-table .order-number {
|
|
color: #61507e;
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
letter-spacing: 0.1px;
|
|
}
|
|
.cell-sub {
|
|
display: block;
|
|
font-size: 9px;
|
|
color: #a99db4;
|
|
line-height: 1.6;
|
|
margin-top: 4px;
|
|
}
|
|
.data-table td .cell-sub {
|
|
font-size: 9px;
|
|
}
|
|
.customer-cell {
|
|
max-width: 180px;
|
|
}
|
|
.order-table {
|
|
min-width: 1120px;
|
|
}
|
|
.order-table th,
|
|
.order-table td {
|
|
padding-right: 13px;
|
|
padding-left: 13px;
|
|
}
|
|
.order-table td {
|
|
padding-top: 16px;
|
|
padding-bottom: 16px;
|
|
}
|
|
.order-table td:nth-child(4) {
|
|
min-width: 172px;
|
|
}
|
|
.order-table th:nth-child(4) > span {
|
|
margin: 0 4px;
|
|
}
|
|
.order-table td:last-child {
|
|
padding-right: 15px;
|
|
padding-left: 0;
|
|
}
|
|
.badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
font-size: 9px;
|
|
padding: 4px 7px;
|
|
border-radius: 4px;
|
|
white-space: nowrap;
|
|
font-weight: 500;
|
|
line-height: 1.3;
|
|
background: #f0ecf8;
|
|
color: #9381b0;
|
|
}
|
|
.badge > i {
|
|
width: 4px;
|
|
height: 4px;
|
|
background: currentColor;
|
|
border-radius: 100%;
|
|
}
|
|
.badge.pending {
|
|
color: #c49b57;
|
|
background: #fff8e9;
|
|
}
|
|
.badge.offered {
|
|
color: #8971b9;
|
|
background: #f4effb;
|
|
}
|
|
.badge.progress {
|
|
color: #6d94c8;
|
|
background: #edf4fd;
|
|
}
|
|
.badge.complete {
|
|
color: #63a885;
|
|
background: #edf8f1;
|
|
}
|
|
.badge.cancelled {
|
|
color: #ae8293;
|
|
background: #f8f0f3;
|
|
}
|
|
.route-cell {
|
|
font-size: 10px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 7px;
|
|
}
|
|
.route-cell > span {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 6px;
|
|
white-space: nowrap;
|
|
color: #786488;
|
|
position: relative;
|
|
}
|
|
.route-cell small {
|
|
font-size: 9px;
|
|
max-width: 110px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
color: #aa9eb3;
|
|
}
|
|
.stop-dot {
|
|
display: inline-block;
|
|
height: 6px;
|
|
width: 6px;
|
|
border: 1.5px solid #8f80b4;
|
|
border-radius: 50%;
|
|
flex-shrink: 0;
|
|
position: relative;
|
|
}
|
|
.stop-dot.end {
|
|
background: #9484b7;
|
|
border-color: #9484b7;
|
|
border-radius: 2px;
|
|
}
|
|
.stop-dot.done {
|
|
background: #55ae81;
|
|
border-color: #55ae81;
|
|
}
|
|
.route-cell > span:first-child > .stop-dot:after {
|
|
content: "";
|
|
width: 1px;
|
|
height: 16px;
|
|
background: #d8d1e7;
|
|
position: absolute;
|
|
top: 5px;
|
|
left: 1px;
|
|
}
|
|
.courier-cell {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
font-size: 10px;
|
|
color: #8b779a;
|
|
}
|
|
.mini-avatar {
|
|
height: 27px;
|
|
width: 27px;
|
|
background: #f4eef8;
|
|
color: #9a85ab;
|
|
border: 1px solid #ece4f2;
|
|
border-radius: 50%;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 8px;
|
|
flex-shrink: 0;
|
|
}
|
|
.courier-cell > span:last-child {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 3px;
|
|
}
|
|
.courier-cell small {
|
|
font-size: 9px;
|
|
color: #b1a2bd;
|
|
}
|
|
.unassigned {
|
|
font-size: 10px;
|
|
color: #b5a9bd;
|
|
font-style: italic;
|
|
}
|
|
.vehicle {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
color: #9b8aaa;
|
|
font-size: 10px;
|
|
}
|
|
.data-table td.price-cell {
|
|
font-size: 11px;
|
|
font-weight: 500;
|
|
color: #765f88;
|
|
}
|
|
.table-footer {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 14px 19px;
|
|
border-top: 1px solid #eeebf4;
|
|
gap: 15px;
|
|
color: #aa9bb4;
|
|
font-size: 10px;
|
|
min-height: 60px;
|
|
}
|
|
.refresh-checkbox {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
font-size: 9px;
|
|
margin-left: auto;
|
|
margin-right: 18px;
|
|
color: #ac9bb4;
|
|
}
|
|
.refresh-checkbox input {
|
|
height: 12px;
|
|
width: 12px;
|
|
accent-color: #8971b1;
|
|
}
|
|
.pagination {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
.pagination .icon-button {
|
|
height: 24px;
|
|
width: 24px;
|
|
border: 1px solid #ebe6f0;
|
|
border-radius: 4px;
|
|
}
|
|
.pagination > span {
|
|
font-size: 9px;
|
|
color: #9b88ac;
|
|
}
|
|
.app-footer {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 24px 0;
|
|
font-size: 9px;
|
|
color: #b0a2ba;
|
|
}
|
|
.app-footer > span {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
}
|
|
.app-footer i {
|
|
width: 2px;
|
|
height: 2px;
|
|
border-radius: 50%;
|
|
background: #b9afc4;
|
|
margin: 0 3px;
|
|
}
|
|
.app-footer .online-dot {
|
|
width: 4px;
|
|
height: 4px;
|
|
margin-left: 3px;
|
|
background: #92baa5;
|
|
}
|
|
.alert {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 12px 14px;
|
|
border: 1px solid;
|
|
border-radius: 7px;
|
|
margin-bottom: 16px;
|
|
font-size: 12px;
|
|
}
|
|
.alert.error {
|
|
background: #fff2f2;
|
|
border-color: #f0cbce;
|
|
color: #ad4653;
|
|
}
|
|
.alert > .icon-button {
|
|
margin-left: auto;
|
|
flex-shrink: 0;
|
|
}
|
|
.alert > span {
|
|
flex: 1;
|
|
}
|
|
.toast {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
position: fixed;
|
|
bottom: 25px;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
padding: 13px 20px;
|
|
background: #2b6751;
|
|
color: #fff;
|
|
border-radius: 8px;
|
|
box-shadow: 0 5px 25px #13312525;
|
|
z-index: 120;
|
|
font-size: 12px;
|
|
max-width: 90vw;
|
|
}
|
|
.empty {
|
|
padding: 65px 20px;
|
|
text-align: center;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
}
|
|
.empty-icon {
|
|
background: #f2eef8;
|
|
color: #a18bb9;
|
|
border-radius: 12px;
|
|
padding: 14px;
|
|
margin-bottom: 18px;
|
|
}
|
|
.empty h3 {
|
|
font-size: 15px;
|
|
color: #756286;
|
|
margin-bottom: 6px;
|
|
}
|
|
.empty p {
|
|
color: #aa9bb5;
|
|
max-width: 400px;
|
|
font-size: 12px;
|
|
}
|
|
.empty .button {
|
|
margin-top: 18px;
|
|
}
|
|
.loading-panel,
|
|
.boot {
|
|
min-height: 300px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 12px;
|
|
color: #807092;
|
|
}
|
|
.boot {
|
|
height: 100vh;
|
|
}
|
|
.section-toolbar {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 23px 23px 20px;
|
|
gap: 20px;
|
|
}
|
|
.section-toolbar h2 {
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
color: #766080;
|
|
}
|
|
.section-toolbar .muted {
|
|
font-size: 10px;
|
|
display: block;
|
|
margin-top: 5px;
|
|
}
|
|
.section-toolbar input[type="date"] {
|
|
font-size: 11px;
|
|
color: #8f789f;
|
|
}
|
|
.section-toolbar .search-box {
|
|
width: 300px;
|
|
}
|
|
.section-toolbar.compact {
|
|
padding: 15px 0;
|
|
}
|
|
.section-toolbar h2 .count-pill {
|
|
margin-left: 5px;
|
|
}
|
|
.plate {
|
|
border: 1px solid #e8e1eb;
|
|
border-left: 4px solid #8b89bf;
|
|
border-radius: 4px;
|
|
background: #fcfbfe;
|
|
padding: 3px 6px;
|
|
font-size: 10px;
|
|
letter-spacing: 0.4px;
|
|
color: #8e749a;
|
|
}
|
|
.dispatch-board {
|
|
padding: 0 18px 20px;
|
|
display: flex;
|
|
align-items: stretch;
|
|
gap: 13px;
|
|
overflow-x: auto;
|
|
min-height: 440px;
|
|
}
|
|
.board-column {
|
|
flex: 1;
|
|
min-width: 245px;
|
|
background: #f6f4fa;
|
|
border: 1px solid #eee8f4;
|
|
border-radius: 7px;
|
|
padding: 12px;
|
|
}
|
|
.board-column > h3 {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 15px;
|
|
}
|
|
.board-column > h3 > span:last-child {
|
|
font-size: 10px;
|
|
color: #a08cad;
|
|
font-weight: 400;
|
|
}
|
|
.dispatch-card {
|
|
text-align: left;
|
|
width: 100%;
|
|
display: block;
|
|
background: #fff;
|
|
border: 1px solid #e9e0f0;
|
|
border-radius: 7px;
|
|
padding: 13px;
|
|
margin-bottom: 10px;
|
|
box-shadow: 0 2px 3px #41245504;
|
|
color: #887295;
|
|
}
|
|
.dispatch-card:hover {
|
|
border-color: #c4abd5;
|
|
background: #fffefe;
|
|
}
|
|
.card-line {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
}
|
|
.dispatch-card .card-line {
|
|
font-size: 10px;
|
|
color: #a090ae;
|
|
}
|
|
.dispatch-card .card-line strong {
|
|
color: #846990;
|
|
font-size: 11px;
|
|
}
|
|
.dispatch-card h4 {
|
|
font-size: 11px;
|
|
font-weight: 500;
|
|
margin: 11px 0 6px;
|
|
color: #867092;
|
|
}
|
|
.dispatch-card > p {
|
|
display: flex;
|
|
gap: 5px;
|
|
align-items: center;
|
|
font-size: 10px;
|
|
color: #a38ab0;
|
|
}
|
|
.card-bottom {
|
|
display: flex;
|
|
gap: 8px;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
font-size: 9px;
|
|
border-top: 1px solid #f1eaf6;
|
|
margin-top: 13px;
|
|
padding-top: 11px;
|
|
color: #b298bc;
|
|
}
|
|
.card-bottom b {
|
|
font-weight: 500;
|
|
color: #967a9f;
|
|
}
|
|
.tour-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
padding: 0 22px 22px;
|
|
gap: 17px;
|
|
}
|
|
.tour-card {
|
|
border: 1px solid #e9e1ef;
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
}
|
|
.tour-card > header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 16px;
|
|
background: #f8f5fb;
|
|
border-bottom: 1px solid #ece4f2;
|
|
}
|
|
.tour-card header h3 {
|
|
font-size: 12px;
|
|
color: #846b92;
|
|
}
|
|
.tour-card header span {
|
|
font-size: 9px;
|
|
color: #b19abc;
|
|
}
|
|
.tour-card header .mini-avatar {
|
|
width: 35px;
|
|
height: 35px;
|
|
font-size: 10px;
|
|
}
|
|
.tour-order {
|
|
display: flex;
|
|
width: 100%;
|
|
text-align: left;
|
|
padding: 16px 13px;
|
|
gap: 11px;
|
|
border: 0;
|
|
border-bottom: 1px solid #f0e9f5;
|
|
background: #fff;
|
|
}
|
|
.tour-order:hover {
|
|
background: #fcfaff;
|
|
}
|
|
.tour-order > div {
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
.tour-time {
|
|
color: #b096bb;
|
|
font-size: 10px;
|
|
padding-top: 3px;
|
|
}
|
|
.tour-order h4 {
|
|
color: #95739f;
|
|
font-size: 10px;
|
|
font-weight: 500;
|
|
margin: 8px 0 11px;
|
|
}
|
|
.tour-order .card-line strong {
|
|
font-size: 11px;
|
|
color: #9877a2;
|
|
}
|
|
.tour-order p {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
color: #ad92b8;
|
|
font-size: 9px;
|
|
white-space: normal;
|
|
margin-top: 8px;
|
|
}
|
|
.invoice-metrics {
|
|
grid-template-columns: repeat(3, 1fr);
|
|
}
|
|
.report-toolbar {
|
|
display: flex;
|
|
gap: 12px;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
margin: -6px 0 18px;
|
|
color: #a189ad;
|
|
font-size: 11px;
|
|
}
|
|
.report-toolbar select {
|
|
font-size: 11px;
|
|
}
|
|
.report-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 20px;
|
|
}
|
|
.chart-panel {
|
|
padding: 25px 25px 30px;
|
|
}
|
|
.chart-panel h2 {
|
|
font-size: 14px;
|
|
color: #93739a;
|
|
}
|
|
.chart-panel > p {
|
|
font-size: 10px;
|
|
margin-top: 5px;
|
|
color: #b89cc0;
|
|
}
|
|
.bar-chart {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 21px;
|
|
margin-top: 27px;
|
|
}
|
|
.chart-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
font-size: 10px;
|
|
color: #ac88b0;
|
|
}
|
|
.chart-row > span {
|
|
width: 116px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
}
|
|
.chart-row > strong {
|
|
width: 22px;
|
|
text-align: right;
|
|
font-weight: 500;
|
|
font-size: 11px;
|
|
}
|
|
.chart-track {
|
|
flex: 1;
|
|
height: 8px;
|
|
border-radius: 6px;
|
|
background: #f6eff9;
|
|
overflow: hidden;
|
|
}
|
|
.chart-track > i {
|
|
display: block;
|
|
background: #b396cc;
|
|
height: 100%;
|
|
border-radius: 6px;
|
|
min-width: 0;
|
|
}
|
|
.chart-track > i.pending {
|
|
background: #dbc38e;
|
|
}
|
|
.chart-track > i.offered {
|
|
background: #baa5d0;
|
|
}
|
|
.chart-track > i.progress {
|
|
background: #a3b9d7;
|
|
}
|
|
.chart-track > i.complete {
|
|
background: #a0cdb8;
|
|
}
|
|
.chart-track > i.cancelled {
|
|
background: #d9b2c2;
|
|
}
|
|
.chart-dot {
|
|
width: 6px;
|
|
height: 6px;
|
|
border-radius: 50%;
|
|
background: #b396cc;
|
|
}
|
|
.chart-dot.pending {
|
|
background: #dbc38e;
|
|
}
|
|
.chart-dot.progress {
|
|
background: #a3b9d7;
|
|
}
|
|
.chart-dot.complete {
|
|
background: #a0cdb8;
|
|
}
|
|
.chart-dot.cancelled {
|
|
background: #d9b2c2;
|
|
}
|
|
.modal-backdrop,
|
|
.drawer-backdrop {
|
|
position: fixed;
|
|
inset: 0;
|
|
background: #21163455;
|
|
backdrop-filter: blur(2px);
|
|
z-index: 50;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 26px;
|
|
}
|
|
.modal-backdrop {
|
|
z-index: 70;
|
|
}
|
|
.modal {
|
|
width: min(570px, 100%);
|
|
max-height: calc(100dvh - 52px);
|
|
background: #fff;
|
|
border-radius: 12px;
|
|
box-shadow: 0 25px 90px #20113740;
|
|
overflow: hidden;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.modal.modal-wide {
|
|
width: min(980px, 100%);
|
|
}
|
|
.modal-heading {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: 20px;
|
|
padding: 24px 26px 21px;
|
|
border-bottom: 1px solid #ece6f2;
|
|
background: #fdfcfe;
|
|
}
|
|
.modal-heading h2 {
|
|
font-size: 20px;
|
|
color: #665070;
|
|
font-weight: 600;
|
|
}
|
|
.modal-heading p {
|
|
font-size: 11px;
|
|
color: #a58aae;
|
|
margin-top: 5px;
|
|
}
|
|
.modal > form {
|
|
overflow: hidden;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.modal-body {
|
|
overflow-y: auto;
|
|
padding: 24px 26px;
|
|
min-height: 0;
|
|
}
|
|
.modal-footer {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: 10px;
|
|
padding: 17px 26px;
|
|
border-top: 1px solid #ece6f2;
|
|
background: #fdfcfe;
|
|
flex-shrink: 0;
|
|
}
|
|
.modal-footer > .muted {
|
|
margin-right: auto;
|
|
font-size: 10px;
|
|
}
|
|
.field {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
min-width: 0;
|
|
margin-bottom: 17px;
|
|
}
|
|
.field > span {
|
|
font-size: 10px;
|
|
font-weight: 500;
|
|
color: #98739c;
|
|
}
|
|
.field > input,
|
|
.field > select,
|
|
.field > textarea {
|
|
width: 100%;
|
|
font-size: 12px;
|
|
color: #84628b;
|
|
border-color: #e8ddee;
|
|
background: #fff;
|
|
}
|
|
.field input::placeholder,
|
|
.field textarea::placeholder {
|
|
color: #bda7c3;
|
|
}
|
|
.field.wide {
|
|
grid-column: 1/-1;
|
|
}
|
|
.form-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 0 17px;
|
|
}
|
|
.form-grid.cols-3 {
|
|
grid-template-columns: repeat(3, 1fr);
|
|
}
|
|
.form-grid.address-row {
|
|
grid-template-columns: 1fr 1.8fr;
|
|
gap: 10px;
|
|
}
|
|
.form-section {
|
|
margin-bottom: 25px;
|
|
padding-bottom: 13px;
|
|
border-bottom: 1px solid #f0e6f4;
|
|
}
|
|
.form-section:last-of-type {
|
|
margin-bottom: 0;
|
|
border: 0;
|
|
padding-bottom: 0;
|
|
}
|
|
.form-section h3 {
|
|
font-size: 12px;
|
|
color: #8f6795;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
margin-bottom: 18px;
|
|
}
|
|
.form-section h3 > span {
|
|
font-size: 10px;
|
|
color: #b89dc2;
|
|
border: 1px solid #ecdfef;
|
|
border-radius: 4px;
|
|
padding: 3px 5px;
|
|
}
|
|
.form-section-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 15px;
|
|
margin-bottom: 15px;
|
|
}
|
|
.form-section-header h3 {
|
|
margin-bottom: 0;
|
|
}
|
|
.stop-editor {
|
|
border: 1px solid #eddfef;
|
|
border-radius: 7px;
|
|
margin-bottom: 15px;
|
|
padding: 15px 16px 0;
|
|
background: #fefcff;
|
|
}
|
|
.stop-editor-heading {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
margin-bottom: 15px;
|
|
}
|
|
.stop-number {
|
|
height: 25px;
|
|
width: 25px;
|
|
background: #e9ddf1;
|
|
border: 1px solid #d9c6e4;
|
|
display: grid;
|
|
place-items: center;
|
|
color: #a17cac;
|
|
border-radius: 6px;
|
|
font-size: 10px;
|
|
}
|
|
.stop-number.pickup {
|
|
background: #f7f1fa;
|
|
border-color: #e4d7ed;
|
|
}
|
|
.stop-editor-heading > select {
|
|
border: 0;
|
|
background: transparent;
|
|
padding: 0;
|
|
color: #ad85b4;
|
|
font-size: 11px;
|
|
}
|
|
.stop-controls {
|
|
margin-left: auto;
|
|
display: flex;
|
|
gap: 3px;
|
|
}
|
|
.form-price {
|
|
background: #f6f0fa;
|
|
border: 1px solid #eee1f3;
|
|
border-radius: 6px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 14px 16px;
|
|
font-size: 11px;
|
|
color: #ad85b5;
|
|
margin-top: 4px;
|
|
}
|
|
.form-price strong {
|
|
color: #976ca0;
|
|
font-size: 18px;
|
|
}
|
|
.form-hint {
|
|
font-size: 10px;
|
|
color: #bda4c7;
|
|
margin-top: 10px;
|
|
}
|
|
.checkbox-label {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
color: #a781b3;
|
|
font-size: 11px;
|
|
margin: 5px 0 10px;
|
|
}
|
|
.drawer-backdrop {
|
|
justify-content: flex-end;
|
|
padding: 0;
|
|
background: #21163430;
|
|
backdrop-filter: none;
|
|
}
|
|
.detail-drawer {
|
|
height: 100dvh;
|
|
max-width: 100%;
|
|
width: 480px;
|
|
background: #fff;
|
|
display: flex;
|
|
flex-direction: column;
|
|
box-shadow: -10px 0 50px #3823491a;
|
|
}
|
|
.drawer-heading {
|
|
padding: 24px 26px 15px;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
.drawer-heading h2 {
|
|
font-size: 26px;
|
|
letter-spacing: -0.7px;
|
|
color: #755281;
|
|
font-weight: 600;
|
|
}
|
|
.drawer-heading .eyebrow {
|
|
font-size: 8px;
|
|
color: #b797bf;
|
|
margin-bottom: 4px;
|
|
}
|
|
.drawer-status {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 0 26px 20px;
|
|
color: #b196bd;
|
|
font-size: 10px;
|
|
}
|
|
.drawer-tabs {
|
|
display: flex;
|
|
padding: 0 26px;
|
|
border-bottom: 1px solid #f0e4f5;
|
|
gap: 27px;
|
|
background: #fffcff;
|
|
}
|
|
.drawer-tabs button {
|
|
border: 0;
|
|
background: transparent;
|
|
color: #b69dc0;
|
|
padding: 12px 0;
|
|
font-size: 11px;
|
|
position: relative;
|
|
}
|
|
.drawer-tabs button.active {
|
|
color: #9e78ad;
|
|
}
|
|
.drawer-tabs button.active:after {
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
height: 2px;
|
|
content: "";
|
|
background: #b396c5;
|
|
}
|
|
.drawer-tabs button span {
|
|
font-size: 9px;
|
|
padding: 2px 5px;
|
|
background: #f4eaf8;
|
|
border-radius: 4px;
|
|
margin-left: 3px;
|
|
}
|
|
.drawer-body {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
padding: 0 26px;
|
|
}
|
|
.detail-section {
|
|
border-bottom: 1px solid #f3e9f7;
|
|
padding: 22px 0;
|
|
}
|
|
.section-label {
|
|
display: block;
|
|
font-size: 8px;
|
|
letter-spacing: 1.3px;
|
|
font-weight: 600;
|
|
color: #bf9cc9;
|
|
margin-bottom: 13px;
|
|
}
|
|
.section-label > span {
|
|
padding: 2px 5px;
|
|
border: 1px solid #f1e3f6;
|
|
border-radius: 3px;
|
|
margin-left: 3px;
|
|
}
|
|
.detail-section h3 {
|
|
color: #a076ac;
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
}
|
|
.detail-section > p {
|
|
color: #bb98c8;
|
|
font-size: 11px;
|
|
margin-top: 7px;
|
|
}
|
|
.detail-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 17px 15px;
|
|
margin-top: 17px;
|
|
}
|
|
.detail-grid > div {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
}
|
|
.detail-grid span {
|
|
font-size: 9px;
|
|
color: #c5a7d0;
|
|
}
|
|
.detail-grid strong {
|
|
font-size: 11px;
|
|
color: #ac85b8;
|
|
font-weight: 500;
|
|
}
|
|
.stops-timeline {
|
|
padding: 0;
|
|
}
|
|
.timeline-stop {
|
|
position: relative;
|
|
display: flex;
|
|
gap: 13px;
|
|
padding-bottom: 24px;
|
|
}
|
|
.timeline-stop:last-child {
|
|
padding-bottom: 0;
|
|
}
|
|
.timeline-marker {
|
|
height: 22px;
|
|
width: 22px;
|
|
display: grid;
|
|
place-items: center;
|
|
flex-shrink: 0;
|
|
border: 1px solid #dac6e4;
|
|
border-radius: 50%;
|
|
background: #fdf9ff;
|
|
color: #b490c4;
|
|
font-size: 9px;
|
|
z-index: 1;
|
|
}
|
|
.timeline-stop.completed .timeline-marker {
|
|
background: #f0f9f4;
|
|
border-color: #b9dec8;
|
|
color: #80b297;
|
|
}
|
|
.timeline-stop:before {
|
|
position: absolute;
|
|
content: "";
|
|
top: 22px;
|
|
bottom: 0;
|
|
left: 10px;
|
|
width: 1px;
|
|
background: #e8d9ee;
|
|
}
|
|
.timeline-stop:last-child:before {
|
|
display: none;
|
|
}
|
|
.timeline-stop > div {
|
|
flex: 1;
|
|
padding-top: 1px;
|
|
}
|
|
.stop-kind {
|
|
font-size: 9px;
|
|
color: #c0a1cb;
|
|
}
|
|
.timeline-stop h4 {
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
color: #a27aaf;
|
|
margin-top: 7px;
|
|
}
|
|
.timeline-stop p {
|
|
font-size: 10px;
|
|
color: #bd9bc9;
|
|
line-height: 1.8;
|
|
margin-top: 4px;
|
|
}
|
|
.timeline-stop .stop-note {
|
|
background: #faf4fd;
|
|
padding: 6px 8px;
|
|
border-radius: 4px;
|
|
}
|
|
.success-text {
|
|
color: #77af8e;
|
|
font-size: 9px;
|
|
}
|
|
.assign-row {
|
|
display: flex;
|
|
gap: 9px;
|
|
}
|
|
.assign-row select {
|
|
flex: 1;
|
|
font-size: 11px;
|
|
color: #b08cbd;
|
|
}
|
|
.detail-section .field {
|
|
margin-top: 16px;
|
|
margin-bottom: 0;
|
|
}
|
|
.price-summary {
|
|
padding: 15px;
|
|
background: #faf5fd;
|
|
border: 1px solid #f0e4f7;
|
|
border-radius: 7px;
|
|
margin-top: 19px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
.price-summary > span {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
font-size: 10px;
|
|
color: #b18bbe;
|
|
}
|
|
.price-summary > span:last-child {
|
|
padding-top: 10px;
|
|
border-top: 1px solid #efdef5;
|
|
font-weight: 500;
|
|
color: #9e72ae;
|
|
}
|
|
.price-summary strong {
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
}
|
|
.info-box {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
font-size: 10px;
|
|
color: #b697c5;
|
|
background: #f7f2fc;
|
|
border-radius: 6px;
|
|
padding: 11px;
|
|
margin-top: 12px;
|
|
}
|
|
.note-box {
|
|
white-space: pre-wrap;
|
|
padding: 12px;
|
|
border-radius: 6px;
|
|
background: #fffbf0;
|
|
color: #b19e7b !important;
|
|
border: 1px solid #f5edcf;
|
|
}
|
|
.drawer-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
flex-shrink: 0;
|
|
padding: 17px 25px 23px;
|
|
border-top: 1px solid #f0e4f6;
|
|
box-shadow: 0 -5px 20px #40235102;
|
|
}
|
|
.drawer-actions > .button:not(.full) {
|
|
flex: 1;
|
|
font-size: 10px;
|
|
min-height: 32px;
|
|
}
|
|
.drawer-actions > .full {
|
|
margin-top: 5px;
|
|
}
|
|
.history-list {
|
|
padding: 25px 0;
|
|
}
|
|
.history-loading {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 10px;
|
|
padding: 40px 0;
|
|
color: var(--muted);
|
|
}
|
|
.history-error .alert {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
}
|
|
.history-item {
|
|
display: flex;
|
|
gap: 14px;
|
|
position: relative;
|
|
padding-bottom: 24px;
|
|
}
|
|
.history-dot {
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
background: #c4a6d1;
|
|
flex-shrink: 0;
|
|
margin-top: 5px;
|
|
z-index: 1;
|
|
border: 2px solid #f7effb;
|
|
box-shadow: 0 0 0 1px #e4d1ee;
|
|
}
|
|
.history-item:before {
|
|
content: "";
|
|
position: absolute;
|
|
top: 13px;
|
|
bottom: 0;
|
|
left: 3px;
|
|
background: #eee1f4;
|
|
width: 1px;
|
|
}
|
|
.history-item:last-child:before {
|
|
display: none;
|
|
}
|
|
.history-item strong {
|
|
font-size: 11px;
|
|
color: #a17ab5;
|
|
font-weight: 500;
|
|
}
|
|
.history-item p {
|
|
font-size: 10px;
|
|
color: #b695c6;
|
|
margin-top: 5px;
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.history-item small {
|
|
display: block;
|
|
font-size: 9px;
|
|
color: #c4afd2;
|
|
margin-top: 7px;
|
|
}
|
|
.invoice-brand {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin: 5px 0 40px;
|
|
}
|
|
.invoice-brand img {
|
|
width: 165px;
|
|
}
|
|
.invoice-address {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: 20px;
|
|
margin-bottom: 33px;
|
|
}
|
|
.invoice-address small {
|
|
letter-spacing: 1.3px;
|
|
font-size: 8px;
|
|
color: #bca2c9;
|
|
}
|
|
.invoice-address h3 {
|
|
font-size: 14px;
|
|
color: #a380b0;
|
|
margin-top: 12px;
|
|
}
|
|
.invoice-address h2 {
|
|
font-size: 19px;
|
|
color: #9b73ac;
|
|
}
|
|
.invoice-address p {
|
|
font-size: 11px;
|
|
line-height: 1.9;
|
|
color: #b69ec7;
|
|
margin-top: 9px;
|
|
}
|
|
.invoice-totals {
|
|
width: 300px;
|
|
margin: 25px 0 0 auto;
|
|
}
|
|
.invoice-totals > p {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: 8px 0;
|
|
font-size: 11px;
|
|
color: #b192bf;
|
|
}
|
|
.invoice-totals strong {
|
|
font-weight: 500;
|
|
color: #9f7fb1;
|
|
}
|
|
.invoice-totals > p.total {
|
|
border-top: 1px solid #eadcf1;
|
|
margin-top: 7px;
|
|
padding-top: 16px;
|
|
color: #9873ae;
|
|
font-size: 13px;
|
|
}
|
|
.invoice-totals .total strong {
|
|
font-size: 18px;
|
|
}
|
|
.invoice-note {
|
|
margin-top: 40px;
|
|
font-size: 9px;
|
|
color: #c7b6d4;
|
|
border-top: 1px solid #f0e9f6;
|
|
padding-top: 15px;
|
|
}
|
|
.readonly-notice {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
border: 1px solid #e5def0;
|
|
background: #f0edf7;
|
|
padding: 10px 13px;
|
|
border-radius: 6px;
|
|
color: #9a8ba7;
|
|
font-size: 10px;
|
|
margin-bottom: 20px;
|
|
}
|
|
.readonly-notice > svg {
|
|
color: #a395b3;
|
|
flex-shrink: 0;
|
|
}
|
|
.readonly-notice strong {
|
|
font-weight: 500;
|
|
color: #8c7b9d;
|
|
margin-right: 6px;
|
|
}
|
|
.readonly-notice a {
|
|
margin-left: auto;
|
|
white-space: nowrap;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 3px;
|
|
color: #8b78a4;
|
|
font-size: 10px;
|
|
}
|
|
.offline-panel {
|
|
padding: 60px 25px;
|
|
text-align: center;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
min-height: 330px;
|
|
}
|
|
.offline-panel h2 {
|
|
margin: 20px 0 10px;
|
|
color: #80668f;
|
|
}
|
|
.offline-panel p {
|
|
max-width: 620px;
|
|
color: #a691b2;
|
|
line-height: 1.8;
|
|
font-size: 12px;
|
|
}
|
|
.offline-panel .muted {
|
|
font-size: 11px;
|
|
max-width: 540px;
|
|
margin: 8px 0 24px;
|
|
color: #b19ebd;
|
|
}
|
|
.offline-icon {
|
|
width: 69px;
|
|
height: 69px;
|
|
border-radius: 16px;
|
|
color: #ab95bd;
|
|
background: #f3edf9;
|
|
display: grid;
|
|
place-items: center;
|
|
}
|
|
.login-page {
|
|
display: grid;
|
|
grid-template-columns: 46% 54%;
|
|
min-height: 100dvh;
|
|
background: #fff;
|
|
}
|
|
.login-art {
|
|
background: linear-gradient(135deg, #302579, #252066);
|
|
color: #fff;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
padding: 75px 13%;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
.login-art:before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background-image:
|
|
linear-gradient(#ffffff03 1px, transparent 1px),
|
|
linear-gradient(90deg, #ffffff03 1px, transparent 1px);
|
|
background-size: 39px 39px;
|
|
mask-image: linear-gradient(120deg, transparent, #000);
|
|
}
|
|
.login-art:after {
|
|
content: "";
|
|
position: absolute;
|
|
width: 550px;
|
|
height: 550px;
|
|
border: 1px solid #ffffff07;
|
|
border-radius: 50%;
|
|
bottom: -295px;
|
|
right: -310px;
|
|
box-shadow:
|
|
0 0 0 55px #ffffff03,
|
|
0 0 0 110px #ffffff02,
|
|
0 0 0 165px #ffffff02;
|
|
}
|
|
.login-product {
|
|
position: absolute;
|
|
top: 46px;
|
|
left: 13%;
|
|
font-size: 36px;
|
|
font-weight: 700;
|
|
letter-spacing: -1.8px;
|
|
font-style: italic;
|
|
}
|
|
.login-product > span {
|
|
font-size: 11px;
|
|
letter-spacing: 1px;
|
|
font-weight: 400;
|
|
margin-left: 7px;
|
|
font-style: normal;
|
|
vertical-align: super;
|
|
color: #b5a8e8;
|
|
}
|
|
.login-art .eyebrow {
|
|
color: #a79dce;
|
|
font-size: 9px;
|
|
letter-spacing: 2px;
|
|
margin-bottom: 27px;
|
|
}
|
|
.login-art h1 {
|
|
font-size: clamp(38px, 4.3vw, 66px);
|
|
font-weight: 500;
|
|
letter-spacing: -2.7px;
|
|
line-height: 1.13;
|
|
color: #fff;
|
|
position: relative;
|
|
}
|
|
.login-art > p {
|
|
font-size: 13px;
|
|
font-weight: 400;
|
|
color: #a9a1cb;
|
|
margin-top: 26px;
|
|
line-height: 1.9;
|
|
max-width: 260px;
|
|
}
|
|
.login-route {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-top: 42px;
|
|
max-width: 220px;
|
|
}
|
|
.login-route > span {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 16px;
|
|
height: 16px;
|
|
border: 1px solid #9d8cc8;
|
|
border-radius: 50%;
|
|
background: #514284;
|
|
color: #d4c9e8;
|
|
}
|
|
.login-route > i {
|
|
height: 1px;
|
|
width: 75px;
|
|
background: linear-gradient(90deg, #7d6caa, #9780c0);
|
|
}
|
|
.login-route > span:last-child {
|
|
width: 28px;
|
|
height: 28px;
|
|
background: #7e66b0;
|
|
border: 0;
|
|
box-shadow: 0 0 0 7px #7864a321;
|
|
}
|
|
.login-art-footer {
|
|
position: absolute;
|
|
left: 13%;
|
|
bottom: 40px;
|
|
color: #9488b6;
|
|
font-size: 10px;
|
|
letter-spacing: 0.1px;
|
|
}
|
|
.login-main {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
position: relative;
|
|
padding: 70px 25px;
|
|
}
|
|
.login-form {
|
|
width: 370px;
|
|
max-width: 100%;
|
|
}
|
|
.login-logo {
|
|
width: 176px;
|
|
display: block;
|
|
margin-bottom: 51px;
|
|
}
|
|
.login-form .eyebrow {
|
|
font-size: 9px;
|
|
color: #a093b6;
|
|
letter-spacing: 1.5px;
|
|
margin-bottom: 9px;
|
|
}
|
|
.login-form h2 {
|
|
font-size: 25px;
|
|
font-weight: 600;
|
|
color: #6c557f;
|
|
letter-spacing: -0.8px;
|
|
margin-bottom: 8px;
|
|
}
|
|
.login-form > .muted {
|
|
font-size: 12px;
|
|
color: #a28cba;
|
|
margin-bottom: 29px;
|
|
line-height: 1.7;
|
|
}
|
|
.login-form .field {
|
|
margin-bottom: 19px;
|
|
gap: 8px;
|
|
}
|
|
.login-form .field > span {
|
|
font-size: 11px;
|
|
color: #9b7fb4;
|
|
}
|
|
.login-form .field input {
|
|
font-size: 13px;
|
|
padding: 12px;
|
|
color: #7f5e98;
|
|
border-color: #e7dcef;
|
|
border-radius: 6px;
|
|
}
|
|
.login-submit {
|
|
width: 100%;
|
|
margin-top: 6px;
|
|
min-height: 43px;
|
|
flex-direction: row-reverse;
|
|
justify-content: space-between;
|
|
padding: 10px 15px;
|
|
}
|
|
.connection-note {
|
|
margin-top: 25px;
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 10px;
|
|
border: 1px solid #ece4f2;
|
|
background: #faf7fd;
|
|
border-radius: 7px;
|
|
padding: 13px 14px;
|
|
color: #aa95bb;
|
|
}
|
|
.connection-note > svg {
|
|
flex-shrink: 0;
|
|
margin-top: 2px;
|
|
color: #b7a2c6;
|
|
}
|
|
.connection-note strong {
|
|
font-size: 11px;
|
|
font-weight: 500;
|
|
color: #a78dbb;
|
|
}
|
|
.connection-note p {
|
|
font-size: 10px;
|
|
line-height: 1.75;
|
|
color: #b5a0c6;
|
|
margin-top: 5px;
|
|
}
|
|
.connection-note .text-button {
|
|
font-size: 9px;
|
|
color: #a18cb2;
|
|
margin-right: 13px;
|
|
margin-top: 3px;
|
|
font-weight: 500;
|
|
}
|
|
.connection-note.connected {
|
|
background: #f5faf6;
|
|
border-color: #deeee1;
|
|
}
|
|
.connection-note.connected strong,
|
|
.connection-note.connected > svg {
|
|
color: #81a88b;
|
|
}
|
|
.connection-note.disconnected {
|
|
background: #fdfaf5;
|
|
border-color: #f0e6d9;
|
|
}
|
|
.connection-note.disconnected strong,
|
|
.connection-note.disconnected > svg {
|
|
color: #b49a75;
|
|
}
|
|
.connection-note.disconnected p {
|
|
color: #baab95;
|
|
}
|
|
.connection-note.disconnected .text-button {
|
|
color: #ab9274;
|
|
}
|
|
.login-footer {
|
|
position: absolute;
|
|
bottom: 28px;
|
|
color: #c0afcf;
|
|
font-size: 9px;
|
|
}
|
|
@media (min-width: 1550px) {
|
|
.order-table td {
|
|
padding-top: 20px;
|
|
padding-bottom: 20px;
|
|
}
|
|
.data-table td {
|
|
font-size: 12px;
|
|
}
|
|
.order-table .route-cell {
|
|
font-size: 11px;
|
|
}
|
|
.route-cell small {
|
|
max-width: 150px;
|
|
}
|
|
.customer-cell {
|
|
max-width: 210px;
|
|
}
|
|
.topbar,
|
|
main {
|
|
padding-left: 45px;
|
|
padding-right: 45px;
|
|
}
|
|
.main-nav {
|
|
padding-left: 40px;
|
|
padding-right: 40px;
|
|
}
|
|
}
|
|
@media (max-width: 1200px) {
|
|
.nav-links {
|
|
gap: 0;
|
|
}
|
|
.nav-links > button {
|
|
padding: 0 12px;
|
|
font-size: 11px;
|
|
}
|
|
.nav-context {
|
|
display: none;
|
|
}
|
|
.topbar {
|
|
padding: 0 25px;
|
|
}
|
|
main {
|
|
padding: 0 25px;
|
|
}
|
|
.organization,
|
|
.product-caption,
|
|
.product-divider {
|
|
display: none;
|
|
}
|
|
.tour-grid {
|
|
grid-template-columns: repeat(2, 1fr);
|
|
}
|
|
.metric {
|
|
padding: 17px 16px;
|
|
}
|
|
.metric strong {
|
|
font-size: 25px;
|
|
}
|
|
.metric-icon {
|
|
width: 33px;
|
|
height: 33px;
|
|
}
|
|
.metric-detail {
|
|
font-size: 9px;
|
|
}
|
|
.metrics {
|
|
gap: 12px;
|
|
}
|
|
.order-table {
|
|
min-width: 1050px;
|
|
}
|
|
.order-table td,
|
|
.order-table th {
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
}
|
|
.filter-row select {
|
|
width: 125px;
|
|
}
|
|
.filter-row select:nth-of-type(2) {
|
|
width: 140px;
|
|
}
|
|
.topbar-right {
|
|
gap: 14px;
|
|
}
|
|
.form-grid.cols-3 {
|
|
gap: 0 13px;
|
|
}
|
|
.page-heading h1 {
|
|
font-size: 26px;
|
|
}
|
|
}
|
|
@media (max-width: 900px) {
|
|
.metrics {
|
|
grid-template-columns: repeat(2, 1fr);
|
|
}
|
|
.main-nav {
|
|
padding: 0 14px;
|
|
overflow-x: auto;
|
|
}
|
|
.nav-links > button {
|
|
padding: 0 14px;
|
|
white-space: nowrap;
|
|
}
|
|
.page-heading {
|
|
align-items: flex-start;
|
|
margin-top: 22px;
|
|
}
|
|
.page-heading p {
|
|
max-width: 330px;
|
|
line-height: 1.7;
|
|
}
|
|
.heading-actions .button > span {
|
|
display: none;
|
|
}
|
|
.filter-row {
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
}
|
|
.filter-row .search-box {
|
|
flex: 1 1 60%;
|
|
}
|
|
.filter-row select:nth-of-type(2) {
|
|
flex: 1;
|
|
}
|
|
.filter-row select {
|
|
width: 135px;
|
|
}
|
|
.expanded-filters {
|
|
flex-wrap: wrap;
|
|
}
|
|
.expanded-filters .field:first-child {
|
|
width: auto;
|
|
flex: 1 1 100%;
|
|
}
|
|
.expanded-filters .field {
|
|
flex: 1;
|
|
}
|
|
.expanded-filters .text-button {
|
|
padding-top: 0;
|
|
align-self: flex-end;
|
|
}
|
|
.report-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.invoice-metrics {
|
|
grid-template-columns: repeat(3, 1fr);
|
|
}
|
|
.invoice-metrics .metric-icon {
|
|
display: none;
|
|
}
|
|
.invoice-metrics .metric strong {
|
|
font-size: 21px;
|
|
}
|
|
.form-grid.cols-3 {
|
|
grid-template-columns: repeat(2, 1fr);
|
|
}
|
|
.form-grid.cols-3 > .address-row {
|
|
grid-column: 1/-1;
|
|
grid-template-columns: 1fr 3fr;
|
|
}
|
|
.login-art {
|
|
padding: 80px 10%;
|
|
}
|
|
.login-art h1 {
|
|
font-size: 46px;
|
|
}
|
|
.login-page {
|
|
grid-template-columns: 42% 58%;
|
|
}
|
|
.login-product {
|
|
left: 10%;
|
|
}
|
|
.login-art .eyebrow {
|
|
font-size: 7px;
|
|
letter-spacing: 1.3px;
|
|
}
|
|
.login-art > p {
|
|
font-size: 11px;
|
|
}
|
|
.login-art-footer {
|
|
left: 10%;
|
|
font-size: 8px;
|
|
}
|
|
.login-form {
|
|
width: 330px;
|
|
}
|
|
.login-form h2 {
|
|
font-size: 23px;
|
|
}
|
|
.readonly-notice {
|
|
align-items: flex-start;
|
|
}
|
|
.readonly-notice strong {
|
|
display: block;
|
|
margin-bottom: 2px;
|
|
}
|
|
.readonly-notice a {
|
|
align-self: center;
|
|
}
|
|
.app-footer {
|
|
font-size: 8px;
|
|
}
|
|
}
|
|
@media (max-width: 640px) {
|
|
.topbar {
|
|
height: 63px;
|
|
padding: 0 17px;
|
|
}
|
|
.wordmark {
|
|
font-size: 25px;
|
|
}
|
|
.wordmark > span {
|
|
font-size: 9px;
|
|
line-height: 15px;
|
|
}
|
|
.topbar-right {
|
|
gap: 11px;
|
|
}
|
|
.header-logo {
|
|
width: 96px;
|
|
}
|
|
.connection-badge {
|
|
display: none;
|
|
}
|
|
.user-avatar {
|
|
display: none;
|
|
}
|
|
.main-nav {
|
|
height: 49px;
|
|
padding: 0 5px;
|
|
}
|
|
.nav-links > button {
|
|
font-size: 10px;
|
|
padding: 0 12px;
|
|
gap: 6px;
|
|
}
|
|
.nav-links > button svg {
|
|
width: 14px;
|
|
}
|
|
main {
|
|
padding: 0 16px;
|
|
}
|
|
.breadcrumb {
|
|
padding-top: 15px;
|
|
font-size: 9px;
|
|
}
|
|
.breadcrumb > span {
|
|
display: none;
|
|
}
|
|
.page-heading {
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
margin: 20px 0 20px;
|
|
}
|
|
.page-heading h1 {
|
|
font-size: 26px;
|
|
}
|
|
.page-heading p {
|
|
font-size: 11px;
|
|
max-width: none;
|
|
}
|
|
.heading-actions {
|
|
width: 100%;
|
|
justify-content: flex-end;
|
|
margin: 0;
|
|
}
|
|
.heading-actions .button:first-child {
|
|
margin-right: auto;
|
|
}
|
|
.heading-actions .button > span {
|
|
display: inline;
|
|
}
|
|
.metric {
|
|
padding: 13px 12px;
|
|
min-height: 103px;
|
|
position: relative;
|
|
}
|
|
.metrics {
|
|
gap: 9px;
|
|
margin-bottom: 17px;
|
|
}
|
|
.metric-label {
|
|
font-size: 10px;
|
|
}
|
|
.metric strong {
|
|
font-size: 24px;
|
|
}
|
|
.metric-icon {
|
|
width: 25px;
|
|
height: 25px;
|
|
position: absolute;
|
|
right: 12px;
|
|
top: 37px;
|
|
}
|
|
.metric-icon svg {
|
|
width: 15px;
|
|
height: 15px;
|
|
}
|
|
.metric-detail {
|
|
font-size: 8px;
|
|
max-width: 130px;
|
|
}
|
|
.tabs {
|
|
gap: 18px;
|
|
overflow-x: auto;
|
|
white-space: nowrap;
|
|
}
|
|
.tabs button {
|
|
font-size: 10px;
|
|
gap: 4px;
|
|
}
|
|
.panel-tabs {
|
|
padding: 0 13px;
|
|
height: 49px;
|
|
}
|
|
.tabs button span {
|
|
font-size: 8px;
|
|
padding: 1px 4px;
|
|
}
|
|
.view-toggle {
|
|
display: none;
|
|
}
|
|
.filter-row {
|
|
padding: 13px;
|
|
}
|
|
.filter-row .search-box {
|
|
flex: 1 1 100%;
|
|
margin: 0;
|
|
}
|
|
.filter-row select {
|
|
width: calc(50% - 5px);
|
|
flex: 1 1 calc(50% - 5px);
|
|
}
|
|
.filter-row .button {
|
|
flex: 1;
|
|
font-size: 10px;
|
|
}
|
|
.filter-row .button:last-child {
|
|
margin-left: 0;
|
|
}
|
|
.expanded-filters {
|
|
padding: 0 13px 13px;
|
|
gap: 9px;
|
|
}
|
|
.expanded-filters .field {
|
|
min-width: 120px;
|
|
}
|
|
.table-footer {
|
|
padding: 11px 13px;
|
|
font-size: 9px;
|
|
}
|
|
.refresh-checkbox {
|
|
display: none;
|
|
}
|
|
.section-toolbar {
|
|
padding: 17px;
|
|
flex-wrap: wrap;
|
|
gap: 14px;
|
|
}
|
|
.section-toolbar h2 {
|
|
font-size: 13px;
|
|
}
|
|
.section-toolbar .search-box {
|
|
width: 100%;
|
|
}
|
|
.section-toolbar .muted {
|
|
font-size: 9px;
|
|
}
|
|
.tour-grid {
|
|
grid-template-columns: 1fr;
|
|
padding: 0 16px 16px;
|
|
}
|
|
.invoice-metrics {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.invoice-metrics .metric {
|
|
min-height: 85px;
|
|
padding: 14px 16px;
|
|
}
|
|
.invoice-metrics .metric strong {
|
|
font-size: 24px;
|
|
}
|
|
.invoice-metrics .metric-icon {
|
|
display: grid;
|
|
position: static;
|
|
width: 36px;
|
|
height: 36px;
|
|
}
|
|
.invoice-metrics .metric-detail {
|
|
max-width: none;
|
|
font-size: 9px;
|
|
}
|
|
.invoice-metrics .metric-icon svg {
|
|
width: 20px;
|
|
}
|
|
.report-toolbar {
|
|
justify-content: space-between;
|
|
font-size: 10px;
|
|
}
|
|
.report-toolbar select {
|
|
font-size: 10px;
|
|
}
|
|
.chart-panel {
|
|
padding: 20px;
|
|
}
|
|
.chart-row {
|
|
font-size: 9px;
|
|
}
|
|
.chart-row > span {
|
|
width: 90px;
|
|
}
|
|
.chart-row > strong {
|
|
font-size: 10px;
|
|
}
|
|
.modal-backdrop {
|
|
padding: 9px;
|
|
}
|
|
.modal {
|
|
max-height: calc(100dvh - 18px);
|
|
border-radius: 9px;
|
|
}
|
|
.modal-heading {
|
|
padding: 18px;
|
|
}
|
|
.modal-heading h2 {
|
|
font-size: 17px;
|
|
}
|
|
.modal-heading p {
|
|
font-size: 10px;
|
|
}
|
|
.modal-body {
|
|
padding: 18px;
|
|
}
|
|
.modal-footer {
|
|
padding: 13px 18px;
|
|
gap: 7px;
|
|
}
|
|
.modal-footer .button {
|
|
padding: 8px 10px;
|
|
font-size: 11px;
|
|
}
|
|
.modal-footer > .muted {
|
|
display: none;
|
|
}
|
|
.form-grid.cols-3,
|
|
.form-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.form-grid.address-row {
|
|
grid-template-columns: 1fr 2fr;
|
|
}
|
|
.form-grid.cols-3 > .address-row {
|
|
grid-template-columns: 1fr 2fr;
|
|
}
|
|
.form-section h3 {
|
|
font-size: 11px;
|
|
}
|
|
.form-section-header .text-button {
|
|
font-size: 10px;
|
|
}
|
|
.stop-editor {
|
|
padding: 12px 12px 0;
|
|
}
|
|
.detail-drawer {
|
|
width: 100%;
|
|
}
|
|
.drawer-heading {
|
|
padding: 20px 22px 14px;
|
|
}
|
|
.drawer-body {
|
|
padding: 0 22px;
|
|
}
|
|
.drawer-status {
|
|
padding: 0 22px 16px;
|
|
}
|
|
.drawer-tabs {
|
|
padding: 0 22px;
|
|
}
|
|
.drawer-actions {
|
|
padding: 14px 22px 20px;
|
|
}
|
|
.invoice-address {
|
|
flex-direction: column;
|
|
gap: 25px;
|
|
}
|
|
.invoice-brand img {
|
|
width: 128px;
|
|
}
|
|
.invoice-totals {
|
|
max-width: 100%;
|
|
}
|
|
.app-footer {
|
|
font-size: 8px;
|
|
align-items: flex-start;
|
|
gap: 20px;
|
|
}
|
|
.app-footer > span:first-child {
|
|
display: none;
|
|
}
|
|
.app-footer > span:last-child {
|
|
margin-left: auto;
|
|
}
|
|
.readonly-notice {
|
|
font-size: 9px;
|
|
gap: 7px;
|
|
padding: 10px;
|
|
}
|
|
.readonly-notice a {
|
|
font-size: 8px;
|
|
}
|
|
.readonly-notice strong {
|
|
font-size: 9px;
|
|
}
|
|
.offline-panel {
|
|
padding: 36px 22px;
|
|
}
|
|
.offline-panel h2 {
|
|
font-size: 16px;
|
|
}
|
|
.offline-panel p {
|
|
font-size: 11px;
|
|
}
|
|
.offline-panel .muted {
|
|
font-size: 10px;
|
|
}
|
|
.login-page {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.login-art {
|
|
display: none;
|
|
}
|
|
.login-main {
|
|
min-height: 100dvh;
|
|
padding: 42px 25px 60px;
|
|
}
|
|
.login-form {
|
|
width: 360px;
|
|
}
|
|
.login-logo {
|
|
width: 155px;
|
|
margin-bottom: 36px;
|
|
}
|
|
.login-form h2 {
|
|
font-size: 25px;
|
|
}
|
|
.login-footer {
|
|
bottom: 21px;
|
|
}
|
|
.connection-note {
|
|
margin-top: 22px;
|
|
}
|
|
}
|
|
@media print {
|
|
body {
|
|
background: #fff;
|
|
}
|
|
body * {
|
|
visibility: hidden;
|
|
}
|
|
.modal-backdrop,
|
|
.modal,
|
|
.invoice-print,
|
|
.invoice-print * {
|
|
visibility: visible;
|
|
}
|
|
.modal-backdrop {
|
|
position: absolute;
|
|
inset: 0;
|
|
background: #fff;
|
|
padding: 0;
|
|
display: block;
|
|
backdrop-filter: none;
|
|
}
|
|
.modal {
|
|
max-height: none;
|
|
width: 100% !important;
|
|
max-width: none;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
overflow: visible;
|
|
display: block;
|
|
}
|
|
.modal-heading,
|
|
.modal-footer {
|
|
display: none;
|
|
}
|
|
.invoice-print {
|
|
padding: 25px;
|
|
overflow: visible;
|
|
color: #000;
|
|
}
|
|
.invoice-print * {
|
|
color: #000 !important;
|
|
}
|
|
.invoice-print .data-table {
|
|
white-space: normal;
|
|
}
|
|
.invoice-print .data-table td,
|
|
.invoice-print .data-table th {
|
|
padding: 10px;
|
|
}
|
|
.invoice-print .data-table tr {
|
|
break-inside: avoid;
|
|
}
|
|
.invoice-note {
|
|
margin-top: 35px;
|
|
}
|
|
.invoice-print .wordmark {
|
|
color: #4031a0 !important;
|
|
}
|
|
@page {
|
|
size: A4;
|
|
margin: 15mm;
|
|
}
|
|
}
|
|
/* Contrast keeps dense operational information readable. */
|
|
.data-table td {
|
|
color: #63596f;
|
|
}
|
|
.data-table td strong {
|
|
color: #554861;
|
|
}
|
|
.data-table .order-number {
|
|
color: #594575;
|
|
}
|
|
.data-table th {
|
|
color: #83768f;
|
|
}
|
|
.data-table td .cell-sub,
|
|
.cell-sub {
|
|
color: #9a8ca4;
|
|
}
|
|
.courier-cell {
|
|
color: #867093;
|
|
}
|
|
.courier-cell small {
|
|
color: #a18aae;
|
|
}
|
|
.vehicle {
|
|
color: #8c799b;
|
|
}
|
|
.unassigned {
|
|
color: #a99ab3;
|
|
}
|
|
.route-cell > span {
|
|
color: #7c648e;
|
|
}
|
|
.route-cell small {
|
|
color: #a28bae;
|
|
}
|
|
.price-cell {
|
|
color: #694e7e !important;
|
|
}
|
|
.data-scope {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
color: #92869e;
|
|
font-size: 10px;
|
|
margin: 0 1px 13px;
|
|
}
|
|
.data-scope strong {
|
|
font-weight: 600;
|
|
color: #80718f;
|
|
}
|
|
.nav-links > button:disabled {
|
|
opacity: 0.36;
|
|
}
|
|
.field > span {
|
|
color: #8b709b;
|
|
}
|
|
.field > input,
|
|
.field > select,
|
|
.field > textarea {
|
|
color: #705380;
|
|
}
|
|
.modal-heading h2,
|
|
.drawer-heading h2 {
|
|
color: #705181;
|
|
}
|
|
.timeline-stop h4 {
|
|
color: #8c639b;
|
|
}
|
|
.timeline-stop p,
|
|
.detail-section > p {
|
|
color: #a68ab3;
|
|
}
|
|
.detail-grid strong {
|
|
color: #9670a4;
|
|
}
|
|
.chart-panel h2,
|
|
.section-toolbar h2 {
|
|
color: #80648e;
|
|
}
|
|
.login-form h2 {
|
|
color: #5d456f;
|
|
}
|
|
.login-form > .muted {
|
|
color: #9780aa;
|
|
}
|
|
.login-form .field > span {
|
|
color: #8a6ea1;
|
|
}
|
|
.connection-note.disconnected strong {
|
|
color: #9c805e;
|
|
}
|
|
.connection-note.disconnected p {
|
|
color: #ab967d;
|
|
}
|
|
.connection-note.disconnected .text-button {
|
|
color: #997c59;
|
|
}
|
|
.readonly-notice {
|
|
color: #91819f;
|
|
}
|
|
.data-table tbody tr:focus-visible {
|
|
outline-offset: -3px;
|
|
}
|
|
@media (max-width: 900px) {
|
|
.data-scope {
|
|
flex-direction: column;
|
|
gap: 3px;
|
|
font-size: 9px;
|
|
}
|
|
}
|
|
|
|
.date-filter-row {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
flex-wrap: wrap;
|
|
gap: 12px;
|
|
padding: 15px 18px;
|
|
border-bottom: 1px solid var(--border);
|
|
background: #fcfbfe;
|
|
}
|
|
.date-filter-caption {
|
|
align-self: center;
|
|
margin-right: 3px;
|
|
color: #766785;
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
}
|
|
.date-filter-row .field {
|
|
width: 155px;
|
|
margin: 0;
|
|
gap: 4px;
|
|
}
|
|
.date-filter-row .field > span {
|
|
font-size: 9px;
|
|
}
|
|
.date-filter-row .field > input {
|
|
height: 35px;
|
|
font-size: 11px;
|
|
}
|
|
.date-filter-row .button {
|
|
min-height: 35px;
|
|
}
|
|
.date-filter-summary {
|
|
align-self: center;
|
|
margin-left: auto;
|
|
color: #94849f;
|
|
font-size: 10px;
|
|
}
|
|
@media (max-width: 640px) {
|
|
.date-filter-row {
|
|
gap: 10px;
|
|
padding: 13px;
|
|
}
|
|
.date-filter-caption {
|
|
flex-basis: 100%;
|
|
}
|
|
.date-filter-row .field {
|
|
flex: 1 1 calc(50% - 5px);
|
|
width: auto;
|
|
}
|
|
}
|