/* qpoints/assets/css/qp-legacy.css */
/* Theme bridge for pages that still use the original base.css markup.          */
/*                                                                             */
/* Everything is scoped to [data-qp-legacy] — the attribute _qp_theme.php puts  */
/* on <body> — so a page only picks these rules up once it has opted in, and    */
/* pages already rewritten to native qp- markup are untouched.                  */
/*                                                                             */
/* The strategy is to re-point base.css's own custom properties at the active   */
/* layout's tokens, then patch the handful of components that base.css styles   */
/* with literal colours. --color-white is deliberately NOT re-pointed: base.css */
/* uses it both as a surface and as text-on-accent, so the surfaces are handled */
/* explicitly below instead.                                                    */

[data-qp-legacy] {
    /* --- Re-point the legacy palette at the active layout ---------------- */
    --color-background: var(--qp-canvas);
    --color-light: var(--qp-surface-2);
    --color-surface: var(--qp-surface-3);
    --color-text: var(--qp-ink);
    --color-text-muted: var(--qp-ink-muted);
    --color-border: var(--qp-line);
    --color-dark: var(--qp-ink);
    --color-success: var(--qp-ok);
    --color-danger: var(--qp-bad);
    --color-warning: var(--qp-warn);
    --color-info: var(--qp-info);
    --color-link: var(--qp-accent);
    --color-link-hover: var(--qp-accent-strong);

    /* --- Legacy scale tokens follow the new one ------------------------- */
    --border-radius: var(--qp-radius-sm);
    --border-radius-sm: var(--qp-radius-xs);
    --box-shadow: var(--qp-shadow-xs);
    --box-shadow-lg: var(--qp-shadow-lg);

    background-color: var(--qp-canvas);
    color: var(--qp-ink);
    font-family: var(--qp-font-ui);
}

/* Playful child layouts get their rounded display face here too. */
[data-qp-legacy][data-role="child"] { font-family: var(--qp-font-play); }

/* ============================================================
   1. Page frame
   ============================================================ */
[data-qp-legacy] .app-wrapper {
    width: 100%;
    max-width: var(--qp-page-max);
    margin-inline: auto;
    padding-inline: var(--qp-4);
    box-sizing: border-box;
}
[data-qp-legacy] .container {
    width: 100% !important;
    max-width: 100% !important;
    padding-inline: 0;
    margin-inline: auto;
}
[data-qp-legacy] .layout-grid,
[data-qp-legacy] .grid-container {
    width: 100%;
}
[data-qp-legacy] .layout-grid > *,
[data-qp-legacy] .grid-container > * {
    min-width: 0;
}
[data-qp-legacy] .content-area { margin-bottom: var(--qp-10); width: 100%; }

[data-qp-legacy] .page-title {
    margin-block: var(--qp-2) var(--qp-5);
    font-size: var(--qp-text-2xl);
    font-weight: 900;
    letter-spacing: -.04em;
    color: var(--qp-ink);
}
[data-qp-legacy] h1,
[data-qp-legacy] h2,
[data-qp-legacy] h3,
[data-qp-legacy] h4 { color: var(--qp-ink); letter-spacing: -.02em; }

/* ============================================================
   2. Header — restyled to match the new top bar
   ============================================================ */
[data-qp-legacy] .main-header {
    margin-block: var(--qp-4) var(--qp-5);
    padding: var(--qp-2) var(--qp-4);
    background-color: var(--qp-surface);
    border: 1px solid var(--qp-line);
    border-radius: var(--qp-radius-lg);
    box-shadow: var(--qp-shadow-sm);
    color: var(--qp-ink);
}
[data-qp-legacy] .main-header .container {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--qp-3);
    min-height: 52px;
}
[data-qp-legacy] .main-header h1 {
    display: flex;
    align-items: center;
    gap: var(--qp-3);
    margin: 0;
    color: var(--qp-ink);
    font-size: var(--qp-text-md);
    font-weight: 800;
}
/* Brand chip carries the bank's configured colour. */
[data-qp-legacy] .main-header h1::before {
    content: "Q";
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: var(--qp-radius-sm);
    background: var(--color-primary, var(--qp-accent));
    color: #fff;
    font-size: var(--qp-text-base);
    font-weight: 900;
}
[data-qp-legacy] .main-header a { color: var(--qp-ink-soft); }
[data-qp-legacy] .main-header a:hover { color: var(--qp-ink); }

[data-qp-legacy] .main-footer {
    margin-top: var(--qp-8);
    padding: var(--qp-4) 0;
    background-color: transparent;
    border-top: 1px solid var(--qp-line);
    color: var(--qp-ink-muted);
    font-size: var(--qp-text-xs);
}

/* ============================================================
   3. Icon navigation
   ============================================================ */
