:root {
    --portal-primary: #3666d8;
    --portal-primary-dark: #254eaf;
    --portal-info: #1596c4;
    --portal-surface: #ffffff;
    --portal-border: #e7ebf3;
    --portal-muted: #6b7280;
    --portal-shadow: 0 0.5rem 1.75rem rgba(28, 45, 84, 0.07);
}

body {
    background: #f6f8fc !important;
}

.card {
    border-color: var(--portal-border);
    border-radius: 1rem;
}

.shadow-sm {
    box-shadow: var(--portal-shadow) !important;
}

.portal-cover {
    height: 7.5rem;
}

.portal-avatar-wrap {
    margin-top: -4rem;
}

.portal-avatar {
    width: 8rem;
    height: 8rem;
}

.portal-avatar-sm {
    width: 2.75rem;
    height: 2.75rem;
    min-width: 2.75rem;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    object-position: center;
    flex: 0 0 auto;
}

.portal-profile-photo {
    width: 10rem;
    height: 10rem;
    min-width: 10rem;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    object-position: center;
    flex: 0 0 auto;
}

.portal-icon {
    color: var(--portal-primary);
}

.portal-icon-muted {
    color: var(--portal-muted);
}

.portal-list-icon {
    width: 1.5rem;
    color: var(--portal-primary);
    text-align: center;
}

.portal-action-list .list-group-item {
    padding-top: 0.85rem;
    padding-bottom: 0.85rem;
    border-color: var(--portal-border);
}

.portal-action-list .list-group-item-action:hover {
    color: var(--portal-primary-dark);
    background: #f4f7ff;
}

.portal-status-check {
    color: #198754;
    font-size: 4.75rem;
    line-height: 1;
}

.portal-divider {
    border: 0;
    border-top: 1px dashed #b6c0d0;
    opacity: 1;
}

.portal-payment-next {
    border-bottom: 1px solid var(--portal-border);
}

.portal-payment-next:last-child {
    border-bottom: 0;
}

.portal-info-accent {
    color: var(--portal-info);
}

.portal-info-badge {
    color: #086f95;
    background: #d9f3fc;
}

.portal-subject-link,
.portal-subject-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.65rem 0.8rem;
    border: 1px solid #dce5f8;
    border-radius: 0.7rem;
    color: #244b9a;
    background: #f5f8ff;
    font-weight: 500;
}

.portal-subject-link:hover {
    color: #173a82;
    background: #eaf0ff;
    border-color: #b7caf4;
}

.portal-rich-text > :last-child {
    margin-bottom: 0;
}

.portal-table-nowrap th,
.portal-table-nowrap td {
    white-space: nowrap;
}

.portal-status-dot {
    display: inline-block;
    width: 0.375rem;
    height: 0.375rem;
    border-radius: 50%;
    vertical-align: middle;
}

.portal-status-dot-planned { background: #0dcaf0; }
.portal-status-dot-partial { background: #ffc107; }
.portal-status-dot-paid { background: #198754; }
.portal-status-dot-overdue { background: #dc3545; }
.portal-status-dot-waived,
.portal-status-dot-cancelled { background: #6c757d; }
.portal-status-dot-unknown { background: #6c757d; }

@media (max-width: 575.98px) {
    .portal-avatar {
        width: 7rem;
        height: 7rem;
    }
}
