:root {

    --rcc-green-950: #063f3e;

    --rcc-green-900: #0a4d4b;

    --rcc-green-800: #125c59;

    --rcc-green-700: #1d6c68;

    --rcc-green-100: #e6f0ef;

    --rcc-green-050: #f3f8f7;



    --rcc-gold-700: #8c6a20;

    --rcc-gold-500: #b18b3b;

    --rcc-gold-100: #f5ecd8;



    --rcc-ink-900: #1d2728;

    --rcc-ink-700: #435253;

    --rcc-ink-500: #6a7778;

    --rcc-ink-300: #aab3b3;



    --rcc-surface: #ffffff;

    --rcc-surface-soft: #f8f7f3;

    --rcc-page-background: #f3f1eb;

    --rcc-border: #d9d7cf;

    --rcc-border-strong: #c7c4bb;



    --rcc-success: #2f6f46;

    --rcc-success-soft: #e8f3eb;

    --rcc-warning: #8a6418;

    --rcc-warning-soft: #fbf3df;

    --rcc-danger: #a63e3e;

    --rcc-danger-soft: #f9e9e9;

    --rcc-info: #285f7a;

    --rcc-info-soft: #e7f1f6;



    --rcc-radius-sm: 6px;

    --rcc-radius-md: 10px;

    --rcc-radius-lg: 14px;



    --rcc-shadow-sm: 0 1px 2px rgba(20, 35, 35, 0.05);

    --rcc-shadow-md: 0 8px 24px rgba(20, 35, 35, 0.08);



    --rcc-space-1: 0.25rem;

    --rcc-space-2: 0.5rem;

    --rcc-space-3: 0.75rem;

    --rcc-space-4: 1rem;

    --rcc-space-5: 1.25rem;

    --rcc-space-6: 1.5rem;

    --rcc-space-7: 2rem;

    --rcc-space-8: 2.5rem;

    --rcc-space-9: 3rem;



    --rcc-control-height: 48px;

    --rcc-transition: 160ms ease;

}



html {

    min-height: 100%;

    font-size: 16px;

}



body {

    min-height: 100vh;

    margin: 0;

    color: var(--rcc-ink-900);

    background: var(--rcc-page-background);

    font-family:

        Inter,

        Aptos,

        "Segoe UI",

        Roboto,

        Helvetica,

        Arial,

        sans-serif;

    line-height: 1.5;

}



a {

    color: var(--rcc-green-800);

    text-decoration-thickness: 1px;

    text-underline-offset: 2px;

}



a:hover {

    color: var(--rcc-green-950);

}



.rcc-main-content {

    min-height: calc(100vh - 170px);

    padding: var(--rcc-space-7) 0 var(--rcc-space-9);

}



.rcc-page {

    width: min(100% - 2rem, 1320px);

    margin-inline: auto;

}



.rcc-page--narrow {

    max-width: 860px;

}



.rcc-page--compact {

    max-width: 680px;

}



.rcc-page-header {

    display: flex;

    align-items: flex-start;

    justify-content: space-between;

    gap: var(--rcc-space-6);

    margin-bottom: var(--rcc-space-7);

}



.rcc-page-header__content {

    min-width: 0;

}



.rcc-page-title {

    margin: 0;

    color: var(--rcc-green-950);

    font-family:

        Georgia,

        "Times New Roman",

        serif;

    font-size: clamp(2rem, 4vw, 3rem);

    font-weight: 700;

    line-height: 1.08;

    letter-spacing: -0.02em;

}



.rcc-page-description {

    max-width: 850px;

    margin: var(--rcc-space-3) 0 0;

    color: var(--rcc-ink-700);

    font-size: 1.08rem;

}



.rcc-page-actions {

    display: flex;

    flex-wrap: wrap;

    align-items: center;

    justify-content: flex-end;

    gap: var(--rcc-space-3);

}



.rcc-breadcrumb {

    display: flex;

    flex-wrap: wrap;

    gap: var(--rcc-space-2);

    margin: 0 0 var(--rcc-space-4);

    padding: 0;

    color: var(--rcc-ink-500);

    font-size: 0.92rem;

    list-style: none;

}



.rcc-breadcrumb li + li::before {

    margin-right: var(--rcc-space-2);

    color: var(--rcc-ink-300);

    content: "/";

}



