/* =============================================================
   adxCore  –  site.css   (hosted by adxCore.Shell)
   Shared across: Shell, AMS, AMT, Admin, Clients
   Companion to UI_STANDARDS.md at solution root.
   Bootstrap 5.3 base — do not duplicate Bootstrap utilities here.
   ============================================================= */

/* ---------------------------------------------------------------
   Page Header
   --------------------------------------------------------------- */
.adx-page-header {
    border-bottom: 2px solid var(--bs-success);
    padding-bottom: 0.5rem;
}

/* ---------------------------------------------------------------
   Toolbar
   --------------------------------------------------------------- */
.adx-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: center;
}

/* ---------------------------------------------------------------
   Standard buttons  (UI_STANDARDS.md §3 / §10)
   Always use .adx-btn + one variant class.
   Do not mix with ad-hoc btn-* classes on toolbar buttons.
   --------------------------------------------------------------- */
.adx-btn {
    display: inline-flex;
    align-items: center;
    font-size: 0.875rem;
    font-weight: 500;
    padding: 0.3rem 0.75rem;
    min-width: 82px;
    border-radius: 0.375rem;
    border: 1px solid transparent;
    cursor: pointer;
    white-space: nowrap;
    transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
    line-height: 1.5;
}

.adx-btn:disabled {
    opacity: 0.65;
    cursor: not-allowed;
    pointer-events: none;
}

/* Edit — green (success) */
.adx-btn-edit {
    background-color: var(--bs-success);
    border-color: var(--bs-success);
    color: #fff;
}
.adx-btn-edit:hover:not(:disabled) {
    background-color: #157347;
    border-color: #146c43;
    color: #fff;
}

/* Save — blue (primary) */
.adx-btn-save {
    background-color: var(--bs-primary);
    border-color: var(--bs-primary);
    color: #fff;
}
.adx-btn-save:hover:not(:disabled) {
    background-color: #0a58ca;
    border-color: #0a53be;
    color: #fff;
}

/* Cancel — grey (secondary) */
.adx-btn-cancel {
    background-color: var(--bs-secondary);
    border-color: var(--bs-secondary);
    color: #fff;
}
.adx-btn-cancel:hover:not(:disabled) {
    background-color: #5c636a;
    border-color: #565e64;
    color: #fff;
}

/* New / Add — outline green */
.adx-btn-new {
    background-color: transparent;
    border-color: var(--bs-success);
    color: var(--bs-success);
}
.adx-btn-new:hover:not(:disabled) {
    background-color: var(--bs-success);
    color: #fff;
}

/* Warning / Password — amber */
.adx-btn-warning {
    background-color: var(--bs-warning);
    border-color: var(--bs-warning);
    color: #212529;
}
.adx-btn-warning:hover:not(:disabled) {
    background-color: #e0a800;
    border-color: #d39e00;
    color: #212529;
}

/* Delete — red (danger) */
.adx-btn-delete {
    background-color: var(--bs-danger);
    border-color: var(--bs-danger);
    color: #fff;
}
.adx-btn-delete:hover:not(:disabled) {
    background-color: #b02a37;
    border-color: #a52834;
    color: #fff;
}

/* Refresh — outline secondary */
.adx-btn-refresh {
    background-color: transparent;
    border-color: var(--bs-secondary);
    color: var(--bs-secondary);
}
.adx-btn-refresh:hover:not(:disabled) {
    background-color: var(--bs-secondary);
    color: #fff;
}

/* Print — outline secondary (same as refresh) */
.adx-btn-print {
    background-color: transparent;
    border-color: var(--bs-secondary);
    color: var(--bs-secondary);
}
.adx-btn-print:hover:not(:disabled) {
    background-color: var(--bs-secondary);
    color: #fff;
}

/* Small variant — compact icon buttons in table action columns.
   Override min-width so the button fits within a narrow <td>.
   Usage: class="adx-btn adx-btn-edit adx-btn-sm" */
.adx-btn.adx-btn-sm {
    min-width: 0;
    padding: 0.2rem 0.45rem;
    font-size: 0.8rem;
}

/* ---------------------------------------------------------------
   Buttons inside coloured card headers (bg-primary, bg-success, bg-dark)
   Outline/transparent buttons become invisible on dark backgrounds,
   so override with white outline variants.
   --------------------------------------------------------------- */
