
.text-primary   { color: var(--nv-primary) !important; }
.border-primary { border-color: var(--nv-primary) !important; }
.link-primary   { color: var(--nv-primary) !important; }
.bg-navy        { background-color: var(--nv-navy-ink) !important; }
.bg-amber       { background-color: var(--nv-amber) !important; }
.bg-gradient-nova {
    background: linear-gradient(135deg, var(--nv-primary) 0%, var(--nv-navy) 100%) !important;
    color: #fff !important;
}

/* ---- Buttons (Bootstrap .btn) */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.55rem 1.25rem;
    font-family: var(--nv-font-family);
    font-size: 0.9rem;
    font-weight: 600;
    border-radius: var(--nv-radius-sm);
    border: 1.5px solid transparent;
    cursor: pointer;
    transition: var(--nv-transition);
}
.btn-primary {
    background-color: var(--nv-primary) !important;
    border-color: var(--nv-primary) !important;
    color: #fff !important;
    box-shadow: 0 2px 6px rgba(8,145,178,.25);
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active {
    background-color: var(--nv-navy-ink) !important;
    border-color: var(--nv-navy-ink) !important;
    color: #fff !important;
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(30,58,95,.25) !important;
}
.btn-outline-primary:hover,
.btn-outline-primary.active,
.btn-outline-primary:active,
.btn-group > .btn-outline-primary.active {
    background-color: var(--nv-primary) !important;
    border-color: var(--nv-primary) !important;
    color: #fff !important;
}
.btn-outline-secondary {
    color: var(--nv-navy-ink) !important;
    border-color: var(--nv-navy-ink) !important;
    background-color: transparent;
}
.btn-outline-secondary:hover,
.btn-outline-secondary.active,
.btn-outline-secondary:active {
    background-color: var(--nv-navy-ink) !important;
    border-color: var(--nv-navy-ink) !important;
    color: #fff !important;
}
.btn-outline-danger {
    color: #dc2626 !important;
    border-color: #dc2626 !important;
}
.btn-outline-danger:hover,
.btn-outline-danger.active {
    background-color: #dc2626 !important;
    color: #fff !important;
}
/* btn-outline-success → cyan (sin verde brand) */
.btn-outline-success {
    color: var(--nv-primary-dark) !important;
    border-color: var(--nv-primary) !important;
}
.btn-outline-success:hover {
    background-color: var(--nv-primary) !important;
    color: #fff !important;
}
.btn-outline-warning {
    color: #d97706 !important;
    border-color: #d97706 !important;
}
.btn-outline-warning:hover {
    background-color: #d97706 !important;
    color: #fff !important;
}
.btn-secondary:hover,
.btn-secondary:focus {
    background-color: var(--nv-navy-ink) !important;
    border-color: var(--nv-navy-ink) !important;
    color: #fff !important;
}
.btn-warning,
.btn-amber {
    background-color: var(--nv-amber) !important;
    border-color: var(--nv-amber) !important;
    color: #fff !important;
}
.btn-warning:hover,
.btn-amber:hover {
    background-color: #b45309 !important;
    border-color: #b45309 !important;
    color: #fff !important;
}

/* ---- Links */
a {
    color: var(--nv-primary);
    text-decoration: none;
    transition: color .2s ease;
}
a:hover { color: var(--nv-navy-ink); }

/* ---- Forms */
.form-control,
.form-select {
    border: 1.5px solid var(--nv-border);
    border-radius: var(--nv-radius-sm);
    padding: .55rem .9rem;
    transition: border-color .2s ease, box-shadow .2s ease;
}
.form-control:focus,
.form-select:focus {
    border-color: var(--nv-primary);
    box-shadow: 0 0 0 3px rgba(8,145,178,.15);
}
.form-check-input:checked {
    background-color: var(--nv-primary);
    border-color: var(--nv-primary);
}
.form-check-input:focus {
    border-color: #22b8dc;
    box-shadow: 0 0 0 3px rgba(8,145,178,.15);
}

/* ---- Cards (Tabler .card) */
.card {
    background: var(--nv-card-bg);
    border: 1px solid var(--nv-border);
    border-radius: var(--nv-radius-md);
    box-shadow: var(--nv-shadow-sm);
    transition: transform .2s ease, box-shadow .2s ease;
}
.card:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 30px rgba(30,58,95,.08);
}
.card .subheader {
    color: var(--nv-primary);
    text-transform: uppercase;
    font-weight: 600;
    letter-spacing: .05em;
    font-size: .78rem;
}
.card .h1 { color: var(--nv-navy-ink); }