.rcc-card {

    position: relative;

    overflow: hidden;

    border: 1px solid var(--rcc-border);

    border-radius: var(--rcc-radius-lg);

    background: var(--rcc-surface);

    box-shadow: var(--rcc-shadow-sm);

}



.rcc-card + .rcc-card {

    margin-top: var(--rcc-space-6);

}



.rcc-card__header {

    display: flex;

    align-items: flex-start;

    justify-content: space-between;

    gap: var(--rcc-space-5);

    padding: var(--rcc-space-6) var(--rcc-space-7);

    border-bottom: 1px solid var(--rcc-border);

    background: linear-gradient(

        180deg,

        var(--rcc-surface) 0%,

        var(--rcc-green-050) 100%

    );

}



.rcc-card__heading {

    margin: 0;

    color: var(--rcc-green-950);

    font-size: 1.2rem;

    font-weight: 750;

    line-height: 1.3;

}



.rcc-card__description {

    margin: var(--rcc-space-2) 0 0;

    color: var(--rcc-ink-700);

}



.rcc-card__body {

    padding: var(--rcc-space-7);

}



.rcc-card__body--compact {

    padding: var(--rcc-space-5);

}



.rcc-card__footer {

    display: flex;

    flex-wrap: wrap;

    justify-content: flex-end;

    gap: var(--rcc-space-3);

    padding: var(--rcc-space-5) var(--rcc-space-7);

    border-top: 1px solid var(--rcc-border);

    background: var(--rcc-surface-soft);

}



.rcc-section {

    margin-bottom: var(--rcc-space-7);

}



.rcc-section:last-child {

    margin-bottom: 0;

}



.rcc-section-title {

    margin: 0 0 var(--rcc-space-4);

    padding-bottom: var(--rcc-space-3);

    border-bottom: 1px solid var(--rcc-border);

    color: var(--rcc-green-900);

    font-size: 0.95rem;

    font-weight: 800;

    letter-spacing: 0.06em;

    text-transform: uppercase;

}



.rcc-form-grid {

    display: grid;

    grid-template-columns: repeat(12, minmax(0, 1fr));

    gap: var(--rcc-space-5);

}



.rcc-col-12 { grid-column: span 12; }

.rcc-col-9 { grid-column: span 9; }

.rcc-col-8 { grid-column: span 8; }

.rcc-col-6 { grid-column: span 6; }

.rcc-col-4 { grid-column: span 4; }

.rcc-col-3 { grid-column: span 3; }



.rcc-field {

    min-width: 0;

}



.rcc-field label,

.form-label {

    display: inline-block;

    margin-bottom: var(--rcc-space-2);

    color: var(--rcc-ink-900);

    font-weight: 700;

}



.rcc-field-help,

.form-text {

    margin-top: var(--rcc-space-2);

    color: var(--rcc-ink-500);

    font-size: 0.9rem;

}



.form-control,

.form-select {

    min-height: var(--rcc-control-height);

    padding: 0.7rem 0.9rem;

    border: 1px solid var(--rcc-border-strong);

    border-radius: var(--rcc-radius-md);

    background-color: var(--rcc-surface);

    color: var(--rcc-ink-900);

    font-size: 1rem;

    transition:

        border-color var(--rcc-transition),

        box-shadow var(--rcc-transition);

}



textarea.form-control {

    min-height: 120px;

}



.form-control:focus,

.form-select:focus {

    border-color: var(--rcc-green-700);

    box-shadow: 0 0 0 0.22rem rgba(29, 108, 104, 0.14);

}



.form-control::placeholder {

    color: var(--rcc-ink-300);

}



.form-check {

    display: flex;

    align-items: flex-start;

    gap: var(--rcc-space-2);

}



.form-check-input {

    margin-top: 0.3rem;

}



.form-check-input:checked {

    border-color: var(--rcc-green-800);

    background-color: var(--rcc-green-800);

}



.field-validation-error,

.text-danger {

    display: block;

    margin-top: var(--rcc-space-2);

    color: var(--rcc-danger) !important;

    font-size: 0.9rem;

}



.input-validation-error {

    border-color: var(--rcc-danger);

}