.card-header.bg-primary .adx-btn,
.card-header.bg-success .adx-btn,
.card-header.bg-dark .adx-btn {
    background-color: transparent;
    border-color: rgba(255, 255, 255, 0.7);
    color: #fff;
}
.card-header.bg-primary .adx-btn:hover:not(:disabled),
.card-header.bg-success .adx-btn:hover:not(:disabled),
.card-header.bg-dark .adx-btn:hover:not(:disabled) {
    background-color: rgba(255, 255, 255, 0.2);
    border-color: #fff;
    color: #fff;
}

/* ---------------------------------------------------------------
   Read-only checkboxes in view mode
   Using a class rather than disabled= avoids Bootstrap's opacity
   fade which makes checkmarks nearly invisible.
   --------------------------------------------------------------- */
.adx-check-readonly {
    pointer-events: none;
    cursor: default;
}
.adx-check-readonly ~ .form-check-label {
    cursor: default;
}

/* ---------------------------------------------------------------
   Filter bar
   --------------------------------------------------------------- */
.adx-filter-bar {
    background-color: #f8f9fa;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    padding: 0.5rem 0.75rem;
}

/* ---------------------------------------------------------------
   Status / Feedback message bar
   --------------------------------------------------------------- */
.adx-status-message {
    font-size: 0.875rem;
    max-width: 600px;
    transition: opacity 0.3s ease;
}

/* ---------------------------------------------------------------
   Spinner overlay (full-page)
   --------------------------------------------------------------- */
.adx-spinner-overlay {
    position: fixed;
    inset: 0;
    background: rgba(255, 255, 255, 0.65);
    z-index: 1060;          /* above modals (1055) */
    display: flex !important;
    align-items: center;
    justify-content: center;
}

.adx-spinner-overlay.d-none {
    display: none !important;
}

.adx-spinner-overlay .spinner-border {
    width: 3rem;
    height: 3rem;
    border-width: 0.35em;
}

/* ---------------------------------------------------------------
   Data Tables
   --------------------------------------------------------------- */
.adx-table-scroll {
    max-height: 60vh;
    overflow-y: auto;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
}

/* Sticky header inside scrollable table */
.adx-table-scroll thead th {
    position: sticky;
    top: 0;
    z-index: 1;
}

.adx-table thead.table-success th {
    color: #fff;
}

.adx-table tbody tr {
    cursor: default;
}

.adx-table tbody tr:hover {
    background-color: rgba(25, 135, 84, 0.08) !important;
}

.adx-row-selected,
.adx-table tbody tr.adx-row-selected {
    background-color: rgba(25, 135, 84, 0.18) !important;
    outline: 2px solid rgba(25, 135, 84, 0.5);
    outline-offset: -2px;
}

.adx-action-col {
    width: 100px;
    text-align: right;
    white-space: nowrap;
}

/* ---------------------------------------------------------------
   Editable controls
   --------------------------------------------------------------- */

/* Disabled / readonly inputs look lighter in view mode */
.adx-editable[disabled],
.adx-editable[readonly] {
    background-color: #f8f9fa;
    opacity: 0.85;
}

/* Active edit mode — subtle highlight */
.adx-edit-active .adx-editable:not([disabled]):not([readonly]) {
    border-color: var(--bs-success);
    box-shadow: 0 0 0 0.15rem rgba(25, 135, 84, 0.2);
}

/* ---------------------------------------------------------------
   Edit mode — section background & field highlighting (UI_STANDARDS §3a)
   JS adds .adx-editing to the card or tab-pane when the user clicks Edit.
   Warm amber tint gives an immediate visual cue that changes are in progress.
   --------------------------------------------------------------- */

/* Card body gets warm amber tint while editing */
.card.adx-editing > .card-body {
    background-color: #fffbf0;
    transition: background-color 0.25s ease;
}

/* Tab-pane hosted editing (CRMA, CRS, etc.) */
.tab-pane.adx-editing {
    background-color: #fffbf0;
    transition: background-color 0.25s ease;
}

/* Editable inputs highlight green when their container is in edit mode */
.card.adx-editing .adx-editable:not([readonly]):not([disabled]),
.tab-pane.adx-editing .adx-editable:not([readonly]):not([disabled]) {
    border-color: var(--bs-success);
    box-shadow: 0 0 0 0.15rem rgba(25, 135, 84, 0.2);
}

/* Modal body gets warm amber tint while editing */
.modal-content.adx-editing > .modal-body {
    background-color: #fffbf0;
    transition: background-color 0.25s ease;
}

