Files
mousehold/apps/web/src/styles.css
2026-06-28 13:48:15 +02:00

891 lines
13 KiB
CSS

:root {
color: #1f2528;
background: #f5f7f8;
font-family:
Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
font-synthesis: none;
text-rendering: optimizeLegibility;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
}
button,
input,
select,
textarea {
font: inherit;
}
button,
select,
input,
textarea {
min-height: 38px;
border: 1px solid #cfd7dc;
border-radius: 6px;
background: #ffffff;
color: #1f2528;
}
input,
select,
textarea {
width: 100%;
padding: 0 10px;
}
textarea {
min-height: 72px;
padding-top: 9px;
resize: vertical;
}
button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 7px;
padding: 0 12px;
cursor: pointer;
background: #1f6f68;
border-color: #1f6f68;
color: #ffffff;
white-space: nowrap;
}
button.secondary {
width: 100%;
margin-top: 10px;
background: #ffffff;
color: #1f2528;
border-color: #aab6bc;
}
button.inline-button {
width: auto;
margin-top: 0;
}
button.icon-button {
width: 38px;
min-width: 38px;
padding: 0;
}
button.danger {
background: #9a321f;
border-color: #9a321f;
}
button:disabled,
input:disabled,
select:disabled,
textarea:disabled {
opacity: 0.55;
cursor: not-allowed;
}
h1,
h2,
h3 {
margin: 0;
letter-spacing: 0;
}
h1 {
font-size: 26px;
line-height: 1.15;
}
h2 {
font-size: 17px;
margin-bottom: 12px;
}
h3 {
font-size: 15px;
line-height: 1.25;
}
table {
width: 100%;
border-collapse: collapse;
}
th,
td {
padding: 10px 8px;
border-bottom: 1px solid #e0e5e8;
text-align: left;
vertical-align: middle;
}
th {
color: #607079;
font-size: 12px;
font-weight: 700;
text-transform: uppercase;
}
td span {
display: block;
color: #68767d;
font-size: 12px;
margin-top: 2px;
}
.shell {
min-height: 100vh;
}
.topbar {
position: sticky;
top: 0;
z-index: 2;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
padding: 18px 24px;
border-bottom: 1px solid #dce3e6;
background: #ffffff;
}
.topbar span {
color: #607079;
}
.topbar-actions {
display: flex;
align-items: center;
gap: 10px;
}
.topbar-actions select {
min-width: 220px;
}
.page-rail {
position: sticky;
top: 75px;
z-index: 1;
display: flex;
gap: 6px;
overflow-x: auto;
padding: 10px 24px;
border-bottom: 1px solid #dce3e6;
background: #ffffff;
}
.page-rail button {
min-height: 36px;
background: #ffffff;
border-color: transparent;
color: #3d484d;
}
.page-rail button.active {
background: #1f6f68;
border-color: #1f6f68;
color: #ffffff;
}
.page {
padding: 18px 24px 32px;
}
.layout {
display: grid;
grid-template-columns: minmax(260px, 320px) minmax(0, 1fr);
gap: 18px;
padding: 18px 24px 32px;
}
.workspace {
display: grid;
gap: 18px;
min-width: 0;
}
.setup-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 18px;
}
.wide-panel {
grid-column: 1 / -1;
}
.panel,
aside.panel > section {
background: #ffffff;
border: 1px solid #dce3e6;
border-radius: 8px;
padding: 16px;
}
aside.panel {
display: grid;
align-content: start;
gap: 18px;
background: transparent;
border: 0;
padding: 0;
}
.grid {
display: grid;
gap: 18px;
}
.grid.two {
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
.grid.three {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.stack {
display: grid;
gap: 8px;
margin-bottom: 14px;
}
.form-grid {
display: grid;
grid-template-columns: repeat(4, minmax(130px, 1fr));
gap: 10px;
align-items: end;
}
.form-grid .wide {
grid-column: span 2;
}
.field {
display: grid;
gap: 4px;
min-width: 0;
color: #3d484d;
font-size: 12px;
font-weight: 650;
line-height: 1.2;
}
.field > span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.field input,
.field select,
.field textarea {
font-size: 14px;
font-weight: 400;
}
.topbar-field {
grid-template-columns: auto minmax(220px, 1fr);
align-items: center;
gap: 8px;
}
.section-select-field {
min-width: 220px;
}
.management-list {
display: grid;
gap: 8px;
margin-top: 14px;
}
.connector-item {
display: grid;
gap: 6px;
}
.connector-meta {
margin-top: 0;
}
.management-row {
display: grid;
grid-template-columns: minmax(150px, 1fr) minmax(120px, 180px) repeat(3, 38px);
gap: 8px;
align-items: end;
padding: 8px;
border: 1px solid #e0e5e8;
border-radius: 8px;
}
.management-row.account-row {
grid-template-columns:
minmax(140px, 1fr) minmax(120px, 1fr) minmax(120px, 160px)
minmax(120px, 150px) minmax(120px, 150px) auto 38px 38px;
}
.management-row.connector-row {
grid-template-columns:
minmax(140px, 1fr) minmax(120px, 150px) minmax(120px, 150px)
minmax(110px, 140px) minmax(140px, 1fr) minmax(120px, 1fr)
minmax(180px, 1.2fr) auto 38px 38px;
}
.management-row.recurring-row {
grid-template-columns:
minmax(120px, 1fr) minmax(120px, 1fr) minmax(100px, 120px)
minmax(110px, 130px) minmax(130px, 150px) minmax(120px, 160px)
minmax(120px, 160px) minmax(120px, 160px) minmax(120px, 140px)
minmax(130px, 150px) minmax(110px, 130px) 38px 38px;
}
.management-row.taxonomy-row {
grid-template-columns: minmax(130px, 1fr) minmax(140px, 1fr) minmax(150px, 1fr) auto 38px 38px;
}
.management-row.tag-row {
grid-template-columns: minmax(140px, 1fr) 38px 38px;
}
.compact-check {
min-height: 38px;
white-space: nowrap;
}
.form-grid > button,
.management-row > button,
.form-grid > .checkbox,
.management-row > .checkbox {
align-self: end;
}
.fints-grid {
grid-template-columns: repeat(5, minmax(120px, 1fr));
}
.mail-grid {
grid-template-columns: repeat(5, minmax(120px, 1fr));
}
.statement-grid {
grid-template-columns: repeat(5, minmax(120px, 1fr));
}
.compact-form {
grid-template-columns: repeat(4, minmax(120px, 1fr));
}
.checkbox {
display: inline-flex;
align-items: center;
gap: 8px;
min-height: 38px;
color: #3d484d;
}
.checkbox input {
width: auto;
min-height: auto;
}
.summary-list {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 4px;
}
.summary-list span {
border: 1px solid #dce3e6;
border-radius: 999px;
padding: 4px 9px;
color: #54646c;
font-size: 12px;
}
.scope-list span {
max-width: 100%;
overflow-wrap: anywhere;
border-radius: 6px;
}
.metric-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
gap: 10px;
margin-bottom: 12px;
}
.wide-metrics {
grid-template-columns: repeat(4, minmax(0, 1fr));
margin-top: 14px;
margin-bottom: 0;
}
.metric {
min-height: 74px;
border: 1px solid #dce3e6;
border-radius: 8px;
padding: 12px;
}
.metric span {
display: block;
color: #607079;
font-size: 12px;
margin-bottom: 6px;
}
.metric strong {
font-size: 22px;
}
.list {
display: grid;
gap: 8px;
}
.row-card {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
min-height: 58px;
padding: 10px;
border: 1px solid #dce3e6;
border-radius: 8px;
}
.row-card span {
display: block;
max-width: 42ch;
overflow: hidden;
color: #607079;
text-overflow: ellipsis;
white-space: nowrap;
}
.reconcile-list {
margin-top: 10px;
}
.review-list {
display: grid;
gap: 10px;
margin-top: 12px;
}
.review-card {
display: grid;
grid-template-columns: auto minmax(0, 1fr) minmax(300px, 0.75fr);
gap: 14px;
align-items: start;
padding: 12px;
border: 1px solid #dce3e6;
border-radius: 8px;
background: #ffffff;
}
.review-main {
display: grid;
gap: 8px;
min-width: 0;
}
.review-select {
align-self: start;
}
.review-main span,
.linked-event span,
.linked-event small,
.muted-note {
display: block;
color: #607079;
font-size: 12px;
}
.linked-event {
display: grid;
gap: 3px;
padding-top: 8px;
border-top: 1px solid #e0e5e8;
}
.review-actions {
display: grid;
grid-template-columns: repeat(2, minmax(120px, 1fr));
gap: 8px;
align-items: end;
}
.review-edit-grid {
display: grid;
grid-template-columns: repeat(4, minmax(110px, 1fr));
gap: 8px;
align-items: end;
padding-top: 8px;
border-top: 1px solid #e0e5e8;
}
.review-edit-grid .wide {
grid-column: span 2;
}
.review-edit-grid > button {
align-self: end;
}
.review-link-field {
grid-column: 1 / -1;
}
.review-filters {
grid-template-columns: auto minmax(180px, 240px) auto;
}
.review-batch-actions {
align-items: center;
margin-bottom: 8px;
}
.import-run-detail {
display: grid;
gap: 14px;
margin-top: 14px;
padding-top: 14px;
border-top: 1px solid #dce3e6;
}
.reconcile-card {
align-items: stretch;
}
.reconcile-main {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
gap: 12px;
min-width: 0;
}
.reconcile-event {
min-width: 0;
}
.reconcile-event span,
.reconcile-actions span,
.reconcile-event small {
display: block;
max-width: none;
overflow: visible;
color: #68767d;
font-size: 12px;
margin-top: 2px;
text-overflow: clip;
white-space: normal;
}
.reconcile-event strong {
display: block;
overflow-wrap: anywhere;
}
.reconcile-actions {
display: grid;
grid-template-columns: minmax(90px, 1fr) auto auto;
align-items: center;
gap: 12px;
min-width: 250px;
}
.status {
display: inline-flex;
align-items: center;
min-height: 26px;
border-radius: 999px;
padding: 0 9px;
background: #edf1f2;
color: #425158;
font-size: 12px;
text-transform: capitalize;
white-space: nowrap;
}
.status.confirmed,
.status.booked,
.status.settled,
.status.candidate_created {
background: #e3f4ec;
color: #176342;
}
.status.outstanding,
.status.announced {
background: #fff2d8;
color: #7a4d00;
}
.status.duplicate_source,
.status.error {
background: #ffe7e3;
color: #9a321f;
}
.table-wrap {
overflow-x: auto;
}
.selected-row td {
background: #eef6f5;
}
.compact-table {
margin-top: 14px;
}
.actions {
display: flex;
gap: 6px;
}
.actions button {
width: 34px;
height: 34px;
min-height: 34px;
padding: 0;
}
.section-title {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 12px;
}
.section-title h2 {
margin-bottom: 0;
}
.section-title select {
max-width: 260px;
}
.table-filters {
display: grid;
grid-template-columns: auto minmax(160px, 260px) minmax(150px, 190px);
gap: 8px;
align-items: center;
}
.event-detail {
display: grid;
gap: 14px;
margin-top: 16px;
padding-top: 16px;
border-top: 1px solid #dce3e6;
}
.event-edit-form {
display: grid;
gap: 10px;
}
.event-detail .section-title span {
display: block;
margin-top: 3px;
color: #607079;
font-size: 12px;
}
.tag-picker {
display: flex;
flex-wrap: wrap;
gap: 8px 12px;
min-height: 38px;
align-items: center;
}
.inspector-row {
display: grid;
gap: 8px;
}
.inspector-section {
display: grid;
gap: 8px;
}
.inline-actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.detail-grid {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
gap: 16px;
}
.detail-grid section {
display: grid;
align-content: start;
gap: 10px;
min-width: 0;
}
.detail-card span {
white-space: normal;
}
.fints-prompt {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(180px, 260px) auto;
gap: 10px;
align-items: end;
margin-top: 14px;
padding: 12px;
border: 1px solid #cfd7dc;
border-radius: 8px;
background: #f8fafb;
}
.challenge strong,
.challenge span {
display: block;
}
.challenge span {
color: #3d484d;
margin-top: 4px;
}
.challenge img {
display: block;
max-width: 220px;
max-height: 220px;
margin-top: 10px;
border: 1px solid #cfd7dc;
border-radius: 6px;
}
.error {
margin: 16px 24px 0;
padding: 10px 12px;
border: 1px solid #f0b5aa;
border-radius: 8px;
background: #fff0ed;
color: #8d2f1e;
}
@media (max-width: 1120px) {
.layout,
.grid.two,
.grid.three,
.setup-grid {
grid-template-columns: 1fr;
}
.form-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.wide-panel {
grid-column: auto;
}
.management-row,
.management-row.account-row,
.management-row.connector-row,
.management-row.recurring-row,
.management-row.taxonomy-row,
.management-row.tag-row,
.detail-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.review-card {
grid-template-columns: 1fr;
}
.review-edit-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 680px) {
.topbar {
position: static;
align-items: stretch;
flex-direction: column;
padding: 14px;
}
.topbar-actions {
align-items: stretch;
flex-direction: column;
}
.topbar-actions select {
min-width: 0;
}
.page-rail {
position: static;
padding: 8px 14px;
}
.page,
.layout {
padding: 14px;
}
.form-grid,
.fints-grid,
.mail-grid,
.statement-grid,
.metric-row,
.wide-metrics,
.management-row,
.management-row.account-row,
.management-row.connector-row,
.management-row.recurring-row,
.management-row.taxonomy-row,
.management-row.tag-row,
.table-filters,
.reconcile-main,
.reconcile-actions,
.review-card,
.review-actions,
.review-edit-grid,
.review-filters,
.detail-grid,
.compact-form {
grid-template-columns: 1fr;
}
.fints-prompt {
grid-template-columns: 1fr;
}
.form-grid .wide {
grid-column: span 1;
}
.review-edit-grid .wide {
grid-column: span 1;
}
}