/** * Copyright since 2025 Mifos Initiative * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ $brand: #1353a0; $accent: #0ea5e9; $border: #e2e8f0; $text: #0f172a; $text-muted: #64748b; $mono: 'Roboto Mono', 'DM Mono', monospace; .rpt-container { max-width: 1100px; margin: 0 auto; padding: 20px 16px; } // Header .rpt-header { display: flex; align-items: center; margin-bottom: 20px; &__left { display: flex; align-items: center; gap: 10px; } &__title { font-size: 18px; font-weight: 600; color: $text; margin: 0; } &__action { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; text-decoration: none; color: #b91c1c; background: #fef2f2; border: 1px solid #fecaca; border-radius: 20px; padding: 7px 16px; transition: background 0.2s ease, border-color 0.2s ease; &:hover { background: #fee2e2; border-color: #fca5a5; } } &__badge { font-size: 11px; font-family: $mono; color: $text-muted; background: #f1f5f9; padding: 2px 10px; border-radius: 10px; font-weight: 500; } } .rpt-logomark { width: 20px; height: 20px; display: grid; grid-template-columns: 1fr 1fr; gap: 2px; flex-shrink: 0; span { border-radius: 2px; &:nth-child(1) { background: $brand; } &:nth-child(2) { background: $accent; } &:nth-child(3) { background: #10b981; } &:nth-child(4) { background: #cbd5e1; } } } // Search .rpt-search-row { margin-bottom: 16px; } .rpt-search { width: 100%; max-width: 420px; &__icon { color: $text-muted; margin-right: 8px; font-size: 13px; } ::ng-deep { .mat-mdc-form-field-flex { height: 38px; } .mat-mdc-form-field-infix { padding: 6px 0; min-height: 38px; } .mat-mdc-form-field-subscript-wrapper { height: 0; min-height: 0; } .mdc-notched-outline { .mdc-notched-outline__leading { border-radius: 8px 0 0 8px; } .mdc-notched-outline__trailing { border-radius: 0 8px 8px 0; } } input { font-size: 13px; } } } // Category Tiles .rpt-tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; @media (width <= 900px) { grid-template-columns: repeat(2, 1fr); } @media (width <= 500px) { grid-template-columns: 1fr; } } .rpt-tile { display: flex; align-items: center; gap: 14px; padding: 16px 18px; background: #fff; border: 1px solid rgb(0 0 0 / 6%); border-radius: 8px; cursor: pointer; transition: box-shadow 0.15s, transform 0.15s; &:hover { box-shadow: 0 4px 16px rgb(0 0 0 / 8%); transform: translateY(-1px); } &__icon { width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 16px; flex-shrink: 0; &.blue { background: #e0f2fe; color: #0284c7; } &.green { background: #d1fae5; color: #059669; } &.purple { background: #ede9fe; color: #7c3aed; } &.amber { background: #fef3c7; color: #d97706; } &.teal { background: #ccfbf1; color: #0d9488; } &.red { background: #fee2e2; color: #dc2626; } } &__info { display: flex; flex-direction: column; flex: 1; min-width: 0; } &__name { font-size: 14px; font-weight: 600; color: $text; } &__count { font-size: 11px; color: $text-muted; font-family: $mono; } &__arrow { font-size: 12px; color: #cbd5e1; flex-shrink: 0; transition: color 0.12s; } &:hover &__arrow { color: $brand; } } .rpt-tiles--sub { grid-template-columns: repeat(2, 1fr); @media (width <= 600px) { grid-template-columns: 1fr; } } // Detail view .rpt-detail__header { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; } .rpt-detail__title { font-size: 16px; font-weight: 600; color: $text; margin: 0; } .rpt-back-btn { border-radius: 8px !important; font-size: 12px !important; font-weight: 600 !important; height: 32px !important; border-color: $border !important; color: $text-muted !important; i { margin-right: 6px; } &:hover { color: $brand !important; border-color: $brand !important; } } // Table .rpt-table-wrap { border: 1px solid $border; border-radius: 10px; overflow: hidden; mat-paginator { border-top: 1px solid $border; background: transparent; } } .rpt-table { width: 100%; ::ng-deep { .mat-mdc-header-row { background: #f8fafc; min-height: 36px; height: 36px; } .mat-mdc-header-cell { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: $text-muted; border-bottom: 1px solid $border; padding: 0 16px; } .mat-mdc-row { min-height: 38px; height: 38px; border-bottom: 1px solid #f1f5f9; &:nth-child(even) { background: #fafbfc; } &:last-child { border-bottom: none; } } .mat-mdc-cell { font-size: 13px; color: $text; padding: 0 16px; } } } .rpt-row { cursor: pointer; &:hover { background: #eef4ff !important; } } .rpt-cell-link { color: $brand; font-weight: 500; } .rpt-type-badge { font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 4px; background: #ede9fe; color: #7c3aed; text-transform: capitalize; } .rpt-cat-badge { font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 4px; background: #e0f2fe; color: #0284c7; text-transform: capitalize; } // Dark theme :host-context(.dark-theme) { .rpt-tile { background: #1e1e2e; border-color: rgb(255 255 255 / 6%); } .rpt-tile__name { color: #e0e0e0; } .rpt-tile__arrow { color: #444; } .rpt-header__title { color: #e0e0e0; } .rpt-detail__title { color: #e0e0e0; } }