.modal-content.adx-editing .adx-editable:not([readonly]):not([disabled]) {
    border-color: var(--bs-success);
    box-shadow: 0 0 0 0.15rem rgba(25, 135, 84, 0.2);
}

/* ---------------------------------------------------------------
   Section cards (grouping within a page)
   --------------------------------------------------------------- */
.adx-section-card {
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    padding: 1rem;
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}

.adx-section-card + .adx-section-card {
    margin-top: 1rem;
}

.adx-section-card > .adx-section-title {
    font-size: 0.85rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--bs-success);
    border-bottom: 1px solid #dee2e6;
    padding-bottom: 0.4rem;
    margin-bottom: 0.75rem;
}

/* ---------------------------------------------------------------
   Modal tweaks
   --------------------------------------------------------------- */
.modal-header.bg-success .btn-close-white {
    filter: invert(1) grayscale(100%) brightness(200%);
}

/* ---------------------------------------------------------------
   Utility / misc
   --------------------------------------------------------------- */
.form-label.fw-semibold {
    margin-bottom: 0.2rem;
}

.adx-hint {
    font-size: 0.78rem;
    color: var(--bs-secondary);
}

/* Fade-in animation for newly rendered content */
@keyframes adx-fadein {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: translateY(0); }
}

.adx-content {
    animation: adx-fadein 0.2s ease;
}

/* ---------------------------------------------------------------
   Pinned application footer  (UI_STANDARDS §14)
   Fixed at bottom of viewport on all pages except landing pages.
   --------------------------------------------------------------- */
body {
    padding-bottom: 40px;   /* prevent content hiding behind pinned footer */
}

.adx-footer {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 36px;
    background-color: #f0f0f0;
    color: #555;
    display: flex;
    align-items: center;
    padding: 0 1rem;
    gap: 1.25rem;
    font-size: 0.77rem;
    z-index: 1029;          /* below fixed navbar (1030) */
    border-top: 1px solid #d0d0d0;
}

.adx-footer-brand {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-weight: 600;
    color: #333;
    text-decoration: none;
}

.adx-footer-brand img {
    height: 18px;
    opacity: 1;
}

.adx-footer-sep {
    color: #bbb;
    user-select: none;
}

.adx-footer-db {
    color: #333;
}

.adx-footer-company {
    color: #333;
    font-weight: 600;
}

.adx-footer-user {
    color: #333;
}

.adx-footer-build {
    margin-left: auto;
    color: #aaa;
    font-size: 0.70rem;
    font-family: monospace;
}

/* Mobile footer — show brand only */
@media (max-width: 767.98px) {
    .adx-footer-db,
    .adx-footer-company,
    .adx-footer-server,
    .adx-footer-user,
    .adx-footer-build,
    .adx-footer-sep,
    .adx-footer-sep-user {
        display: none;
    }
}

/* Subscription warning badge — pulsing amber to attract attention */
.adx-footer-sub-warn {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    background-color: #ffc107;
    color: #212529;
    padding: 0.1rem 0.6rem;
    border-radius: 0.25rem;
    font-weight: 600;
    font-size: 0.72rem;
    animation: adx-sub-pulse 2s ease-in-out infinite;
}

@keyframes adx-sub-pulse {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0.65; }
}

/* Expired licence — red variant of the sub-warn badge */
.adx-footer-expired {
    background-color: #dc3545;
    color: #fff;
}

/* Server name + type badge in footer */
.adx-footer-server {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: #444;
}

.adx-footer-server-type {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.05rem 0.4rem;
    border-radius: 0.2rem;
}

/* Production — green */
.adx-server-production {
    background-color: #198754;
    color: #fff;
}

/* Fall-Over — amber */
.adx-server-fallover {
    background-color: #fd7e14;
    color: #fff;
}

/* Development — blue-grey */
.adx-server-development {
    background-color: #0dcaf0;
    color: #212529;
}

/* ASPNETCORE_ENVIRONMENT badge in footer (next to build version) */
.adx-footer-env-badge {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.05rem 0.4rem;
    border-radius: 0.2rem;
    margin-left: 0.3rem;
}

.adx-env-development {
    background-color: #0dcaf0;
    color: #212529;
}

.adx-env-staging {
    background-color: #6f42c1;
    color: #fff;
}

.adx-env-production {
    background-color: #198754;
    color: #fff;
}

.adx-env-fallover {
    background-color: #fd7e14;
    color: #fff;
}