[data-qp-legacy] .icon-nav { gap: var(--qp-1); }
[data-qp-legacy] .nav-icon-button {
    display: inline-grid;
    place-items: center;
    width: 40px;
    height: 40px;
    /* Stated rather than inherited: _navigation.php ships its own <style> and
       a bare <button> otherwise falls back to the UA's grey button face. */
    background: transparent;
    border: 0;
    border-radius: var(--qp-radius-sm);
    color: var(--qp-ink-soft);
    font-size: 1.25rem;
}
[data-qp-legacy] .nav-icon-button:hover,
[data-qp-legacy] .nav-icon-button:focus {
    background-color: var(--qp-surface-inset);
    color: var(--qp-ink);
}
[data-qp-legacy] .nav-welcome-text {
    color: var(--qp-ink-muted);
    font-size: var(--qp-text-xs);
    font-weight: 700;
}
[data-qp-legacy] .admin-link-separator { border-left-color: var(--qp-line); }

[data-qp-legacy] .nav-dropdown,
[data-qp-legacy] .main-nav ul.mobile-nav-menu {
    background-color: var(--qp-surface);
    border: 1px solid var(--qp-line);
    border-radius: var(--qp-radius);
    box-shadow: var(--qp-shadow);
}
[data-qp-legacy] .nav-dropdown a,
[data-qp-legacy] .main-nav ul.mobile-nav-menu li a {
    color: var(--qp-ink) !important;
    font-size: var(--qp-text-sm);
}
[data-qp-legacy] .nav-dropdown a:hover,
[data-qp-legacy] .main-nav ul.mobile-nav-menu li a:hover {
    background-color: var(--qp-surface-inset);
    color: var(--qp-ink) !important;
}
[data-qp-legacy] .main-nav ul.mobile-nav-menu li hr { border-top-color: var(--qp-line); }
[data-qp-legacy] .main-nav ul.mobile-nav-menu li .mobile-nav-header { color: var(--qp-ink-muted); }
[data-qp-legacy] #mobile-nav-toggle { color: var(--qp-ink) !important; }

/* ============================================================
   4. Cards
   ============================================================ */
[data-qp-legacy] .card {
    background-color: var(--qp-surface);
    border: 1px solid var(--qp-line);
    border-radius: var(--qp-panel-radius);
    box-shadow: var(--qp-shadow-sm);
    overflow: hidden;
}
[data-qp-legacy] .card-header,
[data-qp-legacy] .card-footer {
    background-color: var(--qp-surface-2);
    border-color: var(--qp-line);
}
[data-qp-legacy] .card-title { font-weight: 800; color: var(--qp-ink); }
[data-qp-legacy] .card-body { padding: var(--qp-5); }

/* ============================================================
   5. Buttons — the bank's brand colour stays the primary accent
   ============================================================ */
[data-qp-legacy] .button {
    border-radius: var(--qp-radius-sm);
    font-size: var(--qp-text-sm);
    font-weight: 800;
    line-height: 1.15;
    transition: transform var(--qp-fast), background-color var(--qp-fast), opacity var(--qp-fast);
}
[data-qp-legacy] .button:hover { transform: translateY(-1px); }
[data-qp-legacy] .button-sm { font-size: var(--qp-text-xs); }

/* base.css puts white text on every semantic fill. That is unreadable on the
   dark layouts, whose ok/bad/warn tokens are bright pastels, so the ink comes
   from the paired --qp-on-* token instead. --qp-on-brand is picked per bank in
   _qp_theme.php so a light brand colour gets dark text. */
[data-qp-legacy] .button-primary { color: var(--qp-on-brand); }
[data-qp-legacy] .button-success { color: var(--qp-on-ok); }
[data-qp-legacy] .button-danger  { color: var(--qp-on-bad); }
[data-qp-legacy] .button-warning { color: var(--qp-on-warn); }
[data-qp-legacy] .button-info    { color: var(--qp-on-info); }
[data-qp-legacy] .button-secondary {
    background-color: var(--qp-surface-3);
    border-color: var(--qp-line);
    color: var(--qp-ink);
}
[data-qp-legacy] .button-secondary:hover { background-color: var(--qp-surface-2); color: var(--qp-ink); }
[data-qp-legacy] .button-light {
    background-color: var(--qp-surface-2);
    border-color: var(--qp-line);
    color: var(--qp-ink);
}
[data-qp-legacy] .button-dark {
    background-color: var(--qp-ink);
    border-color: var(--qp-ink);
    color: var(--qp-surface);
}
[data-qp-legacy] .button:disabled,
[data-qp-legacy] .button.disabled { opacity: .5; }

/* ============================================================
   6. Forms
   ============================================================ */
