/** * 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/. */ $navy: #0d1b2a; $blue: #1e88e5; $blue-d: #1e40af; $border: #e2e8f0; .cur-view { max-width: 1440px; margin: 0 auto; padding: 12px 20px 22px; } /* ─── Gradient hero header ──────────────────────────────────────────── */ .cur-hero { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: stretch; gap: 14px; padding: 12px 18px; border-radius: 12px; color: #fff; background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 45%, #4338ca 100%); box-shadow: 0 6px 18px -10px rgb(15 23 42 / 35%); overflow: hidden; &::before { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at top right, rgb(255 255 255 / 12%) 0%, transparent 55%); pointer-events: none; } &__left { display: flex; align-items: center; gap: 12px; min-width: 0; position: relative; z-index: 1; } &__avatar { width: 40px; height: 40px; border-radius: 10px; background: linear-gradient(135deg, rgb(255 255 255 / 22%) 0%, rgb(255 255 255 / 10%) 100%); border: 1px solid rgb(255 255 255 / 28%); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 16px; flex-shrink: 0; box-shadow: 0 3px 10px -3px rgb(0 0 0 / 25%); } &__info { display: flex; flex-direction: column; gap: 3px; min-width: 0; } &__status-row { display: flex; align-items: center; gap: 6px; } &__title { margin: 0; font-size: 15px; font-weight: 800; letter-spacing: 0.01em; color: #fff; line-height: 1.15; ::ng-deep mifosx-long-text { color: #fff; } } &__meta { display: flex; flex-wrap: wrap; gap: 2px 18px; margin-top: 1px; } &__meta-item { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: rgb(255 255 255 / 90%); } &__meta-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.07em; color: rgb(255 255 255 / 60%); font-weight: 600; } &__meta-value { font-weight: 600; color: #fff; } &__kpis { display: flex; gap: 8px; align-items: stretch; position: relative; z-index: 1; } &__actions { display: flex; align-items: center; position: relative; z-index: 1; button { width: 32px !important; height: 32px !important; min-width: 32px !important; padding: 0 !important; border-radius: 50% !important; color: #fff !important; background: rgb(255 255 255 / 10%) !important; border: 1px solid rgb(255 255 255 / 22%) !important; display: inline-flex !important; align-items: center; justify-content: center; line-height: 1; transition: background 0.15s ease, border-color 0.15s ease, transform 0.12s ease; ::ng-deep fa-icon { font-size: 14px; line-height: 1; display: inline-flex; align-items: center; justify-content: center; } ::ng-deep .mat-mdc-button-persistent-ripple, ::ng-deep .mat-mdc-button-touch-target { border-radius: 50% !important; } } button:hover { background: rgb(255 255 255 / 22%) !important; border-color: rgb(255 255 255 / 38%) !important; } button:active { transform: scale(0.94); } } } /* Balance KPI tiles */ .cur-kpi { display: flex; flex-direction: column; justify-content: center; min-width: 130px; padding: 7px 14px; border-radius: 9px; background: rgb(255 255 255 / 14%); border: 1px solid rgb(255 255 255 / 22%); backdrop-filter: blur(8px); &__label { font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.07em; font-weight: 700; color: rgb(255 255 255 / 75%); } &__value { margin-top: 2px; font-size: 15px; font-weight: 800; color: #fff; font-variant-numeric: tabular-nums; letter-spacing: -0.01em; } &--available { background: rgb(16 185 129 / 22%); border-color: rgb(16 185 129 / 35%); } } /* Status pill */ .cur-status-pill { display: inline-flex; align-items: center; gap: 5px; height: 18px; padding: 0 8px; border-radius: 999px; background: rgb(16 185 129 / 24%); border: 1px solid rgb(16 185 129 / 40%); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: #d1fae5; &__dot { width: 5px; height: 5px; border-radius: 50%; background: #10b981; box-shadow: 0 0 0 2px rgb(16 185 129 / 30%); } &--warn { background: rgb(245 158 11 / 24%); border-color: rgb(245 158 11 / 40%); color: #fef3c7; .cur-status-pill__dot { background: #f59e0b; box-shadow: 0 0 0 3px rgb(245 158 11 / 30%); } } &.statussubmitted, &.statuspending { background: rgb(245 158 11 / 24%); border-color: rgb(245 158 11 / 40%); color: #fef3c7; .cur-status-pill__dot { background: #f59e0b; } } &.statusclosed, &.statusrejected, &.statuswithdrawn { background: rgb(239 68 68 / 24%); border-color: rgb(239 68 68 / 40%); color: #fee2e2; .cur-status-pill__dot { background: #ef4444; } } } /* ─── Pill-style tab navigation ─────────────────────────────────────── */ .cur-tabs { margin-top: 18px; background: #fff; border: 1px solid $border; border-radius: 14px; padding: 6px; box-shadow: 0 1px 3px rgb(15 23 42 / 4%); overflow: hidden; ::ng-deep { .mat-mdc-tab-link-container { border-bottom: none !important; } .mat-mdc-tab-links { gap: 4px; flex-wrap: wrap; } .mdc-tab-indicator__content--underline, .mat-mdc-tab-header-pagination-controls-enabled .mdc-tab-indicator__content--underline { display: none !important; } } } .cur-tab { display: inline-flex !important; align-items: center; gap: 8px; height: 38px !important; min-width: 0 !important; padding: 0 16px !important; border-radius: 10px !important; font-family: Inter, 'DM Sans', Roboto, sans-serif !important; font-size: 13px !important; font-weight: 600 !important; letter-spacing: 0.01em !important; color: #64748b !important; background: transparent !important; transition: all 0.15s ease; white-space: nowrap; border: 1px solid transparent !important; opacity: 1 !important; &__ic { font-size: 12px; color: inherit; } &:hover:not(.mdc-tab--active) { background: #f1f5f9 !important; color: $navy !important; } &.mdc-tab--active, &.mat-mdc-tab-link-active { background: linear-gradient(135deg, $blue 0%, $blue-d 100%) !important; color: #fff !important; box-shadow: 0 2px 6px -1px rgb(30 64 175 / 35%); border-color: $blue-d !important; ::ng-deep .mdc-tab__text-label, ::ng-deep .mat-mdc-tab-link-content, ::ng-deep span, .cur-tab__ic { color: #fff !important; opacity: 1 !important; } } } .cur-body { margin-top: 16px; } /* ─── Responsive ────────────────────────────────────────────────────── */ @media (width <= 1100px) { .cur-hero { grid-template-columns: 1fr; &__kpis { width: 100%; flex-wrap: wrap; } &__actions { position: absolute; top: 18px; right: 18px; } } .cur-kpi { flex: 1 1 auto; min-width: 0; } } @media (width <= 700px) { .cur-view { padding: 12px; } .cur-hero { padding: 18px; &__title { font-size: 18px; } &__avatar { width: 52px; height: 52px; font-size: 22px; border-radius: 12px; } } .cur-tab { padding: 0 12px !important; font-size: 12px !important; } }