.validation-summary-errors {

    margin-bottom: var(--rcc-space-5);

    padding: var(--rcc-space-4) var(--rcc-space-5);

    border: 1px solid #e5b8b8;

    border-radius: var(--rcc-radius-md);

    background: var(--rcc-danger-soft);

    color: #7b2f2f;

}



.validation-summary-errors ul {

    margin: 0;

    padding-left: 1.2rem;

}



.btn {

    min-height: 44px;

    padding: 0.62rem 1rem;

    border-radius: var(--rcc-radius-md);

    font-weight: 700;

    transition:

        transform var(--rcc-transition),

        box-shadow var(--rcc-transition),

        background-color var(--rcc-transition),

        border-color var(--rcc-transition);

}



.btn:hover {

    transform: translateY(-1px);

}



.btn-primary {

    border-color: var(--rcc-green-900);

    background: var(--rcc-green-900);

    color: #fff;

}



.btn-primary:hover,

.btn-primary:focus {

    border-color: var(--rcc-green-950);

    background: var(--rcc-green-950);

    color: #fff;

    box-shadow: 0 5px 14px rgba(6, 63, 62, 0.18);

}



.btn-outline-primary {

    border-color: var(--rcc-green-800);

    color: var(--rcc-green-800);

}



.btn-outline-primary:hover {

    border-color: var(--rcc-green-800);

    background: var(--rcc-green-800);

    color: #fff;

}



.rcc-button-bar {

    display: flex;

    flex-wrap: wrap;

    align-items: center;

    justify-content: flex-end;

    gap: var(--rcc-space-3);

    margin-top: var(--rcc-space-6);

}



.rcc-button-bar--split {

    justify-content: space-between;

}



.rcc-alert {

    display: flex;

    align-items: flex-start;

    gap: var(--rcc-space-3);

    margin-bottom: var(--rcc-space-5);

    padding: var(--rcc-space-4) var(--rcc-space-5);

    border: 1px solid transparent;

    border-radius: var(--rcc-radius-md);

}



.rcc-alert--success {

    border-color: #bbd8c3;

    background: var(--rcc-success-soft);

    color: #285b3a;

}



.rcc-alert--warning {

    border-color: #ead8a8;

    background: var(--rcc-warning-soft);

    color: #6e5015;

}



.rcc-alert--danger {

    border-color: #e5b8b8;

    background: var(--rcc-danger-soft);

    color: #7b2f2f;

}



.rcc-alert--info {

    border-color: #b8d3df;

    background: var(--rcc-info-soft);

    color: #214e64;

}



.rcc-info-panel {

    padding: var(--rcc-space-5);

    border-left: 4px solid var(--rcc-green-700);

    border-radius: var(--rcc-radius-md);

    background: var(--rcc-green-050);

}



.rcc-info-panel__title {

    margin: 0 0 var(--rcc-space-2);

    color: var(--rcc-green-950);

    font-weight: 800;

}



.rcc-info-panel p:last-child {

    margin-bottom: 0;

}



.rcc-divider {

    display: flex;

    align-items: center;

    gap: var(--rcc-space-4);

    margin: var(--rcc-space-6) 0;

    color: var(--rcc-ink-500);

    font-size: 0.85rem;

    font-weight: 750;

    letter-spacing: 0.06em;

    text-transform: uppercase;

}



.rcc-divider::before,

.rcc-divider::after {

    flex: 1;

    height: 1px;

    background: var(--rcc-border);

    content: "";

}



.rcc-stats-grid {

    display: grid;

    grid-template-columns: repeat(4, minmax(0, 1fr));

    gap: var(--rcc-space-4);

}



.rcc-stat-card {

    padding: var(--rcc-space-5);

    border: 1px solid var(--rcc-border);

    border-radius: var(--rcc-radius-md);

    background: var(--rcc-surface);

    box-shadow: var(--rcc-shadow-sm);

}



.rcc-stat-card__label {

    color: var(--rcc-ink-500);

    font-size: 0.82rem;

    font-weight: 800;

    letter-spacing: 0.05em;

    text-transform: uppercase;

}



.rcc-stat-card__value {

    margin-top: var(--rcc-space-2);

    color: var(--rcc-green-950);

    font-size: 1.8rem;

    font-weight: 800;

    line-height: 1;

}



