[hidden] { display: none !important; }
:root {
    color-scheme: dark;
    --bg: #060216;
    --bg-soft: #0a0420;
    --surface: rgba(18, 8, 48, .88);
    --surface-solid: #120830;
    --surface-2: #1a0b47;
    --surface-3: #251064;
    --text: #f8f7ff;
    --muted: #a9a3c5;
    --line: rgba(137, 116, 210, .22);
    --cyan: #16dcf4;
    --cyan-soft: rgba(22, 220, 244, .14);
    --pink: #ff168f;
    --pink-soft: rgba(255, 22, 143, .14);
    --yellow: #ffd21c;
    --orange: #ff5c2b;
    --violet: #7b2cff;
    --success: #35e18b;
    --danger: #ff5673;
    --warning: #ffc857;
    --shadow: 0 24px 70px rgba(0, 0, 0, .34);
    --sidebar-width: 270px;
    --header-height: 82px;
    --radius-lg: 26px;
    --radius-md: 18px;
    --radius-sm: 12px;
}

:root[data-theme="light"] {
    color-scheme: light;
    --bg: #f6f4ff;
    --bg-soft: #eeebff;
    --surface: rgba(255, 255, 255, .9);
    --surface-solid: #ffffff;
    --surface-2: #f2eeff;
    --surface-3: #e7e0ff;
    --text: #18102b;
    --muted: #70698a;
    --line: rgba(83, 52, 151, .15);
    --cyan-soft: rgba(0, 173, 196, .12);
    --pink-soft: rgba(224, 0, 116, .1);
    --shadow: 0 22px 60px rgba(68, 43, 124, .13);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    min-height: 100vh;
    background:
        radial-gradient(circle at 82% 8%, rgba(24, 220, 244, .10), transparent 24rem),
        radial-gradient(circle at 25% 16%, rgba(255, 22, 143, .11), transparent 27rem),
        var(--bg);
    color: var(--text);
    font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    overflow-x: hidden;
}
body::before { content: none; display: none; }
body.no-scroll { overflow: hidden; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
img { max-width: 100%; display: block; }
svg.ui-icon { width: 21px; height: 21px; flex: 0 0 auto; }

.web-sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    width: var(--sidebar-width);
    padding: 22px 18px;
    display: flex;
    flex-direction: column;
    gap: 18px;
    background: linear-gradient(180deg, rgba(12, 5, 34, .98), rgba(8, 3, 23, .96));
    border-right: 1px solid var(--line);
    z-index: 40;
    backdrop-filter: blur(18px);
}
:root[data-theme="light"] .web-sidebar { background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(246,244,255,.98)); }
.sidebar-brand { display: flex; align-items: center; gap: 12px; padding: 4px 6px 12px; }
.sidebar-brand img { width: 52px; height: 52px; object-fit: cover; border-radius: 16px; box-shadow: 0 0 24px rgba(255, 22, 143, .28); }
.sidebar-brand span { display: grid; line-height: 1; }
.sidebar-brand strong { font: 800 1.35rem Rajdhani, sans-serif; letter-spacing: .08em; color: var(--yellow); }
.sidebar-brand small { margin-top: 5px; font: 700 .76rem Rajdhani, sans-serif; letter-spacing: .12em; color: var(--cyan); }
.sidebar-context { display: flex; align-items: center; gap: 10px; padding: 12px 13px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.025); }
.context-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--success); box-shadow: 0 0 14px var(--success); }
.sidebar-context div { display: grid; gap: 2px; }
.sidebar-context small { color: var(--muted); font-size: .72rem; }
.sidebar-context strong { font-size: .9rem; }
.sidebar-nav, .drawer-nav { display: grid; gap: 5px; }
.nav-link { position: relative; display: flex; align-items: center; gap: 13px; min-height: 46px; padding: 0 14px; border-radius: 14px; color: var(--muted); font-weight: 600; transition: .2s ease; }
.nav-link::before { content: ""; position: absolute; left: 0; width: 3px; height: 0; border-radius: 9px; background: linear-gradient(var(--cyan), var(--pink)); transition: .2s ease; }
.nav-link:hover { color: var(--text); background: rgba(255,255,255,.04); transform: translateX(2px); }
.nav-link.is-active { color: #fff; background: linear-gradient(90deg, rgba(123,44,255,.28), rgba(255,22,143,.12)); box-shadow: inset 0 0 0 1px rgba(157,101,255,.22); }
:root[data-theme="light"] .nav-link.is-active { color: #31156b; }
.nav-link.is-active::before { height: 26px; }
.nav-link.is-active .ui-icon { color: var(--cyan); filter: drop-shadow(0 0 6px rgba(22,220,244,.4)); }
.sidebar-promo { margin-top: auto; padding: 18px; border-radius: 20px; background: linear-gradient(145deg, rgba(123,44,255,.28), rgba(255,22,143,.18)); border: 1px solid rgba(255,22,143,.26); overflow: hidden; position: relative; }
.sidebar-promo::after { content: ""; position: absolute; width: 90px; height: 90px; border-radius: 50%; right: -28px; bottom: -35px; background: var(--cyan); opacity: .11; filter: blur(2px); }
.sidebar-promo span { color: var(--yellow); font: 800 .72rem Rajdhani, sans-serif; letter-spacing: .13em; }
.sidebar-promo strong { display: block; margin-top: 6px; font-family: Rajdhani, sans-serif; font-size: 1.1rem; }
.sidebar-promo p { margin: 7px 0 0; color: var(--muted); font-size: .78rem; line-height: 1.45; }

.site-header {
    position: fixed;
    top: 0;
    left: var(--sidebar-width);
    right: 0;
    height: var(--header-height);
    padding: 0 28px;
    display: grid;
    grid-template-columns: minmax(220px, .7fr) minmax(280px, 1fr) auto;
    align-items: center;
    gap: 22px;
    background: linear-gradient(180deg, rgba(6,2,22,.94), rgba(6,2,22,.72));
    border-bottom: 1px solid var(--line);
    backdrop-filter: blur(18px);
    z-index: 35;
}
:root[data-theme="light"] .site-header { background: linear-gradient(180deg, rgba(246,244,255,.95), rgba(246,244,255,.78)); }
.header-left { display: flex; align-items: center; gap: 12px; min-width: 0; }
.header-heading { min-width: 0; }
.header-heading .eyebrow { color: var(--cyan); font-size: .66rem; font-weight: 800; letter-spacing: .16em; }
.header-heading h1 { margin: 3px 0 0; font: 700 clamp(1rem, 2vw, 1.3rem) Rajdhani, sans-serif; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.header-search { height: 44px; display: flex; align-items: center; gap: 10px; padding: 0 13px; border-radius: 14px; background: var(--surface); border: 1px solid var(--line); color: var(--muted); }
.header-search input { width: 100%; border: 0; outline: 0; color: var(--text); background: transparent; }
.header-search input::placeholder { color: var(--muted); }
.header-search kbd { padding: 3px 6px; border-radius: 6px; border: 1px solid var(--line); background: var(--surface-2); color: var(--muted); font-size: .68rem; }
.header-actions { display: flex; align-items: center; gap: 9px; }
.icon-button { width: 42px; height: 42px; border-radius: 13px; display: inline-grid; place-items: center; border: 1px solid var(--line); background: var(--surface); cursor: pointer; transition: .2s ease; }
.icon-button:hover { transform: translateY(-2px); border-color: rgba(22,220,244,.42); box-shadow: 0 10px 25px rgba(0,0,0,.14); }
.icon-sun { display: none; }
:root[data-theme="light"] .icon-sun { display: inline-grid; }
:root[data-theme="light"] .icon-moon { display: none; }
.notification-button { position: relative; }
.notification-dot { position: absolute; width: 7px; height: 7px; right: 8px; top: 8px; border-radius: 50%; background: var(--pink); box-shadow: 0 0 9px var(--pink); }
.header-avatar { height: 46px; display: flex; align-items: center; gap: 10px; padding: 4px 11px 4px 5px; border: 1px solid var(--line); border-radius: 15px; background: var(--surface); }
.header-avatar > span { width: 35px; height: 35px; display: grid; place-items: center; border-radius: 11px; font: 800 .8rem Rajdhani, sans-serif; color: #070318; background: linear-gradient(135deg, var(--yellow), var(--orange)); }
.header-avatar div { display: grid; gap: 1px; }
.header-avatar strong { font-size: .78rem; }
.header-avatar small { color: var(--muted); font-size: .65rem; }
.app-menu-button, .browser-menu-button { display: none; }

.page-shell { min-height: calc(100vh - var(--header-height)); margin-left: var(--sidebar-width); padding: calc(var(--header-height) + 28px) 30px 32px; }
.content-wrap { width: min(1480px, 100%); margin: 0 auto; }
.page-intro { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 24px; }
.page-intro h2 { margin: 0; font: 700 clamp(1.65rem, 4vw, 2.6rem) Rajdhani, sans-serif; letter-spacing: -.02em; }
.page-intro p { max-width: 660px; margin: 8px 0 0; color: var(--muted); line-height: 1.65; }
.intro-actions { display: flex; gap: 10px; flex-wrap: wrap; }

.btn { min-height: 43px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; padding: 0 17px; border: 0; border-radius: 13px; font-weight: 750; cursor: pointer; transition: .2s ease; }
.btn:hover { transform: translateY(-2px); }
.btn-primary { color: #07111a; background: linear-gradient(135deg, var(--cyan), #6df6ff); box-shadow: 0 12px 30px rgba(22,220,244,.16); }
.btn-secondary { color: #fff; background: linear-gradient(135deg, var(--pink), var(--violet)); box-shadow: 0 12px 30px rgba(255,22,143,.15); }
.btn-ghost { color: var(--text); background: var(--surface); border: 1px solid var(--line); }
.btn-warning { color: #211400; background: linear-gradient(135deg, var(--yellow), var(--orange)); }

.panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow); backdrop-filter: blur(12px); }
.panel-head { padding: 20px 22px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border-bottom: 1px solid var(--line); }
.panel-head h3 { margin: 0; font: 700 1.22rem Rajdhani, sans-serif; }
.panel-head p { margin: 4px 0 0; color: var(--muted); font-size: .82rem; }
.panel-body { padding: 22px; }

.stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.stat-card { position: relative; min-height: 145px; padding: 20px; border-radius: 22px; background: var(--surface); border: 1px solid var(--line); overflow: hidden; }
.stat-card::after { content: ""; position: absolute; width: 115px; height: 115px; border-radius: 50%; right: -35px; bottom: -48px; background: var(--glow, var(--cyan)); opacity: .11; filter: blur(2px); }
.stat-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.stat-icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 14px; background: var(--cyan-soft); color: var(--cyan); }
.stat-change { padding: 5px 8px; border-radius: 999px; font-size: .7rem; font-weight: 700; background: rgba(53,225,139,.12); color: var(--success); }
.stat-card strong { display: block; margin-top: 18px; font: 700 1.8rem Rajdhani, sans-serif; }
.stat-card p { margin: 3px 0 0; color: var(--muted); font-size: .8rem; }

.grid-2 { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(300px, .75fr); gap: 18px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.stack { display: grid; gap: 18px; }
.muted { color: var(--muted); }
.accent-cyan { color: var(--cyan); }
.accent-pink { color: var(--pink); }
.accent-yellow { color: var(--yellow); }

.data-list { display: grid; }
.data-row { display: grid; grid-template-columns: minmax(160px, 1.4fr) repeat(3, minmax(90px, .7fr)); align-items: center; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.data-row:last-child { border-bottom: 0; }
.data-primary { display: flex; align-items: center; gap: 12px; min-width: 0; }
.data-avatar { width: 43px; height: 43px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 14px; color: #fff; font: 800 .8rem Rajdhani, sans-serif; background: linear-gradient(135deg, var(--violet), var(--pink)); }
.data-primary div { min-width: 0; }
.data-primary strong, .data-primary small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.data-primary strong { display: block; font-size: .86rem; }
.data-primary small { display: block; margin-top: 3px; color: var(--muted); font-size: .72rem; }
.status { display: inline-flex; align-items: center; width: fit-content; gap: 6px; padding: 6px 9px; border-radius: 999px; font-size: .7rem; font-weight: 700; }
.status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.status-success { color: var(--success); background: rgba(53,225,139,.1); }
.status-warning { color: var(--warning); background: rgba(255,200,87,.1); }
.status-danger { color: var(--danger); background: rgba(255,86,115,.1); }
.status-info { color: var(--cyan); background: var(--cyan-soft); }

.filter-bar { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 20px; }
.filter-tabs { display: flex; gap: 7px; padding: 5px; border: 1px solid var(--line); background: var(--surface); border-radius: 14px; overflow-x: auto; }
.filter-tab { min-height: 34px; padding: 0 13px; border: 0; border-radius: 10px; background: transparent; color: var(--muted); font-size: .78rem; font-weight: 700; white-space: nowrap; cursor: pointer; }
.filter-tab.is-active { color: #07111a; background: var(--cyan); }
.search-box { min-width: 240px; min-height: 44px; display: flex; align-items: center; gap: 10px; padding: 0 13px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); color: var(--muted); }
.search-box input { width: 100%; border: 0; outline: 0; color: var(--text); background: transparent; }

.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.form-field { display: grid; gap: 8px; }
.form-field.full { grid-column: 1 / -1; }
.form-field label { color: var(--muted); font-size: .78rem; font-weight: 650; }
.input, .select, .textarea { width: 100%; min-height: 46px; padding: 0 14px; border: 1px solid var(--line); border-radius: 13px; outline: none; background: var(--surface-2); color: var(--text); transition: .2s; }
.textarea { min-height: 110px; padding-top: 13px; resize: vertical; }
.input:focus, .select:focus, .textarea:focus { border-color: rgba(22,220,244,.55); box-shadow: 0 0 0 4px rgba(22,220,244,.08); }
.switch-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 15px 0; border-bottom: 1px solid var(--line); }
.switch-row:last-child { border-bottom: 0; }
.switch-copy strong { display: block; font-size: .88rem; }
.switch-copy small { display: block; margin-top: 4px; color: var(--muted); font-size: .75rem; }
.switch { position: relative; width: 48px; height: 27px; flex: 0 0 auto; }
.switch input { position: absolute; opacity: 0; }
.switch span { position: absolute; inset: 0; border-radius: 999px; background: var(--surface-3); border: 1px solid var(--line); cursor: pointer; transition: .2s; }
.switch span::after { content: ""; position: absolute; width: 19px; height: 19px; left: 3px; top: 3px; border-radius: 50%; background: #fff; transition: .2s; }
.switch input:checked + span { background: linear-gradient(90deg, var(--violet), var(--pink)); }
.switch input:checked + span::after { transform: translateX(21px); }

.site-footer { margin-left: var(--sidebar-width); padding: 22px 30px 30px; display: flex; justify-content: space-between; gap: 18px; color: var(--muted); border-top: 1px solid var(--line); }
.site-footer div { display: grid; gap: 4px; }
.site-footer strong { color: var(--text); font: 700 1rem Rajdhani, sans-serif; }
.site-footer span, .site-footer small { font-size: .75rem; }

.app-drawer { position: fixed; top: 0; right: 0; width: min(86vw, 360px); height: 100dvh; padding: 18px; display: flex; flex-direction: column; gap: 18px; background: var(--surface-solid); border-left: 1px solid var(--line); box-shadow: -24px 0 70px rgba(0,0,0,.36); transform: translateX(105%); transition: transform .24s ease; z-index: 70; }
.app-drawer.is-open { transform: translateX(0); }
.drawer-backdrop { position: fixed; inset: 0; background: rgba(2,0,10,.65); opacity: 0; transition: opacity .22s; z-index: 60; backdrop-filter: blur(4px); }
.drawer-backdrop.is-visible { opacity: 1; }
.drawer-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.drawer-profile { display: flex; align-items: center; gap: 11px; min-width: 0; }
.drawer-profile img { width: 48px; height: 48px; object-fit: cover; border-radius: 15px; }
.drawer-profile div { min-width: 0; }
.drawer-profile strong, .drawer-profile small { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.drawer-profile small { margin-top: 4px; color: var(--cyan); font-size: .72rem; }
.drawer-nav { overflow-y: auto; }
.drawer-card { margin-top: auto; padding: 17px; border-radius: 19px; background: linear-gradient(135deg, rgba(123,44,255,.28), rgba(22,220,244,.12)); border: 1px solid var(--line); }
.drawer-card span { color: var(--yellow); font-size: .68rem; font-weight: 800; letter-spacing: .12em; }
.drawer-card strong { display: block; margin-top: 6px; }
.drawer-card p { margin: 6px 0 0; color: var(--muted); font-size: .76rem; line-height: 1.5; }
.app-bottom-nav { display: none; }

@media (max-width: 1180px) {
    .site-header { grid-template-columns: minmax(210px,.7fr) minmax(250px,1fr) auto; padding-inline: 20px; }
    .header-avatar div { display: none; }
    .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 960px) {
    .web-sidebar { transform: translateX(-105%); transition: transform .24s ease; box-shadow: 24px 0 70px rgba(0,0,0,.32); z-index: 70; }
    .web-sidebar.is-open { transform: translateX(0); }
    .site-header { left: 0; grid-template-columns: minmax(180px, .8fr) minmax(220px, 1fr) auto; }
    .browser-menu-button { display: inline-grid; }
    .page-shell, .site-footer { margin-left: 0; }
    .grid-2 { grid-template-columns: 1fr; }
}

@media (max-width: 720px) {
    :root { --header-height: 68px; --radius-lg: 20px; }
    .site-header { padding: 0 14px; grid-template-columns: 1fr auto; gap: 10px; }
    .header-search { display: none; }
    .header-heading .eyebrow { display: none; }
    .header-heading h1 { font-size: 1.08rem; }
    .header-avatar { display: none; }
    .page-shell { padding: calc(var(--header-height) + 18px) 14px 24px; }
    .page-intro { align-items: flex-start; flex-direction: column; }
    .stats-grid, .grid-3, .form-grid { grid-template-columns: 1fr; }
    .form-field.full { grid-column: auto; }
    .data-row { grid-template-columns: minmax(150px, 1.4fr) minmax(80px, .7fr); }
    .data-row > :nth-child(3), .data-row > :nth-child(4) { display: none; }
    .panel-head, .panel-body { padding: 17px; }
    .site-footer { padding: 20px 14px 26px; flex-direction: column; }
}

body.is-pwa {
    --header-height: 66px;
    padding-bottom: 78px;
    background:
        radial-gradient(circle at 80% 4%, rgba(22,220,244,.12), transparent 19rem),
        radial-gradient(circle at 15% 15%, rgba(255,22,143,.13), transparent 22rem),
        var(--bg);
}
body.is-pwa .web-sidebar { display: none; }
body.is-pwa .site-header { left: 0; height: var(--header-height); padding: env(safe-area-inset-top, 0) 14px 0; grid-template-columns: 1fr auto; background: rgba(7,3,24,.94); }
:root[data-theme="light"] body.is-pwa .site-header { background: rgba(247,245,255,.95); }
body.is-pwa .header-left { min-width: 0; }
body.is-pwa .browser-menu-button, body.is-pwa .header-search, body.is-pwa .header-avatar { display: none; }
body.is-pwa .app-menu-button { display: inline-grid; }
body.is-pwa .header-actions .theme-toggle, body.is-pwa .header-actions .notification-button { width: 39px; height: 39px; }
body.is-pwa .header-heading h1 { font-size: 1.05rem; }
body.is-pwa .header-heading .eyebrow { display: none; }
body.is-pwa .page-shell { margin-left: 0; padding: calc(var(--header-height) + 17px) 13px 18px; }
body.is-pwa .site-footer { display: none; }
body.is-pwa .app-bottom-nav { position: fixed; left: 10px; right: 10px; bottom: max(9px, env(safe-area-inset-bottom)); height: 66px; padding: 5px 4px; display: grid; grid-template-columns: repeat(5, 1fr); border: 1px solid var(--line); border-radius: 21px; background: rgba(15,7,39,.94); box-shadow: 0 18px 50px rgba(0,0,0,.38); backdrop-filter: blur(18px); z-index: 50; }
:root[data-theme="light"] body.is-pwa .app-bottom-nav { background: rgba(255,255,255,.94); }
.bottom-link { border: 0; border-radius: 15px; background: transparent; color: var(--muted); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; font-size: .58rem; font-weight: 700; cursor: pointer; }
.bottom-link .ui-icon { width: 20px; height: 20px; }
.bottom-link.is-active { color: var(--cyan); background: var(--cyan-soft); }
body.is-pwa .page-intro h2 { font-size: 1.9rem; }
body.is-pwa .page-intro p { font-size: .84rem; }
body.is-pwa .panel, body.is-pwa .stat-card { box-shadow: 0 16px 38px rgba(0,0,0,.18); }

@media (display-mode: standalone) and (max-width: 720px) {
    body.is-pwa .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    body.is-pwa .stat-card { min-height: 128px; padding: 15px; border-radius: 18px; }
    body.is-pwa .stat-card strong { font-size: 1.45rem; }
    body.is-pwa .stat-card p { font-size: .68rem; }
    body.is-pwa .stat-icon { width: 36px; height: 36px; }
}

/* Renderizado seguro para Chrome/Samsung en Android.
   Se evitan mask-image y backdrop-filter porque pueden producir franjas de píxeles
   al combinarse con fondos transparentes y elementos fixed. */
body::before { content:none !important; display:none !important; }
.web-sidebar,
.site-header,
.panel,
.drawer-backdrop,
.app-bottom-nav,
.app-drawer {
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
}
.site-header { background:var(--surface-solid); }
.web-sidebar,.app-drawer { background:var(--surface-solid); }
.drawer-backdrop { background:rgba(2,0,10,.78); }

@media (max-width:900px) {
    body {
        background:
            radial-gradient(circle at 88% 7%, rgba(22,220,244,.08), transparent 19rem),
            radial-gradient(circle at 15% 18%, rgba(255,22,143,.09), transparent 22rem),
            var(--bg);
        background-attachment:scroll;
    }
    .site-header { background:var(--surface-solid); }
    .panel { background:var(--surface-solid); }
}

.app-toast-stack{position:fixed;top:96px;right:18px;z-index:120;width:min(380px,calc(100vw - 28px));display:grid;gap:10px;pointer-events:none}
.app-toast{position:relative;display:flex;align-items:flex-start;gap:10px;padding:13px 15px;border:1px solid var(--line);border-radius:15px;background:var(--surface-solid);box-shadow:0 18px 55px rgba(0,0,0,.28);pointer-events:auto;animation:appToastIn .22s ease;transition:opacity .65s ease,transform .65s ease}
.app-toast strong{display:block;margin-bottom:3px;font-size:.78rem}.app-toast span{display:block;color:var(--muted);font-size:.7rem;line-height:1.45}.app-toast.is-success{border-color:rgba(53,225,139,.35)}.app-toast.is-error{border-color:rgba(255,86,115,.4)}.app-toast.is-hiding{opacity:0;transform:translateX(30px)}
@keyframes appToastIn{from{opacity:0;transform:translateX(22px)}}
@media(max-width:650px){.app-toast-stack{top:78px;right:12px;width:calc(100vw - 24px)}}

/* Navegación v17: orden, salida separada e invitación de WhatsApp */
.sidebar-nav{min-height:0;overflow-y:auto;overflow-x:hidden;padding-right:2px}
.nav-logout-separator{height:1px;margin:8px 12px;background:linear-gradient(90deg,transparent,var(--line),transparent)}
.nav-link-logout{color:var(--danger)}
.nav-link-logout:hover{color:#fff;background:rgba(255,86,115,.12)}
.whatsapp-invite-card{appearance:none;width:100%;display:block;text-align:left;color:var(--text);cursor:pointer}
.sidebar-promo.whatsapp-invite-card{margin-top:auto;padding:17px;border:1px solid rgba(53,225,139,.33);background:radial-gradient(circle at 88% 10%,rgba(53,225,139,.22),transparent 7rem),linear-gradient(145deg,rgba(15,96,69,.34),rgba(17,19,54,.98) 65%);box-shadow:0 18px 44px rgba(0,0,0,.22),inset 0 0 0 1px rgba(255,255,255,.025);transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease}
.sidebar-promo.whatsapp-invite-card:hover{transform:translateY(-3px);border-color:rgba(53,225,139,.62);box-shadow:0 22px 52px rgba(0,0,0,.3),0 0 28px rgba(53,225,139,.1)}
.sidebar-promo.whatsapp-invite-card::after{background:#25d366;opacity:.18}
.whatsapp-invite-card .promo-icon{width:36px;height:36px;display:grid;place-items:center;margin-bottom:10px;border-radius:12px;color:#06150d;background:linear-gradient(135deg,#53f298,#25d366);box-shadow:0 9px 24px rgba(37,211,102,.25)}
.whatsapp-invite-card .promo-icon .ui-icon{width:20px;height:20px}
.whatsapp-invite-card .promo-kicker{color:#70f6ad}
.whatsapp-invite-card b{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;margin-top:12px;color:#70f6ad;font-size:.72rem;letter-spacing:.02em}
.whatsapp-invite-card b i{font-style:normal;font-size:1rem;transition:transform .2s ease}
.whatsapp-invite-card:hover b i{transform:translateX(3px)}
.whatsapp-invite-card.is-disabled{cursor:default;opacity:.68}
.drawer-card.whatsapp-invite-card{border-color:rgba(53,225,139,.3);background:linear-gradient(135deg,rgba(28,115,78,.32),rgba(22,220,244,.08));cursor:pointer;color:var(--text);text-align:left}
.drawer-card.whatsapp-invite-card b{display:block;margin-top:10px;color:#70f6ad;font-size:.72rem}
.whatsapp-invite-modal{position:fixed;inset:0;z-index:160;display:grid;place-items:center;padding:18px}
.whatsapp-invite-backdrop{position:absolute;inset:0;background:rgba(2,0,10,.82)}
.whatsapp-invite-dialog{position:relative;width:min(620px,100%);overflow:hidden;border:1px solid rgba(53,225,139,.32);border-radius:25px;background:var(--surface-solid);box-shadow:0 32px 100px rgba(0,0,0,.55)}
.whatsapp-invite-dialog>header{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:14px;padding:22px;border-bottom:1px solid var(--line);background:radial-gradient(circle at 0 0,rgba(53,225,139,.14),transparent 17rem)}
.whatsapp-invite-dialog-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:16px;color:#06150d;background:linear-gradient(135deg,#70f6ad,#25d366)}
.whatsapp-invite-dialog header span{color:#70f6ad;font-size:.66rem;font-weight:900;letter-spacing:.16em}
.whatsapp-invite-dialog h2{margin:4px 0 3px;font:800 1.5rem Rajdhani,sans-serif}
.whatsapp-invite-dialog header p{margin:0;color:var(--muted);font-size:.74rem;line-height:1.5}
.whatsapp-invite-dialog form{padding:22px}
.whatsapp-invite-dialog .form-field small{display:block;margin-top:7px;color:var(--muted);font-size:.68rem;line-height:1.45}
.whatsapp-invite-preview{display:flex;align-items:center;gap:13px;margin-top:18px;padding:15px;border:1px solid rgba(53,225,139,.22);border-radius:17px;background:rgba(53,225,139,.055)}
.whatsapp-invite-preview>span{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border-radius:13px;color:#70f6ad;background:rgba(53,225,139,.12)}
.whatsapp-invite-preview small{color:#70f6ad;font-size:.59rem;font-weight:900;letter-spacing:.13em}
.whatsapp-invite-preview strong{display:block;margin-top:3px;font-size:.86rem}
.whatsapp-invite-preview p{margin:4px 0 0;color:var(--muted);font-size:.68rem;line-height:1.45}
.modal-actions-row{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
@media(max-height:780px) and (min-width:961px){.web-sidebar{gap:11px;padding-block:14px}.sidebar-brand{padding-bottom:6px}.sidebar-brand img{width:44px;height:44px}.sidebar-context{padding:9px 11px}.nav-link{min-height:40px}.sidebar-promo.whatsapp-invite-card{padding:13px}.whatsapp-invite-card .promo-icon{display:none}.sidebar-promo.whatsapp-invite-card p{display:none}}
@media(max-width:600px){.whatsapp-invite-dialog>header{grid-template-columns:auto 1fr}.whatsapp-invite-dialog>header>.icon-button{position:absolute;top:14px;right:14px}.whatsapp-invite-dialog form{padding:17px}.modal-actions-row{display:grid;grid-template-columns:1fr 1fr}}
.whatsapp-invite-card.is-disabled{pointer-events:none}
.whatsapp-invite-feedback{margin:15px 0 0;padding:10px 12px;border-radius:12px;font-size:.7rem;line-height:1.45}.whatsapp-invite-feedback.is-success{color:var(--success);background:rgba(53,225,139,.09);border:1px solid rgba(53,225,139,.24)}.whatsapp-invite-feedback.is-error{color:var(--danger);background:rgba(255,86,115,.09);border:1px solid rgba(255,86,115,.25)}

/* Centro de notificaciones */
.notification-widget{position:relative;display:inline-flex}.notification-count{position:absolute;right:-5px;top:-6px;min-width:20px;height:20px;padding:0 5px;display:grid;place-items:center;border:2px solid var(--bg);border-radius:999px;color:#fff;background:linear-gradient(135deg,var(--pink),#ff5575);font:800 .62rem Inter,sans-serif;box-shadow:0 5px 16px rgba(255,22,143,.35)}.notification-button.has-notifications{border-color:rgba(255,22,143,.38)}.notification-button.is-ringing{animation:notificationRing .75s ease}.notification-modal{position:fixed;inset:0;z-index:1800;display:grid;place-items:start center;padding:74px 20px 20px}.notification-modal[hidden]{display:none}.notification-modal-backdrop{position:absolute;inset:0;background:rgba(3,1,14,.74);backdrop-filter:blur(10px)}.notification-dialog{position:relative;width:min(680px,100%);max-height:calc(100vh - 100px);display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;border:1px solid var(--line);border-radius:25px;background:var(--bg);box-shadow:0 35px 110px rgba(0,0,0,.56);overflow:hidden}.notification-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:20px 22px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,var(--surface),rgba(22,220,244,.035))}.notification-dialog-head>div:first-child>span{color:var(--cyan);font:800 .66rem Rajdhani,sans-serif;letter-spacing:.15em}.notification-dialog-head h2{margin:4px 0 0;font:800 1.55rem Rajdhani,sans-serif}.notification-dialog-head p{margin:5px 0 0;color:var(--muted);font-size:.76rem}.notification-dialog-actions{display:flex;align-items:center;gap:9px}.notification-mark-all{min-height:38px;padding:0 12px;border:1px solid rgba(53,225,139,.25);border-radius:11px;color:var(--success);background:rgba(53,225,139,.08);font-size:.7rem;font-weight:800;cursor:pointer}.notification-mark-all:disabled{opacity:.4;cursor:not-allowed}.notification-dialog-body{min-height:240px;overflow:auto;padding:10px 16px 16px}.notification-modal-list{display:grid}.notification-modal-item{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;padding:14px 4px;border-bottom:1px solid var(--line)}.notification-modal-item:last-child{border-bottom:0}.notification-modal-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;color:#06131b;background:linear-gradient(135deg,var(--cyan),#b1fbff);font:900 1rem Rajdhani,sans-serif;box-shadow:0 9px 22px rgba(22,220,244,.13)}.notification-modal-copy>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px}.notification-modal-copy strong{font-size:.84rem}.notification-modal-copy time{color:var(--muted);font-size:.65rem;white-space:nowrap}.notification-modal-copy p{margin:5px 0 9px;color:var(--muted);font-size:.75rem;line-height:1.55}.notification-modal-item-actions{display:flex;gap:12px}.notification-modal-item-actions a,.notification-modal-item-actions button{padding:0;border:0;background:transparent;color:var(--cyan);font-size:.69rem;font-weight:800;cursor:pointer}.notification-modal-item-actions button{color:var(--success)}.notification-modal-empty,.notification-modal-loading{min-height:230px;display:grid;place-items:center;align-content:center;text-align:center;color:var(--muted)}.notification-modal-empty>span{width:56px;height:56px;display:grid;place-items:center;border-radius:18px;color:var(--success);background:rgba(53,225,139,.1);font-size:1.4rem}.notification-modal-empty strong{margin-top:12px;color:var(--text)}.notification-modal-empty p{margin:5px 0 0}.notification-modal-loading{grid-template-columns:repeat(3,9px);gap:7px}.notification-modal-loading span{width:9px;height:9px;border-radius:50%;background:var(--cyan);animation:notificationLoad 1s infinite alternate}.notification-modal-loading span:nth-child(2){animation-delay:.15s}.notification-modal-loading span:nth-child(3){animation-delay:.3s}.notification-modal-loading strong{grid-column:1/-1;margin-top:10px}.notification-modal-error{padding:28px;text-align:center;color:var(--danger)}.notification-dialog>footer{padding:15px 20px;border-top:1px solid var(--line);background:var(--surface)}.notification-dialog>footer a{display:flex;align-items:center;justify-content:center;gap:9px;color:var(--cyan);font-size:.78rem;font-weight:800}.store-notification-button{position:relative}.store-notification-button .notification-count{right:-5px;top:-7px}@keyframes notificationRing{0%,100%{transform:rotate(0)}20%{transform:rotate(-12deg)}40%{transform:rotate(10deg)}60%{transform:rotate(-7deg)}80%{transform:rotate(5deg)}}@keyframes notificationLoad{to{transform:translateY(-6px);opacity:.4}}@media(max-width:700px){.notification-modal{padding:10px;place-items:center}.notification-dialog{max-height:calc(100vh - 20px)}.notification-dialog-head{display:grid}.notification-dialog-actions{justify-content:space-between}.notification-mark-all{flex:1}.notification-modal-item{grid-template-columns:38px minmax(0,1fr)}.notification-modal-icon{width:38px;height:38px}.notification-modal-copy>div:first-child{align-items:flex-start;display:grid;gap:3px}}

/* FazerCards notifications */
.fazercards-notification-button{border-color:rgba(22,220,244,.28);color:var(--cyan);background:linear-gradient(145deg,rgba(22,220,244,.08),rgba(245,158,11,.05))}.fazercards-notification-button.has-notifications{border-color:rgba(245,158,11,.6);box-shadow:0 0 0 1px rgba(245,158,11,.12),0 10px 30px rgba(245,158,11,.08)}.fazercards-notification-count{background:linear-gradient(135deg,#f59e0b,#ff6b35);box-shadow:0 5px 16px rgba(245,158,11,.35)}.fazercards-notification-dialog .notification-dialog-head{background:linear-gradient(135deg,rgba(22,220,244,.08),rgba(245,158,11,.06))}.fazercards-notification-dialog .notification-modal-icon{background:linear-gradient(135deg,#f59e0b,var(--cyan))}.fazercards-notification-dialog .fz-severity-error .notification-modal-icon{color:#fff;background:linear-gradient(135deg,#ff405d,#ff7b54)}.fazercards-notification-dialog .fz-severity-warning .notification-modal-icon{background:linear-gradient(135deg,#f59e0b,#ffd166)}.fazercards-notification-dialog .fz-severity-success .notification-modal-icon{background:linear-gradient(135deg,var(--success),var(--cyan))}

/* Pago · copiar todos los datos */
.payment-copy-all-button{
  width:100%;min-height:42px;display:flex;align-items:center;justify-content:center;gap:8px;
  margin-top:9px;padding:10px 16px;border:1px solid rgba(22,220,244,.42);border-radius:13px;
  background:linear-gradient(135deg,rgba(22,220,244,.16),rgba(130,58,255,.18));color:var(--cyan);
  font:850 .7rem Inter,sans-serif;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.payment-copy-all-button:hover{transform:translateY(-1px);border-color:var(--cyan);box-shadow:0 9px 22px rgba(22,220,244,.12)}
.payment-copy-all-button:active{transform:none}.payment-copy-all-button.is-copied{border-color:rgba(52,211,153,.55);color:#34d399;background:rgba(52,211,153,.1)}
.payment-copy-all-button:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}

/* 27.1.0 · loaders de notificaciones centrados */
.notification-modal-loading{width:100%;box-sizing:border-box;justify-content:center}
.notification-modal-loading strong{justify-self:center;white-space:nowrap}


/* 27.1.52 · dashboard cliente unificado */
body.role-cliente{--client-bottom-nav-height:80px}
body.client-dashboard-shell .site-header{grid-template-columns:minmax(220px,.8fr) auto;gap:16px}
body.client-dashboard-shell .header-left{min-width:0}
body.client-dashboard-shell .header-heading .eyebrow{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:999px;background:linear-gradient(135deg,rgba(22,220,244,.14),rgba(255,22,143,.14));color:#fff;font-size:.72rem;font-weight:900;letter-spacing:.03em;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);animation:gtGreetingPulse 4.2s ease-in-out infinite}
body.client-dashboard-shell .header-heading h1{margin-top:7px;font-size:1.42rem}
.header-actions.is-client-dashboard{gap:10px}
.header-wallet-pill{min-height:42px;display:inline-flex;align-items:center;gap:10px;padding:6px 12px;border:1px solid rgba(22,220,244,.22);border-radius:16px;background:linear-gradient(135deg,rgba(22,220,244,.12),rgba(123,44,255,.16));box-shadow:0 10px 24px rgba(0,0,0,.14);transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}
.header-wallet-pill:hover{transform:translateY(-2px);border-color:rgba(22,220,244,.44);box-shadow:0 14px 28px rgba(0,0,0,.18)}
.header-wallet-icon{width:31px;height:31px;display:grid;place-items:center;flex:0 0 auto;border-radius:11px;color:#06131b;background:linear-gradient(135deg,var(--yellow),#ffe88d)}
.header-wallet-icon .ui-icon{width:17px;height:17px}
.header-wallet-copy{display:grid;line-height:1.05}
.header-wallet-copy strong{font:850 .84rem Rajdhani,sans-serif;color:#fff;white-space:nowrap}
.header-wallet-copy small{margin-top:2px;color:var(--muted);font-size:.56rem;white-space:nowrap}
.profile-shortcut{color:var(--text)}
@keyframes gtGreetingPulse{0%,100%{transform:translateY(0);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06),0 0 0 rgba(22,220,244,0)}50%{transform:translateY(-1px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06),0 0 24px rgba(22,220,244,.12)}}
.web-sidebar{box-shadow:20px 0 58px rgba(0,0,0,.2)}
.sidebar-context{border-radius:18px;background:linear-gradient(135deg,rgba(255,255,255,.04),rgba(255,255,255,.015))}
.sidebar-nav,.drawer-nav{gap:7px}
.nav-link{min-height:48px;border-radius:16px;padding-inline:15px}
.nav-link.is-active{background:linear-gradient(90deg,rgba(123,44,255,.34),rgba(255,22,143,.14));box-shadow:inset 0 0 0 1px rgba(157,101,255,.28),0 14px 28px rgba(0,0,0,.08)}
.whatsapp-invite-card.is-compact-client{display:flex;align-items:center;justify-content:center;gap:12px;padding:14px 16px;text-align:center}
.whatsapp-invite-card.is-compact-client::after{display:none}
.whatsapp-invite-card.is-compact-client .promo-icon{margin:0}
.whatsapp-invite-card.is-compact-client .promo-icon+.promo-kicker{display:none}
.whatsapp-invite-card.is-compact-client strong{margin:0;font:800 .95rem Rajdhani,sans-serif;letter-spacing:.02em}
.whatsapp-invite-card.is-compact-client p,.whatsapp-invite-card.is-compact-client b,.whatsapp-invite-card.is-compact-client span:not(.promo-icon){display:none}
.drawer-card.whatsapp-invite-card.is-compact-client{margin-top:auto;min-height:unset;border-radius:18px}
.drawer-card.whatsapp-invite-card.is-compact-client .promo-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;color:#06150d;background:linear-gradient(135deg,#53f298,#25d366);box-shadow:0 9px 24px rgba(37,211,102,.25)}
.drawer-card.whatsapp-invite-card.is-compact-client .promo-icon .ui-icon{width:20px;height:20px}
.drawer-card.whatsapp-invite-card.is-compact-client strong{display:block}
@media (max-width:960px){body.client-dashboard-shell .site-header{grid-template-columns:minmax(0,1fr) auto}}
@media (max-width:720px){
  body.role-cliente{padding-bottom:var(--client-bottom-nav-height)}
  body.role-cliente .page-shell{padding-bottom:calc(var(--client-bottom-nav-height) + 20px)}
  body.role-cliente .site-footer{padding-bottom:18px}
  body.client-dashboard-shell .site-header{padding-inline:14px;grid-template-columns:minmax(0,1fr) auto;align-items:center}
  body.client-dashboard-shell .header-heading .eyebrow{display:inline-flex;font-size:.65rem;padding:4px 9px}
  body.client-dashboard-shell .header-heading h1{margin-top:5px;font-size:1.08rem}
  body.client-dashboard-shell .header-actions{gap:7px}
  body.client-dashboard-shell .header-actions .icon-button, body.client-dashboard-shell .header-actions .notification-button{width:39px;height:39px;border-radius:12px}
  .header-wallet-pill{max-width:136px;min-height:39px;padding:5px 9px;gap:8px;border-radius:14px}
  .header-wallet-icon{width:27px;height:27px;border-radius:10px}
  .header-wallet-copy strong{font-size:.73rem}
  .header-wallet-copy small{font-size:.5rem}
  body.role-cliente .app-bottom-nav{position:fixed;left:10px;right:10px;bottom:max(10px,env(safe-area-inset-bottom));height:66px;padding:5px;display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:21px;background:rgba(15,7,39,.96);box-shadow:0 18px 50px rgba(0,0,0,.38);z-index:50}
  :root[data-theme="light"] body.role-cliente .app-bottom-nav{background:rgba(255,255,255,.97)}
  body.role-cliente .bottom-link{border-radius:15px}
  body.role-cliente .bottom-link.is-active{color:var(--cyan);background:var(--cyan-soft)}
  body.role-cliente .bottom-link span{font-size:.58rem}
}
body.is-pwa.role-cliente .web-sidebar{display:none}
body.is-pwa.role-cliente .site-header{left:0}
body.is-pwa.role-cliente .page-shell{margin-left:0}
body.is-pwa.role-cliente .site-footer{display:flex}
body.is-pwa.role-cliente .app-bottom-nav{grid-template-columns:repeat(3,1fr)}

/* 27.1.52-b · PWA cliente = navegador */
body.is-pwa.role-cliente{--header-height:68px}
body.is-pwa.role-cliente .web-sidebar{display:flex}
body.is-pwa.role-cliente .site-header{height:var(--header-height);padding:0 14px;background:var(--surface-solid)}
body.is-pwa.role-cliente .browser-menu-button{display:inline-grid}
body.is-pwa.role-cliente .app-menu-button{display:none}
body.is-pwa.role-cliente .header-search{display:none}
body.is-pwa.role-cliente .header-avatar{display:none}
body.is-pwa.role-cliente .page-shell{padding:calc(var(--header-height) + 18px) 14px calc(var(--client-bottom-nav-height) + 20px)}
body.is-pwa.role-cliente .site-footer{display:flex}


/* 27.1.53 · client shell único y compacto */
body.client-shell .site-header{grid-template-columns:minmax(0,1fr) auto;gap:8px}
body.client-shell .header-left{gap:8px;min-width:0}
body.client-shell .header-heading{display:flex;align-items:center;min-width:0}
body.client-shell .header-heading .eyebrow{display:inline-flex;align-items:center;max-width:100%;padding:5px 10px;border-radius:999px;background:linear-gradient(135deg,rgba(22,220,244,.13),rgba(255,22,143,.13));color:#fff;font-size:.72rem;font-weight:900;letter-spacing:.025em;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);animation:gtGreetingPulse 4.2s ease-in-out infinite}
body.client-shell .header-heading h1{display:none!important}
body.client-shell .header-actions.is-client{gap:7px}
body.client-shell .header-wallet-pill{min-height:38px;padding:4px 8px;gap:7px;border-radius:13px}
body.client-shell .header-wallet-icon{width:27px;height:27px;border-radius:9px}
body.client-shell .header-wallet-icon .ui-icon{width:15px;height:15px}
body.client-shell .header-wallet-copy strong{font-size:.73rem}
body.client-shell .header-wallet-copy small{font-size:.48rem}
body.client-shell .profile-shortcut{display:inline-grid}
body.client-shell .site-footer{display:flex}
@media(max-width:720px){
  body.client-shell .site-header{padding:0 8px;gap:5px}
  body.client-shell .header-left{gap:6px}
  body.client-shell .browser-menu-button{width:37px;height:37px;border-radius:11px}
  body.client-shell .header-heading .eyebrow{padding:4px 7px;font-size:.62rem;max-width:104px}
  body.client-shell .header-actions.is-client{gap:5px}
  body.client-shell .header-actions.is-client .icon-button,
  body.client-shell .header-actions.is-client .notification-button{width:35px;height:35px;border-radius:11px}
  body.client-shell .header-wallet-pill{width:91px;min-height:35px;padding:4px 6px;gap:5px;border-radius:12px}
  body.client-shell .header-wallet-icon{width:24px;height:24px;border-radius:8px}
  body.client-shell .header-wallet-copy{min-width:0}
  body.client-shell .header-wallet-copy strong{font-size:.65rem;overflow:hidden;text-overflow:ellipsis}
  body.client-shell .header-wallet-copy small{font-size:.43rem;overflow:hidden;text-overflow:ellipsis}
}
body.is-pwa.role-cliente .header-heading .eyebrow{display:inline-flex}
body.is-pwa.role-cliente .header-actions .theme-toggle,
body.is-pwa.role-cliente .header-actions .notification-button{width:35px;height:35px}


/* 27.1.57 · llaves globales del cliente */
.header-key-pill{min-height:38px;display:inline-flex;align-items:center;gap:7px;padding:4px 9px;border:1px solid rgba(255,210,28,.25);border-radius:13px;background:linear-gradient(135deg,rgba(255,210,28,.10),rgba(123,44,255,.14));box-shadow:0 10px 24px rgba(0,0,0,.12);transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}
.header-key-pill:hover{transform:translateY(-2px);border-color:rgba(255,210,28,.48);box-shadow:0 14px 28px rgba(0,0,0,.17)}
.header-key-icon{width:27px;height:27px;display:grid;place-items:center;flex:0 0 auto;border-radius:9px;color:#241700;background:linear-gradient(135deg,var(--yellow),#ffe98a)}
.header-key-icon .ui-icon{width:15px;height:15px}
.header-key-copy{display:grid;line-height:1.02;min-width:0}
.header-key-copy strong{font:900 .78rem Rajdhani,sans-serif;color:var(--text);white-space:nowrap}
.header-key-copy small{margin-top:2px;color:var(--muted);font-size:.45rem;white-space:nowrap}
@media(max-width:720px){
  body.client-shell .site-header{padding-inline:6px;gap:3px}
  body.client-shell .header-left{gap:4px}
  body.client-shell .browser-menu-button{width:35px;height:35px}
  body.client-shell .header-heading .eyebrow{max-width:78px;padding:4px 6px;font-size:.59rem}
  body.client-shell .header-actions.is-client{gap:3px}
  body.client-shell .header-actions.is-client .icon-button,
  body.client-shell .header-actions.is-client .notification-button{width:33px;height:33px;border-radius:10px}
  body.client-shell .header-wallet-pill{width:79px;min-height:33px;padding:3px 5px;gap:4px;border-radius:11px}
  body.client-shell .header-wallet-icon{width:23px;height:23px;border-radius:7px}
  body.client-shell .header-wallet-icon .ui-icon{width:14px;height:14px}
  body.client-shell .header-wallet-copy strong{font-size:.61rem}
  body.client-shell .header-wallet-copy small{font-size:.39rem}
  body.client-shell .header-key-pill{width:50px;min-height:33px;padding:3px 5px;gap:4px;border-radius:11px}
  body.client-shell .header-key-icon{width:23px;height:23px;border-radius:7px}
  body.client-shell .header-key-icon .ui-icon{width:14px;height:14px}
  body.client-shell .header-key-copy strong{font-size:.65rem}
  body.client-shell .header-key-copy small{font-size:.36rem}
}
@media(max-width:370px){
  body.client-shell .header-heading .eyebrow{max-width:63px;font-size:.54rem}
  body.client-shell .header-wallet-pill{width:72px}
  body.client-shell .header-key-pill{width:46px}
  body.client-shell .header-actions.is-client .icon-button,
  body.client-shell .header-actions.is-client .notification-button{width:31px;height:31px}
}


/* 27.1.58 · header cliente respirado + indicadores globales */
body.client-shell .site-header{grid-template-columns:minmax(150px,1fr) auto auto;column-gap:10px}
body.client-shell .header-left{min-width:0}
body.client-shell .header-status-strip{display:flex;align-items:center;gap:7px;min-width:0}
body.client-shell .header-actions.is-client{gap:7px}
body.client-shell .header-wallet-pill,
body.client-shell .header-key-pill{position:relative;overflow:hidden;isolation:isolate;min-height:43px;border-radius:15px;box-shadow:0 12px 28px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.08)}
body.client-shell .header-wallet-pill{min-width:132px;padding:5px 11px 5px 6px;gap:8px;border-color:rgba(22,220,244,.32);background:linear-gradient(135deg,rgba(10,92,121,.42),rgba(42,18,99,.72))}
body.client-shell .header-key-pill{min-width:94px;padding:5px 10px 5px 6px;gap:8px;border-color:rgba(255,210,28,.34);background:linear-gradient(135deg,rgba(111,73,5,.35),rgba(53,24,93,.72))}
body.client-shell .header-wallet-pill::after,
body.client-shell .header-key-pill::after{content:"";position:absolute;z-index:-1;width:62px;height:62px;right:-28px;top:-34px;border-radius:50%;opacity:.18;filter:blur(1px)}
body.client-shell .header-wallet-pill::after{background:var(--cyan)}
body.client-shell .header-key-pill::after{background:var(--yellow)}
body.client-shell .header-wallet-icon,
body.client-shell .header-key-icon{width:31px;height:31px;border-radius:10px;box-shadow:0 6px 18px rgba(0,0,0,.18)}
body.client-shell .header-wallet-copy,
body.client-shell .header-key-copy{display:grid;align-content:center;min-width:0;line-height:1}
body.client-shell .header-pill-label{display:none;margin:0 0 2px;color:rgba(255,255,255,.62);font-size:.42rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
body.client-shell .header-wallet-copy strong,
body.client-shell .header-key-copy strong{display:block;max-width:100%;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden}
body.client-shell .header-wallet-copy strong{font-size:.78rem}
body.client-shell .header-wallet-copy small:not(.header-pill-label){font-size:.45rem;white-space:nowrap;overflow:hidden}
body.client-shell .header-key-copy strong{font-size:.88rem}
body.client-shell .header-key-copy small:not(.header-pill-label){font-size:.42rem;white-space:nowrap}
body.client-shell .header-wallet-pill.is-long-value .header-wallet-copy strong{font-size:.69rem}
body.client-shell .header-wallet-pill.is-long-value .header-wallet-copy small:not(.header-pill-label){font-size:.4rem}
body.client-shell .header-wallet-pill.is-very-long-value .header-wallet-copy strong{font-size:.61rem;letter-spacing:-.02em}
body.client-shell .header-wallet-pill.is-very-long-value .header-wallet-copy small:not(.header-pill-label){font-size:.35rem;letter-spacing:-.02em}
body.client-shell .header-key-pill.is-long-value .header-key-copy strong{font-size:.77rem}
body.client-shell .header-key-pill.is-very-long-value .header-key-copy strong{font-size:.68rem;letter-spacing:-.02em}

@media(max-width:760px){
  body.client-shell .site-header{grid-template-columns:minmax(0,1fr) auto auto;column-gap:6px}
  body.client-shell .header-status-strip{gap:5px}
  body.client-shell .header-wallet-pill{min-width:108px}
  body.client-shell .header-key-pill{min-width:76px}
}

/* En teléfonos el header se divide en dos líneas: acciones arriba y saldos abajo. */
@media(max-width:520px){
  body.client-shell{--header-height:108px}
  body.client-shell .site-header{height:var(--header-height);padding:7px 10px 8px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:39px 46px;gap:6px 8px;align-items:center}
  body.client-shell .header-left{grid-column:1;grid-row:1;gap:7px}
  body.client-shell .browser-menu-button{width:36px;height:36px;border-radius:11px}
  body.client-shell .header-heading .eyebrow{max-width:116px;padding:5px 9px;font-size:.61rem}
  body.client-shell .header-actions.is-client{grid-column:2;grid-row:1;display:flex;gap:5px}
  body.client-shell .header-actions.is-client .icon-button,
  body.client-shell .header-actions.is-client .notification-button{width:35px;height:35px;border-radius:11px}
  body.client-shell .header-status-strip{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.95fr);gap:7px;width:100%}
  body.client-shell .header-wallet-pill,
  body.client-shell .header-key-pill{width:100%;min-width:0;min-height:44px;padding:5px 10px 5px 6px;border-radius:14px}
  body.client-shell .header-wallet-icon,
  body.client-shell .header-key-icon{width:31px;height:31px}
  body.client-shell .header-pill-label{display:block}
  body.client-shell .header-wallet-copy strong{font-size:.79rem}
  body.client-shell .header-wallet-copy small:not(.header-pill-label){font-size:.44rem}
  body.client-shell .header-key-copy strong{font-size:.9rem}
  body.client-shell .header-key-copy small:not(.header-pill-label){font-size:.42rem}
  body.client-shell .header-wallet-pill.is-long-value .header-wallet-copy strong{font-size:.7rem}
  body.client-shell .header-wallet-pill.is-very-long-value .header-wallet-copy strong{font-size:.61rem}
  body.client-shell .header-key-pill.is-long-value .header-key-copy strong{font-size:.8rem}
  body.client-shell .header-key-pill.is-very-long-value .header-key-copy strong{font-size:.69rem}
  body.client-shell .page-shell{padding-top:calc(var(--header-height) + 18px)}
  body.is-pwa.role-cliente .page-shell{padding-top:calc(var(--header-height) + 18px)}
}

/* 27.1.61 · cierre de sesión seguro */
.secure-logout-layer{position:fixed;inset:0;z-index:2600;display:grid;place-items:center;padding:20px;background:rgba(3,1,14,.78);opacity:0;visibility:hidden;transition:opacity .24s ease,visibility .24s ease}
.secure-logout-layer.is-visible{opacity:1;visibility:visible}
.secure-logout-card{width:min(430px,100%);padding:28px;border:1px solid rgba(22,220,244,.22);border-radius:28px;background:linear-gradient(145deg,#140938,#090421);box-shadow:0 34px 100px rgba(0,0,0,.55);text-align:center}
.secure-logout-visual{width:76px;height:76px;display:grid;place-items:center;margin:0 auto 16px;border-radius:24px;background:linear-gradient(135deg,rgba(22,220,244,.18),rgba(123,44,255,.22));box-shadow:0 0 35px rgba(22,220,244,.12)}
.secure-logout-visual svg{width:50px;height:50px;fill:none;stroke:var(--cyan);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;overflow:visible}.logout-shield{stroke-dasharray:180;animation:logoutShield 1.8s ease-in-out infinite}.logout-check{stroke:var(--success);stroke-dasharray:55;stroke-dashoffset:55;animation:logoutCheck 1.8s .35s ease-in-out infinite}
.secure-logout-card>span{color:var(--cyan);font-size:.65rem;font-weight:900;letter-spacing:.18em}.secure-logout-card h2{margin:7px 0 5px;font:850 1.6rem Rajdhani,sans-serif}.secure-logout-card p{margin:0;color:var(--muted);font-size:.78rem;line-height:1.55}.secure-logout-progress{height:8px;margin:22px 0 16px;overflow:hidden;border-radius:999px;background:var(--surface-3);box-shadow:inset 0 0 0 1px var(--line)}.secure-logout-progress i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--cyan),var(--pink));box-shadow:0 0 20px rgba(22,220,244,.32);transition:width .35s ease}.secure-logout-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.secure-logout-steps b{padding:8px 6px;border:1px solid var(--line);border-radius:10px;color:var(--muted);background:rgba(255,255,255,.025);font-size:.55rem;font-weight:750;transition:.22s}.secure-logout-steps b.is-active{color:var(--cyan);border-color:rgba(22,220,244,.34);background:rgba(22,220,244,.08)}.secure-logout-steps b.is-done{color:var(--success);border-color:rgba(53,225,139,.25);background:rgba(53,225,139,.07)}
@keyframes logoutShield{0%,100%{stroke-dashoffset:0;filter:drop-shadow(0 0 2px rgba(22,220,244,.15))}50%{stroke-dashoffset:24;filter:drop-shadow(0 0 8px rgba(22,220,244,.45))}}@keyframes logoutCheck{0%,25%{stroke-dashoffset:55}55%,100%{stroke-dashoffset:0}}
@media(max-width:520px){.secure-logout-card{padding:23px 17px;border-radius:23px}.secure-logout-visual{width:65px;height:65px;border-radius:20px}.secure-logout-card h2{font-size:1.38rem}.secure-logout-steps b{font-size:.49rem;padding-inline:3px}}

/* 27.1.73 · navbar cliente en una sola línea */
@media(max-width:520px){
  body.client-shell{--header-height:58px}
  body.client-shell .site-header{
    height:var(--header-height);
    padding:5px 7px;
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    grid-template-rows:1fr;
    gap:4px;
    align-items:center;
  }
  body.client-shell .header-left{grid-column:1;grid-row:1;gap:3px;min-width:0}
  body.client-shell .browser-menu-button{width:31px;height:31px;border-radius:10px}
  body.client-shell .browser-menu-button .ui-icon{width:17px;height:17px}
  body.client-shell .header-heading .eyebrow{
    max-width:68px;
    padding:4px 6px;
    font-size:.54rem;
    line-height:1;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  body.client-shell .header-status-strip{
    grid-column:2;
    grid-row:1;
    width:100%;
    min-width:0;
    display:grid;
    grid-template-columns:minmax(66px,1.35fr) minmax(43px,.82fr);
    gap:3px;
    align-items:center;
  }
  body.client-shell .header-wallet-pill,
  body.client-shell .header-key-pill{
    width:100%;
    min-width:0;
    min-height:33px;
    height:33px;
    padding:3px 5px 3px 4px;
    gap:4px;
    border-radius:11px;
    box-shadow:0 7px 18px rgba(0,0,0,.14),inset 0 1px 0 rgba(255,255,255,.07);
  }
  body.client-shell .header-wallet-pill::after,
  body.client-shell .header-key-pill::after{width:42px;height:42px;right:-22px;top:-24px}
  body.client-shell .header-wallet-icon,
  body.client-shell .header-key-icon{width:22px;height:22px;border-radius:7px;box-shadow:none}
  body.client-shell .header-wallet-icon .ui-icon,
  body.client-shell .header-key-icon .ui-icon{width:13px;height:13px}
  body.client-shell .header-wallet-copy,
  body.client-shell .header-key-copy{min-width:0;overflow:hidden}
  body.client-shell .header-pill-label{display:none!important}
  body.client-shell .header-wallet-copy strong{font-size:.60rem;line-height:1;overflow:hidden;text-overflow:ellipsis}
  body.client-shell .header-wallet-copy small:not(.header-pill-label){margin-top:2px;font-size:.34rem;line-height:1;overflow:hidden;text-overflow:ellipsis}
  body.client-shell .header-key-copy strong{font-size:.68rem;line-height:1;overflow:hidden;text-overflow:ellipsis}
  body.client-shell .header-key-copy small:not(.header-pill-label){display:none}
  body.client-shell .header-wallet-pill.is-long-value .header-wallet-copy strong{font-size:.53rem}
  body.client-shell .header-wallet-pill.is-long-value .header-wallet-copy small:not(.header-pill-label){font-size:.31rem}
  body.client-shell .header-wallet-pill.is-very-long-value .header-wallet-copy strong{font-size:.46rem;letter-spacing:-.025em}
  body.client-shell .header-wallet-pill.is-very-long-value .header-wallet-copy small:not(.header-pill-label){font-size:.28rem;letter-spacing:-.02em}
  body.client-shell .header-key-pill.is-long-value .header-key-copy strong{font-size:.59rem}
  body.client-shell .header-key-pill.is-very-long-value .header-key-copy strong{font-size:.50rem;letter-spacing:-.02em}
  body.client-shell .header-actions.is-client{grid-column:3;grid-row:1;gap:3px;white-space:nowrap}
  body.client-shell .header-actions.is-client .icon-button,
  body.client-shell .header-actions.is-client .notification-button{width:31px;height:31px;border-radius:10px}
  body.client-shell .header-actions.is-client .ui-icon{width:17px;height:17px}
  body.client-shell .page-shell,
  body.is-pwa.role-cliente .page-shell{padding-top:calc(var(--header-height) + 13px)}
}
@media(max-width:360px){
  body.client-shell{--header-height:55px}
  body.client-shell .site-header{padding-inline:5px;gap:2px}
  body.client-shell .header-left{gap:2px}
  body.client-shell .browser-menu-button{width:29px;height:29px}
  body.client-shell .header-heading .eyebrow{max-width:52px;padding-inline:4px;font-size:.49rem}
  body.client-shell .header-status-strip{grid-template-columns:minmax(62px,1.4fr) minmax(39px,.78fr);gap:2px}
  body.client-shell .header-wallet-pill,
  body.client-shell .header-key-pill{height:31px;min-height:31px;padding-inline:3px;gap:3px}
  body.client-shell .header-wallet-icon,
  body.client-shell .header-key-icon{width:20px;height:20px}
  body.client-shell .header-actions.is-client{gap:2px}
  body.client-shell .header-actions.is-client .icon-button,
  body.client-shell .header-actions.is-client .notification-button{width:29px;height:29px}
}
@media(max-width:520px){
  body.is-pwa.role-cliente.client-shell{--header-height:58px}
  body.is-pwa.role-cliente.client-shell .site-header{height:var(--header-height);padding:5px 7px;grid-template-columns:auto minmax(0,1fr) auto;gap:4px}
}
@media(max-width:360px){
  body.is-pwa.role-cliente.client-shell{--header-height:55px}
  body.is-pwa.role-cliente.client-shell .site-header{padding-inline:5px;gap:2px}
}

/* 27.1.82 · indicadores de cartera/llaves con ancho intrínseco en todas las pantallas cliente */
@media(max-width:520px){
  body.client-shell .header-status-strip{
    width:auto;
    min-width:0;
    justify-self:start;
    display:flex;
    align-items:center;
    gap:3px;
  }
  body.client-shell .header-wallet-pill,
  body.client-shell .header-key-pill{
    width:max-content;
    max-width:none;
    flex:0 0 auto;
  }
  body.client-shell .header-wallet-pill{min-width:80px;padding-right:6px}
  body.client-shell .header-key-pill{min-width:52px;padding-right:6px}
  body.client-shell .header-wallet-pill.is-long-value{min-width:92px}
  body.client-shell .header-wallet-pill.is-very-long-value{min-width:104px}
  body.client-shell .header-key-pill.is-long-value{min-width:61px}
  body.client-shell .header-key-pill.is-very-long-value{min-width:72px}
}
@media(max-width:360px){
  body.client-shell .header-wallet-pill{min-width:71px;padding-right:4px}
  body.client-shell .header-key-pill{min-width:45px;padding-right:4px}
  body.client-shell .header-wallet-pill.is-long-value{min-width:81px}
  body.client-shell .header-wallet-pill.is-very-long-value{min-width:90px}
  body.client-shell .header-key-pill.is-long-value{min-width:52px}
  body.client-shell .header-key-pill.is-very-long-value{min-width:60px}
}

/* v27.1.99 · paginación compacta global */
.pagination-ellipsis{
    min-width:22px;
    height:38px;
    display:inline-grid;
    place-items:center;
    color:var(--muted);
    font-weight:800;
    line-height:1;
    user-select:none;
    pointer-events:none;
}

/* v27.1.100 · paginación compacta sin quiebres */
:is(.dashboard-pagination,.clients-pagination,.catalog-pagination,.operations-pagination,.tournament-pagination,.notifications-page-pagination,.renew-pagination,.store-pagination){
    flex-wrap:nowrap!important;
    white-space:nowrap;
    overflow-x:auto;
    overscroll-behavior-inline:contain;
    scrollbar-width:none;
}
:is(.dashboard-pagination,.clients-pagination,.catalog-pagination,.operations-pagination,.tournament-pagination,.notifications-page-pagination,.renew-pagination,.store-pagination)::-webkit-scrollbar{display:none}
:is(.dashboard-pagination,.clients-pagination,.catalog-pagination,.operations-pagination,.tournament-pagination,.notifications-page-pagination,.renew-pagination,.store-pagination) .pagination-ellipsis{
    flex:0 0 auto;
    width:auto;
    min-width:24px;
    letter-spacing:.06em;
}
@media(max-width:650px){
    :is(.dashboard-pagination,.clients-pagination,.catalog-pagination,.operations-pagination,.tournament-pagination,.notifications-page-pagination,.renew-pagination,.store-pagination){
        gap:5px!important;
        justify-content:center!important;
    }
    :is(.dashboard-pagination,.clients-pagination,.catalog-pagination,.operations-pagination,.tournament-pagination,.notifications-page-pagination,.renew-pagination,.store-pagination) button{
        width:30px!important;
        min-width:30px!important;
        height:30px!important;
        padding:0!important;
        flex:0 0 30px!important;
    }
    :is(.dashboard-pagination,.clients-pagination,.catalog-pagination,.operations-pagination,.tournament-pagination,.notifications-page-pagination,.renew-pagination,.store-pagination) .pagination-ellipsis{
        width:22px!important;
        min-width:22px!important;
        height:30px!important;
        flex:0 0 22px!important;
        font-size:.58rem!important;
    }
}

/* v27.1.102 · centro de notificaciones compacto (admin + cliente + FazerCards) */
.notification-modal{
    place-items:center;
    padding:16px;
}
.notification-modal-backdrop{
    background:rgba(3,0,15,.80);
    backdrop-filter:blur(10px);
}
.notification-dialog{
    width:min(500px,100%);
    max-height:min(72dvh,680px);
    grid-template-rows:auto auto minmax(0,1fr) auto;
    border:1px solid rgba(105,211,255,.26);
    border-radius:24px;
    background:linear-gradient(150deg,rgba(29,10,75,.99),rgba(10,4,32,.995));
    box-shadow:0 26px 80px rgba(0,0,0,.58),0 0 36px rgba(123,44,255,.14);
}
.notification-dialog-head,
.notification-dialog-head-compact{
    position:relative;
    display:flex;
    align-items:center;
    justify-content:space-between;
    min-height:58px;
    gap:12px;
    padding:16px 16px 10px;
    border-bottom:0;
    background:transparent!important;
}
.notification-dialog-heading{min-width:0;padding-right:52px}
.notification-dialog-head .notification-dialog-heading>span,
.notification-dialog-head>div:first-child>span{
    display:block;
    margin:0;
    color:var(--cyan);
    font:900 .72rem Rajdhani,sans-serif;
    letter-spacing:.18em;
    line-height:1.2;
}
.notification-dialog-head h2,
.notification-dialog-head p{display:none}
.notification-dialog-actions{
    position:absolute;
    top:12px;
    right:12px;
    gap:0;
}
.notification-mark-all[hidden]{display:none!important}
.notification-dialog-bulk[hidden]{display:none!important}
.notification-dialog-bulk{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    padding:0 14px 9px;
}
.notification-dialog-bulk .notification-mark-all{
    min-height:32px;
    padding:0 11px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    border:1px solid rgba(53,225,139,.28);
    border-radius:10px;
    color:var(--success);
    background:rgba(53,225,139,.08);
    font-size:.62rem;
    font-weight:850;
    line-height:1;
    cursor:pointer;
}
.notification-dialog-bulk .notification-mark-all span{font-size:.68rem;letter-spacing:-.12em}
.notification-dialog-bulk .notification-mark-all:hover{
    border-color:rgba(53,225,139,.52);
    background:rgba(53,225,139,.14);
}
.notification-dialog-bulk .notification-mark-all:disabled{opacity:.42;cursor:not-allowed}
.notification-dialog-close{
    width:38px;
    height:38px;
    display:grid;
    place-items:center;
    flex:0 0 38px;
    padding:0;
    border:1px solid var(--line);
    border-radius:12px;
    color:var(--text);
    background:rgba(255,255,255,.055);
    font:500 1.5rem/1 Inter,sans-serif;
    cursor:pointer;
    transition:border-color .18s ease,background .18s ease,transform .18s ease;
}
.notification-dialog-close:hover{
    border-color:rgba(34,211,238,.48);
    background:rgba(34,211,238,.09);
}
.notification-dialog-close:active{transform:scale(.96)}
.notification-dialog-body{
    min-height:148px;
    overflow:auto;
    overscroll-behavior:contain;
    padding:6px 14px 12px;
    scrollbar-width:thin;
    scrollbar-color:rgba(121,76,255,.45) transparent;
}
.notification-modal-list{
    display:grid;
    gap:10px;
}
.notification-modal-item{
    position:relative;
    display:grid;
    grid-template-columns:38px minmax(0,1fr) 34px;
    align-items:start;
    gap:10px;
    padding:12px;
    border:1px solid rgba(255,255,255,.08);
    border-radius:16px;
    background:linear-gradient(145deg,rgba(50,24,111,.72),rgba(25,12,69,.78));
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.015),0 9px 24px rgba(0,0,0,.12);
}
.notification-modal-item:last-child{border-bottom:1px solid rgba(255,255,255,.08)}
.notification-modal-icon{
    width:38px;
    height:38px;
    border-radius:12px;
    font-size:.88rem;
    box-shadow:0 8px 18px rgba(22,220,244,.10);
}
.notification-modal-copy{min-width:0}
.notification-modal-title-row,
.notification-modal-copy>div:first-child{
    display:grid;
    gap:3px;
    align-items:start;
}
.notification-modal-copy strong{
    min-width:0;
    color:var(--text);
    font-size:.76rem;
    line-height:1.28;
    overflow-wrap:anywhere;
}
.notification-modal-copy time{
    color:var(--muted);
    font-size:.58rem;
    line-height:1.2;
    white-space:normal;
}
.notification-modal-copy p{
    margin:6px 0 0;
    color:var(--muted);
    font-size:.67rem;
    line-height:1.45;
    overflow-wrap:anywhere;
}
.notification-modal-item-actions{
    display:flex;
    align-items:center;
    gap:8px;
    margin-top:7px;
}
.notification-modal-item-actions a,
.notification-modal-item-actions button{
    font-size:.62rem;
    line-height:1.2;
}
.notification-read-toggle{
    width:32px;
    height:32px;
    display:grid;
    place-items:center;
    align-self:center;
    padding:0;
    border:1px solid rgba(53,225,139,.28);
    border-radius:11px;
    color:var(--success);
    background:rgba(53,225,139,.08);
    cursor:pointer;
    transition:transform .18s ease,border-color .18s ease,background .18s ease,box-shadow .18s ease;
}
.notification-read-toggle svg{
    width:17px;
    height:17px;
    fill:none;
    stroke:currentColor;
    stroke-width:2.2;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.notification-read-toggle:hover{
    transform:translateY(-1px);
    border-color:rgba(53,225,139,.55);
    background:rgba(53,225,139,.14);
    box-shadow:0 8px 18px rgba(53,225,139,.10);
}
.notification-read-toggle:disabled{opacity:.42;cursor:not-allowed;transform:none;box-shadow:none}
.notification-modal-empty,
.notification-modal-loading{
    min-height:160px;
    padding:18px;
}
.notification-modal-empty>span{
    width:46px;
    height:46px;
    border-radius:14px;
    font-size:1.1rem;
}
.notification-modal-empty strong{margin-top:9px;font-size:.78rem}
.notification-modal-empty p{font-size:.66rem}
.notification-modal-error{padding:22px 16px;font-size:.7rem}
.notification-dialog>footer{
    padding:11px 14px 13px;
    border-top:1px solid rgba(255,255,255,.07);
    background:rgba(25,11,67,.72);
}
.notification-dialog>footer a{
    min-height:34px;
    gap:7px;
    font-size:.68rem;
}
.fazercards-notification-dialog .notification-modal-icon{
    background:linear-gradient(135deg,#f59e0b,var(--cyan));
}
:root[data-theme="light"] .notification-dialog{
    border-color:rgba(84,76,150,.2);
    background:linear-gradient(150deg,rgba(255,255,255,.995),rgba(244,239,255,.995));
    box-shadow:0 26px 75px rgba(43,29,73,.24);
}
:root[data-theme="light"] .notification-modal-backdrop{background:rgba(24,16,45,.58)}
:root[data-theme="light"] .notification-modal-item{
    border-color:rgba(88,67,160,.12);
    background:linear-gradient(145deg,rgba(250,248,255,.98),rgba(242,237,255,.98));
}
:root[data-theme="light"] .notification-dialog>footer{
    border-top-color:rgba(88,67,160,.10);
    background:rgba(246,242,255,.96);
}
@media(max-width:640px){
    .notification-modal{padding:10px;place-items:center}
    .notification-dialog{
        width:min(450px,100%);
        max-height:min(76dvh,650px);
        border-radius:22px;
    }
    .notification-dialog-head,
    .notification-dialog-head-compact{
        min-height:54px;
        padding:14px 14px 8px;
    }
    .notification-dialog-heading{padding-right:48px}
    .notification-dialog-actions{top:10px;right:10px}
    .notification-dialog-close{width:36px;height:36px;flex-basis:36px;border-radius:11px;font-size:1.4rem}
    .notification-dialog-bulk{padding:0 11px 8px}
    .notification-dialog-bulk .notification-mark-all{width:100%;min-height:31px;font-size:.60rem}
    .notification-dialog-body{padding:5px 11px 10px}
    .notification-modal-list{gap:8px}
    .notification-modal-item{
        grid-template-columns:34px minmax(0,1fr) 31px;
        gap:9px;
        padding:10px;
        border-radius:14px;
    }
    .notification-modal-icon{width:34px;height:34px;border-radius:11px;font-size:.78rem}
    .notification-read-toggle{width:30px;height:30px;border-radius:10px}
    .notification-read-toggle svg{width:16px;height:16px}
    .notification-modal-copy strong{font-size:.72rem}
    .notification-modal-copy p{font-size:.63rem;line-height:1.4}
    .notification-modal-copy time{font-size:.55rem}
    .notification-dialog>footer{padding:9px 11px 11px}
    .notification-dialog>footer a{font-size:.64rem}
}

/* 27.1.104 · navegación administrativa unificada */
body.role-admin{--admin-bottom-nav-height:80px}
body.role-admin .admin-profile-shortcut{display:inline-grid;color:var(--text)}
@media(max-width:720px){
  body.role-admin{padding-bottom:var(--admin-bottom-nav-height)}
  body.role-admin .page-shell{padding-bottom:calc(var(--admin-bottom-nav-height) + 20px)}
  body.role-admin .site-footer{padding-bottom:18px}
  body.role-admin .header-actions{gap:6px}
  body.role-admin .header-actions .icon-button,
  body.role-admin .header-actions .notification-button{width:37px;height:37px;border-radius:12px}
  body.role-admin .app-bottom-nav{position:fixed;left:10px;right:10px;bottom:max(10px,env(safe-area-inset-bottom));height:66px;padding:5px;display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:21px;background:rgba(15,7,39,.96);box-shadow:0 18px 50px rgba(0,0,0,.38);z-index:50}
  :root[data-theme="light"] body.role-admin .app-bottom-nav{background:rgba(255,255,255,.97)}
  body.role-admin .bottom-link{min-width:0;border-radius:15px}
  body.role-admin .bottom-link.is-active{color:var(--cyan);background:var(--cyan-soft)}
  body.role-admin .bottom-link span{max-width:100%;font-size:.56rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
body.is-pwa.role-admin .app-bottom-nav{grid-template-columns:repeat(4,1fr)}

/* La barra principal del admin permanece accesible también fuera de móvil. */
body.role-admin{padding-bottom:var(--admin-bottom-nav-height)}
body.role-admin .page-shell{padding-bottom:calc(var(--admin-bottom-nav-height) + 24px)}
body.role-admin .app-bottom-nav{position:fixed;left:50%;right:auto;bottom:max(10px,env(safe-area-inset-bottom));width:min(680px,calc(100vw - 30px));height:66px;padding:5px;display:grid;grid-template-columns:repeat(4,1fr);transform:translateX(-50%);border:1px solid var(--line);border-radius:21px;background:rgba(15,7,39,.96);box-shadow:0 18px 50px rgba(0,0,0,.38);z-index:50}
:root[data-theme="light"] body.role-admin .app-bottom-nav{background:rgba(255,255,255,.97)}
body.role-admin .bottom-link{min-width:0;border-radius:15px}
body.role-admin .bottom-link.is-active{color:var(--cyan);background:var(--cyan-soft)}
@media(max-width:720px){
  body.role-admin .app-bottom-nav{left:10px;right:10px;width:auto;transform:none}
}

/* 27.1.114 · tarjeta compacta de comunidad WhatsApp para administrador */
.whatsapp-invite-card.is-compact-admin{display:grid;grid-template-columns:46px minmax(0,1fr);align-items:center;gap:13px;min-height:82px;padding:13px 15px!important;text-align:left}
.whatsapp-invite-card.is-compact-admin::after{width:72px;height:72px;right:-30px;bottom:-34px}
.whatsapp-invite-card.is-compact-admin .promo-icon{width:42px;height:42px;margin:0;border-radius:13px;position:relative;z-index:2}
.whatsapp-invite-card.is-compact-admin .promo-icon .ui-icon{width:23px;height:23px}
.whatsapp-invite-card.is-compact-admin .promo-copy{min-width:0;display:grid;gap:3px;position:relative;z-index:2;color:inherit;font:inherit;letter-spacing:normal}
.whatsapp-invite-card.is-compact-admin .promo-copy .promo-kicker{margin:0;color:#70f6ad;font:800 .62rem Inter,sans-serif;letter-spacing:.12em;line-height:1.2}
.whatsapp-invite-card.is-compact-admin .promo-copy strong{margin:0;color:var(--text);font:800 .92rem Rajdhani,Inter,sans-serif;line-height:1.1}
.drawer-card.whatsapp-invite-card.is-compact-admin{margin-top:auto;min-height:78px;padding:12px 14px!important}
@media(max-height:780px) and (min-width:961px){.sidebar-promo.whatsapp-invite-card.is-compact-admin{min-height:68px;padding:10px 12px!important}.whatsapp-invite-card.is-compact-admin .promo-icon{display:grid;width:38px;height:38px}}

/* 27.1.129 · cliente: contraste correcto en modo claro */
:root[data-theme="light"] body.client-shell .header-heading .eyebrow{
  color:#34245f;
  background:linear-gradient(135deg,rgba(22,220,244,.17),rgba(255,22,143,.10));
  box-shadow:inset 0 0 0 1px rgba(79,49,143,.12),0 5px 16px rgba(88,57,151,.08);
  text-shadow:none;
}
:root[data-theme="light"] .sidebar-promo.whatsapp-invite-card{
  border-color:rgba(24,159,99,.24);
  background:radial-gradient(circle at 90% 5%,rgba(53,225,139,.18),transparent 7rem),linear-gradient(145deg,#effff6,#e7f7f1 62%,#eef7ff);
  box-shadow:0 16px 38px rgba(50,91,76,.12),inset 0 0 0 1px rgba(255,255,255,.7);
}
:root[data-theme="light"] .sidebar-promo.whatsapp-invite-card strong,
:root[data-theme="light"] .drawer-card.whatsapp-invite-card strong{color:#173d32}
:root[data-theme="light"] .drawer-card.whatsapp-invite-card{
  border-color:rgba(24,159,99,.22);
  background:linear-gradient(135deg,#effff6,#edf7ff);
  color:#173d32;
}
:root[data-theme="light"] .whatsapp-invite-card .promo-icon{
  color:#062c1d;
  box-shadow:0 8px 20px rgba(37,211,102,.18);
}
:root[data-theme="light"] .sidebar-context{background:rgba(92,63,155,.035)}

/* 27.1.130 · notificaciones sin desbordes de texto (admin + cliente) */
.notification-dialog,
.notification-dialog-body,
.notification-modal-list,
.notification-modal-item,
.notification-modal-copy,
.notification-modal-title-row{
    min-width:0;
    max-width:100%;
}
.notification-dialog{overflow:hidden}
.notification-dialog-body{overflow-x:hidden}
.notification-modal-list{width:100%;overflow:hidden}
.notification-modal-item{
    width:100%;
    box-sizing:border-box;
    overflow:hidden;
}
.notification-modal-title-row,
.notification-modal-copy>div:first-child{
    grid-template-columns:minmax(0,1fr);
    width:100%;
}
.notification-modal-copy strong,
.notification-modal-copy time,
.notification-modal-copy p,
.notification-modal-item-actions,
.notification-modal-item-actions a,
.notification-modal-item-actions button{
    min-width:0;
    max-width:100%;
    white-space:normal!important;
    overflow-wrap:anywhere;
    word-break:break-word;
}
.notification-modal-copy p{width:100%;overflow:hidden}
.notification-modal-item-actions{flex-wrap:wrap}
@media(max-width:640px){
    .notification-modal-item{grid-template-columns:34px minmax(0,1fr) 31px!important}
    .notification-modal-copy p{line-height:1.38}
}

/* 27.1.139 · navbar cliente: contraste coherente por tema */
/* Dentro del panel, el tema claro usa texto oscuro en saldo, bolívares y llaves. */
:root[data-theme="light"] body.client-shell .header-wallet-copy strong,
:root[data-theme="light"] body.client-shell .header-wallet-copy small:not(.header-pill-label),
:root[data-theme="light"] body.client-shell .header-key-copy strong,
:root[data-theme="light"] body.client-shell .header-key-copy small:not(.header-pill-label){
  color:#17121f !important;
  text-shadow:none !important;
  opacity:1 !important;
}
/* En oscuro se conserva la lectura clara sobre los pills degradados. */
:root:not([data-theme="light"]) body.client-shell .header-wallet-copy strong,
:root:not([data-theme="light"]) body.client-shell .header-key-copy strong{
  color:#fff !important;
}
:root:not([data-theme="light"]) body.client-shell .header-wallet-copy small:not(.header-pill-label),
:root:not([data-theme="light"]) body.client-shell .header-key-copy small:not(.header-pill-label){
  color:rgba(255,255,255,.62) !important;
}