[data-qp-legacy] .form-group label { color: var(--qp-ink); font-size: var(--qp-text-xs); font-weight: 800; }
[data-qp-legacy] .form-group input[type="text"],
[data-qp-legacy] .form-group input[type="email"],
[data-qp-legacy] .form-group input[type="password"],
[data-qp-legacy] .form-group input[type="number"],
[data-qp-legacy] .form-group input[type="date"],
[data-qp-legacy] .form-group input[type="tel"],
[data-qp-legacy] .form-group input[type="search"],
[data-qp-legacy] .form-group select,
[data-qp-legacy] .form-group textarea,
[data-qp-legacy] input[type="text"],
[data-qp-legacy] input[type="number"],
[data-qp-legacy] input[type="date"],
[data-qp-legacy] select,
[data-qp-legacy] textarea {
    background-color: var(--qp-surface-2);
    border: 1px solid var(--qp-line);
    border-radius: var(--qp-radius-sm);
    color: var(--qp-ink);
    font-size: var(--qp-text-sm);
}
[data-qp-legacy] .form-group input:focus,
[data-qp-legacy] .form-group select:focus,
[data-qp-legacy] .form-group textarea:focus,
[data-qp-legacy] input:focus,
[data-qp-legacy] select:focus,
[data-qp-legacy] textarea:focus {
    border-color: var(--qp-accent);
    box-shadow: var(--qp-ring);
    outline: 0;
}
[data-qp-legacy] ::placeholder { color: var(--qp-ink-muted); opacity: .8; }
[data-qp-legacy] input[type="checkbox"],
[data-qp-legacy] input[type="radio"] { accent-color: var(--qp-accent); }
[data-qp-legacy] .permission-label { color: var(--qp-ink-soft); }

/* ============================================================
   7. Tables & lists
   ============================================================ */
[data-qp-legacy] .table { color: var(--qp-ink); font-size: var(--qp-text-sm); }
[data-qp-legacy] .table th,
[data-qp-legacy] .table td { border-top-color: var(--qp-line); }
[data-qp-legacy] .table thead th {
    border-bottom-color: var(--qp-line-strong);
    color: var(--qp-ink-muted);
    font-size: var(--qp-text-2xs);
    font-weight: 900;
    letter-spacing: .07em;
    text-transform: uppercase;
}
[data-qp-legacy] .table-hover tbody tr:hover { background-color: var(--qp-surface-inset); }

[data-qp-legacy] .item-list li { border-bottom-color: var(--qp-line); }
[data-qp-legacy] .child-details-content { border-top-color: var(--qp-line); }
[data-qp-legacy] .toggle-details-btn { color: var(--qp-ink-soft); }

/* ============================================================
   8. Alerts & status text
   ============================================================ */
[data-qp-legacy] .alert {
    border: 0;
    border-radius: var(--qp-radius-sm);
    font-size: var(--qp-text-sm);
    font-weight: 700;
}
[data-qp-legacy] .alert-success { background-color: var(--qp-ok-soft); color: var(--qp-ok-ink); }
[data-qp-legacy] .alert-danger  { background-color: var(--qp-bad-soft); color: var(--qp-bad-ink); }
[data-qp-legacy] .alert-warning { background-color: var(--qp-warn-soft); color: var(--qp-warn-ink); }
[data-qp-legacy] .alert-info,
[data-qp-legacy] .alert-primary { background-color: var(--qp-info-soft); color: var(--qp-info-ink); }
[data-qp-legacy] .alert-secondary { background-color: var(--qp-surface-2); color: var(--qp-ink-soft); }

/* Semantic colours used as TEXT take the darker -ink variant, not the fill.
   base.css reuses one token for both, which leaves amber-on-white at ~2:1.
   The -ink tokens are dark on light layouts and light on dark ones, so this
   single mapping is correct in every theme. */
[data-qp-legacy] .text-muted { color: var(--qp-ink-muted) !important; }
[data-qp-legacy] .text-success { color: var(--qp-ok-ink) !important; }
[data-qp-legacy] .text-danger { color: var(--qp-bad-ink) !important; }
[data-qp-legacy] .text-warning { color: var(--qp-warn-ink) !important; }
[data-qp-legacy] .text-info { color: var(--qp-info-ink) !important; }
[data-qp-legacy] .text-primary { color: var(--qp-accent) !important; }
[data-qp-legacy] .status-active { color: var(--qp-ok-ink); }
[data-qp-legacy] .status-suspended,
[data-qp-legacy] .status-pending { color: var(--qp-warn-ink); }
[data-qp-legacy] .permissions-list .perm-yes { color: var(--qp-ok-ink); }
[data-qp-legacy] .permissions-list .perm-no { color: var(--qp-bad-ink); }
[data-qp-legacy] .points-positive,
[data-qp-legacy] .feedback-success { color: var(--qp-ok-ink); }
[data-qp-legacy] .points-negative,
[data-qp-legacy] .feedback-error { color: var(--qp-bad-ink); }