/* Tabler gradient cards: remap to NovaHost palette */
.card.bg-red,
.card.bg-red.text-red-fg {
    background: linear-gradient(135deg, var(--nv-primary) 0%, var(--nv-primary-dark) 100%) !important;
    color: #fff !important;
    border: none !important;
}
.card.bg-azure,
.card.bg-azure.text-azure-fg,
.card.bg-blue,
.card.bg-blue.text-blue-fg {
    background: linear-gradient(135deg, var(--nv-navy) 0%, #2a4f7d 100%) !important;
    color: #fff !important;
    border: none !important;
}
.card.bg-green,
.card.bg-green.text-green-fg,
.card.bg-lime,
.card.bg-lime.text-lime-fg {
    background: linear-gradient(135deg, var(--nv-amber) 0%, #b45309 100%) !important;
    color: #fff !important;
    border: none !important;
}
.card.bg-yellow,
.card.bg-yellow.text-yellow-fg,
.card.bg-orange,
.card.bg-orange.text-orange-fg {
    background: linear-gradient(135deg, #f59e0b 0%, var(--nv-amber) 100%) !important;
    color: #fff !important;
    border: none !important;
}
.card.bg-purple,
.card.bg-purple.text-purple-fg,
.card.bg-pink,
.card.bg-pink.text-pink-fg {
    background: linear-gradient(135deg, var(--nv-primary-dark) 0%, var(--nv-navy) 100%) !important;
    color: #fff !important;
    border: none !important;
}
.card[class*="bg-"] .card-title,
.card[class*="bg-"] h1,
.card[class*="bg-"] h2,
.card[class*="bg-"] h3,
.card[class*="bg-"] h4 {
    color: #fff !important;
}
.card[class*="bg-"] .btn {
    background: rgba(255,255,255,.18) !important;
    border: 1.5px solid rgba(255,255,255,.35) !important;
    color: #fff !important;
}
.card[class*="bg-"] .btn:hover {
    background: #fff !important;
    color: var(--nv-navy-ink) !important;
    border-color: #fff !important;
    transform: translateY(-1px);
}

/* Stat cards on dashboard (tint circular icon backgrounds) */
.card .bg-red,
.card .bg-azure,
.card .bg-blue,
.card .bg-green,
.card .bg-lime,
.card .bg-yellow,
.card .bg-orange,
.card .bg-purple,
.card .bg-pink {
    background-color: var(--nv-primary) !important;
    color: #fff !important;
}
.card .bg-yellow,
.card .bg-orange {
    background-color: var(--nv-amber) !important;
}
.card .bg-azure,
.card .bg-blue {
    background-color: var(--nv-navy-ink) !important;
}
.card .bg-green,
.card .bg-lime {
    background-color: var(--nv-amber) !important;
}
/* Tame text-danger for zero values on Tabler dashboard */
.card .datagrid-content .text-danger,
.card td .text-danger,
.card a.text-danger {
    color: var(--nv-text-muted) !important;
    opacity: .85;
}
.alert-danger, .alert-danger * { color: #7f1d1d !important; opacity: 1; }

/* Feature/service card gradient icon */
.nv-icon,
.nh-icon {
    width: 48px;
    height: 48px;
    background: linear-gradient(135deg, var(--nv-primary), var(--nv-navy));
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    flex-shrink: 0;
}
.nv-icon svg,
.nh-icon svg { width: 24px; height: 24px; fill: #fff; }

/* ---- Page header / title */
.page-title { color: var(--nv-navy-ink); font-weight: 700; }

/* ===============================================
   Unified admin hero — auto-apply to first .card in top_content
   that contains h2 + avatar.avatar-lg (common admin hero pattern).
   Mirrors .nhd-welcome design from client theme.
   =============================================== */
.page-body .container-xl > .card.mb-3:has(h2):has(.avatar.avatar-lg),
.page-body .container-xl > .card.mb-4:has(h2):has(.avatar.avatar-lg),
.page-body .container-xl > .page-header:has(h2),
.page-body .container-xl > .card.mb-3.nha-hero,
.page-body .container-xl > .card.mb-4.nha-hero,
.page-body .container-xl > .nha-hero {
    background: linear-gradient(135deg, rgba(8,145,178,0.08) 0%, rgba(30,58,95,0.03) 45%, transparent 100%) !important;
    border: 1px solid var(--nv-border) !important;
    border-radius: var(--nv-radius-lg) !important;
    box-shadow: none !important;
    position: relative;
    overflow: hidden;
}
.page-body .container-xl > .card.mb-3:has(h2):has(.avatar.avatar-lg)::after,
.page-body .container-xl > .card.mb-4:has(h2):has(.avatar.avatar-lg)::after,
.page-body .container-xl > .page-header:has(h2)::after,
.page-body .container-xl > .nha-hero::after {
    content: '';
    position: absolute;
    inset: auto -80px -80px auto;
    width: 260px;
    height: 260px;
    background: radial-gradient(circle, rgba(8,145,178,0.12) 0%, transparent 70%);
    pointer-events: none;
    z-index: 0;
}
.page-body .container-xl > .card.mb-3:has(h2):has(.avatar.avatar-lg) .card-body,
.page-body .container-xl > .card.mb-4:has(h2):has(.avatar.avatar-lg) .card-body,
.page-body .container-xl > .page-header:has(h2) > .container-xl,
.page-body .container-xl > .page-header:has(h2) > .row,
.page-body .container-xl > .nha-hero .card-body {
    padding: 1.5rem 1.75rem !important;
    position: relative;
    z-index: 1;
}
.page-body .container-xl > .card.mb-3:has(h2):has(.avatar.avatar-lg) h2,
.page-body .container-xl > .card.mb-4:has(h2):has(.avatar.avatar-lg) h2,
.page-body .container-xl > .page-header:has(h2) h2.page-title,
.page-body .container-xl > .page-header:has(h2) h2,
.page-body .container-xl > .nha-hero h2 {
    font-size: 1.6rem !important;
    font-weight: 700 !important;
    color: var(--nv-navy-ink) !important;
    letter-spacing: -0.015em;
    line-height: 1.2;
    margin-bottom: 0.25rem !important;
}
.page-body .container-xl > .card.mb-3:has(h2):has(.avatar.avatar-lg) .text-muted,
.page-body .container-xl > .card.mb-4:has(h2):has(.avatar.avatar-lg) .text-muted,
.page-body .container-xl > .page-header:has(h2) .text-muted,
.page-body .container-xl > .nha-hero .text-muted {
    color: var(--nv-text-soft) !important;
    font-size: 0.92rem;
    line-height: 1.5;
}
.page-body .container-xl > .card.mb-3:has(h2):has(.avatar.avatar-lg) .avatar.avatar-lg,
.page-body .container-xl > .card.mb-4:has(h2):has(.avatar.avatar-lg) .avatar.avatar-lg,
.page-body .container-xl > .page-header:has(h2) .avatar.avatar-lg,
.page-body .container-xl > .nha-hero .avatar.avatar-lg {
    background: linear-gradient(135deg, var(--nv-primary), var(--nv-navy)) !important;
    color: #fff !important;
    width: 56px;
    height: 56px;
    border-radius: 14px;
}

@media (max-width: 768px) {
    .page-body .container-xl > .card.mb-3:has(h2):has(.avatar.avatar-lg) .card-body,
    .page-body .container-xl > .card.mb-4:has(h2):has(.avatar.avatar-lg) .card-body,
.page-body .container-xl > .page-header:has(h2) > .container-xl,
.page-body .container-xl > .page-header:has(h2) > .row,
    .page-body .container-xl > .nha-hero .card-body {
        padding: 1.1rem 1.15rem !important;
    }
    .page-body .container-xl > .nha-hero h2 { font-size: 1.3rem !important; }
}

/* ---- Breadcrumbs */
.breadcrumb-item a { color: var(--nv-primary); }
.breadcrumb-item.active {
    color: var(--nv-navy-ink);
    font-weight: 600;
}

/* ---- Tables (Tabler) */
.table > thead > tr > th {
    background-color: var(--nv-navy-ink);
    color: #fff;
    border-bottom: 2px solid var(--nv-navy-dark);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    font-size: .82rem;
    padding: .85rem 1rem;
}
.table > tbody > tr {
    transition: background-color .15s ease;
}
.table > tbody > tr:hover { background-color: #F9FAFB; }

/* ---- Alerts (Bootstrap) */

/* ---- Badges (Bootstrap) */
.badge.bg-primary,
.badge.text-bg-primary   { background-color: var(--nv-primary) !important; }
.badge.bg-secondary,
.badge.text-bg-secondary { background-color: var(--nv-navy-ink) !important; }
.badge.bg-warning,
.badge.text-bg-warning   { background-color: var(--nv-amber) !important; color: #fff !important; }

/* ---- Progress */

/* ---- Dropdowns */
.dropdown-item:hover,
.dropdown-item:focus {
    background-color: #F3F4F6;
    color: var(--nv-navy-ink);
}
.dropdown-item.active,
.dropdown-item:active {
    background-color: var(--nv-primary);
    color: #fff;
}

/* ---- Pagination */
.page-link:hover { color: var(--nv-navy-ink); background-color: #e3f4f8; }
.page-item.active .page-link {
    background-color: var(--nv-primary);
    border-color: var(--nv-primary);
}

/* ---- Scrollbar (WebKit) */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: #F3F4F6; }
::-webkit-scrollbar-thumb { background: var(--nv-primary); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--nv-navy); }

/* ---- Selection */
::selection {
    background-color: var(--nv-primary);
    color: #fff;
}

/* ---- Focus outlines */
*:focus-visible {
    outline: 2px solid var(--nv-primary);
    outline-offset: 2px;
}

/* ---- Accent helpers */
.accent-border-left { border-left: 4px solid var(--nv-amber); }
.accent-border-top  { border-top: 4px solid var(--nv-amber); }

/* ---- Loading Spinner */

/* ---- Input group (password eye icon) */
.input-group-flat .input-group-text {
    background: transparent;
    border-left: 0;
}
.input-group-flat .input-group-text a.link-secondary,
.input-group-flat .input-group-text a {
    color: var(--nv-navy-ink) !important;
    opacity: 1;
    transition: color 0.2s;
}
.input-group-flat .input-group-text a.link-secondary:hover,
.input-group-flat .input-group-text a:hover {
    color: var(--nv-primary) !important;
}

/* ---- Announcement / misc — Tabler purple → navy brand (no púrpura en orioncloud-web) */

/* ==========================================================
   6. Admin layout (sidebar, navbar, page-wrapper)
   ========================================================== */

/* Login top border */
.border-top-wide.border-primary {
    border-top-color: var(--nv-primary) !important;
}

/* Tabler navbar-vertical sidebar (navy with cyan active) */
.navbar-vertical.navbar-expand-lg {
    background-color: var(--nv-navy-ink) !important;
    border-right: none;
}
.navbar-vertical .navbar-brand {
    background-color: var(--nv-navy-dark);
    padding: 1rem 1.25rem;
}
.navbar-vertical .navbar-brand-image {
    max-height: 56px !important;
    height: 56px !important;
}
.navbar-vertical .nav-link {
    color: rgba(255,255,255,.75) !important;
    border-left: 3px solid transparent;
    transition: var(--nv-transition);
}
.navbar-vertical .nav-link .nav-link-icon,
.navbar-vertical .nav-link svg {
    color: rgba(255,255,255,.75);
}
.navbar-vertical .nav-link:hover {
    color: #fff !important;
    background-color: rgba(255,255,255,.04);
}
.navbar-vertical .nav-link.active,
.navbar-vertical .nav-item.active > .nav-link,
.navbar-vertical .nav-item.show > .nav-link {
    color: #fff !important;
    background-color: rgba(8,145,178,.22);
    border-left-color: var(--nv-primary);
}
.navbar-vertical .nav-link.active .nav-link-icon,
.navbar-vertical .nav-item.active > .nav-link .nav-link-icon {
    color: #22b8dc;
}
.navbar-vertical hr {
    border-color: rgba(255,255,255,.08);
}

/* Top navbar (admin horizontal) */
.navbar-expand-lg:not(.navbar-vertical) {
    background-color: var(--nv-card-bg);
    border-bottom: 1px solid var(--nv-border);
    box-shadow: 0 2px 12px rgba(30,58,95,.05);
}
.nav-link.active,
.nav-item.active .nav-link {
    color: var(--nv-primary) !important;
}
.navbar-nav .nav-link,
.nav-link {
    white-space: nowrap;
}
.navbar-nav .nav-link .nav-link-title {
    white-space: nowrap;
}

/* Brand logos */
.navbar-brand,
.navbar-brand-autodark {
    padding-top: .25rem;
    padding-bottom: .25rem;
}
.navbar-brand-image {
    max-height: 56px !important;
    height: 56px !important;
    width: auto !important;
}
.navbar .navbar-brand-image {
    max-height: 56px !important;
    height: 56px !important;
}
.page-center .navbar-brand-image,
.page-single .navbar-brand-image,
.page-center img[alt*="logo" i],
.page-single img[alt*="logo" i] {
    max-height: 80px !important;
    height: 80px !important;
    width: auto !important;
}

/* Tabler default applies margin-left: 15rem to .page-wrapper assuming a
   .navbar-vertical sidebar. admin_nova uses a horizontal navbar, so we
   neutralize that margin to avoid a blank left gutter. */
.page-wrapper {
    background-color: var(--nv-page-bg);
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 0 !important;
}
.page,
.page > .page-wrapper,
body .page-wrapper {
    margin-left: 0 !important;
    margin-right: 0 !important;
}
.page > .navbar,
.page > .page-wrapper > .navbar {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/* Full-bleed navbars */
header.navbar > .container-xl,
nav.sticky-nav .container-xl,
.page-wrapper > nav .container-xl {
    max-width: 100% !important;
    padding-left: clamp(1rem, 3vw, 3rem) !important;
    padding-right: clamp(1rem, 3vw, 3rem) !important;
}

/* Compact main admin navbar */
.navbar.navbar-expand-md,
.navbar.navbar-expand-lg {
    padding-top: .5rem;
    padding-bottom: .5rem;
}

/* Login backdrop */
body.border-top-wide {
    background:
        radial-gradient(ellipse 80% 50% at 50% 0%, rgba(8,145,178,.06) 0%, transparent 55%),
        radial-gradient(ellipse 60% 40% at 80% 80%, rgba(217,119,6,.04) 0%, transparent 55%),
        var(--nv-page-bg) !important;
}

/* ==========================================================
   7. Feature sections (dashboard, cockpit helpers, login)
   ========================================================== */

/* ---- Login / signup / hero pages */
body.page-single,
body.page-center,
.page-single,
.page-center {
    background:
        radial-gradient(ellipse 80% 50% at 50% 0%, rgba(8,145,178,.05) 0%, transparent 50%),
        radial-gradient(ellipse 60% 40% at 80% 80%, rgba(217,119,6,.03) 0%, transparent 50%),
        var(--nv-page-bg);
    min-height: 100vh;
}
.page-single .card,
.page-center .card {
    border: none;
    border-radius: var(--nv-radius-lg);
    box-shadow: 0 20px 60px rgba(30,58,95,.12);
    overflow: hidden;
}
.page-single .card .card-body,
.page-center .card .card-body {
    padding: var(--nv-space-6) 2.25rem;
}
.page-single .navbar-brand-image,
.page-center .navbar-brand-image {
    max-height: 80px !important;
    height: 80px !important;
}

/* ---- Dashboard: welcome banner */
.nv-welcome {
    background: linear-gradient(135deg, rgba(8,145,178,.08) 0%, rgba(30,58,95,.04) 45%, transparent 100%);
    border: 1px solid var(--nv-border);
    border-radius: var(--nv-radius-lg);
    padding: 1.75rem var(--nv-space-6);
    display: flex;
    flex-wrap: wrap;
    gap: var(--nv-space-5);
    align-items: center;
    justify-content: space-between;
    position: relative;
    overflow: hidden;
}
.nv-welcome::before {
    content: '';
    position: absolute;
    inset: auto -80px -80px auto;
    width: 260px;
    height: 260px;
    background: radial-gradient(circle, rgba(8,145,178,.12) 0%, transparent 70%);
    pointer-events: none;
}
.nv-welcome-text { flex: 1 1 360px; min-width: 0; }
.nv-welcome-pretitle {
    font-size: var(--nv-font-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--nv-primary);
    margin-bottom: .4rem;
}
.nv-welcome-hello {
    font-size: var(--nv-font-2xl);
    font-weight: 700;
    color: var(--nv-navy-ink);
    margin: 0 0 .35rem 0;
    letter-spacing: -0.015em;
    line-height: 1.2;
}
.nv-welcome-sub {
    color: var(--nv-text-soft);
    font-size: .95rem;
    margin: 0;
    line-height: 1.5;
}
.nv-welcome-sub .nv-dot-sep {
    margin: 0 .5rem;
    color: #cbd5e1;
}

.nv-welcome-side {
    display: flex;
    align-items: center;
    gap: var(--nv-space-3);
    flex-wrap: wrap;
}

.nv-summary-pill {
    display: inline-flex;
    align-items: center;
    gap: var(--nv-space-2);
    padding: .55rem 1rem;
    border-radius: var(--nv-radius-pill);
    background: var(--nv-card-bg);
    border: 1px solid var(--nv-border);
    color: var(--nv-navy-ink);
    font-weight: 600;
    font-size: .88rem;
    box-shadow: 0 2px 6px rgba(30,58,95,.05);
}
.nv-summary-pill-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--nv-success);
    animation: nv-pulse 2.4s ease-in-out infinite;
}
.nv-summary-pill--warn .nv-summary-pill-dot { background: var(--nv-amber); }
.nv-summary-pill--danger .nv-summary-pill-dot { background: var(--nv-danger); }
@keyframes nv-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(16,185,129,.4); }
    50%      { box-shadow: 0 0 0 5px rgba(16,185,129,0); }
}

.nv-welcome-avatar {
    width: 48px;
    height: 48px;
    border-radius: var(--nv-radius-md);
    background-size: cover;
    background-position: center;
    border: 2px solid #fff;
    box-shadow: 0 2px 8px rgba(30,58,95,.12);
    flex-shrink: 0;
}

/* ---- Dashboard: KPI grid (stat cards) */
.nv-kpis {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--nv-space-4);
}

/* ---- Dashboard: activity (orders + tickets grid) */
.nv-activity {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--nv-space-4);
}
.nv-activity-card {
    background: var(--nv-card-bg);
    border: 1px solid var(--nv-border);
    border-radius: 14px;
    overflow: hidden;
}
.nv-activity-card-head {
    padding: 1rem 1.25rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nv-space-4);
    border-bottom: 1px solid var(--nv-border);
}
.nv-activity-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.nv-activity-item {
    display: flex;
    align-items: center;
    gap: .85rem;
    padding: .9rem 1.25rem;
    border-bottom: 1px solid var(--nv-border-soft);
    text-decoration: none;
    color: inherit;
    transition: background .15s ease;
}
.nv-activity-item:last-child { border-bottom: none; }
.nv-activity-item:hover {
    background: var(--nv-page-bg);
    color: inherit;
    text-decoration: none;
}
.nv-activity-avatar {
    width: 36px;
    height: 36px;
    flex-shrink: 0;
    border-radius: 9px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--nv-border-soft);
    color: var(--nv-text-soft);
}
.nv-activity-avatar svg { width: 18px; height: 18px; }
.nv-activity-avatar--success { background: rgba(16,185,129,.12); color: #065f46; }
.nv-activity-avatar--danger  { background: rgba(239,68,68,.12); color: #991b1b; }
.nv-activity-avatar--warn    { background: rgba(217,119,6,.12); color: #b45309; }
.nv-activity-avatar--info    { background: rgba(8,145,178,.12); color: var(--nv-primary-dark); }
.nv-activity-avatar--img     { background-size: cover; background-position: center; }

.nv-activity-body {
    flex: 1 1 auto;
    min-width: 0;
}
.nv-activity-title {
    display: block;
    font-weight: 600;
    color: var(--nv-navy-ink);
    font-size: .9rem;
    line-height: 1.3;
    margin-bottom: .15rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.nv-activity-title a { color: inherit; text-decoration: none; }
.nv-activity-title a:hover { color: var(--nv-primary); }
.nv-activity-meta {
    display: flex;
    align-items: center;
    gap: .45rem;
    font-size: .78rem;
    color: var(--nv-text-muted);
    flex-wrap: wrap;
}
.nv-activity-meta a { color: var(--nv-text-soft); text-decoration: none; }
.nv-activity-meta a:hover { color: var(--nv-primary); }

.nv-activity-badge {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: .72rem;
    font-weight: 600;
    padding: .2rem .55rem;
    border-radius: var(--nv-radius-pill);
}
.nv-activity-badge--active   { background: rgba(16,185,129,.12); color: #065f46; }
.nv-activity-badge--paid     { background: rgba(16,185,129,.12); color: #065f46; }
.nv-activity-badge--unpaid   { background: rgba(239,68,68,.12); color: #991b1b; }
.nv-activity-badge--open     { background: rgba(16,185,129,.12); color: #065f46; }
.nv-activity-badge--onhold   { background: rgba(217,119,6,.12); color: #b45309; }
.nv-activity-badge--closed   { background: var(--nv-border-soft); color: var(--nv-text-soft); }
.nv-activity-badge--pending  { background: rgba(8,145,178,.12); color: var(--nv-primary-dark); }
.nv-activity-badge--suspended { background: rgba(239,68,68,.12); color: #991b1b; }
.nv-activity-badge--urgent   { background: rgba(239,68,68,.15); color: #991b1b; }
.nv-activity-badge--high     { background: rgba(249,115,22,.15); color: #c2410c; }
.nv-activity-badge--normal   { background: rgba(8,145,178,.12); color: var(--nv-primary-dark); }
.nv-activity-badge--low      { background: var(--nv-border-soft); color: var(--nv-text-soft); }
.nv-activity-badge--other    { background: var(--nv-border-soft); color: var(--nv-text-soft); }
.nv-activity-badge--refunded { background: rgba(217,119,6,.12); color: #b45309; }

.nv-activity-right {
    flex-shrink: 0;
    text-align: right;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .2rem;
}
.nv-activity-amount {
    font-weight: 700;
    color: var(--nv-navy-ink);
    font-size: .95rem;
}
.nv-activity-time {
    color: var(--nv-text-muted);
    font-size: .75rem;
}

/* ---- Dashboard: quick access tiles */
.nv-quick {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--nv-space-4);
}
.nv-quick-compact-wrap { margin-bottom: var(--nv-space-5); }
.nv-quick.nv-quick--compact {
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: var(--nv-space-3);
}
.nv-quick.nv-quick--compact .nv-quick-tile {
    padding: var(--nv-space-3) 0.9rem;
    gap: 0.65rem;
}
.nv-quick.nv-quick--compact .nv-quick-tile-icon {
    width: 34px;
    height: 34px;
    border-radius: var(--nv-radius-sm);
}
.nv-quick.nv-quick--compact .nv-quick-tile-icon svg { width: 17px; height: 17px; }
.nv-quick.nv-quick--compact .nv-quick-tile-title { font-size: 0.88rem; }
.nv-quick.nv-quick--compact .nv-quick-tile-desc { font-size: 0.74rem; }

/* ---- Dashboard: system status panel */
.nv-sysstatus {
    background: var(--nv-card-bg);
    border: 1px solid var(--nv-border);
    border-radius: 14px;
    padding: 1.25rem var(--nv-space-5);
}
.nv-sysstatus-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1.25rem;
    margin-top: .75rem;
}
.nv-sysstatus-item {
    display: flex;
    flex-direction: column;
    gap: .15rem;
}
.nv-sysstatus-label {
    font-size: var(--nv-font-xs);
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--nv-text-muted);
    font-weight: 600;
}
.nv-sysstatus-value {
    color: var(--nv-navy-ink);
    font-weight: 600;
    font-size: .95rem;
    display: inline-flex;
    align-items: center;
    gap: .4rem;
}
.nv-sysstatus-value .nv-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
}
.nv-sysstatus-value--ok   .nv-dot { background: var(--nv-success); }
.nv-sysstatus-value--warn .nv-dot { background: var(--nv-amber); }
.nv-sysstatus-value--err  .nv-dot { background: var(--nv-danger); }

/* ---- Dashboard: income chart card */
.nv-chart-card {
    background: var(--nv-card-bg);
    border: 1px solid var(--nv-border);
    border-radius: 14px;
    overflow: hidden;
}
.nv-chart-card-head {
    padding: 1rem 1.25rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nv-space-4);
    border-bottom: 1px solid var(--nv-border);
    flex-wrap: wrap;
}
.nv-chart-card-body { padding: .5rem; }

/* ---- KPI trend indicator (reused across sections) */
.nv-kpi-trend {
    display: inline-flex;
    align-items: center;
    gap: .15rem;
    font-size: .75rem;
    font-weight: 600;
    padding: .15rem .45rem;
    border-radius: 6px;
    margin-left: .4rem;
}
.nv-kpi-trend--up   { background: rgba(16,185,129,.12); color: #065f46; }
.nv-kpi-trend--down { background: rgba(239,68,68,.12); color: #991b1b; }
.nv-kpi-trend svg { width: 12px; height: 12px; }

/* ==========================================================
   8. NovaHost footer (admin)
   ========================================================== */
.nh-footer,
.nv-footer {
    background: var(--nv-navy);
    color: #fff;
    padding: 0;
    margin-top: var(--nv-space-7);
    font-family: var(--nv-font-family);
}
.nh-footer .nh-container,
.nv-footer .nv-container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.nh-footer-grid {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1fr;
    gap: var(--nv-space-7);
    margin-bottom: 2.5rem;
}
.nh-footer-brand img {
    height: 64px;
    margin-bottom: 1.25rem;
    display: block;
}
.nh-footer-brand p {
    color: rgba(255,255,255,.6);
    margin-bottom: var(--nv-space-5);
    font-size: 0.9rem;
    line-height: 1.7;
}
.nh-footer-social a {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: rgba(255,255,255,.08);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: rgba(255,255,255,.7);
    transition: var(--nv-transition);
}
.nh-footer-social a:hover {
    background: var(--nv-primary);
    color: #fff;
    transform: translateY(-2px);
}
.nh-footer-column h4 {
    font-size: 0.85rem;
    font-weight: 700;
    margin-bottom: 1.25rem;
    color: #fff;
    position: relative;
    padding-bottom: 0.75rem;
}
.nh-footer-column h4::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 30px;
    height: 2px;
    background: var(--nv-amber);
    border-radius: 1px;
}
.nh-footer-column ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
.nh-footer-column li { margin-bottom: 0.6rem; }
.nh-footer-column a {
    color: rgba(255,255,255,.6);
    font-size: 0.9rem;
    transition: var(--nv-transition);
    display: inline-block;
}
.nh-footer-column a:hover {
    color: #fff;
    padding-left: 4px;
}
.nh-footer-payment p {
    color: rgba(255,255,255,.5);
    font-size: 0.82rem;
    margin-bottom: 0.75rem;
}
.nh-payment-logos img {
    height: 28px;
    width: auto;
    opacity: .85;
    filter: brightness(0) invert(1);
    transition: opacity .2s;
}
.nh-payment-logos img:hover { opacity: 1; }
.nh-footer-bottom {
    padding: 1.5rem 0 .5rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    color: rgba(255,255,255,.4);
    font-size: 0.82rem;
}
.nh-footer-bottom p { margin: 0; }
.nh-footer-contact a {
    color: rgba(255,255,255,.5);
    transition: color .2s;
    font-size: .82rem;
}
.nh-footer-contact a:hover { color: #fff; }

/* Suppress legacy Tide footer */
.footer.footer-transparent { display: none !important; }

/* ==========================================================
   9. Legacy aliases (.nh-*, .nha-*) for existing templates
   ==========================================================
   These mirror the old files 1:1 in visual output. They forward
   to the new tokens and core components so templates keep working
   without modification.
   --------------------------------------------------------- */

/* ---- nha-wrap: unified with nv-wrap */
.nha-wrap {
    display: flex;
    flex-direction: column;
    gap: var(--nv-space-5);
}

/* ---- nha-welcome: unified with nv-welcome */
.nha-welcome {
    background: linear-gradient(135deg, rgba(8,145,178,.08) 0%, rgba(30,58,95,.04) 45%, transparent 100%);
    border: 1px solid var(--nv-border);
    border-radius: var(--nv-radius-lg);
    padding: 1.75rem var(--nv-space-6);
    display: flex;
    flex-wrap: wrap;
    gap: var(--nv-space-5);
    align-items: center;
    justify-content: space-between;
    position: relative;
    overflow: hidden;
}
.nha-welcome::before {
    content: '';
    position: absolute;
    inset: auto -80px -80px auto;
    width: 260px;
    height: 260px;
    background: radial-gradient(circle, rgba(8,145,178,.12) 0%, transparent 70%);
    pointer-events: none;
}
.nha-welcome-text { flex: 1 1 360px; min-width: 0; }
.nha-welcome-pretitle {
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--nv-primary);
    margin-bottom: .4rem;
}
.nha-welcome-hello {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--nv-navy-ink);
    margin: 0 0 .35rem 0;
    letter-spacing: -0.015em;
    line-height: 1.2;
}
.nha-welcome-sub {
    color: var(--nv-text-soft);
    font-size: .95rem;
    margin: 0;
    line-height: 1.5;
}
.nha-welcome-sub .nha-dot {
    margin: 0 .5rem;
    color: #cbd5e1;
}
.nha-welcome-side {
    display: flex;
    align-items: center;
    gap: .75rem;
    flex-wrap: wrap;
}
.nha-summary-pill {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .55rem 1rem;
    border-radius: var(--nv-radius-pill);
    background: var(--nv-card-bg);
    border: 1px solid var(--nv-border);
    color: var(--nv-navy-ink);
    font-weight: 600;
    font-size: .88rem;
    box-shadow: 0 2px 6px rgba(30,58,95,.05);
}
.nha-summary-pill .nha-summary-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--nv-success);
    animation: nha-pulse 2.4s ease-in-out infinite;
}
.nha-summary-pill.nha-summary-pill--warn .nha-summary-dot { background: var(--nv-amber); }
.nha-summary-pill.nha-summary-pill--danger .nha-summary-dot { background: var(--nv-danger); }

@keyframes nha-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(16,185,129,.4); }
    50%      { box-shadow: 0 0 0 5px rgba(16,185,129,0); }
}

.nha-welcome-avatar {
    width: 48px;
    height: 48px;
    border-radius: var(--nv-radius-md);
    background-size: cover;
    background-position: center;
    border: 2px solid #fff;
    box-shadow: 0 2px 8px rgba(30,58,95,.12);
    flex-shrink: 0;
}

/* ---- nha-alert: unified with nv-alert */
.nha-alert {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-radius: var(--nv-radius-md);
    border: 1px solid transparent;
    border-left-width: 4px;
    background: var(--nv-card-bg);
}
.nha-alert-icon {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.nha-alert-body { flex: 1 1 auto; }
.nha-alert-body h4 { margin: 0 0 .2rem; font-weight: 700; font-size: 1rem; }
.nha-alert-body p  { margin: 0; font-size: .88rem; }
.nha-alert-action {
    margin-top: .6rem;
    display: inline-flex;
    gap: .5rem;
    flex-wrap: wrap;
}
.nha-alert--danger {
    background: var(--nv-danger-soft);
    border-color: #fca5a5;
    border-left-color: var(--nv-danger);
}
.nha-alert--danger .nha-alert-icon { background: rgba(239,68,68,.15); color: #dc2626; }
.nha-alert--danger h4 { color: #7f1d1d; }
.nha-alert--danger p  { color: #991b1b; }
.nha-alert--warning {
    background: #fffbeb;
    border-color: #fcd34d;
    border-left-color: var(--nv-amber);
}
.nha-alert--warning .nha-alert-icon { background: rgba(217,119,6,.15); color: var(--nv-amber); }
.nha-alert--warning h4 { color: #78350f; }
.nha-alert--warning p  { color: #92400e; }
.nha-alert--info {
    background: var(--nv-info-soft);
    border-color: #93c5fd;
    border-left-color: var(--nv-info);
}
.nha-alert--info .nha-alert-icon { background: rgba(59,130,246,.15); color: #2563eb; }
.nha-alert--info h4 { color: #1e3a8a; }
.nha-alert--info p  { color: #1e40af; }

/* .nha-kpi* consolidado 2026-07-10 — duplicado verbatim (con drift real en
   la variante --purple: navy aquí vs slate en features.css) en
   custom-nv-features.css, que carga DESPUÉS → siempre ganaba, esta copia
   era 100% muerta. Definición única canónica ahora en custom-nv-features.css. */

/* ---- nha-section-title: unified with nv-section-title */
.nha-section-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin: .25rem 0 .5rem;
}
.nha-section-title h3 {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--nv-navy-ink);
    letter-spacing: -0.01em;
    display: flex;
    align-items: center;
    gap: .5rem;
}
.nha-section-title h3 .nha-title-icon {
    width: 20px;
    height: 20px;
    color: var(--nv-primary);
}
.nha-section-title .nha-link {
    font-size: .85rem;
    font-weight: 500;
    color: var(--nv-primary);
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    text-decoration: none;
    transition: gap .15s ease, color .15s ease;
}
.nha-section-title .nha-link:hover {
    color: var(--nv-navy-ink);
    gap: .5rem;
}

/* ---- nha-activity: unified with nv-activity */
.nha-activity {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}
.nha-activity-card {
    background: var(--nv-card-bg);
    border: 1px solid var(--nv-border);
    border-radius: 14px;
    overflow: hidden;
}
.nha-activity-card .nha-activity-head {
    padding: 1rem 1.25rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    border-bottom: 1px solid var(--nv-border);
}
.nha-activity-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.nha-activity-item {
    display: flex;
    align-items: center;
    gap: .85rem;
    padding: .9rem 1.25rem;
    border-bottom: 1px solid var(--nv-border-soft);
    text-decoration: none;
    color: inherit;
    transition: background .15s ease;
}
.nha-activity-item:last-child { border-bottom: none; }
.nha-activity-item:hover {
    background: var(--nv-page-bg);
    color: inherit;
    text-decoration: none;
}
.nha-activity-avatar {
    width: 36px;
    height: 36px;
    flex-shrink: 0;
    border-radius: 9px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--nv-border-soft);
    color: var(--nv-text-soft);
}
.nha-activity-avatar svg { width: 18px; height: 18px; }
.nha-activity-avatar--success { background: rgba(16,185,129,.12); color: #065f46; }
.nha-activity-avatar--danger  { background: rgba(239,68,68,.12);  color: #991b1b; }
.nha-activity-avatar--warn    { background: rgba(217,119,6,.12);  color: #b45309; }
.nha-activity-avatar--info    { background: rgba(8,145,178,.12);  color: var(--nv-primary-dark); }
.nha-activity-avatar--img     { background-size: cover; background-position: center; }

.nha-activity-body { flex: 1 1 auto; min-width: 0; }
.nha-activity-title {
    display: block;
    font-weight: 600;
    color: var(--nv-navy-ink);
    font-size: .9rem;
    line-height: 1.3;
    margin-bottom: .15rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.nha-activity-title a { color: inherit; text-decoration: none; }
.nha-activity-title a:hover { color: var(--nv-primary); }
.nha-activity-meta {
    display: flex;
    align-items: center;
    gap: .45rem;
    font-size: .78rem;
    color: var(--nv-text-muted);
    flex-wrap: wrap;
}
.nha-activity-meta a { color: var(--nv-text-soft); text-decoration: none; }
.nha-activity-meta a:hover { color: var(--nv-primary); }

.nha-activity-badge {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: .72rem;
    font-weight: 600;
    padding: .2rem .55rem;
    border-radius: var(--nv-radius-pill);
}
.nha-activity-badge--active   { background: rgba(16,185,129,.12); color: #065f46; }
.nha-activity-badge--paid     { background: rgba(16,185,129,.12); color: #065f46; }
.nha-activity-badge--unpaid   { background: rgba(239,68,68,.12);  color: #991b1b; }
.nha-activity-badge--open     { background: rgba(16,185,129,.12); color: #065f46; }
.nha-activity-badge--onhold   { background: rgba(217,119,6,.12);  color: #b45309; }
.nha-activity-badge--closed   { background: var(--nv-border-soft); color: var(--nv-text-soft); }
.nha-activity-badge--pending  { background: rgba(8,145,178,.12);  color: var(--nv-primary-dark); }
.nha-activity-badge--suspended { background: rgba(239,68,68,.12); color: #991b1b; }
.nha-activity-badge--urgent   { background: rgba(239,68,68,.15);  color: #991b1b; }
.nha-activity-badge--high     { background: rgba(249,115,22,.15); color: #c2410c; }
.nha-activity-badge--normal   { background: rgba(8,145,178,.12);  color: var(--nv-primary-dark); }
.nha-activity-badge--low      { background: var(--nv-border-soft); color: var(--nv-text-soft); }
.nha-activity-badge--other    { background: var(--nv-border-soft); color: var(--nv-text-soft); }
.nha-activity-badge--refunded { background: rgba(217,119,6,.12); color: #b45309; }

.nha-activity-right {
    flex-shrink: 0;
    text-align: right;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .2rem;
}
.nha-activity-amount {
    font-weight: 700;
    color: var(--nv-navy-ink);
    font-size: .95rem;
}
.nha-activity-time {
    color: var(--nv-text-muted);
    font-size: .75rem;
}

.nha-activity-empty {
    text-align: center;
    padding: 2rem 1rem;
    color: var(--nv-text-muted);
    font-size: .9rem;
}
.nha-activity-empty svg {
    width: 36px;
    height: 36px;
    color: #cbd5e1;
    margin-bottom: .5rem;
}
.nha-activity-empty--ok {
    background: rgba(16,185,129,.06);
    border-radius: 0 0 14px 14px;
}
.nha-activity-empty--ok svg { color: var(--nv-success); }
.nha-activity-empty--ok strong { color: #065f46; display: block; margin-top: .25rem; font-weight: 700; }

/* ---- nha-quick: unified with nv-quick */
.nha-quick {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}
.nha-quick-compact-wrap { margin-bottom: 1.5rem; }
.nha-quick.nha-quick--compact {
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 0.75rem;
}
.nha-quick.nha-quick--compact .nha-quick-tile {
    padding: 0.75rem 0.9rem;
    gap: 0.65rem;
}
.nha-quick.nha-quick--compact .nha-quick-tile-icon {
    width: 34px;
    height: 34px;
    border-radius: var(--nv-radius-sm);
}
.nha-quick.nha-quick--compact .nha-quick-tile-icon svg { width: 17px; height: 17px; }
.nha-quick.nha-quick--compact .nha-quick-tile-title { font-size: 0.88rem; }
.nha-quick.nha-quick--compact .nha-quick-tile-desc { font-size: 0.74rem; }

.nha-quick-tile.nha-quick-tile--danger {
    border-color: var(--nv-amber);
    background: linear-gradient(180deg, #fff 0%, rgba(217,119,6,.04) 100%);
}
.nha-quick-tile.nha-quick-tile--danger .nha-quick-tile-icon {
    background: rgba(217,119,6,.12);
    color: var(--nv-amber);
}
.nha-quick-tile {
    display: flex;
    align-items: center;
    gap: .85rem;
    padding: 1rem 1.15rem;
    background: var(--nv-card-bg);
    border: 1px solid var(--nv-border);
    border-radius: var(--nv-radius-md);
    color: inherit;
    text-decoration: none;
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.nha-quick-tile:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(30,58,95,.08);
    border-color: var(--nv-primary);
    color: inherit;
    text-decoration: none;
}
.nha-quick-tile-icon {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--nv-border-soft);
    color: var(--nv-navy-ink);
}
.nha-quick-tile-icon svg { width: 20px; height: 20px; }
.nha-quick-tile-body {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.nha-quick-tile-title {
    font-weight: 600;
    color: var(--nv-navy-ink);
    font-size: .92rem;
    line-height: 1.2;
}
.nha-quick-tile-desc {
    color: var(--nv-text-muted);
    font-size: .78rem;
    margin-top: .1rem;
}
.nha-quick-tile--primary {
    background: linear-gradient(135deg, var(--nv-primary) 0%, var(--nv-navy) 100%);
    border-color: transparent;
    color: #fff;
}
.nha-quick-tile--primary:hover { color: #fff; box-shadow: 0 10px 28px rgba(8,145,178,.3); }
.nha-quick-tile--primary .nha-quick-tile-icon { background: rgba(255,255,255,.2); color: #fff; }
.nha-quick-tile--primary .nha-quick-tile-title,
.nha-quick-tile--primary .nha-quick-tile-desc { color: #fff; }
.nha-quick-tile--primary .nha-quick-tile-desc { opacity: .85; }
.nha-quick-tile--amber {
    background: linear-gradient(135deg, var(--nv-amber) 0%, #b45309 100%);
    border-color: transparent;
    color: #fff;
}
.nha-quick-tile--amber:hover { color: #fff; box-shadow: 0 10px 28px rgba(217,119,6,.3); }
.nha-quick-tile--amber .nha-quick-tile-icon { background: rgba(255,255,255,.2); color: #fff; }
.nha-quick-tile--amber .nha-quick-tile-title,
.nha-quick-tile--amber .nha-quick-tile-desc { color: #fff; }
.nha-quick-tile--amber .nha-quick-tile-desc { opacity: .85; }

/* ---- nha-sysstatus: unified with nv-sysstatus */
.nha-sysstatus {
    background: var(--nv-card-bg);
    border: 1px solid var(--nv-border);
    border-radius: 14px;
    padding: 1.25rem 1.5rem;
}
.nha-sysstatus-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1.25rem;
    margin-top: .75rem;
}
.nha-sysstatus-item {
    display: flex;
    flex-direction: column;
    gap: .15rem;
}
.nha-sysstatus-label {
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--nv-text-muted);
    font-weight: 600;
}
.nha-sysstatus-value {
    color: var(--nv-navy-ink);
    font-weight: 600;
    font-size: .95rem;
    display: inline-flex;
    align-items: center;
    gap: .4rem;
}
.nha-sysstatus-value .nha-dot-ind {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
}
.nha-sysstatus-value--ok   .nha-dot-ind { background: var(--nv-success); }
.nha-sysstatus-value--warn .nha-dot-ind { background: var(--nv-amber); }
.nha-sysstatus-value--err  .nha-dot-ind { background: var(--nv-danger); }

/* ---- nha-chart-card: unified with nv-chart-card */
.nha-chart-card {
    background: var(--nv-card-bg);
    border: 1px solid var(--nv-border);
    border-radius: 14px;
    overflow: hidden;
}
.nha-chart-card-head {
    padding: 1rem 1.25rem .75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    border-bottom: 1px solid var(--nv-border);
    flex-wrap: wrap;
}
.nha-chart-card-body { padding: .5rem; }

/* ==========================================================
   11. Responsive + misc
   ========================================================== */
@media (max-width: 1199.98px) {
    .nv-kpis,  .nha-kpis  { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .nv-quick, .nha-quick { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .nv-quick.nv-quick--compact,
    .nha-quick.nha-quick--compact { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 991.98px) {
    .nv-activity, .nha-activity { grid-template-columns: 1fr; }
}
@media (max-width: 767.98px) {
    .nv-welcome,   .nha-welcome   { padding: 1.25rem 1.35rem; }
    .nv-welcome-hello,
    .nha-welcome-hello { font-size: 1.35rem; }
    .nv-kpis,   .nha-kpis   { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
    .nv-stat-card,
    .nha-kpi { padding: 1rem; }
    .nv-stat-card-number,
    .nha-kpi-number { font-size: 1.65rem; }
    .nv-quick,  .nha-quick  { grid-template-columns: 1fr; }
    .nv-quick.nv-quick--compact,
    .nha-quick.nha-quick--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .nv-quick.nv-quick--compact .nv-quick-tile-desc,
    .nha-quick.nha-quick--compact .nha-quick-tile-desc { display: none; }
    .nv-sysstatus-grid,
    .nha-sysstatus-grid { grid-template-columns: 1fr 1fr; }
    .page-title { font-size: 1.4rem; }
    h1, .h1 { font-size: 1.6rem; }
    h2, .h2 { font-size: 1.35rem; }
    .navbar-brand-image {
        max-height: 48px !important;
        height: 48px !important;
    }
    .navbar .navbar-brand-image {
        max-height: 42px !important;
        height: 42px !important;
    }
    .page-single .navbar-brand-image,
    .page-center .navbar-brand-image {
        max-height: 60px !important;
        height: 60px !important;
    }
}
@media (max-width: 575.98px) {
    .nv-stat-card-chevron,
    .nha-kpi-chevron { display: none; }
}
@media (max-width: 479.98px) {
    .nv-kpis,   .nha-kpis   { grid-template-columns: 1fr; }
    .nv-quick.nv-quick--compact,
    .nha-quick.nha-quick--compact { grid-template-columns: 1fr; }
    .nv-quick.nv-quick--compact .nv-quick-tile-desc,
    .nha-quick.nha-quick--compact .nha-quick-tile-desc { display: inline; }
    .nv-sysstatus-grid,
    .nha-sysstatus-grid { grid-template-columns: 1fr; }
}

/* Footer responsive */
@media (max-width: 900px) {
    .nh-footer-grid {
        grid-template-columns: 1fr 1fr;
        gap: 2rem;
    }
    .nh-footer-brand { grid-column: 1 / -1; }
}
@media (max-width: 600px) {
    .nh-footer-grid { grid-template-columns: 1fr; }
    .nh-footer-main { padding: 2.5rem 0 1.5rem; }
    .nh-footer-bottom {
        flex-direction: column;
        text-align: center;
    }
}

/* .nhd-wrap / .nhd-welcome* consolidado 2026-07-10 — definición única canónica en
   custom-nv-client-pages.css (versión más completa, con .nhd-welcome-logo).
   El look visual real (fondo navy/radial) viene de nv-modern.css (última capa,
   !important) — esta copia quedaba 100% muerta, verificado con getComputedStyle
   en vivo antes de borrar. */

/* =============================================================================
   NovaHost admin — Card + Tabs + Table primitives (.nc-*)
   Componentes reutilizables usados por mod_order_index, mod_staff_index,
   mod_invoice_index y el patrón general de listas admin. Reemplazan la tabla
   con fondo navy pesado heredada de Tabler y unifican el look con el dashboard.
   ============================================================================= */

/* Card wrapper con sombra sutil y radius mayor — para cockpit-style listados */

/* Tab header — pegado al top del card, fondo gris-50 suave, nav flat */


/* Modifier: cuando la header lleva también búsqueda/acciones a la derecha */
.nc-tabs-header--with-search {
    display: flex !important;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}
.nc-tabs-header--with-search .nc-tabs-nav { flex: 1 1 auto; }
.nc-tabs-search {
    flex: 0 1 320px;
    min-width: 220px;
    margin: 0.35rem 0;
}
.nc-tabs-search .input-group-flat {
    border-radius: 10px;
    background: #ffffff;
    border: 1px solid var(--tblr-border-color, #e2e8f0);
    overflow: hidden;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.nc-tabs-search .input-group-flat:focus-within {
    border-color: #0891B2;
    box-shadow: 0 0 0 3px rgba(8, 145, 178, 0.12);
}
.nc-tabs-search .input-group-text {
    background: transparent;
    border: 0;
    color: #94a3b8;
    padding: 0.4rem 0.65rem;
}
.nc-tabs-search .input-group-text:hover { color: #0891B2; }
.nc-tabs-search input.form-control {
    border: 0 !important;
    padding: 0.45rem 0.5rem;
    font-size: 0.875rem;
    background: transparent !important;
    box-shadow: none !important;
}
@media (max-width: 640px) {
    .nc-tabs-header--with-search { flex-direction: column; align-items: stretch; }
    .nc-tabs-search { flex: 1; min-width: 0; }
}
.nc-tabs-nav .nav-link {
    padding: 0.85rem 1.1rem;
    font-size: 0.875rem;
    font-weight: 600;
    color: #64748b;
    border: 0 !important;
    border-bottom: 2px solid transparent !important;
    border-radius: 0 !important;
    background: transparent !important;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    transition: color 0.12s, border-color 0.12s;
}
.nc-tabs-nav .nav-link:hover { color: #1E3A5F; background: transparent !important; }
.nc-tabs-nav .nav-link.active {
    color: #0891B2 !important;
    border-bottom-color: #0891B2 !important;
    background: transparent !important;
}
.nc-tabs-nav .nav-link svg { opacity: .8; }
.nc-tabs-nav .nav-link.active svg { opacity: 1; }

/* Tabla con header más ligero (no navy pesado), filas espaciosas con hover suave */
.nc-table thead th {
    background: #f8fafc !important;
    color: #64748b !important;
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.04em !important;
    padding: 0.85rem 1rem !important;
    border-top: 0 !important;
    border-bottom: 1px solid var(--tblr-border-color, #e2e8f0) !important;
    white-space: nowrap;
}
.nc-table tbody td {
    padding: 0.85rem 1rem !important;
    vertical-align: middle;
    font-size: 0.9rem;
    border-bottom: 1px solid var(--tblr-border-color, #f1f5f9) !important;
}
.nc-table tbody tr:last-child td { border-bottom: 0 !important; }
.nc-table tbody tr:hover { background: rgba(8, 145, 178, 0.04); }

.nc-table .avatar-xs {
    width: 1.5rem;
    height: 1.5rem;
    font-size: 0.65rem;
}

/* Forms dentro de nc-card con labels estilizados */
.nc-form .form-label {
    font-size: 0.8125rem;
    font-weight: 500;
    color: #374151;
    margin-bottom: 0.375rem;
}
.nc-form .form-label.required::after {
    content: " *";
    color: #D97706;
}
.nc-form .form-hint {
    color: #6B7280;
    font-size: 0.75rem;
    margin-top: 0.375rem;
}
.nc-form .form-control,
.nc-form .form-select {
    border-radius: 8px;
}

/* Text utility cyan (para links dentro de tabla) */
.nc-table .text-cyan,
.text-cyan { color: #0891B2 !important; }

/* =============================================================================
   Client manage hero — header de perfil client fuera de tabs (mejor jerarquía)
   ============================================================================= */
.nha-client-hero {
    display: flex;
    align-items: flex-start;
    gap: 1.25rem;
    padding: 1.5rem 1.75rem;
    background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
    border: 1px solid var(--tblr-border-color, #e2e8f0);
    border-radius: 14px;
    margin-bottom: 1rem;
    box-shadow: 0 1px 3px rgba(30, 58, 95, 0.04);
    flex-wrap: wrap;
}
.nha-client-hero__avatar { flex-shrink: 0; }
.nha-client-hero__avatar .avatar {
    border: 3px solid #ffffff;
    box-shadow: 0 4px 12px rgba(30, 58, 95, 0.12);
}
.nha-client-hero__main {
    flex: 1;
    min-width: 0;
}
.nha-client-hero__pretitle {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #0891B2;
    margin-bottom: 0.2rem;
}
.nha-client-hero__name {
    font-size: 1.65rem;
    font-weight: 700;
    color: #1E3A5F;
    margin: 0 0 0.25rem;
    letter-spacing: -0.01em;
    line-height: 1.15;
}
.nha-client-hero__email {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: #6B7280;
    font-size: 0.875rem;
    margin-bottom: 0.5rem;
}
.nha-client-hero__email a {
    color: #6B7280;
    text-decoration: none;
}
.nha-client-hero__email a:hover { color: #0891B2; text-decoration: underline; }
.nha-client-hero__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}
.nha-client-hero__actions {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-shrink: 0;
}
@media (max-width: 720px) {
    .nha-client-hero { padding: 1rem 1.1rem; }
    .nha-client-hero__name { font-size: 1.3rem; }
    .nha-client-hero__actions {
        width: 100%;
        flex-direction: column;
        align-items: stretch;
    }
    .nha-client-hero__actions .btn { width: 100%; justify-content: center; }
}

/* Chip component — sustituto consistente de badges Tabler en el hero */
.nha-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.25rem 0.65rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.3;
    white-space: nowrap;
}
.nha-chip-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
    display: inline-block;
}
.nha-chip--ok {
    background: rgba(8, 145, 178, 0.12);
    color: var(--nv-primary-dark);
}
.nha-chip--warn {
    background: rgba(217, 119, 6, 0.12);
    color: #D97706;
}
.nha-chip--danger {
    background: rgba(220, 38, 38, 0.12);
    color: #dc2626;
}
.nha-chip--info {
    background: rgba(8, 145, 178, 0.12);
    color: #0891B2;
}
.nha-chip--muted {
    background: #f1f5f9;
    color: #475569;
}
.nha-chip .flag {
    width: 14px;
    height: 10px;
    display: inline-block;
}

/* ==========================================================
   Admin client/manage tab-profile (rediseño 2026-05-01)
   Estructura: secciones agrupadas con divisores limpios y
   botones de acción alineados a la derecha (no banda w-100).
   ========================================================== */
.nh-admin-profile {
    max-width: 960px;
}
.nh-admin-profile h5,
.nh-admin-profile-section {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--nh-navy, #1E3A5F);
    margin: 1.75rem 0 1.25rem;
    padding-bottom: 0.6rem;
    border-bottom: 2px solid var(--nh-cyan, #0891b2);
    display: inline-block;
    min-width: 220px;
}
.nh-admin-profile > h5:first-of-type,
.nh-admin-profile > .nh-admin-profile-section:first-of-type {
    margin-top: 0.25rem;
}
.nh-admin-profile .mb-3.row {
    margin-bottom: 1rem !important;
    align-items: center;
}
.nh-admin-profile .form-label {
    font-weight: 500;
    color: var(--nh-gray-700, #374151);
    text-align: right;
    padding-right: 1rem;
}
.nh-admin-profile .form-control,
.nh-admin-profile .form-select {
    border-color: var(--nh-gray-200, #E5E7EB);
    transition: border-color .15s ease, box-shadow .15s ease;
}
.nh-admin-profile .form-control:focus,
.nh-admin-profile .form-select:focus {
    border-color: var(--nh-cyan, #0891b2);
    box-shadow: 0 0 0 3px rgba(8, 145, 178, 0.12);
}
.nh-admin-profile-actions {
    display: flex;
    justify-content: flex-end;
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px dashed var(--nh-gray-200, #E5E7EB);
}
.nh-admin-profile-actions .btn {
    min-width: 180px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
@media (max-width: 768px) {
    .nh-admin-profile .form-label {
        text-align: left;
        padding-right: 0;
        margin-bottom: 0.35rem;
    }
    .nh-admin-profile-actions {
        justify-content: stretch;
    }
    .nh-admin-profile-actions .btn { width: 100%; }
}


/* ============================================================================
   ▼▼▼ Tokens originales de custom-nv-tokens.css ▼▼▼
   ============================================================================ */
/* ==========================================================================
   NovaHost Design System (Client) - 1. Tokens + Base Reset + Typography
   Shared with Agent 2 (admin). Do not diverge from the :root contract.
   ========================================================================== */

:root {
    /* Core brand + status colors + neutrales (text/surface): definidor canónico
       único es _brand-shared.css (color-navy/cyan/amber, nv-primary/navy/
       amber/success/warning/danger, nv-text, nv-page-bg, nv-card-bg,
       nv-border y variantes.
       Consolidado 2026-07-10 — antes redeclarados aquí también (redundante,
       ganaba _brand-shared.css por orden de carga pero quedaba deuda técnica).
       No redefinir aquí — este archivo los consume vía cascada. */

    /* Radii */
    --nv-radius-sm:      8px;
    --nv-radius-md:      12px;
    --nv-radius-lg:      16px;
    --nv-radius-pill:    999px;

    /* Shadows */
    --nv-shadow-sm:      0 1px 2px rgba(15,23,42,.06);
    --nv-shadow-md:      0 4px 12px rgba(15,23,42,.08);
    --nv-shadow-lg:      0 8px 24px rgba(15,23,42,.10);

    /* Spacing (base 4px) */
    --nv-space-1:        0.25rem;
    --nv-space-2:        0.5rem;
    --nv-space-3:        0.75rem;
    --nv-space-4:        1rem;
    --nv-space-5:        1.5rem;
    --nv-space-6:        2rem;
    --nv-space-7:        3rem;

    /* Typography — branding NovaHost: Inter (body) + Sora (headings).
       Compartido admin/cliente (misma fuente que el sitio marketing). */
    --nv-font-family:    'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Text', sans-serif;
    --nv-font-heading:   'Sora', -apple-system, BlinkMacSystemFont, sans-serif;
    --nv-font-xs:        0.72rem;
    --nv-font-sm:        0.85rem;
    --nv-font-base:      1rem;
    --nv-font-lg:        1.125rem;
    --nv-font-xl:        1.35rem;
    --nv-font-2xl:       1.75rem;
    --nv-font-3xl:       2rem;

    /* Motion */
    --nv-transition:     all .15s ease;

    /* Z-index scale */
    --nv-z-dropdown:     1000;
    --nv-z-modal:        1050;
    --nv-z-tooltip:      1070;

    /* ------- Legacy aliases (kept so existing templates keep working) ------- */

    /* Brand (nh-*) */
    --nh-navy:        var(--nv-navy);
    --nh-navy-dark:   var(--nv-navy-dark);
    --nh-navy-light:  #2a4f7d;
    --nh-cyan:        var(--nv-primary);
    --nh-cyan-dark:   var(--nv-primary-dark);
    --nh-cyan-light:  #22b8dc;
    --nh-amber:       var(--nv-amber);
    --nh-amber-dark:  #B45309;
    --nh-amber-light: #f59e0b;
    --nh-gray-50:     #F9FAFB;
    --nh-gray-100:    #F3F4F6;
    --nh-gray-200:    #E5E7EB;
    --nh-gray-300:    #cbd5e1;   /* F3: migrado desde _brand-shared-admin.css :root (capa tokens descompuesta) */
    --nh-gray-400:    #9CA3AF;
    --nh-gray-500:    #6B7280;
    --nh-gray-600:    #4B5563;
    --nh-gray-700:    #374151;
    --nh-gray-800:    #1F2937;

    /* Support + manage (ns-*) */
    --ns-bg:            var(--nv-page-bg);
    --ns-card-bg:       var(--nv-card-bg);
    --ns-border:        var(--nv-border);
    --ns-border-soft:   var(--nv-border-soft);
    --ns-text:          var(--nv-text);
    --ns-text-soft:     var(--nv-text-soft);
    --ns-text-muted:    var(--nv-text-muted);
    --ns-primary:       var(--nv-primary);
    --ns-primary-dark:  var(--nv-primary-dark);
    --ns-primary-soft:  var(--nv-primary-soft);
    --ns-primary-text:  var(--nv-primary-text);
    --ns-success:       var(--nv-success);
    --ns-warning:       var(--nv-warning);
    --ns-danger:        var(--nv-danger);
    --ns-shadow-sm:     var(--nv-shadow-sm);
    --ns-shadow-md:     var(--nv-shadow-md);
    --ns-radius:        var(--nv-radius-md);
    --ns-radius-lg:     var(--nv-radius-lg);

    /* tblr-primary, bs-primary y el link-color: definidor canónico único
       es _brand-shared.css — consolidado 2026-07-10, redundantes aquí. */
    --tblr-font-sans-serif:    var(--nv-font-family);
    --bs-body-font-family:     var(--nv-font-family);
    --tblr-body-bg:            var(--nv-page-bg);
    --bs-body-bg:              var(--nv-page-bg);
    --bs-body-color:           var(--nh-gray-800);
}

/* Alias legacy nh-navy, nh-cyan, nh-gray-N: se usan como TEXTO en decenas de
   sitios (custom-nv-client-pages.css, custom-nv-checkout.css, etc) pero
   heredan de tokens de FONDO (nv-navy, nv-primary) que se quedan navy/cyan
   sólido en dark (botones, badges). Mismo split texto/fondo que --nv-navy-ink
   en _brand-shared.css, aplicado aquí a la cadena de alias legacy. */
[data-bs-theme="dark"] {
    --nh-navy:        var(--nv-navy-ink);
    --nh-cyan:        var(--nv-primary-bright);
    --nh-cyan-dark:   var(--nv-primary-bright);
    --nh-cyan-light:  var(--nv-primary-bright);
    --nh-gray-50:     var(--color-gray-50);
    --nh-gray-100:    var(--color-gray-100);
    --nh-gray-200:    var(--color-gray-200);
    --nh-gray-300:    var(--nv-border-soft);
    --nh-gray-400:    var(--color-gray-400);
    --nh-gray-500:    var(--color-gray-500);
    --nh-gray-600:    var(--color-gray-600);
    --nh-gray-700:    var(--color-gray-700);
    --nh-gray-800:    var(--color-gray-800);
}

/* ==========================================================================
   BASE RESET + TYPOGRAPHY
   ========================================================================== */
/* Branding NovaHost: Sora (headings) + Inter (body). Import único vive en
   _brand-shared.css (carga antes; ver sección 1 de este archivo). */

html,
body {
    margin: 0 !important;
    padding: 0 !important;
}
html { width: 100%; }
body { min-width: 100%; }
#rss-app { margin: 0 !important; padding: 0 !important; width: 100% !important; }

html, body {
    font-family: var(--bs-body-font-family) !important;
    font-size: 1rem;
    line-height: 1.6;
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
.page-title,
.card-title {
    font-family: var(--nv-font-heading) !important;
    color: var(--nv-navy-ink);
    font-weight: 700;
    letter-spacing: -0.01em;
}

h1, .h1 { font-size: var(--nv-font-3xl); }
h2, .h2 { font-size: var(--nv-font-2xl); }
h3, .h3 { font-size: var(--nv-font-xl); }
h4, .h4 { font-size: var(--nv-font-lg); }

.section-header {
    text-align: center;
    margin-bottom: 3rem;
}
.section-header h2 {
    font-size: var(--nv-font-2xl);
    font-weight: 700;
    color: var(--nv-navy-ink);
    margin-bottom: 0.75rem;
}
.section-header p {
    font-size: 1.1rem;
    color: var(--nh-gray-600);
    max-width: 650px;
    margin: 0 auto;
    line-height: 1.7;
}

/* Color helpers */
.bg-primary     { background-color: var(--nv-primary) !important; }
.text-primary   { color: var(--nv-primary) !important; }
.border-primary { border-color: var(--nv-primary) !important; }
.link-primary   { color: var(--nv-primary) !important; }
.bg-navy        { background-color: var(--nv-navy-ink) !important; }
.bg-amber       { background-color: var(--nv-amber) !important; }
.bg-gradient-nova {
    background: linear-gradient(135deg, var(--nv-primary) 0%, var(--nv-navy) 100%) !important;
    color: #fff !important;
}

.accent-border-left { border-left: 4px solid var(--nv-amber); }
.accent-border-top  { border-top:  4px solid var(--nv-amber); }

/* Focus / selection / scrollbar */
*:focus-visible {
    outline: 2px solid var(--nv-primary);
    outline-offset: 2px;
}
::selection {
    background-color: var(--nv-primary);
    color: #ffffff;
}
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: var(--nh-gray-100); }
::-webkit-scrollbar-thumb { background: var(--nv-primary); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--nv-navy); }

/* DARK MODE — chips/avatares con fondo rgba cyan tintado + texto -dark. */
[data-bs-theme="dark"] .nv-activity-avatar--info,
[data-bs-theme="dark"] .nha-activity-avatar--info,
[data-bs-theme="dark"] .nv-activity-badge--pending,
[data-bs-theme="dark"] .nha-activity-badge--pending,
[data-bs-theme="dark"] .nv-activity-badge--normal,
[data-bs-theme="dark"] .nha-activity-badge--normal,
[data-bs-theme="dark"] .nha-chip--ok {
    color: var(--nv-primary-text);
}
