/* Shared brand foundations used by the public site, client portal and admin. */
:root {
    --cyb-brand-violet: #7c3aed;
    --cyb-brand-violet-bright: #8b5cf6;
    --cyb-brand-purple: #a855f7;
    --cyb-brand-magenta: #d946ef;
    --cyb-brand-pink: #ec4899;
    --cyb-brand-plum: #4b1d5c;
    --cyb-brand-navy: #0b1020;
    --cyb-brand-surface-dark: #151525;
    --cyb-brand-lavender: #f5f3ff;
    --cyb-brand-white: #fff;
    --cyb-brand-success: #047857;
    --cyb-brand-warning: #92400e;
    --cyb-brand-danger: #be123c;
    --cyb-brand-surface: #ffffff;
    --cyb-brand-page: #fbfaff;
    --cyb-brand-border: #e7e2ef;
    --cyb-brand-muted: #626b80;
    --cyb-brand-radius-sm: 10px;
    --cyb-brand-radius-md: 16px;
    --cyb-brand-radius-lg: 22px;
    --cyb-brand-ease: cubic-bezier(.2,.75,.25,1);
    --cyb-brand-fast: 160ms;
    --cyb-brand-base: 220ms;
    --cyb-brand-shadow: 0 14px 36px rgb(28 16 51 / 8%);
    --cyb-brand-shadow-raised: 0 22px 54px rgb(28 16 51 / 14%);
}

body:not(.admin-body) {
    --cyb-purple: var(--cyb-brand-violet);
    --cyb-magenta: var(--cyb-brand-magenta);
}

/* The shared foundation follows the existing Cybinix violet palette. Keep
   page-specific aliases scoped so legacy public variables cannot reset it. */
body:not(.admin-body) {
    --primary: var(--cyb-brand-violet);
    --text-dark: var(--cyb-brand-navy);
    --text-muted: #626b80;
    --brand-accent-text: #5b21b6;
    --brand-soft-border: rgb(124 58 237 / 18%);
    --brand-gradient-soft: linear-gradient(135deg, rgb(124 58 237 / 9%), rgb(217 70 239 / 7%));
    --bs-primary: var(--cyb-brand-violet);
    --bs-primary-rgb: 124, 58, 237;
    --bs-link-color: #5b21b6;
    --bs-link-hover-color: var(--cyb-brand-violet);
}

html[data-theme="dark"],
html[data-bs-theme="dark"] { color-scheme: dark; }
html[data-theme="light"],
html[data-bs-theme="light"] { color-scheme: light; }

body.client-portal {
    --cp-plum: var(--cyb-brand-plum);
    --cp-violet: var(--cyb-brand-violet);
    --cp-fuchsia: var(--cyb-brand-magenta);
    --cp-focus: var(--cyb-brand-violet-bright);
}
body.client-portal a.btn-primary,
body.client-portal a.btn-main,
body.client-portal .portal-next-action { color: #fff; }

body.verification-flow {
    --purple: var(--cyb-brand-violet);
    --navy: var(--cyb-brand-navy);
    --line: #e7e2ef;
    --muted: #626b80;
}

body.admin-body {
    --cyb-primary: var(--cyb-brand-violet);
    --cyb-primary-strong: #5b21b6;
    --cyb-cyan: var(--cyb-brand-purple);
    --cyb-magenta: var(--cyb-brand-magenta);
    --admin-cyan: var(--cyb-brand-purple);
    --orchid-accent: var(--cyb-brand-purple);
    --cyb-gradient-primary: linear-gradient(135deg, var(--cyb-brand-violet), var(--cyb-brand-purple) 55%, var(--cyb-brand-magenta));
    --cyb-radius: var(--cyb-brand-radius-md);
}

/* Keep Bootstrap operational controls inside the admin brand palette. */
.admin-body .admin-main .nav-pills .nav-link.active {
    border-color: var(--admin-primary, var(--cyb-primary));
    background-color: var(--admin-primary, var(--cyb-primary));
    color: #fff;
}
.admin-body .admin-main .text-bg-primary {
    background-color: var(--admin-primary, var(--cyb-primary)) !important;
}

html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline: 3px solid var(--cyb-brand-violet-bright);
    outline-offset: 3px;
}

:where(button, input, select, textarea) { font: inherit; }
:where(img, svg, video, canvas) { max-width: 100%; }

@media (max-width: 767.98px) {
    .admin-main.orchid-main { padding: 1rem; }
    .admin-topbar.orchid-header { gap: .5rem; padding-inline: 1rem; }
    .admin-main :where(.table-responsive, .admin-table-wrap) {
        max-width: 100%;
        overscroll-behavior-inline: contain;
    }
}

@media (max-width: 359.98px) {
    .portal-header { gap: 8px; padding-inline: 10px; }
    .portal-collapse-toggle { display: none; }
    .portal-account-name { display: none; }
    .portal-main { padding-inline: 12px; }
}

:where(.btn-primary, .btn-main, .portal-cta, .admin-topbar .topbar-action) {
    transition: color var(--cyb-brand-fast) ease, background-color var(--cyb-brand-fast) ease,
        border-color var(--cyb-brand-fast) ease, box-shadow var(--cyb-brand-fast) ease,
        transform var(--cyb-brand-fast) var(--cyb-brand-ease);
}

@media (hover: hover) and (pointer: fine) {
    :where(.portal-card, .admin-card, .orchid-card, .pricing-card, .card-modern):hover {
        border-color: color-mix(in srgb, var(--cyb-brand-violet) 32%, transparent);
        box-shadow: var(--cyb-brand-shadow-raised);
    }
}

:where(input, textarea, select, .form-control, .form-select):focus {
    border-color: var(--cyb-brand-violet-bright);
    box-shadow: 0 0 0 .22rem color-mix(in srgb, var(--cyb-brand-violet) 18%, transparent);
}

:where(input, textarea, select, .form-control, .form-select)[aria-invalid="true"] {
    border-color: var(--cyb-brand-danger);
}
:where(input, textarea, select, .form-control, .form-select)[aria-invalid="true"]:focus {
    border-color: var(--cyb-brand-danger);
    box-shadow: 0 0 0 .22rem rgb(190 18 60 / 16%);
}
:where(.invalid-feedback, [data-field-error]) { color: var(--cyb-brand-danger); }
:where(.portal-icon-button, .navbar-toggler) { min-width: 44px; min-height: 44px; }

:where(.site-toast, .portal-toast, .alert) { border-radius: var(--cyb-brand-radius-sm); }

.portal-confirm-backdrop {
    position: fixed;
    z-index: 1090;
    inset: 0;
    display: grid;
    place-items: center;
    padding: 1rem;
    background: rgb(11 16 32 / 58%);
    backdrop-filter: blur(7px);
}

.portal-confirm-backdrop[hidden] { display: none; }
.portal-confirm-card {
    width: min(100%, 29rem);
    padding: clamp(1.25rem, 4vw, 2rem);
    border: 1px solid rgb(139 92 246 / 22%);
    border-radius: var(--cyb-brand-radius-lg);
    background: #fff;
    box-shadow: 0 28px 90px rgb(11 16 32 / 28%);
}
.portal-confirm-card h2 { margin: 0 0 .65rem; color: var(--cyb-brand-navy); font-size: 1.25rem; }
.portal-confirm-card p { color: #566176; line-height: 1.65; }
.portal-confirm-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: .65rem; margin-top: 1.25rem; }
.portal-confirm-danger { border-color: var(--cyb-brand-danger) !important; background: var(--cyb-brand-danger) !important; color: #fff !important; }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { scroll-behavior: auto !important; }
}