.rcc-table-wrap {

    overflow-x: auto;

    border: 1px solid var(--rcc-border);

    border-radius: var(--rcc-radius-md);

    background: var(--rcc-surface);

}



.rcc-table {

    width: 100%;

    margin: 0;

    border-collapse: collapse;

}



.rcc-table th {

    padding: 0.9rem 1rem;

    border-bottom: 1px solid var(--rcc-border);

    background: var(--rcc-green-050);

    color: var(--rcc-green-950);

    font-size: 0.82rem;

    font-weight: 800;

    letter-spacing: 0.04em;

    text-align: left;

    text-transform: uppercase;

}



.rcc-table td {

    padding: 0.95rem 1rem;

    border-bottom: 1px solid var(--rcc-border);

    vertical-align: middle;

}



.rcc-table tbody tr:last-child td {

    border-bottom: 0;

}



.rcc-table tbody tr:hover {

    background: #fbfcfc;

}



.rcc-badge {

    display: inline-flex;

    align-items: center;

    min-height: 26px;

    padding: 0.25rem 0.55rem;

    border-radius: 999px;

    background: var(--rcc-green-100);

    color: var(--rcc-green-900);

    font-size: 0.78rem;

    font-weight: 800;

}



.rcc-badge--success {

    background: var(--rcc-success-soft);

    color: var(--rcc-success);

}



.rcc-badge--warning {

    background: var(--rcc-warning-soft);

    color: var(--rcc-warning);

}



.rcc-badge--danger {

    background: var(--rcc-danger-soft);

    color: var(--rcc-danger);

}



.rcc-empty-state {

    padding: var(--rcc-space-8) var(--rcc-space-6);

    text-align: center;

}



.rcc-empty-state__title {

    margin: 0;

    color: var(--rcc-green-950);

    font-size: 1.25rem;

    font-weight: 800;

}



.rcc-empty-state__text {

    max-width: 560px;

    margin: var(--rcc-space-2) auto var(--rcc-space-5);

    color: var(--rcc-ink-500);

}



.rcc-site-header {

    border-bottom: 1px solid rgba(255, 255, 255, 0.12);

    background: var(--rcc-green-950);

    color: #fff;

    box-shadow: var(--rcc-shadow-sm);

}



.rcc-header-inner {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: var(--rcc-space-5);

    min-height: 86px;

}



.rcc-brand {

    display: inline-flex;

    align-items: center;

    gap: var(--rcc-space-3);

    color: #fff;

    text-decoration: none;

}



.rcc-brand:hover {

    color: #fff;

}



.rcc-logo-wrap {

    display: grid;

    width: 52px;

    height: 52px;

    place-items: center;

    border-radius: 50%;

    background: #fff;

}



.rcc-logo {

    max-width: 42px;

    max-height: 42px;

}



.rcc-brand-text {

    display: flex;

    flex-direction: column;

}



.rcc-brand-title {

    font-family: Georgia, "Times New Roman", serif;

    font-size: 1.35rem;

    font-weight: 700;

}



.rcc-brand-subtitle {

    color: rgba(255, 255, 255, 0.72);

    font-size: 0.82rem;

}



.rcc-main-nav {

    display: flex;

    flex-wrap: wrap;

    align-items: center;

    gap: var(--rcc-space-2);

}



.rcc-nav-link {

    padding: 0.45rem 0.65rem;

    border-radius: var(--rcc-radius-sm);

    color: rgba(255, 255, 255, 0.82);

    font-size: 0.9rem;

    font-weight: 650;

    text-decoration: none;

}



.rcc-nav-link:hover {

    background: rgba(255, 255, 255, 0.1);

    color: #fff;

}



.rcc-site-footer {

    padding: var(--rcc-space-5) 0;

    border-top: 1px solid var(--rcc-border);

    background: var(--rcc-surface);

    color: var(--rcc-ink-500);

    font-size: 0.9rem;

}



@media (max-width: 1100px) {

    .rcc-header-inner {

        align-items: flex-start;

        flex-direction: column;

        padding: var(--rcc-space-4) 0;

    }



    .rcc-main-nav {

        width: 100%;

    }



    .rcc-stats-grid {

        grid-template-columns: repeat(2, minmax(0, 1fr));

    }

}