/* ============================================================
   9. Modals
   ============================================================ */
[data-qp-legacy] .modal,
[data-qp-legacy] .custom-modal { background-color: rgba(12, 18, 32, .65); }
[data-qp-legacy] .modal-content,
[data-qp-legacy] .custom-modal-content {
    background-color: var(--qp-surface);
    border: 1px solid var(--qp-line);
    border-radius: var(--qp-radius-lg);
    box-shadow: var(--qp-shadow-lg);
    color: var(--qp-ink);
    padding: var(--qp-5);
}
[data-qp-legacy] .modal-content h1,
[data-qp-legacy] .modal-content h2,
[data-qp-legacy] .modal-content h3,
[data-qp-legacy] .modal-content h4,
[data-qp-legacy] .modal-content label,
[data-qp-legacy] .custom-modal-title { color: var(--qp-ink); font-weight: 800; }
[data-qp-legacy] .custom-modal-header,
[data-qp-legacy] .custom-modal-footer { border-color: var(--qp-line); }
[data-qp-legacy] .custom-modal-footer { background-color: var(--qp-surface-2); }
[data-qp-legacy] .modal-close,
[data-qp-legacy] .custom-close-btn { color: var(--qp-ink); opacity: .7; text-shadow: none; }
[data-qp-legacy] .modal-close:hover,
[data-qp-legacy] .custom-close-btn:hover { opacity: 1; color: var(--qp-ink); }

/* ============================================================
   10. Tabs used by a few legacy pages
   ============================================================ */
[data-qp-legacy] .tabs { border-bottom-color: var(--qp-line); }
[data-qp-legacy] .tab {
    background-color: var(--qp-surface-2);
    border-color: var(--qp-line);
    border-radius: var(--qp-radius-xs) var(--qp-radius-xs) 0 0;
    color: var(--qp-ink-muted);
    font-size: var(--qp-text-sm);
    font-weight: 800;
}
[data-qp-legacy] .tab.active { background-color: var(--qp-surface); color: var(--qp-ink); }

/* ============================================================
   11. Images & placeholders
   ============================================================ */
[data-qp-legacy] .item-image-preview,
[data-qp-legacy] .default-item-icon,
[data-qp-legacy] .avatar-image-preview,
[data-qp-legacy] .default-avatar-icon,
[data-qp-legacy] .current-image-preview,
[data-qp-legacy] .default-edit-icon {
    background-color: var(--qp-surface-3);
    border-color: var(--qp-line);
}
[data-qp-legacy] .default-item-icon svg,
[data-qp-legacy] .default-avatar-icon svg,
[data-qp-legacy] .default-edit-icon { fill: var(--qp-ink-muted); }

/* ============================================================
   12. Long strings must not widen a phone screen
   ============================================================ */
[data-qp-legacy] .table td,
[data-qp-legacy] .item-list li,
[data-qp-legacy] .card-body { overflow-wrap: anywhere; }

@media (max-width: 640px) {
    [data-qp-legacy] .app-wrapper { padding-inline: var(--qp-3); }
    [data-qp-legacy] .main-header { padding: var(--qp-2) var(--qp-3); }
    [data-qp-legacy] .card-body { padding: var(--qp-4); }
    [data-qp-legacy] .page-title { font-size: var(--qp-text-xl); }
}

/* OAuth Social Login Buttons */
.qp-oauth { margin-top: var(--qp-4); text-align: center; }
.qp-oauth__divider {
    display: flex;
    align-items: center;
    margin-block: var(--qp-3);
    color: var(--qp-ink-muted);
    font-size: var(--qp-text-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.qp-oauth__divider::before,
.qp-oauth__divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background-color: var(--qp-line);
}
.qp-oauth__divider span { padding-inline: var(--qp-2); }
.qp-oauth__buttons { display: flex; flex-direction: column; gap: var(--qp-2); }
.qp-oauth__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--qp-2);
    padding: var(--qp-2) var(--qp-4);
    background-color: var(--qp-surface-2);
    border: 1px solid var(--qp-line);
    border-radius: var(--qp-radius-sm);
    color: var(--qp-ink);
    font-weight: 700;
    font-size: var(--qp-text-sm);
    text-decoration: none;
    transition: background-color var(--qp-fast), border-color var(--qp-fast);
}
.qp-oauth__btn:hover {
    background-color: var(--qp-surface-3);
    color: var(--qp-ink);
    text-decoration: none;
}
.qp-oauth__mark {
    font-weight: 900;
    font-size: 1.1em;
}