@media (max-width: 768px) {

    .rcc-main-content {

        padding-top: var(--rcc-space-5);

    }



    .rcc-page {

        width: min(100% - 1.25rem, 1320px);

    }



    .rcc-page-header {

        flex-direction: column;

    }



    .rcc-page-actions {

        justify-content: flex-start;

        width: 100%;

    }



    .rcc-card__header,

    .rcc-card__body,

    .rcc-card__footer {

        padding-left: var(--rcc-space-5);

        padding-right: var(--rcc-space-5);

    }



    .rcc-col-9,

    .rcc-col-8,

    .rcc-col-6,

    .rcc-col-4,

    .rcc-col-3 {

        grid-column: span 12;

    }



    .rcc-stats-grid {

        grid-template-columns: 1fr;

    }



    .rcc-button-bar,

    .rcc-card__footer {

        align-items: stretch;

        flex-direction: column-reverse;

    }



    .rcc-button-bar .btn,

    .rcc-card__footer .btn {

        width: 100%;

    }

}

/* =========================================================
   LEGACY MARKUP COMPATIBILITY

   Several administration pages created before the shared design
   system use rcc-card-header, rcc-card-body, and
   rcc-page-header-actions rather than the newer BEM class names.
   These aliases preserve consistent spacing while those pages are
   migrated gradually.
   ========================================================= */

.rcc-page-header-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: var(--rcc-space-3);
    flex-shrink: 0;
}

.rcc-card-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--rcc-space-5);
    padding: var(--rcc-space-5) var(--rcc-space-6);
    border-bottom: 1px solid var(--rcc-border);
    background: linear-gradient(
        180deg,
        var(--rcc-surface) 0%,
        var(--rcc-green-050) 100%
    );
    color: var(--rcc-green-950);
    font-size: 1.15rem;
    font-weight: 750;
    line-height: 1.3;
}

.rcc-card-body {
    padding: var(--rcc-space-6);
}

/*
   Older cards sometimes place headings, rows, forms, and tables
   directly inside .rcc-card without a body wrapper. Give those
   cards the same internal spacing as the modern card component.
*/
.rcc-card:not(:has(> .rcc-card__header)):not(:has(> .rcc-card__body)):not(:has(> .rcc-card-header)):not(:has(> .rcc-card-body)) {
    padding: var(--rcc-space-6);
}

/* Prevent stat-card content from touching the card border. */
.rcc-card > .text-muted:first-child,
.rcc-card > .small:first-child {
    margin-top: 0;
}

/* Improve spacing between direct children on older detail pages. */
.rcc-card > h1,
.rcc-card > h2,
.rcc-card > h3,
.rcc-card > h4,
.rcc-card > h5,
.rcc-card > h6 {
    margin-top: 0;
}

.rcc-card > h1 + p,
.rcc-card > h2 + p,
.rcc-card > h3 + p,
.rcc-card > h4 + p,
.rcc-card > h5 + p,
.rcc-card > h6 + p {
    margin-top: var(--rcc-space-2);
}

.rcc-card > .row:last-child,
.rcc-card > form:last-child,
.rcc-card > .table-responsive:last-child,
.rcc-card > .rcc-table-wrap:last-child {
    margin-bottom: 0;
}

.security-matrix-checkbox {
    width: 1.35rem;
    height: 1.35rem;
    cursor: pointer;
    border: 2px solid #495057;
    background-color: #ffffff;
}

.security-matrix-checkbox:checked {
    background-color: #0d6efd;
    border-color: #0d6efd;
}

.security-matrix-checkbox:hover {
    border-color: #0a58ca;
}

.security-matrix-checkbox:focus {
    box-shadow: 0 0 0 .2rem rgba(13,110,253,.25);
}

@media (max-width: 768px) {
    .rcc-page-header-actions {
        justify-content: flex-start;
        width: 100%;
    }

    .rcc-page-header-actions .btn {
        width: 100%;
    }

    .rcc-card-header,
    .rcc-card-body {
        padding-left: var(--rcc-space-5);
        padding-right: var(--rcc-space-5);
    }
}

/*
 * Hide empty alert containers and ASP.NET Core validation summaries when
 * there are no validation messages to display.
 */
.alert:empty,
.validation-summary-valid {
    display: none;
}
