[hidden]{display:none!important}
.beneficiary-header-actions button{min-width:44px;min-height:44px}
html.in-phone-frame{scrollbar-width:none}html.in-phone-frame::-webkit-scrollbar{display:none}html.in-phone-frame .demo-mobile-back,html.in-phone-frame .fidly-pwa-install-banner,html.in-phone-frame .fidly-pwa-install-modal{display:none!important}
/* Acciones ocultas según permisos (ver applyActionGates en permissions.js) */
html.lacks-beneficiaries-create #memberForm,html.lacks-beneficiaries-create #sendAllInvitations,html.lacks-beneficiaries-create #importMembers,html.lacks-beneficiaries-create #downloadTemplate,html.lacks-beneficiaries-create [data-invite-preapproval],html.lacks-beneficiaries-create [onclick^="cancelPreapproval("],html.lacks-beneficiaries-create [onclick^="authenticatePreapproval("],html.lacks-beneficiaries-create [onclick^="resetPreapprovalPassword("],
html.lacks-beneficiaries-edit [onclick^="editMember("],
html.lacks-beneficiaries-status [onclick^="toggleMember("],
html.lacks-beneficiaries-delete [onclick^="deleteMember("],
html.lacks-benefit-types #typeForm,html.lacks-benefit-types [onclick^="editType("],html.lacks-benefit-types [onclick^="toggleType("],html.lacks-benefit-types [onclick^="deleteType("]{display:none!important}
html.lacks-benefits-manage #pointProductForm,html.lacks-benefits-manage #pointRewardForm,html.lacks-benefits-manage [onclick^="cancelPointOrder("],html.lacks-benefits-manage [onclick^="confirmPointOrder("],html.lacks-benefits-manage [onclick^="togglePointProduct("],html.lacks-benefits-manage [onclick^="togglePointReward("],
html.lacks-marketing-create [data-publish],html.lacks-marketing-create [data-pause],html.lacks-marketing-create [data-cancel],html.lacks-marketing-create [data-delete],html.lacks-marketing-create [data-extend],
html.lacks-push [data-send],html.lacks-push [data-resend],
html.lacks-qr-manage #newBtn,html.lacks-qr-manage [data-status-id],html.lacks-qr-manage [data-del],
html.lacks-branches-manage [onclick^="deleteBranch("],html.lacks-branches-manage [onclick^="toggleBranch("],
html.lacks-devices-manage [onclick^="toggleDevice("],html.lacks-devices-manage [onclick^="rotateDeviceRecovery("],html.lacks-devices-delete [onclick^="deleteDevice("],
html.lacks-beneficiaries-delete [onclick^="deleteEmployee("],html.lacks-beneficiaries-status [onclick^="toggleEmployee("],html.lacks-beneficiaries-edit [onclick^="chooseEmployeePhoto("],
html.lacks-admins-manage [onclick^="deleteAdmin("],html.lacks-admins-manage [onclick^="sendAdminReset("]{display:none!important}
/* Panel admin: KPIs sin cortar cifras, formulario de cajeros legible, accesos rápidos parejos */
.analytics-stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))!important}
.analytics-stats .stat-card strong{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;font-size:clamp(20px,1.6vw,24px)!important;overflow-wrap:normal;word-break:keep-all}
.cashier-create-form{display:grid;grid-template-columns:minmax(220px,2fr) minmax(160px,1fr) auto;gap:12px;align-items:end;margin:16px 0}
.cashier-create-form label{margin:0}.cashier-create-form button{min-height:48px}
@media(max-width:700px){.cashier-create-form{grid-template-columns:1fr}}
.quick-card{min-height:0!important;justify-content:flex-start!important;gap:6px!important;font:inherit}
.quick-card strong{font-weight:700}.quick-card small{font-weight:500!important;color:#526173!important;margin-top:0!important}
/* Encabezados de página compactos: el título de la sección ya está arriba; la caja resume en una franja */
.admin-shell .modern-hero,.admin-shell .report-hero{padding:16px 22px!important;gap:16px!important;align-items:center!important;min-height:0!important}
.admin-shell .modern-hero h2,.admin-shell .report-hero h2{font-size:20px!important;letter-spacing:-.2px!important;margin:4px 0 2px!important}
.admin-shell .modern-hero p,.admin-shell .report-hero p{margin:0!important;font-size:14px;line-height:1.45}
.admin-shell .modern-hero .hero-kpi,.admin-shell .report-hero-period{padding:10px 16px!important;min-width:0!important;justify-content:center}
.admin-shell .modern-hero .hero-kpi strong,.admin-shell .report-hero-period strong{font-size:22px!important;margin:2px 0 0!important;line-height:1.2}
.admin-shell .dashboard-hero{padding-bottom:16px!important}
.admin-shell .dashboard-hero h2{font-size:24px!important;letter-spacing:-.4px!important;margin:4px 0!important}
.admin-shell .dashboard-hero:has(.dashboard-branch-card[hidden]){grid-template-columns:1fr!important}
.qr-lightbox-hint{margin:14px auto 0;max-width:32ch;text-align:center;font-size:14px;line-height:1.45;color:#1f2937;background:rgba(255,255,255,.95);padding:8px 14px;border-radius:999px}
@import url("https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@62..125,400..900&family=Martian+Mono:wght@400;500;700&display=swap");
:root{--tenant-primary:#0b3b3c;--tenant-secondary:#ffffff;--tenant-accent:#25b094;--tenant-background:#eef4ef;--tenant-surface:#ffffff;--tenant-text:#1c2b33;--tenant-radius:12px}
body{background:var(--tenant-background);color:var(--tenant-text)}
.admin-shell .sidebar{background:var(--tenant-primary)!important}
button.primary,.primary{background:var(--tenant-primary)!important}
button.primary:hover,.primary:hover{filter:brightness(.94)}
.card,.stat-card,.ops-metric{background:var(--tenant-surface)}
:root{font-family:Archivo,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--tenant-text);background:var(--tenant-background)}
*{box-sizing:border-box}body{margin:0}.app{max-width:1100px;margin:auto;padding:28px 18px 60px}.narrow{max-width:560px}
.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px}.top-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.eyebrow{font-size:12px;font-weight:900;letter-spacing:.12em;color:#526173}h1{margin:5px 0 0;font-size:30px}h2{margin:0 0 8px}.muted{color:#526173;margin-top:0}.small{font-size:12px}
.card{background:#fff;border:1px solid #e2e7ed;border-radius:18px;padding:24px;box-shadow:0 8px 25px rgba(15,61,62,.05);margin-bottom:18px}
.login-card{margin-top:12vh}.tenant-registration-brand{display:flex;align-items:center;justify-content:flex-start;margin-bottom:14px}.tenant-registration-brand img{width:54px;height:54px;object-fit:contain;background:var(--tenant-surface,#fff);border:1px solid color-mix(in srgb,var(--tenant-text) 10%,var(--tenant-surface));border-radius:14px;padding:7px}.login-card .tenant-registration-brand+ .eyebrow{display:block}.login-card h1{margin-bottom:8px}label{display:block;font-size:13px;font-weight:800;margin:14px 0}
input,select{width:100%;padding:13px 14px;border:1px solid #ccd4df;border-radius:11px;font-size:16px;outline:none;margin-top:7px;background:#fff}
input:focus,select:focus{border-color:var(--tenant-accent,#10B991)}button,.secondary-link{border:0;border-radius:11px;padding:12px 16px;min-height:44px;font-weight:800;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;line-height:1.15;transition:transform .12s ease,box-shadow .12s ease,background .12s ease}button:hover,.secondary-link:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,61,62,.10)}button:active,.secondary-link:active{transform:translateY(0);box-shadow:none}button:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.primary{background:var(--tenant-primary,#0F3D3E);color:#fff}.primary:hover{background:#0B2E2D}.secondary,.secondary-link{background:#eef1f5;color:var(--tenant-primary,#0F3D3E)}.secondary:hover,.secondary-link:hover{background:#e5e9ef}
.full{width:100%;margin-top:12px}.message{min-height:20px;color:#17733b;font-weight:700}.message.error{color:#b42318}.back-link{display:inline-block;margin-top:14px;color:color-mix(in srgb,var(--tenant-accent,#25b094) 62%,#000)}
.section-title{display:flex;justify-content:space-between;gap:20px}.admin-form{display:grid;grid-template-columns:1fr 1.4fr auto;gap:10px;margin-top:18px}
.role-row{display:grid;grid-template-columns:1.5fr 1fr auto;gap:10px;align-items:end;margin-top:14px}.role-row input,.role-row select{margin:0}
.employee-form{display:grid;grid-template-columns:.9fr 1.5fr 1fr .8fr 1.25fr auto;gap:8px;margin:18px 0}.employee-form input{margin:0}
.table-wrap{overflow:auto;max-height:70vh}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 9px;border-bottom:1px solid #e7ebf0;white-space:nowrap}.table-wrap thead th{position:sticky;top:0;z-index:1;background:var(--tenant-surface,#fff)}
.badge{display:inline-block;padding:6px 9px;border-radius:999px;font-size:12px;font-weight:900}.badge.active{background:#dff5e7;color:#17733b}
.badge.inactive{background:#ffe0e0;color:#9e2626}.badge.master{background:#e8e5ff;color:#5146a5}.small-btn{padding:8px 10px;font-size:12px}
.uuid{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px}.advanced{margin-top:18px;padding-top:16px;border-top:1px solid #e7ebf0}.advanced summary{cursor:pointer;font-weight:800}.hidden{display:none}
@media(max-width:1000px){.employee-form{grid-template-columns:1fr 1.5fr 1fr}.employee-form .photo-input-label{grid-column:1 / 3}.employee-form button{grid-column:3}.admin-form{grid-template-columns:1fr 1.4fr auto}.role-row{grid-template-columns:1fr}.topbar{flex-direction:column}}
@media(max-width:850px){.admin-form,.employee-form{grid-template-columns:1fr 1fr}.employee-form .photo-input-label,.employee-form button{grid-column:auto}}
@media(max-width:520px){.admin-form,.employee-form{grid-template-columns:1fr}.top-actions{flex-wrap:wrap}}

.danger{background:#b42318;color:#fff}.danger:hover{background:#991b1b}.admin-help{margin-top:12px;padding:10px 12px;border:1px solid #e7ebf0;border-radius:10px;background:#fafbfc}

.employee-filters{display:grid;grid-template-columns:minmax(260px,1.5fr) minmax(220px,1fr) minmax(150px,.7fr) auto;gap:10px;align-items:end;margin:14px 0 4px;padding:14px 16px;border:1px solid #e1e6ed;border-radius:14px;background:#fafbfc}.filter-field label{margin:0;font-size:12px;color:#526173}.filter-field input,.filter-field select{margin-top:5px}.filter-clear{min-width:130px}.empty-state{text-align:center;color:#526173;padding:26px 12px!important}.danger.small-btn{background:#b42318;color:#fff}.danger.small-btn:hover{background:#991b1b}.employee-filter-count{margin:5px 0 10px}.employee-tools{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:12px 0 10px;padding:15px 16px;border:1px solid #e1e6ed;border-radius:14px;background:#fafbfc}.employee-tools p{margin:5px 0 0}.employee-tool-buttons{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end;align-items:center}.file-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px}.employee-form input:first-child{min-width:0}.tool-btn{min-width:150px}.tool-btn.template{min-width:175px}.icon{width:17px;height:17px;flex:0 0 17px}.master-badge{width:88px;height:88px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:linear-gradient(145deg,#eeeaff,#e2ddff);color:#5146a5;border:1px solid #d8d2ff;box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 8px 18px rgba(81,70,165,.08);flex:0 0 88px}.master-badge .icon{width:25px;height:25px}.master-badge span{font-size:12px;font-weight:950;letter-spacing:.08em}.section-title{align-items:center}.action-buttons{display:flex;gap:7px;flex-wrap:wrap}.small-btn{min-height:36px}
@media(max-width:850px){.employee-filters{grid-template-columns:1fr 1fr}.filter-status{grid-column:1}.filter-clear{grid-column:2}.employee-tools{flex-direction:column;align-items:flex-start}.employee-tool-buttons{justify-content:flex-start}}


/* v0.9.0 · QR, cámara y fotos */
.code-input-row{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:7px}.code-input-row input{margin:0}.scan-btn{min-width:145px}.employee-preview-card{display:flex;align-items:center;gap:14px;padding:14px;margin:10px 0}.employee-photo{width:64px;height:64px;border-radius:14px;object-fit:cover;border:1px solid #e0e5eb;flex:0 0 64px}.employee-photo.placeholder{display:flex;align-items:center;justify-content:center;background:#f2f4f7;color:#526173;font-size:11px;font-weight:800;text-align:center}.employee-photo.large{width:72px;height:72px}.employee-thumb{width:42px;height:42px;border-radius:10px;object-fit:cover;border:1px solid #e0e5eb;display:inline-flex;align-items:center;justify-content:center;background:#f2f4f7;color:#526173;font-size:11px}.photo-input-label{font-size:11px;font-weight:800;margin:0;display:block;line-height:1.2}.photo-input-label .photo-file{display:block}.photo-file{font-size:12px;padding:8px;margin-top:5px}.qr-modal{position:fixed;inset:0;background:rgba(14,20,32,.62);display:flex;align-items:center;justify-content:center;padding:18px;z-index:1000}.qr-modal.hidden{display:none}.qr-modal-card{width:min(520px,100%);background:#fff;border-radius:20px;padding:22px;box-shadow:0 20px 60px rgba(0,0,0,.25)}.qr-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.qr-modal-header h2{margin:0 0 5px}.qr-reader{position:relative;width:100%;max-width:520px;aspect-ratio:4/3;margin:16px auto 10px;border-radius:16px;overflow:hidden;background:#101623;display:flex;align-items:center;justify-content:center}.qr-video{display:block;width:100%;height:100%;object-fit:cover}.qr-canvas{display:none}.qr-scan-frame{position:absolute;left:50%;top:50%;width:min(68%,290px);aspect-ratio:1;transform:translate(-50%,-50%);border:3px solid rgba(255,255,255,.9);border-radius:18px;box-shadow:0 0 0 999px rgba(0,0,0,.08);pointer-events:none}.qr-scan-frame:before,.qr-scan-frame:after{content:"";position:absolute;inset:-3px;border-radius:18px}.qr-scan-frame:before{border-top:6px solid #fff;border-left:6px solid #fff;width:46px;height:46px;inset:-3px auto auto -3px}.qr-scan-frame:after{border-right:6px solid #fff;border-bottom:6px solid #fff;width:46px;height:46px;inset:auto -3px -3px auto}.qr-file-label{display:block;padding:12px;border:1px dashed #cbd3de;border-radius:12px;background:#fafbfc}.qr-file-label input{margin-top:8px}.generated-qr{display:flex;justify-content:center;align-items:center;padding:28px;min-height:340px;background:#fff}.generated-qr canvas,.generated-qr img{width:320px;max-width:100%;height:auto;image-rendering:auto}.qr-employee-card{text-align:center}.qr-employee-card .qr-modal-header{text-align:left}.qr-employee-card>button{margin-top:8px}.action-buttons{align-items:center}.photo-input-label input{width:100%}@media(max-width:600px){.employee-filters{grid-template-columns:1fr}.filter-status,.filter-clear{grid-column:auto}.code-input-row{grid-template-columns:1fr}.scan-btn{width:100%}.employee-preview-card{align-items:flex-start}.employee-form{grid-template-columns:1fr}.qr-modal-card{padding:16px}.qr-reader{aspect-ratio:3/4}.qr-scan-frame{width:min(72%,280px)}}

/* v0.9.4.1 - Resultado visual del escaneo QR */
.qr-result-card{width:min(760px,100%);max-height:min(92vh,900px);overflow:auto;background:#fff;border-radius:26px;padding:26px;box-shadow:0 24px 80px rgba(0,0,0,.32)}
.qr-result-top{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:20px}
.qr-result-top h2{margin:5px 0 4px;font-size:28px}
.qr-result-profile{display:grid;grid-template-columns:minmax(260px,1fr) minmax(240px,.85fr);gap:26px;align-items:stretch}
.qr-result-photo-wrap{min-height:420px;border-radius:22px;overflow:hidden;background:#eef2f6;display:flex;align-items:center;justify-content:center}
.qr-result-photo{width:100%;height:100%;min-height:420px;object-fit:cover;display:block}
.qr-result-photo-placeholder{display:flex;align-items:center;justify-content:center;font-size:110px;font-weight:900;color:#526173;background:linear-gradient(135deg,#e8edf3,#cfd7e2)}
.qr-result-info{display:flex;flex-direction:column;justify-content:center;padding:8px 4px}
.qr-result-name{font-size:34px;line-height:1.08;font-weight:900;color:#16213a;letter-spacing:-.8px}
.qr-result-role{margin-top:10px;font-size:15px;font-weight:800;letter-spacing:.7px;color:#60708a;text-transform:uppercase}
.qr-result-id{margin-top:8px;font-size:14px;color:#526173;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.qr-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:28px}
.qr-result-grid>div{border:1px solid #e1e6ed;border-radius:16px;padding:15px;background:#f8fafc}
.qr-result-grid span{display:block;font-size:11px;font-weight:900;letter-spacing:.8px;color:#526173;margin-bottom:7px}
.qr-result-grid strong{font-size:22px;color:#16213a}.qr-result-grid strong.ok{color:#08783f}.qr-result-grid strong.bad{color:#c92a2a}
.qr-result-footer{display:flex;justify-content:space-between;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid #e4e8ee;font-size:12px;font-weight:800;color:#63728a}
.qr-result-footer span:first-child{color:#08783f}
@media(max-width:700px){.qr-result-card{padding:18px;border-radius:20px}.qr-result-profile{grid-template-columns:1fr;gap:18px}.qr-result-photo-wrap,.qr-result-photo{min-height:330px;height:330px}.qr-result-name{font-size:28px}.qr-result-footer{flex-direction:column}.qr-result-grid{margin-top:20px}}

/* v0.9.4.2 · Descarga QR estilizada */
.qr-download-note{margin-top:8px;font-size:12px;color:#63718a}
#downloadEmployeeQr{width:100%;font-weight:800}


/* v0.9.5 — Base de fidelización */
.phase-banner{display:flex;justify-content:space-between;align-items:center;gap:24px;border:1px solid #dbe4ef;background:linear-gradient(135deg,#fff,#F1F5F9)}
.phase-banner h2{margin:9px 0 5px}.phase{background:#e8f0ff;color:#315da8;border:1px solid #d5e3ff}.phase-safe{display:flex;flex-direction:column;gap:5px;min-width:280px;padding:15px 18px;border-radius:14px;background:#f0faf4;color:#17683b}.phase-safe span{font-size:12px;color:#587064}
.stats-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:18px 0}.stat-card{background:#fff;border:1px solid #e1e6ed;border-radius:16px;padding:18px;box-shadow:0 8px 22px rgba(15,61,62,.04)}.stat-card span{display:block;font-size:11px;font-weight:900;letter-spacing:.08em;color:#526173}.stat-card strong{display:block;font-size:28px;line-height:1.2;color:var(--tenant-primary,#0F3D3E);margin:7px 0 3px}.stat-card small{color:#788496}
.benefit-form,.movement-form{display:grid;grid-template-columns:1.1fr 1.5fr 1fr .7fr 1fr auto;gap:9px;margin:16px 0}.movement-form{grid-template-columns:1.6fr 1.2fr .9fr .8fr 1.2fr auto}.benefit-form input,.benefit-form select,.movement-form input,.movement-form select{margin:0}.code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.phase-banner .badge{white-space:nowrap}
@media(max-width:1200px){.stats-grid{grid-template-columns:repeat(3,1fr)}.benefit-form,.movement-form{grid-template-columns:1fr 1fr 1fr}.benefit-form button,.movement-form button{grid-column:span 1}}
@media(max-width:850px){.phase-banner{flex-direction:column;align-items:flex-start}.phase-safe{min-width:0;width:100%}.stats-grid{grid-template-columns:1fr 1fr}.benefit-form,.movement-form{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.stats-grid{grid-template-columns:1fr}.benefit-form,.movement-form{grid-template-columns:1fr}.phase-banner{padding:16px}}
.qr-box{display:flex;justify-content:center;align-items:center;min-height:340px;padding:20px;background:#fff;border-radius:16px}.qr-box canvas,.qr-box img{width:320px!important;height:320px!important;max-width:100%;image-rendering:auto}.qr-payload{word-break:break-all;text-align:center;margin:10px 0}

/* v0.9.8 — Modo Caja 2.0 */
.purchase-card{margin-top:16px;border:1px solid rgba(0,0,0,.08)}
.purchase-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:12px}
.purchase-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}
.purchase-summary.compact{grid-template-columns:repeat(2,1fr);margin:12px 0}.purchase-summary>div{padding:14px;border-radius:12px;background:#f6f7f9;display:flex;flex-direction:column;gap:4px}
.purchase-summary span{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:#526173}
.purchase-summary strong{font-size:18px}
.purchase-summary .purchase-total{background:var(--tenant-primary,#0F3D3E);color:var(--tenant-secondary,#fff);border:1px solid color-mix(in srgb,var(--tenant-primary,#0F3D3E) 82%,#000)}.purchase-summary .purchase-total span,.purchase-summary .purchase-total strong{color:var(--tenant-secondary,#fff)}
.purchase-summary .purchase-total span{color:var(--tenant-secondary,#fff)}
.action-row{display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:700px){.purchase-grid,.purchase-summary{grid-template-columns:1fr}.action-row button{width:100%}}

/* v0.9.9 — sucursales */
.branch-panel{
  display:grid;
  grid-template-columns:minmax(240px,1fr) minmax(360px,1.5fr);
  gap:18px;
  align-items:end;
  margin-top:16px;
}
.branch-panel label{
  display:block;
  font-weight:700;
  margin-bottom:8px;
}
.branch-panel select,
.branch-form input{
  width:100%;
  box-sizing:border-box;
}
.branch-panel select{margin-bottom:10px;}
.branch-form{
  display:grid;
  grid-template-columns:1fr 1.4fr 1.6fr auto;
  gap:10px;
  align-items:end;
}
@media(max-width:900px){
  .branch-panel{grid-template-columns:1fr;}
  .branch-form{grid-template-columns:1fr;}
}

/* v0.9.9.1 — enfoque operativo: usuarios, visitas, gasto y sucursales */
.stats-grid-8{grid-template-columns:repeat(8,1fr)}
.member-create-form{grid-template-columns:.9fr 1.5fr 1fr 1.2fr 1fr auto}
.movement-filters{grid-template-columns:1.8fr 1fr auto;margin-top:12px}
.audit-detail{max-width:520px;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px}
.branch-status{margin-top:12px}
@media(max-width:1250px){.stats-grid-8{grid-template-columns:repeat(4,1fr)}.member-create-form{grid-template-columns:1fr 1.5fr 1fr 1.2fr}.member-create-form button{grid-column:span 1}}
@media(max-width:850px){.stats-grid-8{grid-template-columns:repeat(2,1fr)}.member-create-form,.movement-filters{grid-template-columns:1fr}.member-create-form button,.movement-filters button{grid-column:auto}}
@media(max-width:520px){.stats-grid-8{grid-template-columns:1fr}}


/* v0.9.9.3 — sucursal por dispositivo/tablet */
.branch-badge-stack{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.branch-status{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.device-context{font-size:11px;font-weight:800;color:#526173;background:#f5f7fa;border:1px solid #e2e7ed;border-radius:999px;padding:4px 8px}.branch-status.branch-missing{color:#9e2626}.branch-status.branch-missing .device-context{color:#526173}.branch-readonly{padding:13px 14px;border:1px solid #d8dee7;border-radius:11px;background:#f7f8fa;font-weight:800;margin-top:7px}.branch-readonly.error{color:#b42318;background:#fff5f5;border-color:#f0caca}@media(max-width:600px){.branch-badge-stack{align-items:flex-start}}


/* v0.9.9.3 — sucursal por dispositivo/tablet */
.branch-badge-stack{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.branch-status{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.device-context{font-size:11px;font-weight:800;color:#526173;background:#f5f7fa;border:1px solid #e2e7ed;border-radius:999px;padding:4px 8px}.branch-status.branch-missing{color:#9e2626}.branch-status.branch-missing .device-context{color:#526173}.branch-readonly{padding:13px 14px;border:1px solid #d8dee7;border-radius:11px;background:#f7f8fa;font-weight:800;margin-top:7px}.branch-readonly.error{color:#b42318;background:#fff5f5;border-color:#f0caca}@media(max-width:600px){.branch-badge-stack{align-items:flex-start}}


/* v0.9.9.8 - dispositivos por sucursal */
.branch-devices{display:flex;flex-wrap:wrap;gap:6px;min-width:220px}
.device-chip{display:inline-block;padding:6px 9px;border-radius:10px;background:#eef2f7;color:#13213a;font-size:12px;line-height:1.2}
.device-chip.current{background:#dcfce7;color:#166534;font-weight:700}
@media (max-width:900px){.branch-devices{min-width:160px}.device-chip{font-size:11px}}

.nav-link{display:flex;align-items:center;text-decoration:none}.nav-link:visited{color:inherit}.nav-link:hover{color:#fff;text-decoration:none}
.loyalty-shell .admin-app{max-width:none;margin-left:250px;padding:30px 42px 60px;min-height:100vh}.loyalty-shell .topbar{max-width:1280px;margin:0 auto 24px}.loyalty-shell .card{max-width:1280px;margin:0 auto 18px;border-radius:12px;box-shadow:0 2px 10px rgba(15,61,62,.045);padding:26px;border-color:#dde3e9}
@media(max-width:1050px){.loyalty-shell .admin-app{margin-left:220px;padding-left:25px;padding-right:25px}}
@media(max-width:760px){.loyalty-shell .sidebar{transform:translateX(-100%);transition:transform .2s ease;width:260px}.loyalty-shell.sidebar-open .sidebar{transform:translateX(0)}.loyalty-shell .admin-app{margin-left:0;padding:18px 14px 45px}.loyalty-shell .topbar{align-items:flex-start;position:relative;padding-left:48px}.loyalty-shell .top-actions{display:none}.loyalty-shell .sidebar-toggle{display:inline-flex!important;position:absolute;left:0;top:0;width:40px;height:40px;padding:0;border-radius:8px;background:var(--tenant-primary,#0F3D3E);color:#fff}.loyalty-shell .topbar h1{font-size:28px}}
/* ============================================================
   v0.9.10 — Nueva navegación administrativa
   Más sobria, operativa y menos "plantilla".
   ============================================================ */
.admin-shell{min-height:100vh;background:var(--tenant-background)!important}
.admin-shell .sidebar{position:fixed;z-index:40;left:0;top:0;bottom:0;width:250px;background:var(--tenant-primary,#0F3D3E);color:#fff;padding:24px 16px 18px;display:flex;flex-direction:column;box-shadow:10px 0 30px rgba(12,28,48,.08)}
.sidebar-brand{display:flex;align-items:center;gap:12px;padding:4px 10px 26px;border-bottom:1px solid rgba(255,255,255,.11)}
.sidebar-brand img{width:92px;height:44px;object-fit:contain;filter:brightness(0) invert(1)}
.sidebar-brand div{display:flex;flex-direction:column;min-width:0}.sidebar-brand strong{font-size:12px;line-height:1.25}.sidebar-brand span{font-size:11px;color:#aebdd0;margin-top:3px}
.sidebar-section-label{font-size:11px;font-weight:900;letter-spacing:.15em;color:#7f93ac;margin:25px 10px 8px}
.sidebar-nav{display:flex;flex-direction:column;gap:4px}.nav-item{width:100%;min-height:42px;border:0;background:transparent;color:#c7d2df;border-radius:8px;padding:9px 11px;display:flex;justify-content:flex-start;align-items:center;gap:11px;font-weight:700;text-align:left;box-shadow:none;transform:none}.nav-item:hover{background:rgba(255,255,255,.07);color:#fff;box-shadow:none;transform:none}.nav-item.active{background:#fff;color:var(--tenant-primary,#0F3D3E);box-shadow:0 4px 12px rgba(0,0,0,.12)}.nav-icon{width:20px;text-align:center;font-size:16px;opacity:.9}.sidebar-spacer{flex:1}.sidebar-footer{border-top:1px solid rgba(255,255,255,.11);padding:14px 10px 0;display:flex;justify-content:space-between;align-items:center;gap:8px;color:#8ea1b8;font-size:11px}.sidebar-footer button{min-height:30px;padding:5px 0;background:transparent;color:#b8c5d4;font-size:11px;box-shadow:none}.sidebar-footer button:hover{color:#fff;box-shadow:none;transform:none}
.admin-shell .admin-app{max-width:none;margin-left:250px;padding:30px 42px 60px;min-height:100vh}.admin-shell .topbar{max-width:1280px;margin:0 auto 24px;align-items:center}.admin-shell .topbar h1{font-size:34px;letter-spacing:-.8px}.admin-shell .top-actions{margin-left:auto}.admin-shell .top-actions .secondary-link,.admin-shell .top-actions button{border-radius:8px}
.admin-shell .card{max-width:1280px;margin:0 auto 18px;border-radius:12px;box-shadow:0 2px 10px rgba(15,61,62,.045);padding:26px;border-color:#dde3e9}.admin-shell .section-title h2{font-size:24px;letter-spacing:-.3px}.admin-shell .section-title .muted{max-width:760px;line-height:1.55}
.admin-section{display:none}.admin-section.active-section{display:block}.dashboard-section{background:#fff}.dashboard-hero{display:grid;grid-template-columns:1.5fr .7fr;gap:30px;align-items:stretch;padding-bottom:25px;border-bottom:1px solid #e4e8ec}.dashboard-hero h2{font-size:38px;letter-spacing:-1.2px;margin:8px 0}.dashboard-hero p{max-width:700px;line-height:1.65}.dashboard-branch-card{background:#f4f7f9;border-left:4px solid #1e7a54;padding:18px 20px;display:flex;flex-direction:column;justify-content:center;min-height:130px}.dashboard-branch-card strong{font-size:21px;margin:6px 0}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:20px}.quick-card{min-height:125px;background:#fff;border:1px solid #dfe5ea;border-radius:10px;padding:17px;text-align:left;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;color:var(--tenant-primary,#0F3D3E);text-decoration:none;box-shadow:none}.quick-card:hover{border-color:#b9c7d4;box-shadow:0 6px 16px rgba(15,61,62,.07);transform:translateY(-1px)}.quick-card .quick-icon{font-size:19px;margin-bottom:18px;color:#1e7a54}.quick-card strong{font-size:15px}.quick-card small{font-size:11px;color:#526173;margin-top:5px;line-height:1.4}
.sidebar-toggle{display:none!important}
@media(max-width:1050px){.admin-shell .sidebar{width:220px}.admin-shell .admin-app{margin-left:220px;padding-left:25px;padding-right:25px}.quick-grid{grid-template-columns:1fr 1fr}.dashboard-hero{grid-template-columns:1fr}.sidebar-brand img{width:82px}}
@media(max-width:760px){.admin-shell .sidebar{transform:translateX(-100%);transition:transform .2s ease;width:260px}.admin-shell.sidebar-open .sidebar{transform:translateX(0)}.sidebar-overlay{display:none;position:fixed;z-index:35;inset:0;background:rgba(8,20,35,.45)}.admin-shell.sidebar-open .sidebar-overlay{display:block}.admin-shell .admin-app{margin-left:0;padding:18px 14px 45px}.admin-shell .topbar{align-items:flex-start;position:relative;padding-left:48px}.sidebar-toggle{display:inline-flex!important;position:absolute;left:0;top:0;width:40px;height:40px;padding:0;border-radius:8px;background:var(--tenant-primary,#0F3D3E);color:#fff}.admin-shell .top-actions{display:none}.admin-shell .topbar h1{font-size:28px}.quick-grid{grid-template-columns:1fr}.dashboard-hero h2{font-size:31px}.admin-shell .card{padding:20px 16px}.branch-panel{grid-template-columns:1fr!important}.employee-filters{grid-template-columns:1fr}.admin-form,.employee-form{grid-template-columns:1fr}.role-row{grid-template-columns:1fr}}
@media(min-width:761px){.admin-shell .top-actions{display:none}}

/* ============================================================
   v0.9.12 — reportería y dispositivos
   ============================================================ */
.report-filters{display:grid;grid-template-columns:1fr 1fr 1.25fr 1.5fr .9fr auto;gap:10px;align-items:end;margin-top:16px;padding:15px 16px;border:1px solid #e1e6ed;border-radius:14px;background:#fafbfc}
.report-filters .filter-field input,.report-filters .filter-field select{width:100%;box-sizing:border-box}
.report-stats{grid-template-columns:repeat(6,1fr)}
.device-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:6px}.device-row:last-child{margin-bottom:0}.device-row.current{padding:3px;border-radius:10px}.device-mini-status{display:inline-block;margin-left:7px;padding:2px 6px;border-radius:999px;font-size:11px;font-weight:900;vertical-align:middle}.device-mini-status.active{background:#dcfce7;color:#166534}.device-mini-status.inactive{background:#fee2e2;color:#991b1b}
@media(max-width:1250px){.report-filters{grid-template-columns:1fr 1fr 1.2fr 1.4fr}.report-filters button{grid-column:span 1}.report-stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:850px){.report-filters{grid-template-columns:1fr 1fr}.report-filters button{grid-column:span 2}.report-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.report-filters{grid-template-columns:1fr}.report-filters button{grid-column:auto}.report-stats{grid-template-columns:1fr}.device-row{align-items:flex-start;flex-direction:column}}
/* ============================================================
   v1.0.0 BETA — nueva capa visual y módulos operativos
   ============================================================ */
.modern-hero{display:grid;grid-template-columns:1fr 220px;gap:28px;align-items:stretch;background:linear-gradient(135deg,#fff 0%,#f7faf8 100%);border-left:4px solid #1e7a54}.modern-hero h2{font-size:34px;letter-spacing:-1px;margin:8px 0 10px}.hero-kpi{border:1px solid #dfe7e2;background:#f8fbf9;border-radius:12px;padding:20px;display:flex;flex-direction:column;justify-content:center}.hero-kpi span{font-size:11px;font-weight:900;letter-spacing:.12em;color:#526173}.hero-kpi strong{font-size:34px;margin-top:7px;color:var(--tenant-primary,#0F3D3E)}.stats-grid-4{grid-template-columns:repeat(4,1fr)}.benefit-type-form{display:grid;grid-template-columns:1fr 1.2fr 1.5fr .7fr 1fr 1fr auto;gap:10px;align-items:center}.cashier-gate{border:1px solid #dfe5ea;background:#fbfcfd}.cashier-gate-row{display:flex;gap:10px;max-width:620px}.cashier-gate-row input{flex:1}.cashier-gate .section-title{margin-bottom:12px}.analytics-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;background:transparent;padding:0;border:0;box-shadow:none}.chart-card{background:#fff;border:1px solid #dfe5ea;border-radius:12px;padding:18px;min-height:320px;box-shadow:0 2px 10px rgba(15,61,62,.035)}.chart-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.chart-head h3{margin:0 0 4px;font-size:17px}.chart-head span{font-size:11px;color:#526173}.chart-card canvas{width:100%!important;height:250px!important}.purchase-grid.single{grid-template-columns:1fr}.purchase-grid.single>label{max-width:520px}@media(max-width:900px){.modern-hero{grid-template-columns:1fr}.benefit-type-form{grid-template-columns:1fr 1fr}.benefit-type-form button{grid-column:1/-1}.analytics-grid{grid-template-columns:1fr}.stats-grid-4{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.benefit-type-form{grid-template-columns:1fr}.cashier-gate-row{flex-direction:column}.stats-grid-4{grid-template-columns:1fr}.modern-hero h2{font-size:28px}}

/* v1.0.1 beta — confirmación de cajero por operación */
.cashier-confirm-card{max-width:520px}
.cashier-confirm-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0 18px}
.cashier-confirm-summary>div{background:#f5f6f8;border:1px solid #e5e7eb;border-radius:14px;padding:12px}
.cashier-confirm-summary span{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:#526173;margin-bottom:4px}
.cashier-confirm-summary strong{font-size:1.05rem}
@media(max-width:640px){.cashier-confirm-summary{grid-template-columns:1fr}}

/* v1.0.3 — Roles: permisos alineados y agrupados por módulo */
.role-permission-card{padding:22px!important}
.role-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding-bottom:16px;border-bottom:1px solid #e7ebf0}
.role-card-head h3{margin:0 0 5px;font-size:20px}
.permission-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}
.permission-group{border:1px solid #e1e6ed;border-radius:13px;background:#fafbfc;overflow:hidden}
.permission-group-title{padding:10px 13px;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#526173;background:#f1f4f7;border-bottom:1px solid #e1e6ed}
.permission-row{display:grid;grid-template-columns:minmax(0,1fr) 28px;align-items:center;gap:12px;margin:0!important;padding:12px 13px;border-bottom:1px solid #e7ebf0;cursor:pointer;background:#fff}
.permission-row:last-child{border-bottom:0}
.permission-row:hover{background:#f8fafc}
.permission-row span{display:flex;flex-direction:column;gap:3px;min-width:0}
.permission-row strong{font-size:13px;color:var(--tenant-primary,#0F3D3E)}
.permission-row small{font-size:11px;font-weight:500;color:#526173;line-height:1.35}
.permission-row input{width:18px;height:18px;margin:0;justify-self:center;accent-color:var(--tenant-primary,#0F3D3E)}
@media(max-width:900px){.permission-groups{grid-template-columns:1fr}}
@media(max-width:700px){.role-card-head{flex-direction:column}.role-card-head button{width:100%}}

/* v1.0.3 — QR marketing */
.qr-marketing-tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:16px 0}
.qr-marketing-help{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
.qr-help-box{padding:14px 16px;border:1px solid #e1e6ed;border-radius:13px;background:#fafbfc}
.qr-help-box strong{display:block;margin-bottom:5px}
.qr-help-box p{margin:0;font-size:13px;line-height:1.45;color:#526173}
.qr-template-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:#e7f6ed;color:#17733b;font-size:11px;font-weight:900}
.qr-design-preview{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border-radius:16px;border:1px solid #dfe5ea;overflow:hidden}
.qr-design-preview .qr-placeholder{width:150px;height:150px;border:3px dashed #aab4c1;border-radius:12px;display:flex;align-items:center;justify-content:center;font-weight:900;color:#526173}
@media(max-width:700px){.qr-marketing-help{grid-template-columns:1fr}}
/* ============================================================
   v1.0.5 BETA — QR por template, renderizado corregido
   ============================================================ */
.qr-design-create{margin:18px 0;padding:16px;border:1px solid #dfe5ea;border-radius:14px;background:#fafbfc}
.qr-design-create>div:first-child{margin-bottom:10px}.qr-design-create .toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.qr-design-create .toolbar input{flex:1 1 180px}.file-button{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;white-space:nowrap}
.qr-design-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.qr-design-card{overflow:hidden}.qr-svg-preview{height:420px;background:#F1F5F9;border:1px solid #e0e5ea;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;overflow:hidden;margin-top:14px}.qr-svg-preview img{height:390px;max-width:100%;object-fit:contain;display:block}.qr-svg-preview span{font-size:11px;color:#526173;font-weight:700}.qr-svg-preview.fallback img{opacity:.92}

.qr-design-manager{margin-top:18px}.qr-design-picker{border:1px solid #dfe5ea;border-radius:14px;padding:16px;background:#fafbfc}.qr-design-picker-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:12px}.qr-design-picker-head h3{margin:0 0 4px}.qr-design-picker label{display:block;font-weight:800;font-size:13px;margin-bottom:6px}.qr-design-picker select{width:100%;min-height:46px;border:1px solid #cfd7e1;border-radius:10px;padding:0 12px;background:#fff;font:inherit;color:inherit}.qr-design-selected{margin-top:14px;border:1px solid #dfe5ea;border-radius:14px;background:#fff;overflow:hidden}.qr-design-selected-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,430px);gap:18px;padding:18px}.qr-design-selected-info{min-width:0}.qr-design-selected-title{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.qr-design-selected-title h3{margin:0 0 4px}.qr-design-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.qr-design-selected-preview{border-left:1px solid #e4e8ed;padding-left:18px}.qr-preview-label{font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:#526173;margin-bottom:8px}.qr-design-selected-preview .qr-svg-preview{height:430px;margin-top:0}.qr-design-selected-preview .qr-svg-preview img{height:395px;max-height:395px}.qr-design-empty{padding:28px;border:1px dashed #cbd5e1;border-radius:14px;display:flex;flex-direction:column;gap:5px;text-align:center}
@media(max-width:900px){.qr-design-selected-main{grid-template-columns:1fr}.qr-design-selected-preview{border-left:0;border-top:1px solid #e4e8ed;padding-left:0;padding-top:18px}}
@media(max-width:600px){.qr-design-picker-head{flex-direction:column}.qr-design-selected{border-radius:12px}.qr-design-selected-main{padding:14px}.qr-design-selected-preview .qr-svg-preview{height:320px}.qr-design-selected-preview .qr-svg-preview img{height:285px;max-height:285px}.qr-design-actions{align-items:stretch}.qr-design-actions button{width:100%}}

.qr-member-card{width:min(1120px,calc(100vw - 36px));max-width:none}.qr-member-layout{display:grid;grid-template-columns:minmax(340px,.85fr) minmax(360px,1.15fr);gap:18px;align-items:stretch}.qr-design-selector{border:1px solid #e1e6ed;background:#fafbfc;border-radius:14px;padding:14px;margin-bottom:12px}.qr-design-selector label{display:flex;flex-direction:column;gap:4px;margin-bottom:9px}.qr-design-selector select{width:100%;min-height:44px;margin-bottom:10px}.qr-design-selector .message{margin:8px 0 0}.qr-preview-pane{border:1px solid #e1e6ed;background:#fafbfc;border-radius:14px;padding:14px;min-height:560px}.qr-preview-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.qr-design-live-preview{height:calc(100% - 34px);min-height:500px;display:flex;align-items:center;justify-content:center;background:#F1F5F9;border-radius:12px;overflow:auto}.qr-design-live-preview img{max-height:500px;max-width:100%;height:auto;width:auto;display:block;box-shadow:0 8px 24px rgba(15,61,62,.08)}
@media(max-width:900px){.qr-member-layout{grid-template-columns:1fr}.qr-preview-pane{min-height:420px}.qr-design-live-preview{min-height:360px}.qr-design-live-preview img{max-height:390px}}
@media(max-width:600px){.qr-member-card{width:calc(100vw - 18px)}.qr-design-create .toolbar{flex-direction:column;align-items:stretch}.qr-design-create .toolbar input,.qr-design-create .toolbar button,.qr-design-create .toolbar label{width:100%;box-sizing:border-box}.qr-svg-preview{height:320px}.qr-svg-preview img{height:300px}}

.beneficiary-photo-input{margin:0;align-self:end}.beneficiary-photo-input .photo-file{margin-top:5px}.beneficiary-cell{display:flex;align-items:center;gap:10px}.beneficiary-thumb{flex:0 0 42px}
/* v1.0.5.5 - edición de beneficiario */
.member-edit-card{width:min(620px,100%)}
.member-edit-grid{display:grid;grid-template-columns:120px 1fr;gap:20px;align-items:start;margin-top:18px}
.member-edit-photo{text-align:center}
.member-edit-photo img,.member-edit-photo .placeholder{width:104px;height:104px;border-radius:18px;object-fit:cover;border:1px solid #e0e5eb;display:flex;align-items:center;justify-content:center;margin:0 auto 10px;background:#f2f4f7;color:#526173;font-size:12px;font-weight:800}
.member-edit-photo input{width:100%;font-size:11px}
.member-edit-info{display:grid;gap:12px}
.member-edit-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px;flex-wrap:wrap}
.member-edit-actions .danger{margin-right:auto}
@media(max-width:600px){.member-edit-grid{grid-template-columns:1fr}.member-edit-photo{display:grid;justify-items:center}.member-edit-actions{justify-content:stretch}.member-edit-actions button{flex:1}.member-edit-actions .danger{margin-right:0}}

/* v1.0.5.7 — alta de beneficiarios compacta y ordenada */
.member-create-card{overflow:hidden}
.member-create-heading{margin-bottom:18px}
.member-create-badge{min-width:92px;padding:10px 13px;border:1px solid #dbe4f0;border-radius:14px;background:#F1F5F9;text-align:center;display:flex;flex-direction:column;gap:3px}
.member-create-badge span{font-size:11px;font-weight:900;letter-spacing:.08em;color:#6b7788}
.member-create-badge strong{font-size:14px;color:#17233b}
.member-create-form{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.member-form-block{border:1px solid #e1e6ed;border-radius:16px;padding:16px;background:#fbfcfd}
.member-form-block-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:13px}
.member-form-block-title strong{font-size:14px;color:#17233b}
.member-form-block-title span{font-size:11px;color:#526173}
.member-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.form-field{display:flex;flex-direction:column;gap:6px;margin:0;font-size:12px;font-weight:800;color:#4f5d70}
.form-field span{line-height:1.2}
.form-field em{font-style:normal;font-weight:600;color:#526173}
.form-field input,.form-field select{margin:0;width:100%}
.member-field-wide{grid-column:1/-1}
.photo-field{grid-column:1/-1}
.member-create-footer{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 2px 0}
.member-create-footer p{margin:3px 0 0}
.create-member-btn{min-width:190px}
@media(max-width:900px){.member-create-form{grid-template-columns:1fr}.member-form-grid{grid-template-columns:1fr}.member-field-wide,.photo-field{grid-column:auto}.member-create-footer{grid-column:auto;flex-direction:column;align-items:stretch}.create-member-btn{width:100%}}
@media(max-width:600px){.member-create-heading{align-items:flex-start}.member-create-badge{display:none}.member-form-block{padding:13px}.member-form-block-title{align-items:flex-start;flex-direction:column;gap:2px}}


/* ============================================================
   v1.0.6.0-beta — Sistema visual unificado del panel lateral
   ============================================================ */
.admin-shell .sidebar{width:252px;padding:22px 14px 16px;background:var(--tenant-primary,#0F3D3E);border-right:1px solid rgba(255,255,255,.08);box-shadow:10px 0 28px rgba(12,28,48,.07)}
.admin-shell .sidebar-brand{min-height:68px;padding:2px 10px 20px;gap:12px}
.admin-shell .sidebar-brand img{width:88px;height:40px}
.admin-shell .sidebar-brand strong{font-size:12px;font-weight:800;letter-spacing:.01em}
.admin-shell .sidebar-brand span{font-size:11px;line-height:1.35}
.admin-shell .sidebar-section-label{margin:23px 10px 7px;font-size:11px;line-height:1;letter-spacing:.14em}
.admin-shell .sidebar-nav{gap:3px}
.admin-shell .nav-item{min-height:42px;padding:9px 11px;border-radius:9px;gap:11px;font-size:13px;line-height:1.2;font-weight:750;transition:background .16s ease,color .16s ease,box-shadow .16s ease,transform .16s ease}
.admin-shell .nav-item:hover{background:rgba(255,255,255,.075);color:#fff;transform:none}
.admin-shell .nav-item.active{background:#fff;color:var(--tenant-primary,#0F3D3E);box-shadow:0 3px 10px rgba(0,0,0,.13)}
.admin-shell .nav-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 20px;opacity:.92}
.admin-shell .nav-icon svg{width:18px;height:18px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.admin-shell .nav-item.active .nav-icon{opacity:1}
.admin-shell .sidebar-footer{padding:13px 10px 0;min-height:45px}
.admin-shell .sidebar-footer span{font-size:11px;white-space:nowrap}
.admin-shell .sidebar-footer button{font-size:11px;min-height:30px;white-space:nowrap}
.admin-shell .admin-app{margin-left:252px}
@media(max-width:1050px){.admin-shell .sidebar{width:228px}.admin-shell .admin-app{margin-left:228px}}
@media(max-width:760px){.admin-shell .sidebar{width:270px}.admin-shell .admin-app{margin-left:0}}

/* v1.0.6.2 — Consumo y navegación */
.analytics-toolbar{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:12px;align-items:end}
.analytics-toolbar-actions{display:flex;justify-content:flex-end}
.analytics-stats{grid-template-columns:repeat(7,1fr)}
.analytics-stats .stat-card strong{font-size:25px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.analytics-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}
.chart-card{min-height:0}
.chart-card .table-wrap{margin-top:0}
.chart-card table{min-width:720px}
.trend-chart{height:230px;display:flex;align-items:flex-end;gap:5px;padding:18px 8px 28px;overflow-x:auto;border-bottom:1px solid #e1e6ed}
.trend-col{min-width:18px;height:190px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:7px}
.trend-bar{width:14px;background:var(--tenant-primary,#0F3D3E);border-radius:5px 5px 2px 2px;min-height:4px}
.trend-col span{font-size:11px;color:#526173;white-space:nowrap;transform:rotate(-45deg);transform-origin:center top}
.rank{display:inline-flex;width:25px;height:25px;border-radius:50%;background:#f0f3f7;align-items:center;justify-content:center;font-weight:800;color:var(--tenant-primary,#0F3D3E)}
@media(max-width:1200px){.analytics-stats{grid-template-columns:repeat(4,1fr)}.analytics-toolbar{grid-template-columns:1fr 1fr}.analytics-toolbar-actions{justify-content:flex-start}}
@media(max-width:850px){.analytics-grid{grid-template-columns:1fr}.analytics-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.analytics-stats{grid-template-columns:1fr}.analytics-toolbar{grid-template-columns:1fr}.analytics-toolbar-actions button{width:100%}}

/* v1.0.6.3 — importación y exportación masiva de beneficiarios */
.import-export-card{border-top:3px solid #1e7a54}.import-export-actions{display:flex;gap:8px;flex-wrap:wrap}.import-dropzone{display:flex;align-items:center;gap:16px;margin-top:16px;padding:18px 20px;border:1px dashed #cbd5df;border-radius:14px;background:#fafbfc;transition:.15s ease}.import-dropzone.dragging{border-color:#1e7a54;background:#f2faf6}.import-drop-icon{width:42px;height:42px;border-radius:12px;background:#edf5f0;color:#1e7a54;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:900}.import-file-btn{display:inline-flex;margin-top:6px;cursor:pointer}.import-preview{margin-top:16px}.import-preview.hidden{display:none}.import-summary{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-bottom:10px;font-size:13px}.import-summary strong{font-size:15px}.import-error-count{color:#b42318;font-weight:800}.import-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px}.import-footer .muted{max-width:780px}.import-preview table td{vertical-align:middle}.import-preview .badge{font-size:11px;white-space:normal}.import-export-card .message{margin-top:10px}@media(max-width:800px){.import-export-actions{width:100%}.import-export-actions button{flex:1}.import-footer{flex-direction:column;align-items:stretch}.import-footer button{width:100%}}@media(max-width:600px){.import-dropzone{align-items:flex-start}.import-drop-icon{flex:0 0 42px}}

/* ============================================================
   v1.0.8 — Reportería / consistencia de tablas
   ============================================================ */
.analytics-grid,.analytics-grid > *, .chart-card,.card{min-width:0}
.analytics-grid .table-wrap{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden}
.analytics-grid .chart-card table{min-width:0;width:100%;table-layout:auto}
.analytics-grid .chart-card th,.analytics-grid .chart-card td{font-size:12px;padding:11px 7px}
.analytics-grid .chart-card th{white-space:normal}
@media(max-width:1050px){.analytics-grid .chart-card table{min-width:620px}}
@media(max-width:700px){.analytics-grid .chart-card table{min-width:560px}.analytics-grid{gap:14px}}

/* Reportería renovada */
.report-hero{max-width:1280px;margin:0 auto 18px;padding:30px 32px;border-radius:18px;background:var(--tenant-surface,#fff);color:var(--tenant-text,#0F3D3E);display:flex;justify-content:space-between;align-items:flex-end;gap:30px;border:1px solid var(--tenant-border,#dfe5ec);box-shadow:0 10px 28px rgba(15,61,62,.06)}
.report-hero .eyebrow{color:var(--tenant-primary,#1C3B63)!important;opacity:1}
.report-hero h2{margin:8px 0 7px;font-size:30px;letter-spacing:-.5px;color:var(--tenant-text,#0F3D3E)!important}
.report-hero p{margin:0;color:var(--tenant-muted,#526173)!important;max-width:700px;line-height:1.55}
.report-hero-period{min-width:190px;padding:15px 18px;border:1px solid color-mix(in srgb,var(--tenant-primary,#1C3B63) 18%, var(--tenant-border,#dfe5ec));border-radius:13px;background:color-mix(in srgb,var(--tenant-primary,#1C3B63) 5%, var(--tenant-surface,#fff))}
.report-hero-period span{display:block;font-size:11px;font-weight:800;letter-spacing:.13em;color:var(--tenant-primary,#1C3B63)!important;margin-bottom:5px}.report-hero-period strong{font-size:14px;color:var(--tenant-text,#0F3D3E)!important}
.report-hero-period *{color:inherit}
.report-filter-card{max-width:1280px;margin:0 auto 18px!important}.report-filter-actions{display:flex;gap:8px;align-items:center}
.report-filters{display:grid;grid-template-columns:1fr 1fr 1.2fr 1.35fr .95fr;gap:12px;align-items:end;margin-top:16px;padding:17px;border:1px solid #e1e6ed;border-radius:14px;background:#f8fafc}
.report-filters .filter-field input,.report-filters .filter-field select{width:100%;box-sizing:border-box}
.report-accuracy{max-width:1280px;margin:0 auto 18px;color:#6d7a8b;font-size:12px}
.report-stats{max-width:1280px;margin:0 auto 18px!important;grid-template-columns:repeat(4,1fr);gap:14px}
.report-stats .stat-card{min-width:0;border-radius:14px;padding:18px 18px 16px;border:1px solid #e0e6ec;box-shadow:0 3px 12px rgba(15,61,62,.04)}
.report-stats .stat-card span{font-size:11px;letter-spacing:.11em}.report-stats .stat-card strong{font-size:25px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.report-stats .stat-card small{font-size:11px}
.report-stat-primary{border-top:3px solid var(--tenant-primary,#0F3D3E)!important}
.report-charts{max-width:1280px;margin:0 auto 18px;display:grid;grid-template-columns:1.35fr 1fr;gap:14px}
.report-chart-card{min-width:0;background:#fff;border:1px solid #e0e6ec;border-radius:14px;padding:20px;box-shadow:0 3px 12px rgba(15,61,62,.04)}
.report-chart-wide{grid-row:span 1}
.report-chart-wrap{height:300px;position:relative;margin-top:14px}.report-chart-wrap canvas{width:100%!important;height:100%!important}
.chart-kicker{display:block;font-size:11px;font-weight:900;letter-spacing:.14em;color:#8794a4;margin-bottom:4px}.report-chart-card h3{margin:0 0 3px;font-size:16px;color:var(--tenant-primary,#0F3D3E)}.report-chart-card .chart-head span:last-child{font-size:11px;color:#8490a0}
.report-charts + .card{max-width:1280px;margin-left:auto;margin-right:auto}
.report-charts + .card .table-wrap{max-width:100%;overflow-x:auto}
.report-charts + .card table{min-width:650px}
@media(max-width:1100px){.report-stats{grid-template-columns:repeat(3,1fr)}.report-charts{grid-template-columns:1fr 1fr}.report-filters{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:800px){.report-hero{padding:24px 20px;align-items:flex-start;flex-direction:column}.report-hero-period{width:100%;min-width:0}.report-filter-actions{width:100%}.report-filter-actions button{flex:1}.report-filters{grid-template-columns:1fr 1fr}.report-charts{grid-template-columns:1fr}.report-chart-wrap{height:280px}.report-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.report-filters{grid-template-columns:1fr}.report-filter-actions{flex-direction:column}.report-filter-actions button{width:100%}.report-stats{grid-template-columns:1fr}.report-chart-card{padding:16px}.report-chart-wrap{height:250px}}

.qr-create-preview{margin-top:12px;padding:14px;border:1px solid #dfe5ea;border-radius:14px;background:#fff;max-width:430px}.qr-create-preview.hidden{display:none}.qr-create-preview .qr-svg-preview{height:320px;margin-top:8px}.qr-create-preview .qr-svg-preview img{height:285px;max-height:285px}


/* v1.0.8.4 — Roles y permisos: búsqueda y grupos colapsables */
.role-permission-toolbar{display:grid;grid-template-columns:minmax(240px,460px) minmax(260px,1fr);gap:14px;align-items:end}
.role-permission-search input{width:100%;box-sizing:border-box}
.permission-group-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding:10px 0}
.permission-group-actions>div{display:flex;gap:8px;flex-wrap:wrap}
.permission-group-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;text-align:left;border:0;cursor:pointer}
.permission-group-toggle:hover{filter:brightness(.98)}
.permission-group-meta{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;text-transform:none;letter-spacing:0;color:#526173}
.permission-group-toggle[aria-expanded="false"] .permission-group-meta span{transform:rotate(180deg)}
.permission-group-body{display:block}
.permission-group.collapsed .permission-group-body{display:none}
.empty-state{padding:22px;text-align:center;color:#526173;border:1px dashed #d8dee7;border-radius:12px;background:#fafbfc}
.permission-row code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}
@media(max-width:700px){.role-permission-toolbar{grid-template-columns:1fr}.permission-group-actions{align-items:flex-start;flex-direction:column}.permission-group-actions>div{width:100%}.permission-group-actions button{flex:1}.permission-group-meta{font-size:11px}}


/* v1.0.8.8 — Roles: alineación y permisos efectivos */
.role-control-grid{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(0,1.8fr) auto;gap:14px;align-items:start;margin-top:16px}
.role-control-grid>.form-field{min-width:0;margin:0}
.role-control-grid>.form-field select{margin-top:7px}
.role-control-grid>#saveSelectedUserRole{margin-top:29px}
.role-control-grid>#saveSelectedUserRole{align-self:start;white-space:nowrap}
.role-assignment-panel{min-width:0;border:1px solid #e1e6ed;border-radius:13px;background:#fafbfc;padding:12px}
.role-assignment-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.role-field-label{display:block;font-size:12px;font-weight:800;color:#273246}
.role-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:54px;padding:5px 9px;border-radius:999px;background:#eef2f6;color:#536176;font-size:11px;font-weight:800;white-space:nowrap}
.admin-role-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:260px;overflow-y:auto;overflow-x:hidden;padding:2px}
.admin-role-option{display:flex;align-items:flex-start;gap:10px;min-width:0;width:100%;padding:10px;border:1px solid #dfe5ea;border-radius:10px;background:#fff;cursor:pointer}
.admin-role-option:hover{border-color:#cbd4df}
.admin-role-option input[type="checkbox"]{appearance:auto;width:18px!important;min-width:18px;max-width:18px;height:18px;margin:2px 0 0;padding:0;border:0;flex:0 0 18px;accent-color:var(--tenant-primary,#0F3D3E)}
.admin-role-option span{min-width:0;display:flex;flex-direction:column;gap:3px;overflow:hidden}
.admin-role-option strong,.admin-role-option small{min-width:0;overflow-wrap:anywhere}
.admin-role-option strong{font-size:12px;color:#273246}
.admin-role-option small{font-size:11px;line-height:1.4;color:#526173}
@media(max-width:1050px){.role-control-grid{grid-template-columns:minmax(220px,.75fr) minmax(0,1.25fr)}.role-control-grid>#saveSelectedUserRole{grid-column:2;justify-self:start;margin-top:0}}
@media(max-width:800px){.role-control-grid{grid-template-columns:1fr}.role-control-grid>#saveSelectedUserRole{grid-column:auto;width:100%;margin-top:0}.admin-role-options{grid-template-columns:1fr}}
@media(max-width:700px){.role-assignment-head{flex-direction:column}.role-count-badge{align-self:flex-start}}

/* v1.0.8.9 — estados de operación */
button:disabled,
input:disabled,
select:disabled {
  cursor: not-allowed;
}
button:disabled {
  opacity: .65;
}
.message[aria-live="polite"] {
  min-height: 1.25rem;
}

/* v1.0.8.10 — auditoría general */
.role-control-grid, .role-permission-toolbar, .report-filters, .employee-form { min-width: 0; }

/* v1.0.9.4 — identidad persistente y administración de tablets */
.device-management{margin-top:18px;background:#f8fafc;border:1px solid #dfe6ee}
.device-identity-body{margin:12px 0}
.device-identity-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.device-identity-grid>div{padding:12px;border:1px solid #e1e7ee;border-radius:10px;background:#fff}
.device-identity-grid span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#748094;font-weight:800}
.device-identity-grid strong{display:block;margin-top:5px;word-break:break-word}
.device-unlinked{display:flex;flex-direction:column;gap:5px;padding:14px;border:1px dashed #cbd5e1;border-radius:10px;background:#fff}
.device-row-actions{display:flex;gap:6px;flex-wrap:wrap}
.device-modal-card{max-width:520px}
.recovery-card{text-align:center}
.device-recovery-qr{display:flex;justify-content:center;align-items:center;margin:15px auto;padding:12px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;width:max-content}
.recovery-code{display:flex;justify-content:space-between;gap:20px;padding:9px 12px;margin-top:7px;border:1px solid #e1e7ee;border-radius:9px;background:#f8fafc;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
@media(max-width:900px){.device-identity-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.device-identity-grid{grid-template-columns:1fr}.device-row-actions{width:100%}.device-row-actions button{width:100%}}

/* v1.0.9.5 — corrección visual del modal de tablets */
.device-modal-card{width:min(560px,100%);max-height:min(88vh,760px);overflow:auto;box-sizing:border-box}
.device-modal-card h2{margin:0 0 6px}
.device-modal-card label{display:block;font-weight:700;margin:12px 0 6px}
.device-modal-card input{width:100%;box-sizing:border-box;margin-top:6px}
.device-modal-actions{justify-content:flex-end;margin-top:16px}
.device-modal-actions button{min-width:120px}
.device-modal-card .message{margin:10px 0}
.device-management{overflow:visible}
.device-management .section-title{align-items:flex-start}
.device-management .action-row{margin-top:12px}
.device-mini-status{display:inline-flex;align-items:center;margin-left:8px;padding:3px 7px;border-radius:999px;font-size:11px;font-weight:800}
.device-mini-status.active{background:#dff5e8;color:#08763d}
.device-mini-status.inactive{background:#fee2e2;color:#a61b1b}
@media(max-width:600px){
  .qr-modal{padding:10px}
  .device-modal-card{max-height:92vh;border-radius:16px;padding:18px}
  .device-modal-actions{flex-direction:column}
  .device-modal-actions button{width:100%}
}

/* v1.0.9.6 — compactación visual de sucursales y tablets */
#branchesSection .table-wrap{overflow-x:auto}
#branchesSection .table-wrap table{min-width:1080px}
#branchesSection .table-wrap th,
#branchesSection .table-wrap td{vertical-align:middle}
#branchesSection .branch-devices{display:flex;flex-direction:column;gap:6px;min-width:360px}
#branchesSection .device-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:nowrap;margin:0;padding:4px 0}
#branchesSection .device-chip{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#branchesSection .device-row-actions{display:flex;flex:0 0 auto;gap:5px;flex-wrap:nowrap}
#branchesSection .device-row-actions .small-btn{white-space:nowrap}
#branchesSection td:nth-child(6){white-space:nowrap}
.recovery-loading{display:flex;flex-direction:column;align-items:center;gap:7px;padding:30px 10px;text-align:center}
.recovery-loading strong{font-size:16px}
.recovery-loading span{color:#6b7788}
@media(max-width:900px){
  #branchesSection .table-wrap table{min-width:980px}
  #branchesSection .branch-devices{min-width:330px}
}

/* v1.0.10 — estado de conexión y auditoría de tablets */
.device-connection{display:inline-flex;margin-left:7px;padding:2px 6px;border-radius:999px;font-size:11px;font-weight:900;vertical-align:middle}
.device-connection.online{background:#dcfce7;color:#166534}.device-connection.recent{background:#fef3c7;color:#92400e}.device-connection.inactive{background:#eef2f7;color:#526173}
.device-last-seen-raw{display:block;margin-top:3px;color:#98a2b3;font-size:11px;font-weight:500}
.device-audit-panel{margin-top:14px}.device-audit-panel .section-title{margin-bottom:8px}.compact-table table{min-width:760px}.compact-table th,.compact-table td{font-size:12px;padding:9px 10px}.audit-event{font-weight:800;font-size:11px;letter-spacing:.03em}
@media(max-width:600px){.device-connection{display:block;margin:4px 0 0}.device-audit-panel{overflow:hidden}.compact-table{overflow-x:auto}}


/* INDEF v1.0.13 — navegación lateral accesible en todas las páginas */
html, body { min-height: 100%; }
body { overflow-x: hidden; }

/* Cualquier layout de panel con sidebar: la navegación ocupa el alto disponible
   y sus elementos pueden desplazarse sin mover el contenido principal. */
.sidebar,
.admin-sidebar,
.side-panel,
aside.sidebar,
nav.sidebar,
.app-sidebar {
  height: 100vh;
  height: 100dvh;
  max-height: 100vh;
  max-height: 100dvh;
  overflow-y: auto;
  overflow-x: hidden;
  box-sizing: border-box;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-gutter: stable;
}

/* Si el sidebar usa un contenedor interno, también permitimos scroll ahí. */
.sidebar .sidebar-content,
.sidebar .nav-list,
.admin-sidebar .sidebar-content,
.admin-sidebar .nav-list {
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-gutter: stable;
}

/* Mantener las acciones inferiores dentro del área visible y evitar que
   "Cerrar sesión" quede recortado cuando hay muchos módulos. */
.sidebar-footer,
.sidebar .sidebar-footer,
.admin-sidebar .sidebar-footer {
  position: sticky;
  bottom: 0;
  z-index: 5;
  flex-shrink: 0;
  padding-bottom: max(12px, env(safe-area-inset-bottom));
}

/* En layouts flex, evitar que el panel principal fuerce al sidebar a crecer. */
.sidebar,
.admin-sidebar,
.app-sidebar { align-self: stretch; min-height: 0; }

/* Tablets/teléfonos y ventanas pequeñas */
@media (max-height: 760px) {
  .sidebar,
  .admin-sidebar,
  .app-sidebar {
    padding-bottom: 8px;
  }
}

/* Respeto a dispositivos con notch/home indicator. */
@supports (padding: max(0px)) {
  .sidebar,
  .admin-sidebar,
  .app-sidebar {
    padding-bottom: max(8px, env(safe-area-inset-bottom));
  }
}

/* Evita que enlaces largos o nombres de módulos ensanchen el panel. */
.sidebar a,
.admin-sidebar a,
.app-sidebar a {
  max-width: 100%;
  box-sizing: border-box;
  overflow-wrap: anywhere;
}


/* INDEF v1.0.13.1 — hotfix sidebar footer */
.sidebar,
.admin-sidebar,
.app-sidebar {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}

.sidebar > *,
.admin-sidebar > *,
.app-sidebar > * {
  min-width: 0;
}

.sidebar .sidebar-content,
.sidebar .nav-list,
.admin-sidebar .sidebar-content,
.admin-sidebar .nav-list,
.app-sidebar .sidebar-content,
.app-sidebar .nav-list {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
}

/* El pie nunca comparte espacio de forma accidental con el último enlace. */
.sidebar-footer,
.sidebar .sidebar-footer,
.admin-sidebar .sidebar-footer,
.app-sidebar .sidebar-footer {
  flex: 0 0 auto;
  position: relative;
  bottom: auto;
  margin-top: auto;
  z-index: 10;
  background: inherit;
  box-sizing: border-box;
  padding-top: 12px;
  padding-bottom: max(12px, env(safe-area-inset-bottom));
}

/* Si el pie no es un hijo directo sino que está al final del contenedor,
   estas reglas evitan que texto/logotipo quede debajo de él. */
.sidebar-footer a,
.admin-sidebar .sidebar-footer a,
.app-sidebar .sidebar-footer a {
  position: relative;
  z-index: 11;
}


.qr-reader { width:min(100%,520px); margin:0 auto; min-height:40px; }

/* INDEF v1.2.0.0 — QR temporal real */
.qr-beneficiary-actions { display:flex; justify-content:center; margin-top:12px; }
.qr-beneficiary-actions button { min-width:190px; }


/* INDEF v1.2.2.0 — presentación QR de Mi cuenta y enlace de correo */
.qr-account-card { overflow:hidden; }
.qr-account-card .section-title { align-items:flex-start; }
.beneficiary-qr-stage { display:flex; flex-direction:column; align-items:center; justify-content:center; padding:26px 18px 18px; margin:18px auto 14px; max-width:390px; border:1px solid #e1e7ef; border-radius:24px; background:linear-gradient(180deg,#f8fafc 0%,#fff 100%); box-shadow:0 12px 32px rgba(24,35,55,.08); }
.beneficiary-qr-frame { display:grid; place-items:center; padding:16px; background:#fff; border:1px solid #e4e9f0; border-radius:20px; box-shadow:0 8px 22px rgba(24,35,55,.10); }
.beneficiary-qr { display:grid; place-items:center; width:260px; height:260px; }
.beneficiary-qr canvas,.beneficiary-qr img { display:block; width:260px !important; height:260px !important; image-rendering:auto; }
.qr-live-meta { display:flex; align-items:center; gap:8px; margin-top:14px; font-size:.88rem; font-weight:700; color:#526174; }
.qr-live-dot { width:9px; height:9px; border-radius:50%; background:#1e9e62; box-shadow:0 0 0 4px rgba(30,158,98,.12); }
.qr-countdown-card { width:min(100%,390px); margin:0 auto; display:flex; align-items:center; gap:18px; padding:14px 16px; border:1px solid #e2e7ee; border-radius:16px; background:#fff; box-sizing:border-box; }
.qr-countdown-card > div { min-width:78px; display:flex; flex-direction:column; gap:2px; }
.qr-countdown-card strong { font-size:1.35rem; line-height:1.1; color:#182237; }
.qr-countdown-track { height:8px; flex:1; overflow:hidden; border-radius:99px; background:#edf1f5; }
.qr-countdown-track span { display:block; height:100%; width:100%; border-radius:inherit; background:#1e9e62; transition:width .25s linear; }
.qr-security-note { width:min(100%,390px); margin:14px auto 0; display:flex; flex-direction:column; gap:4px; padding:12px 14px; box-sizing:border-box; border-radius:14px; background:#f6f8fb; color:#536174; font-size:.84rem; line-height:1.45; }
.member-link-status { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:2px 0 4px; }
.member-link-status .badge { white-space:nowrap; }
@media (max-width:700px){ .beneficiary-qr-stage{padding:20px 12px 16px;} .beneficiary-qr,.beneficiary-qr canvas,.beneficiary-qr img{width:230px !important;height:230px !important;} .qr-countdown-card,.qr-security-note{width:100%;} }

.beneficiary-email { display:inline-block; max-width:260px; overflow-wrap:anywhere; }
.member-edit-card { max-width:860px; }
.member-edit-info { min-width:0; }

/* ============================================================
   v1.2.3.0 — Mi cuenta: experiencia móvil tipo app
   ============================================================ */
.beneficiary-app{max-width:900px;margin:0 auto;padding-bottom:30px}.beneficiary-mobile-header{display:none}.beneficiary-desktop-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.beneficiary-desktop-head h1{margin:5px 0}.beneficiary-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;background:#eef2f6;padding:6px;border-radius:16px;margin-bottom:18px}.beneficiary-tab{border:0;background:transparent;border-radius:12px;padding:10px 8px;color:#5f6d7f;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;font:inherit}.beneficiary-tab span{font-size:18px;line-height:1.1}.beneficiary-tab b{font-size:12px}.beneficiary-tab small{font-size:11px}.beneficiary-tab.active{background:#fff;color:var(--tenant-primary,#0F3D3E);box-shadow:0 2px 10px rgba(15,61,62,.08)}.beneficiary-section{display:none}.beneficiary-section.active{display:block}.section-kicker{display:block;font-size:11px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#526173;margin-bottom:4px}.beneficiary-credential-stage{display:flex;flex-direction:column;align-items:center;max-width:440px;margin:18px auto;padding:18px 18px 20px;border:1px solid #dfe5ec;border-radius:28px;background:linear-gradient(145deg,#f7fafc,#fff);box-shadow:0 16px 38px rgba(15,61,62,.09)}.credential-design-name{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:#526173;margin-bottom:12px}.beneficiary-credential-frame{display:grid;place-items:center;background:#fff;padding:14px;border:1px solid #e4e9f0;border-radius:22px;box-shadow:0 8px 24px rgba(15,61,62,.09);min-height:278px}.beneficiary-qr{width:250px;height:250px;display:grid;place-items:center}.beneficiary-qr canvas,.beneficiary-qr>img:not(.credential-designed-qr){width:250px!important;height:250px!important;display:block}.beneficiary-qr-image{width:250px!important;height:250px!important;display:block;object-fit:contain;background:#fff}
.beneficiary-qr-svg{width:250px!important;height:250px!important;display:block;background:#fff}.credential-designed-qr{width:320px!important;height:400px!important;object-fit:contain;display:block}.credential-user{text-align:center;margin-top:14px}.credential-user strong{display:block;font-size:18px}.credential-user span{display:block;color:#526173;font-size:12px;margin-top:3px}.quick-card{display:flex;justify-content:space-between;align-items:center;gap:18px}.history-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:16px 0}.history-summary>div{background:#f7f9fb;border:1px solid #e2e7ed;border-radius:14px;padding:13px}.history-summary span,.profile-field span{display:block;color:#526173;font-size:11px;text-transform:uppercase;letter-spacing:.06em}.history-summary strong{font-size:20px;display:block;margin-top:4px}.history-list{display:none}.beneficiary-design-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}.design-card{position:relative;text-align:left;border:1px solid #dfe5ec;background:#fff;border-radius:18px;padding:12px;cursor:pointer;font:inherit;color:var(--tenant-primary,#0F3D3E);transition:.15s}.design-card:hover,.design-card.selected{border-color:var(--tenant-primary,#0F3D3E);box-shadow:0 7px 20px rgba(15,61,62,.08)}.design-card.selected{outline:2px solid rgba(23,32,51,.08)}.design-preview{height:150px;border-radius:13px;background:var(--bg,#f8fafc);display:grid;place-items:center;margin-bottom:10px;overflow:hidden;color:var(--fg,var(--tenant-primary,#0F3D3E));border:1px solid #e6ebf0}.design-preview span{font-size:42px;font-weight:900;color:var(--fg,var(--tenant-primary,#0F3D3E))}.design-preview.classic{background:linear-gradient(145deg,#f1f4f7,#fff)}.design-card strong,.design-card small,.design-card em{display:block}.design-card strong{font-size:14px}.design-card small{font-size:11px;color:#526173;margin-top:3px;min-height:30px}.design-card em{font-style:normal;font-size:11px;font-weight:900;color:#17733b;margin-top:8px}.beneficiary-profile-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:18px}.profile-highlight{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;background:#f7f9fb;border:1px solid #e1e6ed;border-radius:16px;padding:14px}.profile-avatar{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--tenant-primary,#0F3D3E);color:#fff;font-weight:900}.profile-field{padding:13px;border:1px solid #e1e6ed;border-radius:14px}.profile-field strong{display:block;margin-top:5px;word-break:break-word}.beneficiary-bottom-nav{display:none}
@media(max-width:700px){body{background:var(--tenant-background)}.beneficiary-app{width:100%;box-sizing:border-box;padding:0 14px 92px}.beneficiary-desktop-head{display:none}.beneficiary-mobile-header{display:flex;justify-content:space-between;align-items:center;padding:14px 2px 12px}.beneficiary-brand{display:flex;align-items:center;gap:9px}.beneficiary-brand img{width:35px;height:35px;object-fit:contain}.beneficiary-brand strong{display:block;font-size:15px}.beneficiary-brand .eyebrow{font-size:8px}.icon-button{width:38px;height:38px;border:1px solid #dfe5ec;border-radius:12px;background:#fff;font-weight:900}.beneficiary-tabs{display:none}.beneficiary-section.active{display:block}.card{border-radius:20px;padding:18px}.section-title{gap:10px}.section-title h2{font-size:24px}.qr-account-card{padding:17px}.beneficiary-credential-stage{margin-top:16px;padding:15px 10px 17px;border-radius:24px}.beneficiary-credential-frame{min-height:245px;padding:11px}.beneficiary-qr,.beneficiary-qr canvas,.beneficiary-qr>img:not(.credential-designed-qr){width:220px!important;height:220px!important}.beneficiary-qr-image{width:220px!important;height:220px!important}
.beneficiary-qr-svg{width:220px!important;height:220px!important}.credential-designed-qr{width:285px!important;height:355px!important}.qr-countdown-card{margin-top:12px}.qr-beneficiary-actions button{width:100%}.quick-card{flex-direction:column;align-items:stretch}.history-desktop{display:none}.history-list{display:block}.history-summary{grid-template-columns:1fr 1fr}.history-item{border:1px solid #e1e6ed;border-radius:16px;padding:14px;background:#fff;margin-bottom:10px}.history-item-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.history-item time{display:block;color:#526173;font-size:11px;margin:5px 0 12px}.history-item-grid{display:grid;grid-template-columns:1.4fr .8fr .9fr;gap:8px}.history-item-grid span{background:#f7f9fb;border-radius:10px;padding:8px}.history-item-grid small{display:block;color:#526173;font-size:11px;text-transform:uppercase}.history-item-grid b{font-size:11px;display:block;margin-top:3px}.beneficiary-design-grid{grid-template-columns:1fr}.design-preview{height:180px}.beneficiary-profile-grid{grid-template-columns:1fr}.profile-highlight{grid-column:1}.beneficiary-bottom-nav{position:fixed;z-index:50;left:10px;right:10px;bottom:10px;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:5px;background:rgba(255,255,255,.96);border:1px solid #dce3eb;border-radius:18px;box-shadow:0 10px 30px rgba(15,61,62,.15);backdrop-filter:blur(12px)}.beneficiary-bottom-nav .beneficiary-tab{padding:8px 4px}.beneficiary-bottom-nav .beneficiary-tab span{font-size:16px}.beneficiary-bottom-nav .beneficiary-tab b{font-size:11px}.beneficiary-bottom-nav .beneficiary-tab.active{box-shadow:none;background:#eef2f7}.beneficiary-mobile-header+ .beneficiary-desktop-head{display:none}}
@media(max-width:700px){.design-preview img{width:100%;height:100%;object-fit:contain;display:block}.design-card{padding:10px}.design-card small{min-height:auto}.section-title button{white-space:nowrap}}

/* v1.2.4.0 — Mi cuenta móvil: QR como pantalla principal, navegación única inferior */
@media (max-width:700px){
  html,body{min-height:100%;overflow-x:hidden}
  body{background:#F1F5F9}
  .beneficiary-app{width:100%;max-width:none;min-height:100svh;box-sizing:border-box;padding:0 10px 88px}
  .beneficiary-mobile-header{padding:10px 4px 8px}
  .beneficiary-brand img{width:32px;height:32px}
  .beneficiary-brand strong{font-size:14px}
  .beneficiary-brand .eyebrow{font-size:7px}
  .beneficiary-mobile-header .icon-button{width:36px;height:36px}

  /* En móvil solo existe una navegación: la barra inferior. */
  .beneficiary-tabs{display:none!important}
  .beneficiary-section.active{display:block}

  /* La pantalla QR ocupa prácticamente todo el viewport. */
  .qr-account-card{padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
  .qr-account-card>.section-title{display:none!important}
  .beneficiary-credential-stage{width:100%;max-width:none;box-sizing:border-box;margin:0;padding:0 0 8px;border:0;border-radius:0;background:transparent;box-shadow:none}
  .credential-design-name,.credential-user,.qr-live-meta{display:none!important}
  .beneficiary-credential-frame{width:100%;box-sizing:border-box;min-height:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
  .beneficiary-qr{width:100%;height:auto;min-height:0;display:grid;place-items:center}
  .beneficiary-qr canvas,.beneficiary-qr>img:not(.credential-designed-qr){width:min(92vw,430px)!important;height:auto!important;max-height:calc(100svh - 235px);object-fit:contain}
  .beneficiary-qr .credential-designed-qr{width:min(94vw,430px)!important;height:auto!important;max-height:calc(100svh - 235px);object-fit:contain}

  .qr-countdown-card{width:min(94vw,430px);box-sizing:border-box;margin:4px auto 0;padding:10px 12px;border-radius:15px}
  .qr-countdown-card strong{font-size:19px}
  .qr-beneficiary-actions{display:none!important}
  .qr-security-note{display:none!important}
  #qrMessage{font-size:11px;margin:5px 8px 0;text-align:center}
  .quick-card{display:none!important}

  /* Las demás secciones conservan el contenido, pero no añaden otro menú. */
  .beneficiary-bottom-nav{left:8px;right:8px;bottom:8px}
}

/* v1.2.4.2 — Mi cuenta móvil: credencial completa sin solapamientos */
@media (max-width:700px){
  .beneficiary-credential-stage,
  .beneficiary-credential-frame,
  .beneficiary-qr{
    height:auto!important;
    min-height:0!important;
    overflow:visible!important;
  }
  .beneficiary-qr{
    width:100%!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
  }
  .beneficiary-qr .credential-designed-qr{
    display:block!important;
    width:min(86vw,360px)!important;
    height:auto!important;
    max-width:100%!important;
    max-height:none!important;
    aspect-ratio:4 / 5!important;
    object-fit:contain!important;
    flex:0 0 auto!important;
  }
  .beneficiary-qr canvas,
  .beneficiary-qr>img:not(.credential-designed-qr),
  .beneficiary-qr>svg{
    display:block!important;
    width:min(78vw,320px)!important;
    height:auto!important;
    max-width:100%!important;
    max-height:none!important;
    flex:0 0 auto!important;
  }
  .qr-countdown-card{
    position:relative!important;
    z-index:1!important;
    margin:10px auto 0!important;
  }
}


/* v1.2.4.3 — corrección móvil definitiva de Mi QR */
@media (max-width:700px){
  html,body{width:100%;max-width:100%;overflow-x:hidden!important}
  .beneficiary-app{width:100%!important;max-width:none!important;margin:0!important;padding-left:12px!important;padding-right:12px!important}
  .beneficiary-mobile-header{width:100%!important;box-sizing:border-box!important}
  .qr-account-card{width:100vw!important;max-width:100vw!important;margin-left:calc(50% - 50vw)!important;margin-right:0!important;padding:0!important;overflow:visible!important}
  .beneficiary-credential-stage{width:100vw!important;max-width:100vw!important;margin:0!important;padding:0 0 8px!important;overflow:visible!important}
  .beneficiary-credential-frame{width:100vw!important;max-width:100vw!important;margin:0!important;padding:0!important;overflow:visible!important}
  .beneficiary-qr{width:100vw!important;max-width:100vw!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:visible!important}
  .beneficiary-qr .credential-designed-qr{display:block!important;width:min(calc(100vw - 24px),380px)!important;height:auto!important;max-width:calc(100vw - 24px)!important;min-width:0!important;aspect-ratio:4/5!important;object-fit:contain!important;margin:0 auto!important;position:static!important;transform:none!important}
  .beneficiary-qr canvas,.beneficiary-qr>img:not(.credential-designed-qr){display:block!important;width:min(calc(100vw - 48px),330px)!important;height:auto!important;max-width:calc(100vw - 48px)!important;margin:0 auto!important;position:static!important;transform:none!important}
  .qr-countdown-card{width:calc(100vw - 24px)!important;max-width:380px!important;margin:8px auto 0!important}
  #qrMessage{width:calc(100vw - 32px)!important;max-width:380px!important;margin:5px auto!important}
}

/* ============================================================
   INDEF v1.3.0.0 — QR ampliable + navegación móvil refinada
   ============================================================ */
.qr-open-trigger{cursor:zoom-in}
.qr-tap-hint{display:none;color:#526173;font-size:.72rem;font-weight:700;margin-left:4px}
.qr-lightbox[hidden]{display:none!important}
.qr-lightbox{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;box-sizing:border-box}
.qr-lightbox-backdrop{position:absolute;inset:0;background:rgba(8,18,35,.78);backdrop-filter:blur(5px)}
.qr-lightbox-dialog{position:relative;z-index:1;width:min(92vw,760px);max-height:92vh;overflow:auto;background:#fff;border-radius:26px;padding:22px;box-sizing:border-box;box-shadow:0 28px 80px rgba(0,0,0,.28);display:flex;flex-direction:column;align-items:center}
.qr-lightbox-close{position:absolute;right:14px;top:14px;width:42px;height:42px;border:0;border-radius:14px;background:#eef2f6;color:var(--tenant-primary,#0F3D3E);font-size:28px;line-height:1;cursor:pointer}
.qr-lightbox-head{align-self:flex-start;padding-right:50px;margin-bottom:14px}.qr-lightbox-head strong{display:block;font-size:22px;color:var(--tenant-primary,#0F3D3E);margin-top:2px}
.qr-lightbox-image-wrap{width:100%;display:flex;justify-content:center;align-items:center;min-height:200px;background:#f5f7fa;border:1px solid #e1e6ed;border-radius:20px;padding:16px;box-sizing:border-box}
.qr-lightbox-image-wrap img{display:block;max-width:100%;max-height:70vh;width:auto;height:auto;object-fit:contain;image-rendering:auto}
.qr-lightbox-help{margin:12px 0 0;color:#526173;text-align:center;font-size:13px;font-weight:700}
.nav-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#f2f5f8;transition:.15s ease}.nav-icon svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.beneficiary-tab.active .nav-icon{background:#edf5f1;color:#1e9e62}.beneficiary-tab b{line-height:1.15}
@media(max-width:700px){
  .beneficiary-credential-frame{cursor:zoom-in}
  .qr-tap-hint{display:inline}
  .qr-lightbox{padding:10px}
  .qr-lightbox-dialog{width:100%;max-height:94vh;border-radius:24px;padding:16px}
  .qr-lightbox-image-wrap{min-height:0;padding:8px;border-radius:16px}
  .qr-lightbox-image-wrap img{max-width:100%;max-height:78vh}
  .qr-lightbox-help{font-size:12px;margin-bottom:2px}
  .beneficiary-bottom-nav .beneficiary-tab{padding:7px 4px 8px;gap:4px}
  .beneficiary-bottom-nav .beneficiary-tab b{font-size:11px}
  .beneficiary-bottom-nav .nav-icon{width:36px;height:36px}
}
body.qr-lightbox-open{overflow:hidden}

/* INDEF v1.4.0.0 — experiencia móvil del beneficiario */
.beneficiary-help{margin:24px 0 96px;padding:20px;border-radius:20px;background:#fff;box-shadow:0 10px 30px rgba(16,24,40,.06);text-align:left}.beneficiary-help-head{margin-bottom:14px}.beneficiary-help-head h2{margin:4px 0 0}.beneficiary-help-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.beneficiary-help-grid article{border:1px solid #e6eaf0;border-radius:16px;padding:15px;background:#fff}.beneficiary-help-grid strong{display:block;margin-top:8px}.beneficiary-help-grid p{margin:6px 0 0;line-height:1.45;color:#526173;font-size:.94rem}.help-icon{display:inline-flex;width:34px;height:34px;border-radius:10px;align-items:center;justify-content:center;border:1px solid #dfe5ec;font-size:.78rem;font-weight:700}.beneficiary-nav-item{display:flex;align-items:center;justify-content:center;gap:6px;text-decoration:none}.nav-icon{display:inline-flex;width:28px;height:28px;border-radius:9px;align-items:center;justify-content:center;font-weight:700}@media(max-width:700px){.beneficiary-help{margin:12px 0 92px;padding:15px}.beneficiary-help-grid{grid-template-columns:1fr}.beneficiary-help-grid article{padding:14px}}

/* INDEF v1.5.0.0 — campañas y promociones */
.campaign-app,.promotions-app{max-width:900px;margin:auto;padding:20px}.campaign-app label{display:block;margin:12px 0}.campaign-app input,.campaign-app textarea{width:100%;box-sizing:border-box;padding:11px;border:1px solid #d9dee7;border-radius:10px;font:inherit}.campaign-app textarea{min-height:110px;resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.check{display:inline-flex!important;align-items:center;gap:8px;margin-right:18px!important}.check input{width:auto}.promotion-grid{display:grid;gap:16px}.promotion-card{overflow:hidden;background:#fff;border:1px solid #e4e7ec;border-radius:20px}.promotion-card img{display:block;width:100%;max-height:260px;object-fit:cover}.promotion-card>div{padding:20px}.promotion-card p{line-height:1.55}.inline-btn{display:inline-block;margin-top:12px;text-decoration:none;padding:10px 14px;border-radius:10px}@media(max-width:650px){.form-row{grid-template-columns:1fr}.campaign-app,.promotions-app{padding:14px}.check{display:flex!important}}


/* v1.5.1.1 — navegación global corregida */
.admin-shell .sidebar .nav-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 20px;font-size:0}.admin-shell .sidebar .nav-icon svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.admin-shell .sidebar .nav-subitem{padding-left:42px;min-height:38px;font-size:13px;font-weight:700}.admin-shell .sidebar .nav-subitem .nav-icon{width:18px;height:18px;flex-basis:18px}.admin-shell .sidebar .nav-subitem .nav-icon svg{width:18px;height:18px}.admin-shell .sidebar .nav-subitem:hover{background:rgba(255,255,255,.07);color:#fff}.admin-shell .sidebar .nav-subitem.active{background:rgba(255,255,255,.14);color:#fff;box-shadow:none}.admin-shell .sidebar .sidebar-section-label{margin-top:20px}.admin-shell .sidebar .sidebar-footer{margin-top:auto;flex:0 0 auto}

/* v1.5.1.1 — sidebar global definitivo */
.admin-shell .sidebar .nav-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 20px;font-size:0;color:currentColor}.admin-shell .sidebar .nav-icon svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.admin-shell .sidebar .nav-subitem{padding-left:42px;min-height:38px;font-size:13px}.admin-shell .sidebar .nav-subitem .nav-icon{width:18px;height:18px;flex-basis:18px}.admin-shell .sidebar .nav-subitem .nav-icon svg{width:18px;height:18px}.admin-shell .sidebar .nav-subitem.active{background:rgba(255,255,255,.14);color:#fff;box-shadow:none}

/* v1.5.1.2 — corrección definitiva de iconos y menú global */
.admin-shell .sidebar .nav-icon{
  width:20px!important;height:20px!important;min-width:20px!important;
  display:inline-flex!important;align-items:center!important;justify-content:center!important;
  flex:0 0 20px!important;padding:0!important;margin:0!important;
  background:transparent!important;border:0!important;border-radius:0!important;
  box-shadow:none!important;font-size:0!important;color:currentColor!important;
}
.admin-shell .sidebar .nav-icon svg{
  width:20px!important;height:20px!important;display:block!important;
  fill:none!important;stroke:currentColor!important;stroke-width:1.75!important;
  stroke-linecap:round!important;stroke-linejoin:round!important;
}
.admin-shell .sidebar .nav-subitem{padding-left:42px!important;min-height:38px!important}
.admin-shell .sidebar .nav-subitem .nav-icon{width:18px!important;height:18px!important;flex-basis:18px!important}
.admin-shell .sidebar .nav-subitem .nav-icon svg{width:18px!important;height:18px!important}
.admin-shell .sidebar-group{margin-top:20px!important}
.admin-shell .sidebar-group-summary{
  list-style:none!important;cursor:pointer;display:flex;align-items:center;gap:11px;
  width:100%;box-sizing:border-box;padding:9px 11px;border-radius:9px;
  color:#c7d2df;font-weight:750;font-size:13px;line-height:1.2;
}
.admin-shell .sidebar-group-summary::-webkit-details-marker{display:none}
.admin-shell .sidebar-group-summary:hover{background:rgba(255,255,255,.075);color:#fff}
.admin-shell .sidebar-group-summary .nav-icon{color:currentColor!important}
.admin-shell .sidebar-group-chevron{margin-left:auto;opacity:.65;transition:transform .16s ease}
.admin-shell .sidebar-group[open] .sidebar-group-chevron{transform:rotate(180deg)}
.admin-shell .sidebar-subnav{padding-top:3px}

/* v1.6.0.0 — campañas guardadas y centro de notificaciones */
.campaign-form-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px}.campaign-form-actions .message{margin:0}
.campaign-list{display:grid;gap:12px;margin-top:12px}.campaign-row{border:1px solid #e1e6ed;border-radius:16px;padding:16px;background:#fff}.campaign-row-main{display:grid;grid-template-columns:auto 1fr;gap:14px}.campaign-row-main>img{width:100px;height:76px;object-fit:cover;border-radius:12px}.campaign-row-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.campaign-status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;background:#eef2f6}.campaign-status.active{background:#dff5e8;color:#17733b}.campaign-status.scheduled{background:#eaf0ff;color:#3159a8}.campaign-status.paused,.campaign-status.expired{background:#f2f3f5;color:#697586}.campaign-date{font-size:11px;color:#526173}.campaign-row h3{margin:7px 0 4px}.campaign-row p{margin:0;color:#617086;line-height:1.45}.campaign-audiences{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.campaign-audiences span{padding:5px 8px;border-radius:8px;background:#F1F5F9;color:#566274;font-size:11px;font-weight:800}.campaign-row-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid #edf0f3}.campaign-row-actions button{min-width:100px}.campaign-row-state{font-size:11px;color:#526173}.notification-roadmap-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.notification-roadmap-grid>div{padding:14px;border:1px solid #e2e7ed;border-radius:14px;background:#f8fafc}.notification-roadmap-grid strong,.notification-roadmap-grid span{display:block}.notification-roadmap-grid span{color:#526173;font-size:13px;line-height:1.4;margin-top:4px}
.beneficiary-header-actions{display:flex;align-items:center;gap:7px}.notification-button{position:relative;width:38px;height:38px;border:1px solid #dfe5ec;border-radius:12px;background:#fff;color:var(--tenant-primary,#0F3D3E);font-size:18px;cursor:pointer;display:grid;place-items:center}.notification-button .notification-icon{display:grid;place-items:center;width:20px;height:20px;transform-origin:50% 10%;transition:transform .2s ease}.notification-button .notification-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.notification-button:hover .notification-icon{transform:rotate(-8deg) scale(1.06)}.notification-button b{position:absolute;right:-4px;top:-5px;min-width:16px;height:16px;padding:0 3px;border-radius:99px;background:#c92d20;color:#fff;font-size:11px;display:grid;place-items:center}.notification-button b[hidden]{display:none}.notification-center-card{min-height:300px}.notification-permission{margin:10px 0;padding:10px 12px;border-radius:12px;background:#f7f9fb;color:#526173;font-size:12px}.notification-permission.enabled{background:#e9f7ef;color:#17733b}.notification-permission.denied{background:#fff1f0;color:#a52b24}.notification-list{display:grid;gap:12px}.notification-card{display:grid;grid-template-columns:auto 1fr;gap:14px;border:1px solid #e1e6ed;border-radius:16px;padding:12px;background:#fff;cursor:pointer}.notification-card.unread{border-color:#b9d9c5;box-shadow:0 5px 18px rgba(23,115,59,.06)}.notification-card.read{opacity:.9}.notification-card>img{width:105px;height:82px;object-fit:cover;border-radius:12px}.notification-card-body{min-width:0}.notification-card-top{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:#526173}.notification-card.unread .notification-card-top span{font-weight:900;color:#17733b}.notification-card h3{margin:6px 0 4px}.notification-card p{margin:0;color:#617086;line-height:1.45}.notification-card small{display:block;color:#526173;margin-top:8px}.notification-card .inline-btn{display:inline-block;margin-top:10px}
@media(max-width:650px){.notification-toolbar{align-items:stretch;flex-direction:column}.notification-toolbar .secondary{width:100%}.campaign-row-main,.notification-card{grid-template-columns:1fr}.campaign-row-main>img,.notification-card>img{width:100%;height:150px}.notification-roadmap-grid{grid-template-columns:1fr}.campaign-row-actions{align-items:stretch}.campaign-row-actions button{width:100%}.notification-center-card .section-title{align-items:stretch}.notification-center-card .section-title>button{width:100%}}

/* v1.6.0.2 — final visual polish for sidebar/admin */
.sidebar .nav-icon,
.sidebar-group-summary .nav-icon{
  flex:0 0 22px;
  color:inherit;
  background:transparent;
}
.sidebar .nav-icon svg,
.sidebar-group-summary .nav-icon svg{
  stroke:currentColor!important;
  fill:none!important;
  stroke-width:1.8;
}
.sidebar .nav-item.active .nav-icon,
.sidebar-group-summary .nav-icon{opacity:1}
.sidebar .nav-item.active{box-shadow:none}
.sidebar-footer{position:sticky;bottom:0;z-index:4;background:inherit}
.admin-management-card{box-sizing:border-box}
.admin-management-card .table-wrap{max-width:100%;overflow-x:auto}
.admin-management-card .table-wrap table{min-width:820px}
.admin-management-card .message.error{margin:14px 0}
@media(max-width:700px){
  .admin-management-card .table-wrap table{min-width:720px}
}

/* =========================================================
   v1.6.0.3 — sidebar + admin + notification polish
   ========================================================= */
.admin-shell .sidebar .nav-icon,
.admin-shell .sidebar-group-summary .nav-icon{
  width:22px!important;height:22px!important;min-width:22px!important;
  flex:0 0 22px!important;display:inline-flex!important;
  align-items:center!important;justify-content:center!important;
  padding:0!important;margin:0!important;background:transparent!important;
  border:0!important;box-shadow:none!important;border-radius:0!important;
  color:currentColor!important;opacity:1!important;
}
.admin-shell .sidebar .nav-icon svg,
.admin-shell .sidebar-group-summary .nav-icon svg{
  width:19px!important;height:19px!important;display:block!important;
  fill:none!important;stroke:currentColor!important;
  stroke-width:1.8!important;stroke-linecap:round!important;stroke-linejoin:round!important;
}
.admin-shell .sidebar .nav-subitem{
  padding-left:40px!important;gap:10px!important;
}
.admin-shell .sidebar .nav-subitem .nav-icon{
  width:18px!important;height:18px!important;min-width:18px!important;flex-basis:18px!important;
}
.admin-shell .sidebar .nav-subitem .nav-icon svg{
  width:17px!important;height:17px!important;
}
.admin-shell .sidebar .nav-item.active{
  background:#fff!important;color:var(--tenant-primary,#0F3D3E)!important;
  box-shadow:0 3px 10px rgba(0,0,0,.13)!important;
}
.admin-shell .sidebar .nav-subitem.active{
  background:rgba(255,255,255,.14)!important;color:#fff!important;
  box-shadow:none!important;
}
.admin-shell .sidebar-footer{
  position:sticky!important;bottom:0!important;z-index:5!important;
  background:var(--tenant-primary,#0F3D3E)!important;
}
.admin-shell .sidebar{
  overflow-y:auto!important;overflow-x:hidden!important;
  scrollbar-width:thin;
}
.admin-management-card{box-sizing:border-box!important;width:100%!important;min-width:0!important}
.admin-management-card .table-wrap{width:100%!important;max-width:100%!important;overflow-x:auto!important}
.admin-management-card table{min-width:820px}
.notification-settings-grid{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px
}
.notification-settings-grid>div{
  border:1px solid #e1e6ed;border-radius:14px;padding:16px;background:#fbfcfd;
  display:flex;flex-direction:column;gap:6px
}
.notification-settings-grid span{font-size:13px;color:#65758b;line-height:1.45}
.notification-settings-card .message{margin-top:14px}
@media(max-width:850px){.notification-settings-grid{grid-template-columns:1fr}}

.notification-capability{
  margin:0 0 14px;padding:12px 14px;border:1px solid #dce4ee;border-radius:12px;
  background:#f8fafc;color:#40536b;font-size:13px;line-height:1.45
}

.notification-count{display:inline-flex;min-width:24px;height:24px;padding:0 7px;align-items:center;justify-content:center;border-radius:999px;background:#d92d20;color:#fff;font-size:12px;vertical-align:middle;margin-left:6px}
.notification-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0;padding:10px 0;border-top:1px solid #edf0f3;border-bottom:1px solid #edf0f3}.notification-toolbar .secondary{padding:9px 13px;white-space:nowrap}.notification-toolbar .secondary:disabled{opacity:.55;cursor:default}.notification-card.read{cursor:default}.notification-card.unread{position:relative}.notification-card.unread:before{content:"";position:absolute;left:5px;top:17px;width:5px;height:5px;border-radius:50%;background:#1f9d63}
.campaign-metrics{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.campaign-metrics span{padding:6px 9px;border:1px solid #e3e8ef;border-radius:999px;background:#f8fafc;font-size:12px;color:#526173}
.campaign-metrics b{color:#0f172a;margin-left:3px}
.campaign-schedule{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.campaign-schedule span{padding:7px 9px;border:1px solid #e3e8ef;border-radius:9px;background:#f8fafc;color:#5f6b7a;font-size:11px}.campaign-cooldown{font-weight:800}.campaign-help{font-size:13px;margin-top:4px}.campaign-indefinite{margin-top:4px!important}
.campaign-status.cancelled{background:#fde7e7;color:#a33}.campaign-status.expired{background:#f2f3f5;color:#697586}

.audience-toolbar{margin-bottom:12px}.audience-all{display:flex!important;align-items:flex-start;gap:8px;padding:12px 14px;border:1px solid #dce5f0;border-radius:14px;background:#f7faff}.audience-all span{display:block;margin-left:2px;font-size:12px;font-weight:500;color:#6b7a90}.audience-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.audience-option{padding:10px 12px;border:1px solid #e2e8f0;border-radius:12px;background:#fff}.audience-option input:disabled+*{opacity:.6}@media(max-width:600px){.audience-grid{grid-template-columns:1fr}}
.campaign-coupon-box{margin:16px 0;padding:16px;border:1px solid #dfe6ef;border-radius:16px;background:#f8fafc}.campaign-coupon-box h3{margin:4px 0}.coupon-fields{margin-top:12px}.coupon-fields.hidden{display:none}.coupon-stack-option{display:flex;flex-direction:column;justify-content:center;padding:10px;border:1px solid #e1e7ef;border-radius:12px;background:#fff}.coupon-stack-option .check{margin:0!important}.coupon-note{margin:8px 0 0}.promo-code-box{margin:14px 0;padding:14px;border:1px solid #e1e6ed;border-radius:14px;background:#f8fafc}.promo-code-row{display:flex;gap:10px}.promo-code-row input{flex:1}.promo-code-row button{white-space:nowrap}.promo-code-box .message{margin:8px 0 0}.campaign-coupon-chip{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}.campaign-coupon-chip span{padding:6px 9px;border-radius:999px;background:#edf7f1;color:#167144;font-size:11px;font-weight:800}.campaign-coupon-chip .stack{background:#eaf0ff;color:#3159a8}.campaign-coupon-chip .usage{background:#fff6df;color:#8a5b00}@media(max-width:600px){.promo-code-row{flex-direction:column}.promo-code-row button{width:100%}}

.beneficiary-coupon-card{margin:12px 0;padding:12px 14px;border:1px dashed #b9c6d8;border-radius:14px;background:#f8fafc;display:flex;flex-direction:column;gap:3px}.beneficiary-coupon-card span{font-size:11px;font-weight:900;letter-spacing:.08em;color:#526173}.beneficiary-coupon-card strong{font-size:22px;letter-spacing:.08em;color:var(--tenant-primary,#0F3D3E)}.beneficiary-coupon-card small{color:#526173}
.public-coupon-entry{margin:14px 0 4px;padding:14px;border:1px solid #dfe6ef;border-radius:16px;background:#f8fafc}.public-coupon-entry .full{width:100%}.promotion-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 0 18px}.stat-card{padding:20px;border:1px solid #dfe6ef;border-radius:18px;background:#fff;box-shadow:0 6px 24px rgba(15,35,60,.05)}.stat-card span{display:block;color:#526173;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.stat-card strong{display:block;margin-top:7px;font-size:30px;color:var(--tenant-primary,#0F3D3E)}.promotion-admin-list{display:grid;gap:14px}.promotion-admin-row{display:flex;justify-content:space-between;gap:20px;padding:20px;border:1px solid #dfe6ef;border-radius:18px;background:#fbfcfe}.promotion-admin-main{min-width:0}.promotion-admin-top{display:flex;gap:10px;align-items:center;margin-bottom:7px}.promotion-code-large{display:inline-block;margin:8px 0;padding:8px 12px;border-radius:10px;background:#eef4ff;color:#17335c;font-weight:900;letter-spacing:.1em;font-size:18px}.promotion-admin-meta{display:flex;gap:8px;flex-wrap:wrap;margin:5px 0 10px}.promotion-admin-meta span{padding:7px 9px;border-radius:999px;background:#f1f5f9;font-size:12px;font-weight:800}.promotion-admin-actions{display:flex;align-items:center}.table-scroll{overflow:auto}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:12px;border-bottom:1px solid #e5eaf0;text-align:left;white-space:nowrap}.data-table th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:#526173}.promotion-center-app .card{overflow:hidden}@media(max-width:800px){.promotion-summary-grid{grid-template-columns:1fr}.promotion-admin-row{flex-direction:column}.promotion-admin-actions button{width:100%}}

/* INDEF v1.7.0.0 — navegación lateral consistente y estable */
.admin-shell .sidebar > .sidebar-nav > .sidebar-group{
  margin-top:0!important;
}
.admin-shell .sidebar > .sidebar-group{
  margin-top:10px!important;
}
.admin-shell .sidebar .sidebar-group-summary{
  min-height:42px!important;
  box-sizing:border-box!important;
}
.admin-shell .sidebar .sidebar-subnav{
  margin-top:1px!important;
  gap:2px!important;
}
.admin-shell .sidebar .nav-subitem{
  min-height:38px!important;
  box-sizing:border-box!important;
}
.admin-shell .sidebar .nav-subitem .nav-icon{
  opacity:1!important;
}
.admin-shell .sidebar .sidebar-group:has(.nav-link.active) .sidebar-group-summary{
  background:rgba(255,255,255,.075);
  color:#fff;
}
@media(max-width:760px){
  .admin-shell .sidebar > .sidebar-group{margin-top:10px!important}
}


/* v1.12.0.4 — Rediseño Modo Caja: enfoque simple y operativo */
.cashier-app{max-width:620px;padding-top:28px}.cashier-shell{padding:22px;margin-bottom:0}.cashier-header{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:14px}.cashier-header h1{font-size:34px;letter-spacing:-.8px}.cashier-header p{margin:5px 0 0}.cashier-status{display:flex;align-items:center;gap:7px;padding:8px 10px;border:1px solid #e1e6ed;background:#f8fafc;border-radius:999px;font-size:11px;font-weight:900;color:#526174;max-width:190px}.status-dot{width:8px;height:8px;border-radius:50%;background:#2e9d61;box-shadow:0 0 0 4px rgba(46,157,97,.12);flex:0 0 auto}.cashier-context{margin:0 0 20px;padding:7px 10px;border:0;background:#f7f8fa;border-radius:10px;font-size:11px;color:#526173}.cashier-context>span{font-weight:800;text-transform:uppercase;letter-spacing:.08em}.cashier-context .device-context{padding:0;border:0;background:transparent;color:#526173}.cashier-context.branch-missing{background:#fff5f5;color:#b42318}
.cashier-identify-methods{display:flex;gap:8px;margin:0 0 12px;padding:4px;background:#f3f5f8;border-radius:12px}.cashier-identify-tab{flex:1;border:0;background:transparent;border-radius:9px;padding:10px 12px;font-weight:900;color:#526173;cursor:pointer}.cashier-identify-tab.active{background:#fff;color:var(--tenant-primary,#0F3D3E);box-shadow:0 2px 8px rgba(15,61,62,.08)}.cashier-identify-panel.hidden{display:none}.cashier-big-scan{width:100%;min-height:54px;font-size:15px}.cashier-identify-help{margin:8px 2px 0}.cashier-identify-panel .cashier-identify-row{margin-top:0}.cashier-identify-panel .cashier-identify-row input{height:52px}.cashier-identify-panel .cashier-identify-row button{min-width:140px}.cashier-step{border:1px solid #e1e6ed;border-radius:16px;padding:18px;background:#fff;margin-top:14px}.cashier-step-primary{box-shadow:0 8px 24px rgba(15,61,62,.04)}.cashier-step-head{display:flex;align-items:center;gap:11px;margin-bottom:13px}.step-number{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--tenant-primary,#0F3D3E);color:#fff;font-size:12px;font-weight:900;flex:0 0 28px}.cashier-step-head h2{font-size:18px;margin:0}.cashier-step-head p{margin:2px 0 0}.cashier-identify-row{margin-top:0}.cashier-identify-row input{height:50px;font-size:16px}.cashier-identify-row .scan-btn{min-width:160px;height:50px}.employee-preview-card{margin:14px 0 0;padding:12px 13px;border-radius:13px;background:#f7f9fb;border-color:#e5e9ef}.employee-preview-card .employee-photo{width:50px;height:50px;flex-basis:50px;border-radius:12px}.employee-preview-card strong{font-size:16px}.employee-preview-card .muted{font-size:12px}.employee-preview-card .badge{padding:4px 7px;font-size:11px}.employee-preview-card>div:last-child>div[style]{font-size:12px!important;margin-top:4px!important}.cashier-payment{margin-top:14px}.cashier-amount-label{margin:0}.cashier-amount-wrap{position:relative;margin-top:7px}.cashier-amount-wrap>span{position:absolute;left:15px;top:50%;transform:translateY(-50%);font-size:24px;font-weight:900;color:#526173;z-index:1}.cashier-amount-wrap input{height:66px;margin:0;padding:8px 15px 8px 38px;font-size:32px;font-weight:900;border-radius:14px}.cashier-optional,.cashier-public-option{margin-top:13px;border-top:1px solid #e7ebf0;padding-top:12px}.cashier-optional summary,.cashier-public-option summary{cursor:pointer;font-size:12px;font-weight:900;color:color-mix(in srgb,var(--tenant-accent,#25b094) 62%,#000)}.cashier-optional .promo-code-row{margin-top:10px}.cashier-summary{grid-template-columns:1fr 1fr;margin:14px 0}.cashier-summary>div{padding:11px 12px}.cashier-summary .purchase-total{grid-column:1 / -1;background:var(--tenant-primary,#0F3D3E);color:var(--tenant-secondary,#fff)}.cashier-summary .purchase-total span,.cashier-summary .purchase-total strong{color:var(--tenant-secondary,#fff)}.cashier-summary strong{font-size:17px}.cashier-actions{margin-top:5px}.cashier-actions button{min-height:48px}.cashier-public-option{margin-top:18px}.cashier-public-card{padding-top:10px}.cashier-public-card label{margin:11px 0}.cashier-public-card .purchase-summary{grid-template-columns:1fr 1fr}.cashier-admin-note{margin:18px 0 0;padding-top:14px;border-top:1px solid #e7ebf0}.cashier-confirm-simple{width:min(430px,100%)}.cashier-confirm-total{display:flex;justify-content:space-between;align-items:end;gap:12px;margin:18px 0;padding:15px;border-radius:14px;background:#f5f7fa}.cashier-confirm-total span{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#526173;font-weight:900}.cashier-confirm-total strong{font-size:28px}.cashier-confirm-simple .purchase-summary{grid-template-columns:1fr 1fr}.cashier-confirm-simple .purchase-summary .purchase-total{display:none}.cashier-scanner-card{width:min(500px,100%)}
@media(max-width:600px){.cashier-app{padding:12px 10px 30px}.cashier-shell{padding:16px;border-radius:18px}.cashier-header{gap:10px}.cashier-header h1{font-size:28px}.cashier-header .muted{font-size:12px}.cashier-status{max-width:145px;font-size:11px}.cashier-context{margin-bottom:14px}.cashier-step{padding:15px;border-radius:15px}.cashier-identify-row{grid-template-columns:1fr}.cashier-identify-row .scan-btn{width:100%}.cashier-summary,.cashier-public-card .purchase-summary{grid-template-columns:1fr}.cashier-summary .purchase-total{grid-column:auto}.cashier-confirm-simple .purchase-summary{grid-template-columns:1fr}.cashier-confirm-total strong{font-size:24px}}

.cashier-visit-btn{margin-top:14px;width:100%;}

/* v1.13 operations dashboard */
.ops-dashboard-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0 20px}
.ops-metric{padding:16px 18px;border:1px solid rgba(16,36,63,.09);border-radius:16px;background:linear-gradient(180deg,#fff,#f8fafc);display:flex;flex-direction:column;gap:5px}
.ops-metric span{font-size:11px;font-weight:800;letter-spacing:.08em;color:#526173}.ops-metric strong{font-size:24px;line-height:1.1}.ops-metric small{color:#526173;font-size:12px}
@media(max-width:900px){.ops-dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.ops-dashboard-grid{grid-template-columns:1fr}.ops-metric{padding:14px}}
/* v1.13.0.1 — engagement, geolocation and QR-only scanner view */
.engagement-card{margin-top:14px}.engagement-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.engagement-grid-compact{max-width:520px}.engagement-stat{border:1px solid #e4e9ef;border-radius:16px;padding:14px;background:#fbfcfd;display:flex;flex-direction:column;gap:4px}.engagement-stat span{font-size:20px}.engagement-stat strong{font-size:24px;color:var(--tenant-primary,#0F3D3E)}.engagement-stat small{color:#526173;font-weight:700}.engagement-message{margin-top:12px;padding:11px 13px;border-radius:12px;background:#f2f8f4;color:#226845;font-size:13px;font-weight:700}.engagement-milestones{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.engagement-milestones span{padding:6px 9px;border-radius:999px;background:#eef2f6;color:#637083;font-size:11px;font-weight:800}.profile-help{margin-top:18px;padding-top:18px;border-top:1px solid #e7ebf0}.profile-help h3{margin:4px 0}.help-mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px}.help-mini-grid article{display:flex;gap:8px;align-items:flex-start;border:1px solid #e3e8ee;border-radius:14px;padding:11px;background:#fbfcfd}.help-mini-grid b{min-width:32px;height:32px;border-radius:10px;background:#eef5f1;color:#23724b;display:grid;place-items:center;font-size:11px}.help-mini-grid span{font-size:12px;color:#526173;line-height:1.35}.campaign-location-box{margin-top:14px;padding:15px;border:1px solid #dfe6ed;border-radius:16px;background:#fbfcfd}.campaign-location-box .form-row{align-items:end}.campaign-location-box input{width:100%}.campaign-location-box .hidden{display:none!important}.location-fields{margin-top:12px}.location-helper{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.location-helper .secondary{white-space:nowrap}.location-precision{margin:8px 0 0}.location-helper #locationStatus{line-height:1.4}
@media(max-width:700px){.engagement-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.help-mini-grid{grid-template-columns:1fr}.engagement-stat{padding:12px}.engagement-stat strong{font-size:21px}}
/* v1.13.0.1 — nearby campaigns */
.nearby-card{margin-top:14px}.nearby-permission{margin:10px 0;padding:10px 12px;border-radius:12px;background:#f7f9fb;color:#526173;font-size:12px}.nearby-permission.enabled{background:#e9f7ef;color:#17733b}.nearby-permission.denied{background:#fff1f0;color:#a52b24}.nearby-list{display:grid;gap:10px}.nearby-campaign{display:flex;justify-content:space-between;gap:14px;border:1px solid #e2e7ed;border-radius:16px;padding:14px;background:#fff}.nearby-campaign h3{margin:5px 0 4px}.nearby-campaign p{margin:0;color:#526173;line-height:1.4}.nearby-distance{font-size:11px;font-weight:900;color:#28734d}.nearby-coupon{display:inline-block;margin-top:8px;letter-spacing:.06em}.nearby-cta{height:max-content;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center}@media(max-width:700px){.nearby-campaign{flex-direction:column}.nearby-cta{width:100%;justify-content:center}.nearby-card .section-title{align-items:flex-start;flex-direction:column}.nearby-card .section-title>button{width:100%}}

/* v1.13.0.1 loyalty experience */
.loyalty-level-card{margin-top:18px;padding:18px;border:1px solid rgba(15,23,42,.08);border-radius:18px;background:linear-gradient(180deg,#fff,#f8fafc)}
.loyalty-level{display:flex;align-items:center;gap:12px}.loyalty-level-badge{font-size:30px}.loyalty-level strong{display:block;font-size:18px}.loyalty-level small{display:block;color:#526173;margin-top:2px}.loyalty-progress{height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden;margin-top:14px}.loyalty-progress span{display:block;height:100%;width:0;border-radius:999px;background:currentColor;transition:width .35s ease}.loyalty-rewards-wrap{margin-top:20px}.loyalty-rewards{display:grid;gap:10px}.loyalty-reward{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid rgba(15,23,42,.08);border-radius:14px;background:#fff}.loyalty-reward-icon{font-size:24px}.loyalty-reward>div{flex:1}.loyalty-reward strong{display:block}.loyalty-reward p{margin:3px 0 0;color:#526173;font-size:13px}.loyalty-reward.claimed{opacity:.72}
@media(max-width:700px){.loyalty-reward{align-items:flex-start}.loyalty-reward .badge{margin-left:auto;white-space:nowrap}}

.loyalty-admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.loyalty-admin-list{display:grid;gap:10px;margin-top:10px}.loyalty-admin-item{display:flex;align-items:center;gap:12px;padding:13px;border:1px solid rgba(15,23,42,.08);border-radius:14px;background:#fff}.loyalty-admin-item>div{flex:1}.loyalty-admin-item strong,.loyalty-admin-item small{display:block}.loyalty-admin-item small{color:#526173;margin-top:2px}@media(max-width:800px){.loyalty-admin-grid{grid-template-columns:1fr}}
.wallet-card{overflow:hidden}.wallet-streak{font-weight:800;white-space:nowrap}.wallet-preview{display:flex;justify-content:space-between;gap:18px;align-items:center;border:1px solid var(--border,#dde2e8);border-radius:18px;padding:20px;background:linear-gradient(135deg,#f7f8fa,#fff)}.wallet-preview>div:first-child{display:grid;gap:4px}.wallet-preview strong{font-size:1.15rem}.wallet-preview span{font-weight:700}.wallet-preview small{color:#526173}.wallet-mini-code{width:72px;height:72px;background:repeating-linear-gradient(90deg,#111 0 3px,#fff 3px 6px);border-radius:8px}.wallet-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.wallet-actions button{min-height:44px}.wallet-card .message{min-height:1.2em}

/* v1.15.1 · Branding multiempresa: los componentes existentes heredan la identidad del tenant. */
body{background:var(--tenant-background);color:var(--tenant-text)}
.card,.stat-card,.ops-metric,.device-management,.device-audit-panel,.employee-tools,.employee-filters{background:var(--tenant-surface)}
button.primary,.primary{background:var(--tenant-primary)!important;color:var(--tenant-secondary)!important;border-radius:var(--tenant-radius)}
button.primary:hover,.primary:hover{filter:brightness(.94)}
a,.back-link{color:color-mix(in srgb,var(--tenant-accent) 62%,#000)}
input:focus,select:focus{border-color:var(--tenant-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--tenant-accent) 14%,transparent)}
.admin-shell .sidebar{background:var(--tenant-primary)!important}
.badge.phase{border-color:color-mix(in srgb,var(--tenant-accent) 20%,#fff)}

/* v1.15.1 · Administración de licencias, módulos y franquicias */
.license-editor-grid,.branding-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:16px}.license-editor-grid label,.branding-grid label{margin:0}.module-box{grid-column:1/-1;border:1px solid #e1e6ed;border-radius:14px;padding:16px;background:var(--tenant-background)}.module-box>strong{display:block;margin-bottom:10px}.module-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.module-check{display:flex!important;align-items:center;gap:8px;font-weight:700!important;margin:0!important;padding:9px 10px;border:1px solid #e1e6ed;border-radius:10px;background:var(--tenant-surface)}.module-check input{width:auto;margin:0}.branch-link-grid{display:grid;grid-template-columns:1.4fr 1fr auto;gap:10px;align-items:end;margin:16px 0}.branch-link-grid label{margin:0}.branding-preview{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding:18px;border:1px solid #e1e6ed;background:#fff}.branding-preview span{color:#526173}.branding-preview button{margin-left:auto}.branding-grid>button{justify-self:start}.action-buttons{display:flex;gap:7px;flex-wrap:wrap}@media(max-width:1000px){.license-editor-grid,.branding-grid{grid-template-columns:1fr 1fr}.module-grid{grid-template-columns:1fr 1fr}}@media(max-width:700px){.license-editor-grid,.branding-grid,.branch-link-grid{grid-template-columns:1fr}.module-grid{grid-template-columns:1fr}.branding-preview{align-items:flex-start;flex-direction:column}.branding-preview button{margin-left:0}}
#adminForm{grid-template-columns:1fr 1.4fr 1.15fr auto}
@media(max-width:1000px){#adminForm{grid-template-columns:1fr 1fr}#adminForm button{grid-column:auto}}
@media(max-width:600px){#adminForm{grid-template-columns:1fr}}

/* v1.15.6 — tenant theme stabilization
   Keep legacy component layout intact while routing neutral UI colors through tenant variables.
*/
body{background:var(--tenant-background)!important;color:var(--tenant-text)!important}
h1,h2,h3,h4,h5,strong,th{color:var(--tenant-text)}
.card,.stat-card,.ops-metric,.device-management,.device-audit-panel{background:var(--tenant-surface)!important;color:var(--tenant-text)}
input,select,textarea{background:var(--tenant-surface)!important;color:var(--tenant-text)!important;border-color:color-mix(in srgb,var(--tenant-text) 18%,var(--tenant-surface))!important}
input::placeholder,textarea::placeholder{color:color-mix(in srgb,var(--tenant-text) 55%,var(--tenant-surface))}
input:focus,select:focus,textarea:focus{border-color:var(--tenant-accent)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--tenant-accent) 15%,transparent)}
.primary,button.primary{background:var(--tenant-primary)!important;color:var(--tenant-secondary)!important}
.secondary,.secondary-link{background:color-mix(in srgb,var(--tenant-primary) 8%,var(--tenant-surface))!important;color:var(--tenant-text)!important;border:1px solid color-mix(in srgb,var(--tenant-text) 12%,var(--tenant-surface))}
.secondary:hover,.secondary-link:hover{background:color-mix(in srgb,var(--tenant-primary) 14%,var(--tenant-surface))!important}
a{color:color-mix(in srgb,var(--tenant-accent) 62%,#000)}
.muted{color:color-mix(in srgb,var(--tenant-text) 76%,var(--tenant-surface))!important}
.eyebrow{color:color-mix(in srgb,var(--tenant-primary) 72%,var(--tenant-text))}
table th,table td{border-bottom-color:color-mix(in srgb,var(--tenant-text) 10%,var(--tenant-surface))}
.empty-state{color:color-mix(in srgb,var(--tenant-text) 76%,var(--tenant-surface))}
.quick-card,.employee-filters,.employee-tools,.admin-help,.module-box{background:color-mix(in srgb,var(--tenant-primary) 3%,var(--tenant-surface))!important;border-color:color-mix(in srgb,var(--tenant-text) 10%,var(--tenant-surface))}
.branding-preview{background:var(--tenant-surface)!important;color:var(--tenant-text)!important}
.branch-panel,.scope-grid{background:color-mix(in srgb,var(--tenant-primary) 3%,var(--tenant-surface));border-color:color-mix(in srgb,var(--tenant-text) 10%,var(--tenant-surface))}

/* v1.16.0 · Portales separados */
.master-portal .sidebar,.master-login .login-card{--portal-primary:#0F3D3E}.master-hero{max-width:1100px}.master-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:24px}.master-card{display:flex;flex-direction:column;gap:8px;padding:18px;border:1px solid #e2e8f0;border-radius:16px;background:#fff;text-decoration:none;color:inherit;transition:transform .15s ease,box-shadow .15s ease}.master-card:hover{transform:translateY(-2px);box-shadow:0 10px 25px rgba(15,23,42,.08)}.master-card span{font-size:13px;color:#526173}.portal-login{border-top:4px solid var(--tenant-primary,#0F3D3E)}.portal-login .eyebrow{color:#526173}@media(max-width:760px){.master-cards{grid-template-columns:1fr}}
/* Theme variables are the single source of truth; avoid hard-coded component overrides. */
.admin-shell .sidebar{background:var(--tenant-primary)!important}.admin-shell .sidebar .nav-item{color:var(--tenant-secondary)!important}.admin-shell .sidebar .nav-item.active,.admin-shell .sidebar .nav-item:hover{background:color-mix(in srgb,var(--tenant-secondary) 92%,var(--tenant-primary))!important;color:var(--tenant-primary)!important}.admin-shell .topbar h1,.admin-shell .topbar h2,.admin-shell .section-title h2,.admin-shell .card h2,.admin-shell .card h3{color:var(--tenant-text)}.admin-shell .primary{background:var(--tenant-primary)!important;color:var(--tenant-secondary)!important;border-color:var(--tenant-primary)!important}.admin-shell .secondary-link,.admin-shell a{--link-color:var(--tenant-accent)}

/* v1.16.1 — Centro Maestro neutral, polished and clearly separated from tenants */
.master-shell{--master-primary:#111827;--master-deep:#0b1220;--master-accent:#4f46e5;background:#f5f7fb}
.master-shell .master-sidebar{background:linear-gradient(180deg,#0b1220 0%,#111827 100%)!important;color:#fff;width:258px;padding:22px 14px 16px;border-right:1px solid rgba(255,255,255,.07);box-shadow:14px 0 34px rgba(15,23,42,.08)}
.master-brand{display:flex;align-items:center;gap:12px;padding:2px 10px 22px;border-bottom:1px solid rgba(255,255,255,.1)}
.master-brand-mark,.master-login-mark{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(145deg,#6366f1,#4338ca);color:#fff;font-weight:950;font-size:18px;box-shadow:0 10px 22px rgba(67,56,202,.28)}
.master-brand strong{display:block;font-size:13px;letter-spacing:.08em}.master-brand span{display:block;margin-top:3px;color:#9eabc0;font-size:11px}
.master-sidebar-label{margin:25px 10px 8px;color:#71809a;font-size:11px;font-weight:900;letter-spacing:.16em}.master-sidebar .sidebar-nav{gap:4px}.master-sidebar .nav-item{min-height:43px;color:#b9c4d4;border-radius:10px}.master-sidebar .nav-item:hover{background:rgba(255,255,255,.07);color:#fff}.master-sidebar .nav-item.active{background:#fff!important;color:#111827!important;box-shadow:0 5px 14px rgba(0,0,0,.16)!important}.master-nav-icon{font-size:16px!important;font-weight:800}.master-user-card{padding:14px 11px;border:1px solid rgba(255,255,255,.08);border-radius:13px;background:rgba(255,255,255,.045)}.master-user-label{display:block;color:#71809a;font-size:11px;font-weight:900;letter-spacing:.12em;margin-bottom:6px}.master-user-card strong{display:block;color:#eef2f7;font-size:12px;margin-bottom:11px}.master-user-card button{width:100%;min-height:34px;padding:7px 10px;background:rgba(255,255,255,.06);color:#cbd5e1;border:1px solid rgba(255,255,255,.08);box-shadow:none}.master-user-card button:hover{background:rgba(255,255,255,.11);color:#fff;box-shadow:none}
.master-main{max-width:1180px}.master-topbar{align-items:center;margin-bottom:22px}.master-eyebrow,.master-kicker{color:#4f46e5!important;font-size:11px;font-weight:950;letter-spacing:.16em}.master-top-actions{display:flex;align-items:center;gap:10px}.master-status{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid #e1e6ee;border-radius:999px;background:#fff;color:#526071;font-size:11px;font-weight:800}.master-status i{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 4px #dcfce7}
.master-welcome{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:28px 30px;border:1px solid #e1e6ef;border-radius:22px;background:linear-gradient(135deg,#fff 0%,#f7f8ff 100%);box-shadow:0 14px 35px rgba(15,23,42,.06);margin-bottom:18px}.master-welcome.compact{display:block;padding:23px 26px}.master-welcome h2{font-size:28px;margin:7px 0 8px;letter-spacing:-.02em}.master-welcome p{max-width:760px;margin:0;color:#657184;line-height:1.55}.master-primary-action{display:inline-flex;align-items:center;gap:18px;min-width:190px;justify-content:space-between;padding:14px 16px;border-radius:13px;background:#111827;color:#fff;text-decoration:none;font-weight:850;box-shadow:0 9px 22px rgba(17,24,39,.16)}.master-primary-action:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(17,24,39,.2);color:#fff}.master-primary-action b{font-size:18px}.master-overview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:28px}.master-overview-card{display:flex;align-items:center;gap:13px;padding:17px;border:1px solid #e1e6ef;border-radius:16px;background:#fff}.master-card-icon,.master-quick-icon{width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;border-radius:12px;background:#eef2ff;color:#4338ca;font-weight:900}.master-overview-card span{display:block;font-size:11px;font-weight:950;letter-spacing:.1em;color:#788397}.master-overview-card strong{display:block;font-size:23px;line-height:1.1;margin-top:4px}.master-overview-card p{margin:3px 0 0;color:#526173;font-size:11px}.master-section-head{margin:5px 0 12px}.master-section-head h2{margin:5px 0 0;font-size:22px}.master-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.master-quick-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:18px;border:1px solid #e1e6ef;border-radius:16px;background:#fff;text-decoration:none;color:#111827;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.master-quick-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(15,23,42,.07);border-color:#cfd5e4;color:#111827}.master-quick-card strong{display:block;font-size:14px}.master-quick-card span{display:block;color:#738095;font-size:12px;line-height:1.45;margin-top:4px}.master-quick-card>b{font-size:18px;color:#6366f1}.master-note{display:flex;align-items:flex-start;gap:12px;margin-top:16px;padding:15px 17px;border:1px solid #dfe4ee;border-radius:15px;background:#fbfcff}.master-note-icon{width:27px;height:27px;border-radius:9px;display:grid;place-items:center;background:#dcfce7;color:#15803d;font-weight:950}.master-note strong{font-size:12px}.master-note p{margin:3px 0 0;color:#697689;font-size:12px;line-height:1.45}.master-outline-action{display:inline-flex;align-items:center;min-height:40px;padding:9px 13px;border:1px solid #dfe4ec;border-radius:11px;background:#fff;color:#243047;text-decoration:none;font-size:12px;font-weight:850}.master-outline-action:hover{background:#f8fafc;color:#111827}.master-form-card,.master-management-card{border-radius:18px}.master-login-mark{margin:0 auto 14px}.master-login .login-card{border-top:0!important}
.master-return-button{display:inline-flex!important;align-items:center!important;gap:8px!important;min-height:40px!important;padding:9px 13px!important;border:1px solid #d8ddea!important;border-radius:11px!important;background:#fff!important;color:#263247!important;text-decoration:none!important;font-size:12px!important;font-weight:900!important;box-shadow:0 3px 10px rgba(15,23,42,.05)!important}.master-return-button:hover{background:#f5f7fb!important;color:#111827!important;transform:translateY(-1px)}
@media(max-width:900px){.master-overview-grid{grid-template-columns:1fr 1fr}.master-welcome{align-items:flex-start;flex-direction:column}.master-primary-action{width:100%}}
@media(max-width:650px){.master-overview-grid,.master-quick-grid{grid-template-columns:1fr}.master-welcome{padding:22px}.master-welcome h2{font-size:24px}.master-topbar{align-items:flex-start}.master-status{display:none}}

/* v1.16.2 — tenant-aware operational shell */
:root{--tenant-border:color-mix(in srgb,var(--tenant-text) 12%,var(--tenant-surface));--tenant-muted:color-mix(in srgb,var(--tenant-text) 76%,var(--tenant-surface))}
.admin-shell .sidebar{background:var(--tenant-primary)!important;color:var(--tenant-secondary)!important}
.admin-shell .sidebar .sidebar-brand strong,.admin-shell .sidebar .sidebar-brand span{color:var(--tenant-secondary)!important}
.admin-shell .sidebar .sidebar-section-label{color:color-mix(in srgb,var(--tenant-secondary) 62%,var(--tenant-primary))!important}
.admin-shell .sidebar .nav-item{color:color-mix(in srgb,var(--tenant-secondary) 82%,var(--tenant-primary))!important}
.admin-shell .sidebar .nav-item:hover{background:color-mix(in srgb,var(--tenant-secondary) 12%,var(--tenant-primary))!important;color:var(--tenant-secondary)!important}
.admin-shell .sidebar .nav-item.active{background:var(--tenant-secondary)!important;color:var(--tenant-primary)!important}
.admin-shell .sidebar .sidebar-footer{border-top-color:color-mix(in srgb,var(--tenant-secondary) 18%,var(--tenant-primary))!important;color:color-mix(in srgb,var(--tenant-secondary) 65%,var(--tenant-primary))!important}
.admin-shell .sidebar .sidebar-footer button{color:color-mix(in srgb,var(--tenant-secondary) 78%,var(--tenant-primary))!important}
.admin-shell .sidebar .sidebar-footer button:hover{color:var(--tenant-secondary)!important}
.admin-shell .card,.admin-shell .stat-card,.admin-shell .ops-metric{background:var(--tenant-surface)!important;color:var(--tenant-text)!important;border-color:var(--tenant-border)!important}
.admin-shell input,.admin-shell select,.admin-shell textarea{background:var(--tenant-surface)!important;color:var(--tenant-text)!important;border-color:var(--tenant-border)!important}
.admin-shell input::placeholder,.admin-shell textarea::placeholder{color:var(--tenant-muted)!important}
.admin-shell .secondary,.admin-shell .secondary-link{background:color-mix(in srgb,var(--tenant-primary) 8%,var(--tenant-surface))!important;color:var(--tenant-text)!important;border-color:var(--tenant-border)!important}
.admin-shell .secondary:hover,.admin-shell .secondary-link:hover{background:color-mix(in srgb,var(--tenant-primary) 14%,var(--tenant-surface))!important}
.admin-shell .primary, .admin-shell button.primary{background:var(--tenant-primary)!important;color:var(--tenant-secondary)!important;border-color:var(--tenant-primary)!important}
.admin-shell .primary:hover,.admin-shell button.primary:hover{filter:brightness(.94)}
.admin-shell .back-link,.admin-shell :where(a:not(.nav-item):not(.secondary-link):not(.master-return-button):not(.master-primary-action)){color:color-mix(in srgb,var(--tenant-accent) 62%,#000)}
.admin-shell th{color:var(--tenant-text)}
.master-company-context{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:2px;padding:8px 12px;border:1px solid #dfe4ec;border-radius:12px;background:#fff;box-shadow:0 3px 10px rgba(15,23,42,.04)}
.master-company-context span{font-size:11px;font-weight:950;letter-spacing:.14em;color:#526173}.master-company-context strong{font-size:12px;color:#111827}
@media(max-width:760px){.master-company-context{display:none}}

/* v1.16.3 — master/company visual separation */
.master-shell .master-sidebar .sidebar-footer{display:none}
.master-shell .master-sidebar .master-user-card button{cursor:pointer}
.admin-shell .master-return-button{margin-left:auto}
@media(max-width:760px){.admin-shell .master-return-button{order:2;margin-left:0}}

/* =========================================================
   v1.16.40 — VISUAL MENU SYSTEM
   SOLO PRESENTACIÓN: no cambia permisos, enlaces ni guards.
   ========================================================= */
:root{
  --menu-bg:var(--tenant-primary,#0F3D3E);
  --menu-bg-2:color-mix(in srgb,var(--tenant-primary,#0F3D3E) 86%,#000);
  --menu-text:color-mix(in srgb,var(--tenant-secondary,#fff) 84%,var(--tenant-primary,#0F3D3E));
  --menu-muted:color-mix(in srgb,var(--tenant-secondary,#fff) 58%,var(--tenant-primary,#0F3D3E));
  --menu-line:color-mix(in srgb,var(--tenant-secondary,#fff) 14%,var(--tenant-primary,#0F3D3E));
  --menu-hover:color-mix(in srgb,var(--tenant-accent,#10B991) 12%,var(--tenant-primary,#0F3D3E));
  --menu-active:color-mix(in srgb,var(--tenant-accent,#10B991) 18%,var(--tenant-primary,#0F3D3E));
  --menu-active-text:var(--tenant-secondary,#fff);
  --menu-accent:var(--tenant-accent,#10B991);
}

/* Company sidebar: cleaner hierarchy and less visual noise. */
.admin-shell .sidebar{
  width:264px!important;
  padding:18px 12px 14px!important;
  background:linear-gradient(180deg,var(--menu-bg) 0%,var(--menu-bg-2) 100%)!important;
  border-right:1px solid rgba(255,255,255,.07)!important;
  box-shadow:12px 0 32px rgba(8,25,48,.12)!important;
  scrollbar-width:thin;
}
.admin-shell .sidebar-brand{
  min-height:72px!important;
  padding:4px 10px 18px!important;
  margin-bottom:3px!important;
  border-bottom:1px solid var(--menu-line)!important;
}
.admin-shell .sidebar-brand img{
  width:86px!important;height:42px!important;
  filter:none!important;
}
.admin-shell .sidebar-brand strong{
  color:#f7faff!important;
  font-size:12px!important;
  font-weight:850!important;
}
.admin-shell .sidebar-brand span{color:#8fa2bc!important;font-size:11px!important}
.admin-shell .sidebar-section-label{
  margin:19px 10px 7px!important;
  color:#7186a2!important;
  font-size:11px!important;
  letter-spacing:.17em!important;
}
.admin-shell .sidebar-nav{gap:3px!important}
.admin-shell .nav-item,
.admin-shell .sidebar-group-summary{
  min-height:43px!important;
  border-radius:11px!important;
  padding:9px 11px!important;
  color:var(--menu-text)!important;
  font-size:13px!important;
  font-weight:700!important;
  letter-spacing:-.01em!important;
  transition:background .16s ease,color .16s ease,transform .16s ease,box-shadow .16s ease!important;
}
.admin-shell .sidebar-group-summary{cursor:pointer!important}
.admin-shell .nav-item:hover,
.admin-shell .sidebar-group-summary:hover{
  background:var(--menu-hover)!important;
  color:#fff!important;
  transform:translateX(1px)!important;
}
.admin-shell .nav-item.active{
  background:var(--tenant-surface,#fff)!important;
  /* Hoja de libreta: texto en tinta sobre papel, no blanco sobre blanco. */
  color:var(--tenant-primary,#0b3b3c)!important;
  box-shadow:0 6px 16px rgba(8,25,48,.18)!important;
  font-weight:800!important;
}
.admin-shell .nav-item.active:before{
  content:"";
  width:3px;height:20px;border-radius:99px;
  background:var(--menu-accent);
  position:absolute;left:5px;
}
.admin-shell .nav-item{position:relative}
.admin-shell .nav-icon,
.admin-shell .sidebar-group-summary .nav-icon{
  width:22px!important;height:22px!important;min-width:22px!important;
  color:currentColor!important;
  opacity:.92!important;
}
.admin-shell .nav-item.active .nav-icon{opacity:1!important}
.admin-shell .sidebar-group{
  margin-top:7px!important;
  border-radius:12px!important;
}
.admin-shell .sidebar-group[open]{background:rgba(255,255,255,.025)!important}
.admin-shell .sidebar-group[open] .sidebar-group-summary{
  background:rgba(255,255,255,.055)!important;
  color:#fff!important;
}
.admin-shell .sidebar-group-chevron{
  width:22px;height:22px;
  display:grid;place-items:center;
  border-radius:7px;
  color:#8ea0b8!important;
  font-size:14px!important;
  transition:transform .18s ease,color .16s ease!important;
}
.admin-shell .sidebar-group[open] .sidebar-group-chevron{color:#fff!important;transform:rotate(180deg)!important}
.admin-shell .sidebar-subnav{
  padding:4px 5px 6px!important;
  gap:2px!important;
  border-left:1px solid rgba(255,255,255,.08);
  margin-left:21px!important;
}
.admin-shell .sidebar .nav-subitem{
  min-height:37px!important;
  padding:8px 9px 8px 14px!important;
  border-radius:9px!important;
  font-size:12px!important;
  color:#aebdd0!important;
}
.admin-shell .sidebar .nav-subitem:hover{color:#fff!important;background:rgba(255,255,255,.06)!important}
.admin-shell .sidebar .nav-subitem{position:relative}
.admin-shell .sidebar .nav-subitem.active{
  background:rgba(255,255,255,.10)!important;
  color:#fff!important;
  box-shadow:none!important;
  font-weight:800!important;
}
/* Renglón seleccionado: acento en el margen izquierdo, alineado a la guía del subnav. */
.admin-shell .sidebar .nav-subitem.active:before{
  content:""!important;display:block!important;
  position:absolute;left:-6px;top:50%;transform:translateY(-50%);
  width:2px;height:18px;border-radius:99px;
  background:var(--menu-accent)!important;
}
.admin-shell .sidebar .nav-subitem .nav-icon{opacity:.82!important}
.admin-shell .sidebar .nav-subitem.active .nav-icon{opacity:1!important}
.admin-shell .sidebar-spacer{min-height:16px!important}
.admin-shell .sidebar-footer{
  margin-top:10px!important;
  padding:12px 10px 0!important;
  background:transparent!important;
  border-top:1px solid var(--menu-line)!important;
}
.admin-shell .sidebar-footer span{
  max-width:145px;overflow:hidden;text-overflow:ellipsis;
  color:#8fa2bc!important;font-size:11px!important;
}
.admin-shell .sidebar-footer button{
  color:#aebdd0!important;
  border-radius:8px!important;
  padding:6px 8px!important;
}
.admin-shell .sidebar-footer button:hover{background:rgba(255,255,255,.07)!important;color:#fff!important}

/* Master sidebar: same design language, visibly distinct platform identity. */
.master-shell .master-sidebar{
  width:264px!important;
  padding:18px 12px 14px!important;
  background:linear-gradient(180deg,#080f1d 0%,#111c30 100%)!important;
  border-right:1px solid rgba(255,255,255,.08)!important;
}
.master-shell .master-brand{
  min-height:72px!important;
  padding:4px 10px 18px!important;
  margin-bottom:3px!important;
}
.master-shell .master-brand-mark{
  width:44px!important;height:44px!important;
  border-radius:13px!important;
  background:linear-gradient(145deg,#6d70ff,#4338ca)!important;
  box-shadow:0 10px 24px rgba(67,56,202,.24)!important;
}
.master-shell .master-sidebar-label{
  margin:19px 10px 7px!important;
  color:#a9c4c4!important;
  font-size:11px!important;
  letter-spacing:.17em!important;
}
.master-shell .master-sidebar .nav-item{
  min-height:43px!important;
  border-radius:11px!important;
  padding:9px 11px!important;
  color:#c7d2e2!important;
  font-size:13px!important;
}
.master-shell .master-sidebar .nav-item:hover{
  background:rgba(255,255,255,.075)!important;
  color:#fff!important;
  transform:translateX(1px)!important;
}
.master-shell .master-sidebar .nav-item.active{
  background:linear-gradient(135deg,#fff,#f4f5ff)!important;
  color:#111827!important;
  box-shadow:0 6px 16px rgba(0,0,0,.18)!important;
}
.master-shell .master-nav-icon{
  width:22px!important;height:22px!important;min-width:22px!important;
  display:inline-grid!important;place-items:center!important;
  font-size:17px!important;color:currentColor!important;
}
.master-shell .master-user-card{
  margin-top:10px!important;
  padding:14px!important;
  border:1px solid rgba(255,255,255,.09)!important;
  border-radius:14px!important;
  background:linear-gradient(145deg,rgba(255,255,255,.055),rgba(255,255,255,.025))!important;
}
.master-shell .master-user-card button{
  border-radius:9px!important;
  min-height:36px!important;
}

/* Main content aligns with the wider menu without touching behavior. */
.admin-shell .admin-app{margin-left:264px!important}
@media(max-width:1050px){
  .admin-shell .sidebar,.master-shell .master-sidebar{width:236px!important}
  .admin-shell .admin-app{margin-left:236px!important}
}
@media(max-width:760px){
  .admin-shell .sidebar,.master-shell .master-sidebar{width:278px!important}
  .admin-shell .admin-app{margin-left:0!important}
  .admin-shell .nav-item.active:before{left:4px}
}

/* ============================================================
   v1.16.41 — Visual Menu & Overflow Safe Layer
   IMPORTANT: CSS/markup presentation only. No permissions, guards,
   authentication, RPCs or navigation rules are changed here.
   ============================================================ */

/* Stable application geometry */
html, body { width:100%; max-width:100%; overflow-x:hidden; }
body { min-width:0; }
.admin-shell { width:100%; min-width:0; }
.admin-shell .admin-app { min-width:0; max-width:none; width:auto; }
.admin-shell .admin-app > * { min-width:0; max-width:100%; }

/* Company sidebar: consistent INDEF visual language */
.admin-shell .sidebar {
  width:260px!important;
  padding:18px 12px 14px!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
}
.admin-shell .sidebar-brand {
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  min-width:0!important;
  overflow:hidden!important;
}
.admin-shell .sidebar-brand img[data-platform-logo] {
  width:82px!important;
  max-width:82px!important;
  height:40px!important;
  object-fit:contain!important;
  flex:0 0 auto!important;
  filter:none!important;
}
.admin-shell .sidebar-brand div {
  min-width:0!important;
  overflow:hidden!important;
}
.admin-shell .sidebar-brand strong,
.admin-shell .sidebar-brand span {
  display:block!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}

/* Navigation rows never push the sidebar horizontally */
.admin-shell .sidebar .nav-item,
.admin-shell .sidebar .sidebar-group-summary {
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
.admin-shell .sidebar .nav-item > span:not(.nav-icon),
.admin-shell .sidebar .sidebar-group-summary > span:not(.nav-icon):not(.sidebar-group-chevron) {
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
.admin-shell .sidebar .nav-icon {
  flex:0 0 22px!important;
}
.admin-shell .sidebar-subnav {
  min-width:0!important;
  max-width:100%!important;
  overflow:hidden!important;
}

/* Better visual hierarchy */
.admin-shell .sidebar-section-label {
  user-select:none;
}
.admin-shell .sidebar-group-summary {
  list-style:none!important;
}
.admin-shell .sidebar-group-summary::-webkit-details-marker { display:none; }
.admin-shell .sidebar-group-summary::marker { content:""; }
.admin-shell .sidebar-group-summary .sidebar-group-chevron {
  margin-left:auto!important;
  flex:0 0 22px!important;
}
.admin-shell .sidebar-group[open] .sidebar-group-summary {
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)!important;
}
.admin-shell .sidebar .nav-item.active {
  outline:none!important;
}
.admin-shell .sidebar .nav-item:focus-visible,
.admin-shell .sidebar .sidebar-group-summary:focus-visible {
  outline:2px solid var(--tenant-accent,#10B991)!important;
  outline-offset:1px!important;
}

/* Footer stays inside the sidebar */
.admin-shell .sidebar-footer {
  min-width:0!important;
  overflow:hidden!important;
}
.admin-shell .sidebar-footer span {
  display:block!important;
  min-width:0!important;
}

/* Content overflow protection */
.admin-shell .card,
.admin-shell .stat-card,
.admin-shell .ops-metric,
.admin-shell section,
.admin-shell form,
.admin-shell .topbar,
.admin-shell .section-title {
  min-width:0!important;
  max-width:100%!important;
}
.admin-shell .table-wrap {
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
  -webkit-overflow-scrolling:touch;
}
.admin-shell table {
  max-width:none;
}
.admin-shell img,
.admin-shell svg,
.admin-shell video,
.admin-shell canvas {
  max-width:100%;
}
.admin-shell textarea {
  max-width:100%;
  min-width:0;
}

/* Common grid layouts: allow children to shrink instead of overflowing */
.admin-shell .quick-grid,
.admin-shell .analytics-grid,
.admin-shell .report-stats,
.admin-shell .notification-settings-grid,
.admin-shell .license-editor-grid,
.admin-shell .branding-grid,
.admin-shell .module-grid,
.admin-shell .company-profile-grid,
.admin-shell .franchise-create-grid,
.admin-shell .branch-link-grid,
.admin-shell .analytics-toolbar,
.admin-shell .employee-tools,
.admin-shell .report-filters,
.admin-shell .employee-filters {
  min-width:0!important;
}
.admin-shell .quick-grid > *,
.admin-shell .analytics-grid > *,
.admin-shell .report-stats > *,
.admin-shell .notification-settings-grid > *,
.admin-shell .license-editor-grid > *,
.admin-shell .branding-grid > *,
.admin-shell .module-grid > *,
.admin-shell .company-profile-grid > *,
.admin-shell .franchise-create-grid > *,
.admin-shell .branch-link-grid > *,
.admin-shell .analytics-toolbar > *,
.admin-shell .employee-tools > *,
.admin-shell .report-filters > *,
.admin-shell .employee-filters > * {
  min-width:0!important;
  max-width:100%;
}

/* Do not let long IDs, URLs or generated values break cards */
.admin-shell .uuid,
.admin-shell .message,
.admin-shell .muted,
.admin-shell td,
.admin-shell th {
  overflow-wrap:anywhere;
}

/* Keep intentional wide tables scrollable rather than widening the page */
.admin-shell .table-wrap table {
  margin:0;
}

/* Responsive sidebar/content alignment */
@media (min-width:761px) {
  .admin-shell .sidebar { width:260px!important; }
  .admin-shell .admin-app { margin-left:260px!important; }
}
@media (max-width:1050px) and (min-width:761px) {
  .admin-shell .sidebar { width:236px!important; }
  .admin-shell .admin-app { margin-left:236px!important; }
}
@media (max-width:760px) {
  .admin-shell .sidebar { width:278px!important; max-width:88vw!important; }
  .admin-shell .admin-app { margin-left:0!important; width:100%!important; }
  .admin-shell .sidebar-brand img[data-platform-logo] {
    width:78px!important;
    max-width:78px!important;
  }
}

/* Master sidebar follows the same geometry without changing its identity */
.master-shell .master-sidebar {
  box-sizing:border-box!important;
  min-width:0!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
}
.master-shell .master-sidebar .nav-item {
  width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
.master-shell .master-sidebar .nav-item > span:not(.master-nav-icon) {
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
.master-shell .master-user-card {
  min-width:0!important;
  overflow:hidden!important;
}
@media (min-width:761px) {
  .master-shell .master-sidebar { width:264px!important; }
  .master-shell .admin-app { margin-left:264px!important; }
}
@media (max-width:760px) {
  .master-shell .master-sidebar { width:278px!important; max-width:88vw!important; }
}

/* Prevent horizontal scroll from fixed-width controls on narrow screens */
@media (max-width:760px) {
  .admin-shell .topbar,
  .admin-shell .top-actions,
  .admin-shell .section-title,
  .admin-shell .action-buttons,
  .admin-shell .employee-tools,
  .admin-shell .notification-toolbar {
    max-width:100%!important;
    flex-wrap:wrap!important;
  }
  .admin-shell .topbar > *,
  .admin-shell .section-title > * {
    min-width:0!important;
    max-width:100%!important;
  }
}


/* v1.16.42 — Identidad visual por portal (solo presentación)
   INDEF: azul institucional + verde de acento.
   MASTER: rojo oscuro. No modifica permisos, navegación ni guards. */
:root{
  --indef-navy:#0F3D3E;
  --indef-blue:#0F3D3E;
  --indef-green:#1E7A54;
  --indef-light:#D8E4F0;
  --master-red:#651F2A;
  --master-red-deep:#4A151D;
  --master-red-accent:#8B2C3A;
}

/* Tenant branding: the database is the source of truth for each company. */
.admin-shell:not(.master-shell) .sidebar{
  background:linear-gradient(180deg,color-mix(in srgb,var(--tenant-primary) 86%,#000) 0%,var(--tenant-primary) 100%) !important;
}
.admin-shell:not(.master-shell) .sidebar .nav-item.active{
  background:color-mix(in srgb,var(--tenant-accent) 18%,var(--tenant-primary)) !important;
  color:var(--tenant-secondary) !important;
  box-shadow:inset 3px 0 0 var(--tenant-accent), 0 5px 14px color-mix(in srgb,var(--tenant-primary) 14%,transparent) !important;
}
.admin-shell:not(.master-shell) .sidebar .nav-item:hover,
.admin-shell:not(.master-shell) .sidebar .sidebar-group-summary:hover{
  background:color-mix(in srgb,var(--tenant-accent) 12%,var(--tenant-primary)) !important;
  color:var(--tenant-secondary) !important;
}
.admin-shell:not(.master-shell) .sidebar .nav-icon,
.admin-shell:not(.master-shell) .sidebar .sidebar-group-chevron{
  color:color-mix(in srgb,var(--tenant-secondary) 74%,var(--tenant-primary)) !important;
}
.admin-shell:not(.master-shell) .sidebar .nav-item.active .nav-icon{
  color:var(--tenant-secondary) !important;
}
.admin-shell:not(.master-shell) .eyebrow,
.admin-shell:not(.master-shell) .sidebar-section-label{
  color:var(--tenant-accent) !important;
}
.admin-shell:not(.master-shell) button.primary,
.admin-shell:not(.master-shell) .primary{
  background:var(--tenant-primary) !important;
  color:var(--tenant-secondary) !important;
}
.admin-shell:not(.master-shell) button.primary:hover,
.admin-shell:not(.master-shell) .primary:hover{
  background:color-mix(in srgb,var(--tenant-primary) 90%,#000) !important;
}
.admin-shell:not(.master-shell) .quick-card .quick-icon,
.admin-shell:not(.master-shell) .dashboard-branch-card,
.admin-shell:not(.master-shell) .modern-hero{
  color:color-mix(in srgb,var(--tenant-accent) 62%,#000);
}
.admin-shell:not(.master-shell) .dashboard-branch-card,
.admin-shell:not(.master-shell) .modern-hero{
  border-left-color:var(--tenant-accent);
}

/* Centro Maestro: rojo oscuro, separado visualmente de INDEF */
.master-shell{
  --master-primary:var(--master-red);
  --master-deep:var(--master-red-deep);
  --master-accent:var(--master-red-accent);
}
.master-shell .master-sidebar{
  background:linear-gradient(180deg,var(--master-red-deep) 0%,var(--master-red) 100%) !important;
}
.master-shell .master-brand-mark,
.master-shell .master-login-mark{
  background:linear-gradient(145deg,var(--master-red-accent),var(--master-red-deep)) !important;
  box-shadow:0 10px 22px rgba(74,21,29,.30) !important;
}
.master-shell .master-sidebar .nav-item:hover{
  background:rgba(255,255,255,.09) !important;
}
.master-shell .master-sidebar .nav-item.active{
  background:#fff !important;
  color:var(--master-red-deep) !important;
}
.master-shell .master-sidebar .nav-item.active .master-nav-icon{
  color:var(--master-red) !important;
}
.master-shell .master-eyebrow,
.master-shell .master-kicker{
  color:var(--master-red-accent) !important;
}
.master-shell .master-primary-action{
  background:var(--master-red) !important;
  box-shadow:0 9px 22px rgba(101,31,42,.20) !important;
}
.master-shell .master-quick-card>b{
  color:var(--master-red-accent) !important;
}
.master-shell .master-card-icon,
.master-shell .master-quick-icon{
  background:#F7E9EC !important;
  color:var(--master-red) !important;
}
.master-shell .master-status i{
  background:#22c55e !important;
}
.master-shell .master-note-icon{
  background:#F7E9EC !important;
  color:var(--master-red) !important;
}


/* v1.16.43 — active menu state stability (presentation only)
   aria-current mirrors .active so the selected page remains highlighted
   even if a page module refreshes navigation classes during boot. */
.admin-shell .sidebar .nav-item[aria-current="page"]{
  background:rgba(30,122,84,.18)!important;
  color:#fff!important;
  box-shadow:inset 3px 0 0 #1E7A54, 0 5px 14px rgba(15,61,62,.14)!important;
  font-weight:800!important;
}
.admin-shell .sidebar .nav-item[aria-current="page"] .nav-icon{
  color:#fff!important;
  opacity:1!important;
}
.admin-shell .sidebar .nav-subitem[aria-current="page"]{
  background:rgba(255,255,255,.10)!important;
  color:#fff!important;
  box-shadow:none!important;
  font-weight:800!important;
}
.admin-shell .sidebar .nav-item[aria-current="page"]:before{
  content:""!important;
  width:3px!important;height:20px!important;border-radius:99px!important;
  background:#1E7A54!important;
  position:absolute!important;left:5px!important;
}

/* v1.16.55 — sidebar/nav visual system unified across every admin page */
html.nav-booting .admin-shell .sidebar { opacity:0; pointer-events:none; }
html.nav-ready .admin-shell .sidebar { opacity:1; pointer-events:auto; }
.admin-shell .sidebar {
  transition: opacity .18s ease, transform .22s ease;
}
.admin-shell .sidebar-nav { gap:4px; }
.admin-shell .nav-item,
.admin-shell .sidebar-group-summary {
  min-height:42px;
  border-radius:10px;
  padding:9px 11px;
  gap:11px;
  font-size:13px;
  font-weight:750;
  line-height:1.2;
  transition: background .16s ease, color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.admin-shell .nav-item:hover,
.admin-shell .sidebar-group-summary:hover {
  background:rgba(255,255,255,.075);
  color:#fff;
  transform:translateX(1px);
}
.admin-shell .nav-item.active {
  background:#fff;
  color:var(--tenant-primary,#0F3D3E);
  box-shadow:0 4px 14px rgba(0,0,0,.12);
  transform:none;
}
.admin-shell .sidebar-group-summary { cursor:pointer; display:flex; align-items:center; }
.admin-shell .sidebar-group-summary .sidebar-group-chevron { transition:transform .18s ease, opacity .18s ease; }
.admin-shell .sidebar-group[open] .sidebar-group-chevron { transform:rotate(180deg); }
.admin-shell .sidebar-subnav { padding-top:4px; animation: indefNavSubnavIn .16s ease both; }
.admin-shell .sidebar-group:not([open]) .sidebar-subnav { animation:none; }
.admin-shell .nav-subitem { min-height:38px; border-radius:9px; padding-left:42px; font-size:12.5px; }
.admin-shell .nav-subitem.active { background:rgba(255,255,255,.14); color:#fff; box-shadow:none; }
.admin-shell .sidebar-group[hidden] { display:none!important; }
.admin-shell .sidebar .nav-link[hidden] { display:none!important; }
@keyframes indefNavSubnavIn { from { opacity:0; transform:translateY(-3px); } to { opacity:1; transform:translateY(0); } }

/* v1.16.57 — modal uniforme para restablecimiento de contraseña Master */
.master-reset-card{width:min(520px,100%);max-height:min(88vh,760px);overflow:auto}.master-reset-card form{display:flex;flex-direction:column}.master-reset-card label{display:block;font-weight:700;margin:12px 0 6px}.master-reset-card input{width:100%;box-sizing:border-box;margin:0}.master-reset-card .message{margin:12px 0 0}.master-reset-card .device-modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}.small-btn{white-space:nowrap}

/* v1.16.71 — administración de administradores por empresa */
.admin-company-admin-panel{margin-top:18px;padding:18px;border:1px solid #dfe6ee;border-radius:18px;background:#fbfcfe;animation:adminPanelIn .22s ease both}
.admin-company-admin-panel.hidden{display:none!important}
.admin-company-admin-panel .section-title{margin-bottom:14px}
.admin-company-admin-panel h3{margin:0 0 4px;font-size:18px}
.company-admin-form{align-items:start}
.company-admin-role-picker{grid-column:1/-1}
.role-picker-label{display:block;font-size:12px;font-weight:900;color:var(--tenant-primary,#0F3D3E);margin-bottom:8px}
.company-admin-role-picker .admin-role-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-height:260px;overflow:auto;padding-right:2px}
.company-admin-role-picker .admin-role-option{min-height:64px}
@keyframes adminPanelIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:800px){.company-admin-role-picker .admin-role-options{grid-template-columns:1fr}}

/* v1.16.74.2 — Mobile company sidebar visual cleanup
   Presentation-only correction: improves legibility, overflow and scroll behavior.
*/
@media (max-width:760px){
  .admin-shell:not(.master-shell) .sidebar{
    width:300px!important;
    max-width:calc(100vw - 18px)!important;
    padding-left:12px!important;
    padding-right:10px!important;
    scrollbar-width:thin;
    scrollbar-color:rgba(255,255,255,.22) transparent;
  }
  .admin-shell:not(.master-shell) .sidebar::-webkit-scrollbar{width:7px!important}
  .admin-shell:not(.master-shell) .sidebar::-webkit-scrollbar-track{background:transparent!important}
  .admin-shell:not(.master-shell) .sidebar::-webkit-scrollbar-thumb{
    background:rgba(255,255,255,.22)!important;
    border-radius:999px!important;
  }
  .admin-shell:not(.master-shell) .sidebar .nav-item,
  .admin-shell:not(.master-shell) .sidebar .sidebar-group-summary{
    min-height:42px!important;
    padding-left:10px!important;
    padding-right:8px!important;
  }
  .admin-shell:not(.master-shell) .sidebar .sidebar-group-summary > span:not(.nav-icon):not(.sidebar-group-chevron),
  .admin-shell:not(.master-shell) .sidebar .nav-item > span:not(.nav-icon){
    font-size:13px!important;
  }
  .admin-shell:not(.master-shell) .sidebar .sidebar-subnav{
    margin-left:20px!important;
    padding-left:5px!important;
    padding-right:3px!important;
  }
  .admin-shell:not(.master-shell) .sidebar .nav-subitem{
    padding-left:11px!important;
    padding-right:7px!important;
    min-height:36px!important;
    font-size:12.5px!important;
  }
  .admin-shell:not(.master-shell) .sidebar .nav-subitem > span:not(.nav-icon){
    font-size:12.5px!important;
  }
}

/* Keep the company navigation at the top when its mobile drawer opens. */
@media (max-width:760px){
  .admin-shell:not(.master-shell).sidebar-open .sidebar{scroll-behavior:auto!important}
}

/* v1.17.0.0 — Branding por empresa: subida de logo y preview de entorno */
.branding-logo-field{grid-column:1/-1;padding:16px;border:1px solid color-mix(in srgb,var(--tenant-text) 10%,var(--tenant-surface));border-radius:16px;background:color-mix(in srgb,var(--tenant-primary) 3%,var(--tenant-surface))}.branding-logo-field>label{display:block;font-weight:800;margin-bottom:8px}.branding-upload-row{display:flex;gap:10px;align-items:center}.branding-upload-row input[type=file]{flex:1;min-width:0;padding:9px;background:var(--tenant-surface)!important}.branding-upload-state{min-height:20px;margin-top:8px;font-size:13px;font-weight:700;color:color-mix(in srgb,var(--tenant-accent) 62%,#000)}.branding-preview-shell{grid-column:1/-1;border:1px solid color-mix(in srgb,var(--tenant-text) 10%,var(--tenant-surface));border-radius:18px;padding:14px;background:color-mix(in srgb,var(--tenant-primary) 2%,var(--tenant-surface))}.branding-preview-heading{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:2px 2px 12px}.branding-preview-heading>div{display:flex;flex-direction:column;gap:4px}.branding-preview-heading strong{font-size:15px}.branding-preview-heading span:not(.branding-preview-live){font-size:12px;color:var(--tenant-muted)}.branding-preview-live{font-size:11px;font-weight:900;letter-spacing:.08em;color:color-mix(in srgb,var(--tenant-accent) 62%,#000);padding:5px 8px;border:1px solid color-mix(in srgb,var(--tenant-accent) 26%,var(--tenant-surface));border-radius:999px;background:var(--tenant-surface)}.branding-preview{display:grid;grid-template-columns:220px 1fr;gap:0;min-height:440px;padding:0;overflow:hidden;border:1px solid var(--bp-border);background:var(--bp-background)!important;color:var(--bp-text)!important;border-radius:16px;position:relative}.bp-sidebar{background:linear-gradient(180deg,color-mix(in srgb,var(--bp-primary) 86%,#000) 0%,var(--bp-primary) 100%);color:var(--bp-secondary);padding:18px 14px;display:flex;flex-direction:column;gap:7px;min-width:0}.bp-brand{display:flex;gap:10px;align-items:center;padding:2px 4px 12px}.bp-brand-mark{width:38px;height:38px;border-radius:10px;background:var(--bp-secondary);display:grid;place-items:center;overflow:hidden;flex:0 0 auto}.bp-brand-mark img{max-width:29px;max-height:29px;object-fit:contain}.bp-brand b{display:block;color:var(--bp-secondary);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bp-brand small{display:block;color:color-mix(in srgb,var(--bp-secondary) 66%,var(--bp-primary));font-size:11px;margin-top:2px}.bp-label{font-size:8px;letter-spacing:.12em;font-weight:900;color:color-mix(in srgb,var(--bp-secondary) 58%,var(--bp-primary));padding:9px 6px 4px}.bp-nav-item{display:flex;align-items:center;gap:8px;padding:8px 9px;border-radius:9px;font-size:11px;font-weight:800;color:color-mix(in srgb,var(--bp-secondary) 84%,var(--bp-primary));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bp-nav-item:hover{background:color-mix(in srgb,var(--bp-accent) 12%,var(--bp-primary));color:var(--bp-secondary)}.bp-nav-item.active{background:color-mix(in srgb,var(--bp-accent) 18%,var(--bp-primary));color:var(--bp-secondary);box-shadow:inset 3px 0 0 var(--bp-accent)}.bp-nav-item span{width:16px;text-align:center;font-size:12px;opacity:.9}.bp-sidebar-footer{margin-top:auto;border-top:1px solid color-mix(in srgb,var(--bp-secondary) 18%,var(--bp-primary));padding:12px 5px 0;color:color-mix(in srgb,var(--bp-secondary) 68%,var(--bp-primary));font-size:11px}.bp-content{background:var(--bp-background);padding:18px;min-width:0}.bp-topbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:15px}.bp-topbar small,.bp-hero small,.bp-card span,.bp-stat span{font-size:8px;font-weight:900;letter-spacing:.08em}.bp-topbar h3{font-size:18px;margin:3px 0 0;color:var(--bp-text)}.bp-hero{display:grid;grid-template-columns:1fr 180px;gap:14px;padding:18px;border:1px solid var(--bp-border);border-radius:var(--bp-radius);background:var(--bp-surface);box-shadow:0 4px 14px rgba(15,23,42,.04)}.bp-hero h4{font-size:21px;margin:5px 0;color:var(--bp-text)}.bp-hero p{font-size:11px;line-height:1.45;color:var(--bp-muted);margin:0;max-width:620px}.bp-actions{display:flex;gap:8px;margin-top:13px}.bp-primary,.bp-secondary{border:1px solid transparent;padding:7px 10px;font-size:11px;font-weight:800;cursor:default}.bp-secondary{background:color-mix(in srgb,var(--bp-primary) 7%,var(--bp-surface));color:var(--bp-text);border-color:color-mix(in srgb,var(--bp-text) 14%,var(--bp-surface))}.bp-stat{padding:13px;border:1px solid var(--bp-border);border-radius:var(--bp-radius);background:var(--bp-surface);align-self:stretch;display:flex;flex-direction:column;justify-content:center}.bp-stat strong{font-size:17px;margin:3px 0;color:var(--bp-text)}.bp-stat small{font-size:11px;color:var(--bp-muted)}.bp-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.bp-card{padding:12px;border:1px solid var(--bp-border);border-radius:12px;background:var(--bp-surface)}.bp-card strong{display:block;font-size:17px;margin:5px 0;color:var(--bp-text)}.bp-card small{font-size:11px;color:var(--bp-muted)}.bp-table{margin-top:12px;border:1px solid var(--bp-border);border-radius:12px;background:var(--bp-surface);overflow:hidden}.bp-table-head{display:flex;justify-content:space-between;padding:11px 12px;border-bottom:1px solid var(--bp-border);font-size:11px}.bp-table-head span{color:var(--bp-accent);font-weight:800}.bp-row{display:grid;grid-template-columns:1fr auto 75px;gap:10px;padding:9px 12px;border-bottom:1px solid var(--bp-border);font-size:11px;align-items:center}.bp-row:last-child{border-bottom:0}.bp-row b{color:var(--bp-text)}.bp-row em{font-style:normal;color:var(--bp-accent);font-weight:800;text-align:right}@media(max-width:900px){.branding-preview{grid-template-columns:180px 1fr}.bp-content{padding:13px}.bp-hero{grid-template-columns:1fr}.bp-cards{grid-template-columns:1fr}.bp-row{grid-template-columns:1fr auto}}@media(max-width:700px){.branding-upload-row{flex-direction:column;align-items:stretch}.branding-preview{grid-template-columns:1fr;min-height:0}.bp-sidebar{display:none}.bp-topbar{align-items:flex-start;flex-direction:column}.branding-preview-heading{align-items:flex-start;flex-direction:column}.bp-actions{flex-wrap:wrap}}

/* v1.17.0.5 — Corrección visual navegación de roles/administradores en móvil */
@media (max-width:760px){
  .admin-shell:not(.master-shell) .sidebar{
    width:min(320px,calc(100vw - 14px))!important;
    max-width:calc(100vw - 14px)!important;
  }
  .admin-shell:not(.master-shell) .sidebar .nav-item,
  .admin-shell:not(.master-shell) .sidebar .sidebar-group-summary{
    box-sizing:border-box!important;
    min-width:0!important;
    align-items:flex-start!important;
  }
  .admin-shell:not(.master-shell) .sidebar .nav-item > span:not(.nav-icon),
  .admin-shell:not(.master-shell) .sidebar .sidebar-group-summary > span:not(.nav-icon):not(.sidebar-group-chevron){
    min-width:0!important;
    flex:1 1 auto!important;
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    overflow-wrap:anywhere!important;
    line-height:1.25!important;
  }
  .admin-shell:not(.master-shell) .sidebar .sidebar-group-chevron{
    flex:0 0 22px!important;
    margin-left:auto!important;
  }
  .admin-shell:not(.master-shell) .sidebar .nav-subitem{
    min-height:38px!important;
    padding-top:8px!important;
    padding-bottom:8px!important;
  }
  .admin-shell:not(.master-shell) .sidebar .sidebar-subnav{
    overflow:visible!important;
  }
}

/* v1.17.0.5 — Branding Master: paleta de solo lectura */
.branding-readonly-palette{grid-column:1/-1;padding:14px 16px;border:1px solid color-mix(in srgb,var(--tenant-text) 10%,var(--tenant-surface));border-radius:16px;background:color-mix(in srgb,var(--tenant-primary) 2%,var(--tenant-surface))}
.branding-readonly-heading{display:flex;justify-content:space-between;gap:14px;align-items:baseline;margin-bottom:12px}.branding-readonly-heading strong{font-size:13px}.branding-readonly-heading span{font-size:11px;color:var(--tenant-muted);text-align:right}.branding-readonly-swatches{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.branding-readonly-swatch{display:flex;align-items:center;gap:9px;min-width:0;padding:9px 10px;border:1px solid color-mix(in srgb,var(--tenant-text) 9%,var(--tenant-surface));border-radius:12px;background:var(--tenant-surface)}.branding-readonly-swatch i{width:30px;height:30px;flex:0 0 30px;border-radius:9px;border:1px solid rgba(15,23,42,.12);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}.branding-readonly-swatch span{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:11px;color:var(--tenant-muted)}.branding-readonly-swatch b{color:var(--tenant-text);font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}@media(max-width:900px){.branding-readonly-swatches{grid-template-columns:1fr 1fr}}@media(max-width:700px){.branding-readonly-heading{align-items:flex-start;flex-direction:column}.branding-readonly-heading span{text-align:left}.branding-readonly-swatches{grid-template-columns:1fr}}
/* v1.17.0.5 — Branding controls */
.branding-field-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:12px}.branding-field-heading>div{display:flex;flex-direction:column;gap:4px}.branding-field-heading label{margin:0;font-weight:800}.branding-field-heading span:not(.branding-current-badge){font-size:12px;color:var(--tenant-muted)}.branding-current-badge{font-size:11px!important;font-weight:900!important;letter-spacing:.04em;color:color-mix(in srgb,var(--tenant-accent) 62%,#000)!important;border:1px solid color-mix(in srgb,var(--tenant-accent) 24%,var(--tenant-surface));background:var(--tenant-surface);padding:6px 9px;border-radius:999px;white-space:nowrap}.branding-color-editor{grid-column:1/-1;padding:16px;border:1px solid color-mix(in srgb,var(--tenant-text) 10%,var(--tenant-surface));border-radius:16px;background:color-mix(in srgb,var(--tenant-primary) 2%,var(--tenant-surface))}.branding-color-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.branding-color-grid label{display:grid;grid-template-columns:1fr auto;grid-template-areas:'name color' 'hex color';gap:4px 10px;padding:11px 12px;border:1px solid color-mix(in srgb,var(--tenant-text) 9%,var(--tenant-surface));border-radius:12px;background:var(--tenant-surface);font-size:11px;font-weight:800}.branding-color-grid input[type=color]{grid-area:color;width:42px;height:42px;border:0;padding:0;background:transparent;cursor:pointer}.branding-color-grid span{font-size:11px;color:var(--tenant-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.branding-inline-actions,.branding-final-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:13px}.branding-final-actions{grid-column:1/-1;padding-top:2px}.branding-final-actions button{min-width:190px}@media(max-width:900px){.branding-color-grid{grid-template-columns:1fr 1fr}}@media(max-width:700px){.branding-field-heading{flex-direction:column}.branding-color-grid{grid-template-columns:1fr}.branding-final-actions button{min-width:0;width:100%}}

/* v1.17.1.2 — tenant background must fill the complete administrative shell; avoid root/body bleed */
.admin-shell{background:var(--tenant-background)!important;}
.admin-shell .admin-app{background:transparent!important;}


/* v1.19.0.0 — licencia y soporte */
.license-support-card{scroll-margin-top:18px}.license-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:6px}.license-summary-item{min-width:0;border:1px solid #e1e6ed;border-radius:16px;padding:15px;background:var(--tenant-surface,#fff)}.license-summary-item span{display:block;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#526173}.license-summary-item strong{display:block;font-size:18px;color:var(--tenant-text,#0F3D3E);margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.license-summary-item small{display:block;margin-top:5px;color:#526173;line-height:1.35}.license-modules-block{margin-top:18px;padding-top:18px;border-top:1px solid #e1e6ed}.license-modules-head{display:flex;justify-content:space-between;align-items:flex-start}.license-module-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}.license-module-pill{display:inline-flex;align-items:center;gap:7px;padding:8px 10px;border-radius:999px;background:#f6f8fb;border:1px solid #e1e6ed;color:#334155;font-size:12px;font-weight:800}.license-module-dot{width:7px;height:7px;border-radius:50%;background:var(--tenant-accent,#10B991);box-shadow:0 0 0 3px color-mix(in srgb,var(--tenant-accent,#10B991) 15%,transparent)}.support-panel{margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px;border-radius:18px;background:linear-gradient(135deg,rgba(37,99,235,.06),rgba(23,115,59,.05));border:1px solid #dbe4ef}.support-panel h3{margin:5px 0 3px}.support-composer{margin-top:14px;padding:18px;border:1px solid #e1e6ed;border-radius:18px;background:#fbfcfe}.support-form-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:12px}.support-message-field{grid-column:1/-1}.support-composer textarea,.support-composer input,.support-composer select{width:100%;box-sizing:border-box;padding:11px 12px;border:1px solid #d9dee7;border-radius:11px;font:inherit;background:#fff}.support-actions{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}.support-payload{width:100%;box-sizing:border-box;margin-top:12px;min-height:150px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:#f7f9fb!important}.license-summary-item strong{font-variant-numeric:tabular-nums}@media(max-width:760px){.license-summary-grid{grid-template-columns:1fr 1fr}.support-panel{align-items:stretch;flex-direction:column}.support-panel button{width:100%}.support-form-grid{grid-template-columns:1fr}.support-message-field{grid-column:auto}}@media(max-width:460px){.license-summary-grid{grid-template-columns:1fr}}

/* =========================================================
   v1.19.0.18 — sidebar footer isolation
   Evita que "Cerrar sesión" se monte sobre la navegación
   cuando el contenido del sidebar necesita scroll.
   ========================================================= */
.admin-shell .sidebar{
  position:fixed!important;
  box-sizing:border-box!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding-bottom:92px!important;
}
.admin-shell .sidebar .sidebar-footer{
  position:absolute!important;
  left:14px!important;
  right:14px!important;
  bottom:16px!important;
  z-index:10!important;
  margin:0!important;
  padding:13px 10px 0!important;
  min-height:45px!important;
  background:var(--tenant-primary,#0F3D3E)!important;
  border-top:1px solid rgba(255,255,255,.14)!important;
  flex:0 0 auto!important;
}
.admin-shell .sidebar .sidebar-footer span,
.admin-shell .sidebar .sidebar-footer button{
  position:relative!important;
  z-index:11!important;
}
@media(max-width:760px){
  .admin-shell .sidebar{
    padding-bottom:92px!important;
  }
  .admin-shell .sidebar .sidebar-footer{
    left:14px!important;
    right:14px!important;
    bottom:12px!important;
  }
}


/* INDEF v1.19.0.18 — footer fijo y navegación independiente
   El pie queda fuera del área desplazable; solo la lista de administración
   se desplaza para que ningún elemento del menú pase por detrás del footer. */
@media (min-width: 761px){
  .admin-shell .sidebar{
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
  }
  .admin-shell .sidebar > .sidebar-nav[aria-label="Administración"]{
    flex:1 1 auto!important;
    min-height:0!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    scrollbar-gutter:stable;
    padding-right:2px;
  }
  .admin-shell .sidebar > .sidebar-spacer{
    display:none!important;
  }
  .admin-shell .sidebar > .sidebar-footer{
    flex:0 0 auto!important;
    position:relative!important;
    inset:auto!important;
    margin-top:0!important;
    z-index:20!important;
    background:var(--tenant-primary)!important;
    border-top:1px solid color-mix(in srgb,var(--tenant-secondary) 18%,var(--tenant-primary))!important;
  }
}
@media (max-width: 760px){
  .admin-shell .sidebar{
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
  }
  .admin-shell .sidebar > .sidebar-nav[aria-label="Administración"]{
    flex:1 1 auto!important;
    min-height:0!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    scrollbar-gutter:stable;
    padding-right:2px;
  }
  .admin-shell .sidebar > .sidebar-spacer{display:none!important;}
  .admin-shell .sidebar > .sidebar-footer{
    flex:0 0 auto!important;
    position:relative!important;
    inset:auto!important;
    margin-top:0!important;
    z-index:20!important;
    background:var(--tenant-primary)!important;
  }
}

/* INDEF v1.19.0.19 — Sidebar footer fijo sin solapamiento
   El footer queda anclado al viewport del sidebar y la navegación
   conserva su scroll independiente sin pasar visualmente detrás del footer. */
.admin-shell .sidebar{
  position:fixed!important;
  top:0!important;
  bottom:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  box-sizing:border-box!important;
  padding-bottom:82px!important;
}
.admin-shell .sidebar .sidebar-spacer{
  display:none!important;
}
.admin-shell .sidebar .sidebar-footer{
  position:absolute!important;
  left:12px!important;
  right:12px!important;
  bottom:0!important;
  z-index:50!important;
  margin:0!important;
  min-height:68px!important;
  height:68px!important;
  padding:13px 10px max(12px, env(safe-area-inset-bottom))!important;
  background:linear-gradient(180deg,var(--menu-bg,var(--tenant-primary,#0F3D3E)) 0%,var(--menu-bg-2,#0c2340) 100%)!important;
  border-top:1px solid var(--menu-line,rgba(255,255,255,.11))!important;
  box-shadow:0 -10px 22px rgba(8,25,48,.16)!important;
}
.admin-shell .sidebar .sidebar-footer button{
  position:relative!important;
  z-index:51!important;
}
@media(max-width:760px){
  .admin-shell .sidebar{
    padding-bottom:82px!important;
  }
  .admin-shell .sidebar .sidebar-footer{
    left:12px!important;
    right:12px!important;
  }
}

/* INDEF v1.19.0.20 — sidebar completo desplazable + footer fijo
   Todo el contenido del menú usa el mismo scroll del sidebar. El footer queda
   sticky en el borde inferior y, al estar en flujo, no hay solapamiento visual. */
.admin-shell .sidebar{
  position:fixed!important;
  top:0!important;
  bottom:0!important;
  box-sizing:border-box!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  display:flex!important;
  flex-direction:column!important;
  padding-bottom:0!important;
  scrollbar-gutter:stable;
}
.admin-shell .sidebar > .sidebar-nav,
.admin-shell .sidebar > .sidebar-group,
.admin-shell .sidebar > .sidebar-section-label,
.admin-shell .sidebar > .sidebar-spacer{
  flex-shrink:0!important;
}
.admin-shell .sidebar > .sidebar-spacer{
  display:none!important;
}
.admin-shell .sidebar .sidebar-footer{
  position:sticky!important;
  bottom:0!important;
  left:auto!important;
  right:auto!important;
  inset-inline:auto!important;
  z-index:100!important;
  flex:0 0 auto!important;
  width:auto!important;
  margin-top:0!important;
  min-height:68px!important;
  height:auto!important;
  box-sizing:border-box!important;
  background:var(--tenant-primary,var(--menu-bg,#0F3D3E))!important;
  border-top:1px solid color-mix(in srgb,var(--tenant-secondary,#fff) 18%,var(--tenant-primary,#0F3D3E))!important;
  box-shadow:0 -8px 18px rgba(8,25,48,.18)!important;
  padding:13px 10px max(12px,env(safe-area-inset-bottom))!important;
}
.admin-shell .sidebar .sidebar-footer span,
.admin-shell .sidebar .sidebar-footer button{
  position:relative!important;
  z-index:101!important;
}
@media(max-width:760px){
  .admin-shell .sidebar{
    padding-bottom:0!important;
  }
}

/* INDEF v1.19.0.21 — un solo scroll para todo el menú
   El área de Administración no debe tener un scroll interno: todo el contenido
   de navegación del sidebar se desplaza junto. El footer permanece sticky. */
.admin-shell .sidebar > .sidebar-nav[aria-label="Administración"]{
  overflow:visible!important;
  overflow-y:visible!important;
  overflow-x:visible!important;
  flex:none!important;
  min-height:auto!important;
  max-height:none!important;
  height:auto!important;
}
.admin-shell .sidebar > .sidebar-nav[aria-label="Navegación principal"]{
  overflow:visible!important;
  overflow-y:visible!important;
  overflow-x:visible!important;
  flex:none!important;
}

/* v1.19.0.22 — sidebar brand/menu/footer split: fixed header/footer, one scrollable menu */

.admin-shell .sidebar {
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
}
.admin-shell .sidebar .sidebar-brand {
  flex: 0 0 auto !important;
}
.admin-shell .sidebar .sidebar-menu-scroll {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-gutter: stable;
  padding-bottom: 12px;
}
.admin-shell .sidebar .sidebar-menu-scroll .sidebar-nav {
  overflow: visible !important;
}
.admin-shell .sidebar .sidebar-menu-scroll .sidebar-nav,
.admin-shell .sidebar .sidebar-menu-scroll .sidebar-section-label,
.admin-shell .sidebar .sidebar-menu-scroll .sidebar-group {
  flex-shrink: 0;
}
.admin-shell .sidebar .sidebar-footer {
  flex: 0 0 auto !important;
  position: relative !important;
  inset: auto !important;
  margin-top: 0 !important;
  z-index: 10 !important;
  background: var(--tenant-primary) !important;
}
@media (max-width:760px){
  .admin-shell .sidebar .sidebar-menu-scroll { padding-bottom: 14px; }
}

/* INDEF v1.19.0.24 — scrollbar visual refinement
   The menu keeps its single scroll area; only the native scrollbar is visually
   reduced so it does not compete with the navigation or footer. */
.admin-shell .sidebar .sidebar-menu-scroll {
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.18) transparent;
}
.admin-shell .sidebar .sidebar-menu-scroll::-webkit-scrollbar {
  width: 4px;
}
.admin-shell .sidebar .sidebar-menu-scroll::-webkit-scrollbar-track {
  background: transparent;
}
.admin-shell .sidebar .sidebar-menu-scroll::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,.16);
  border-radius: 999px;
  border: 1px solid transparent;
  background-clip: padding-box;
}
.admin-shell .sidebar .sidebar-menu-scroll::-webkit-scrollbar-thumb:hover {
  background: rgba(255,255,255,.26);
  background-clip: padding-box;
}

/* Keep the fixed header/footer visually clean while the menu scrolls. */
.admin-shell .sidebar .sidebar-menu-scroll {
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.02);
}
.admin-shell .sidebar .sidebar-footer {
  box-shadow: 0 -6px 14px rgba(8,25,48,.10) !important;
}

@media (max-width:760px) {
  .admin-shell .sidebar .sidebar-menu-scroll {
    scrollbar-width: thin;
  }
  .admin-shell .sidebar .sidebar-menu-scroll::-webkit-scrollbar {
    width: 3px;
  }
}

/* v1.19.0.30 — Centro Maestro: navegación y tabla de empresas compactas */
.master-nav-heading{margin:22px 10px 7px;color:#7f8ba2;font-size:11px;font-weight:950;letter-spacing:.16em}
.master-nav{gap:3px!important}
.master-nav .nav-item{min-height:40px!important;padding:9px 10px!important;gap:10px!important;border:1px solid transparent;transition:background .16s ease,border-color .16s ease,transform .16s ease}
.master-nav .nav-item:hover{background:rgba(255,255,255,.065)!important;border-color:rgba(255,255,255,.06)}
.master-nav .nav-item.active{background:linear-gradient(90deg,#fff 0%,#f5f7fb 100%)!important;border-color:rgba(255,255,255,.45);transform:translateX(2px)}
.master-nav-icon{width:24px!important;height:24px!important;display:grid!important;place-items:center!important;border-radius:8px;background:rgba(255,255,255,.055);font-size:13px!important;color:#d6deea!important}
.master-nav .nav-item.active .master-nav-icon{background:#eef2ff;color:#4338ca!important}
.master-brand{position:relative!important;padding-bottom:18px!important}
.master-brand-copy{min-width:0}
.master-brand-badge{margin-left:auto;align-self:flex-start;padding:5px 7px;border-radius:999px;background:rgba(255,255,255,.08);color:#cbd5e1;font-size:8px;font-weight:950;letter-spacing:.12em}
.master-sidebar-tip{display:flex;align-items:center;gap:9px;margin:16px 4px 10px;padding:10px 10px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(255,255,255,.035)}
.master-sidebar-tip>span{font-size:11px;color:#4ade80;text-shadow:0 0 8px rgba(74,222,128,.45)}
.master-sidebar-tip strong{display:block;color:#e7ecf3;font-size:11px}.master-sidebar-tip small{display:block;margin-top:2px;color:#8997ac;font-size:11px}
.master-user-card button{display:flex!important;align-items:center;justify-content:space-between!important}
.master-user-card button span{font-size:13px;color:#94a3b8}
.master-company-table-wrap{border:1px solid #e2e7ef;border-radius:16px;background:#fff}
.master-company-table{table-layout:fixed}
.master-company-table th{padding:11px 12px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#748096;background:#f8fafc;border-bottom:1px solid #e5e9f0}
.master-company-table td{padding:14px 12px;vertical-align:middle;white-space:normal}
.master-company-table th:nth-child(1){width:22%}.master-company-table th:nth-child(2){width:13%}.master-company-table th:nth-child(3){width:20%}.master-company-table th:nth-child(4){width:13%}.master-company-table th:nth-child(5){width:16%}.master-company-table th:nth-child(6){width:16%}
.company-identity{display:flex;align-items:center;gap:10px;min-width:0}.company-avatar{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;border-radius:11px;background:#eef2ff;color:#4338ca;font-weight:950}.company-identity>div{min-width:0}.company-identity strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.company-identity small{display:block;margin-top:3px;color:#526173;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
.company-structure{display:grid;grid-template-columns:auto auto;gap:2px 7px;align-items:baseline}.company-structure strong{font-size:16px}.company-structure b{font-size:16px}.company-structure span{color:#526173;font-size:11px}
.license-cell{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.license-cell code{max-width:100%;font-size:11px;color:#5b6678;overflow-wrap:anywhere}
.plan-cell{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.plan-cell strong{font-size:12px;text-transform:capitalize}.cycle-badge{display:inline-flex;align-items:center;padding:4px 7px;border:1px solid #dbe4f0;border-radius:999px;background:#f8fafc;color:#536176;font-size:11px;font-weight:900}
.validity-cell strong{display:block;font-size:11px}.validity-cell span{display:block;margin-top:4px;color:#526173;font-size:11px}
.master-row-actions{display:flex;align-items:center;gap:7px}.master-actions-menu{position:relative}.master-actions-menu summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:8px 10px;border:1px solid #dfe4ec;border-radius:10px;background:#fff;color:#354155;font-size:12px;font-weight:850}.master-actions-menu summary::-webkit-details-marker{display:none}.master-actions-menu summary:hover{background:#f8fafc}.master-actions-pop{position:absolute;right:0;top:43px;z-index:30;display:flex;flex-direction:column;gap:5px;min-width:150px;padding:8px;border:1px solid #dce2eb;border-radius:12px;background:#fff;box-shadow:0 16px 35px rgba(15,23,42,.14)}.master-actions-pop button{width:100%;justify-content:flex-start}
@media(max-width:1100px){.master-company-table{min-width:860px}.master-company-table-wrap{overflow-x:auto}.master-company-table th:nth-child(1){width:21%}.master-company-table th:nth-child(6){width:18%}}
@media(max-width:700px){.master-row-actions{align-items:stretch;flex-direction:column}.master-actions-pop{position:fixed;right:14px;top:auto}.master-brand-badge{display:none}}


/* v1.19.0.31 — Centro Maestro: navegación sobria y menú de acciones flotante */
.master-shell .master-sidebar{
  background:#102b4d!important;
  color:#eef4fb;
  width:252px;
  padding:18px 14px 14px;
  border-right:1px solid rgba(255,255,255,.08);
  box-shadow:8px 0 24px rgba(15,23,42,.08);
}
.master-shell .master-brand{
  min-height:58px;
  padding:2px 10px 16px!important;
  border-bottom:1px solid rgba(255,255,255,.11);
  gap:11px;
}
.master-brand-mark{
  width:38px!important;height:38px!important;border-radius:9px!important;
  background:#173b66!important;color:#fff!important;box-shadow:none!important;
  border:1px solid rgba(255,255,255,.12);
}
.master-brand-copy strong{font-size:12px!important;letter-spacing:.12em!important;color:#f7fafc}
.master-brand-copy span{font-size:11px!important;color:#aebed0!important}
.master-brand-badge{display:none!important}
.master-nav-heading{
  margin:21px 10px 7px!important;color:#8fa6be!important;font-size:11px!important;
  font-weight:800!important;letter-spacing:.13em!important;
}
.master-nav{gap:2px!important}
.master-nav .nav-item{
  min-height:39px!important;padding:8px 10px!important;gap:10px!important;
  border:0!important;border-radius:7px!important;color:#d3deea!important;
  transition:background .15s ease,color .15s ease;
}
.master-nav .nav-item:hover{background:rgba(255,255,255,.065)!important;color:#fff!important}
.master-nav .nav-item.active{
  background:#1e4774!important;color:#fff!important;box-shadow:inset 3px 0 0 #bfe6da!important;
  transform:none!important;border:0!important;
}
.master-nav-icon{
  width:28px!important;height:28px!important;border-radius:6px!important;
  display:grid!important;place-items:center!important;background:transparent!important;
  color:#9fb3c8!important;font-size:13px!important;font-weight:700!important;
}
.master-nav .nav-item.active .master-nav-icon{background:transparent!important;color:#fff!important}
.master-sidebar-tip{
  margin:15px 4px 8px!important;padding:9px 10px!important;border:0!important;
  border-left:2px solid rgba(255,255,255,.35)!important;border-radius:0!important;background:rgba(255,255,255,.035)!important;
}
.master-sidebar-tip>span{color:#bfe6da!important;text-shadow:none!important}
.master-sidebar-tip strong{font-size:11px!important;color:#dbe7f2!important}
.master-sidebar-tip small{font-size:11px!important;color:#8fa6be!important}
.master-user-card{
  padding:12px 10px!important;border:1px solid rgba(255,255,255,.09)!important;
  border-radius:9px!important;background:rgba(5,20,38,.18)!important;
}
.master-user-label{font-size:8px!important;letter-spacing:.12em!important;color:#8199b1!important}
.master-user-card strong{font-size:11px!important;color:#eef4fb!important;margin-bottom:9px!important}
.master-user-card button{min-height:32px!important;border-radius:6px!important;background:rgba(255,255,255,.055)!important;color:#c9d6e3!important}
.master-user-card button:hover{background:rgba(255,255,255,.09)!important;color:#fff!important}

/* Empresas: acciones sin dropdown incrustado dentro de la tabla */
.master-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;white-space:nowrap}
.master-row-actions .small-btn{min-height:34px;padding:7px 11px;border-radius:7px}
.master-action-trigger{
  min-width:36px!important;width:36px!important;height:34px!important;padding:0!important;
  border:1px solid #d9e0e8!important;border-radius:7px!important;background:#fff!important;
  color:#334155!important;font-size:18px!important;font-weight:800!important;line-height:1!important;
}
.master-action-trigger:hover{background:#f6f8fb!important;border-color:#cbd5e1!important}
.master-action-popover{
  position:fixed;z-index:100000;display:none;min-width:178px;padding:6px;
  border:1px solid #d8e0e8;border-radius:9px;background:#fff;
  box-shadow:0 14px 30px rgba(15,23,42,.16);
}
.master-action-popover.open{display:block}
.master-action-popover button{
  display:flex;width:100%;align-items:center;justify-content:flex-start;min-height:34px;
  padding:7px 9px;border:0!important;border-radius:6px;background:transparent;color:#26364a;
  font:700 12px/1.2 inherit;cursor:pointer;text-align:left;
}
.master-action-popover button:hover{background:#f1f5f9!important;color:#102b4d!important}
.master-action-popover button[data-status]{color:#b42318}
.master-company-table td:last-child{padding-right:10px}
@media(max-width:700px){.master-row-actions{justify-content:flex-start}.master-action-popover{max-width:calc(100vw - 28px)}}

/* v1.19.0.32 — alcance de administradores */
.scope-modal-card{max-width:620px}.scope-help{margin:0 0 14px}.scope-mode-option,.scope-franchise-option{display:flex;gap:12px;align-items:flex-start;padding:13px 14px;border:1px solid #dfe4eb;border-radius:12px;margin:8px 0;background:#fff;cursor:pointer}.scope-mode-option input,.scope-franchise-option input{margin-top:4px}.scope-mode-option span,.scope-franchise-option span{display:flex;flex-direction:column;gap:3px}.scope-mode-option small,.scope-franchise-option small{font-weight:500;color:#526173}.scope-franchises{margin:12px 0;padding:4px;max-height:280px;overflow:auto;border-top:1px solid #eef1f5}.scope-franchise-option{margin:7px 0}.master-management-card table th:nth-child(6),.master-management-card table td:nth-child(6){min-width:145px}.master-management-card table th:nth-child(7),.master-management-card table td:nth-child(7){min-width:190px}
/* v1.19.0.36 — marketing avanzado + configuración de rachas */
.campaign-segment-box{margin:18px 0;padding:18px;border:1px solid var(--border,#dde2e8);border-radius:18px;background:linear-gradient(135deg,#fbfcff,#fff)}
.segment-fields{display:grid;gap:14px;margin-top:14px}.segment-presets{display:flex;gap:8px;flex-wrap:wrap}.segment-presets button{font-size:.82rem}.segment-existing{align-self:end}.campaign-segment-chip{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:7px 10px;border-radius:999px;background:#f4f7fb;border:1px solid var(--border,#dde2e8);font-size:.78rem;font-weight:700}
.streak-config-card{scroll-margin-top:24px}.streak-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.streak-config-item{border:1px solid var(--border,#dde2e8);border-radius:18px;padding:18px;background:#fff}.streak-config-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.streak-config-head h3{margin:0}.streak-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.streak-form label{display:grid;gap:6px;font-weight:700;font-size:.86rem}.streak-form label.check{display:flex;align-items:center;gap:8px}.streak-form textarea,.streak-form label:nth-last-of-type(2),.streak-form label:nth-last-of-type(1),.streak-form button{grid-column:1/-1}.streak-form button{margin-top:4px}.streak-form .hidden{display:none}
@media(max-width:850px){.streak-config-grid{grid-template-columns:1fr}.streak-form{grid-template-columns:1fr}.segment-existing{align-self:auto}}
/* INDEF v1.19.1.0 — Rachas evolutivas */
.streak-evolution-help{margin-bottom:16px}.streak-evolution-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:12px}.streak-evolution-flow>div:not(.flow-arrow){border:1px solid var(--border,#dde2e8);border-radius:16px;padding:14px 16px;background:#fff;display:grid;gap:4px}.streak-evolution-flow strong{font-size:1rem}.streak-evolution-flow span{color:var(--muted,#526173);font-size:.86rem}.flow-arrow{font-size:1.4rem;color:#7890aa}.streak-evolution-card .streak-config-head{align-items:center}.streak-toggle{margin-left:auto!important;display:flex!important;align-items:center;gap:8px;font-weight:800!important;font-size:.82rem!important}.streak-toggle input{accent-color:#173a63}.streak-level-list{display:grid;gap:12px}.streak-level-card{border:1px solid var(--border,#dde2e8);border-radius:16px;padding:14px;background:#fbfcfe}.streak-level-top{display:flex;align-items:center;gap:12px;margin-bottom:12px}.streak-level-badge{width:48px;height:48px;border-radius:14px;border:1px solid var(--border,#dde2e8);background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;flex:0 0 48px}.streak-level-icon-image{display:block!important;width:100%;height:100%;object-fit:contain;padding:5px;visibility:visible!important;opacity:1!important}.streak-level-badge:has(.streak-level-icon-image) .streak-level-icon-fallback{display:none!important}.streak-level-icon-fallback{display:none;align-items:center;justify-content:center;width:100%;height:100%}.streak-level-heading{min-width:0;flex:1;display:grid;gap:4px}.streak-level-heading .level-name{font-size:1rem;font-weight:800;border:0;background:transparent;padding:0;outline:none}.streak-level-range-preview{font-size:.76rem;color:var(--muted,#526173)}.danger-text{color:#a52b2b}.streak-level-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.streak-level-grid label{display:grid;gap:5px;font-weight:700;font-size:.8rem}.streak-level-grid .level-message-wrap{grid-column:1/-1}.streak-level-grid .level-url,.streak-level-grid input,.streak-level-grid select,.streak-level-grid textarea{width:100%;box-sizing:border-box}.label-hint{font-weight:500;color:var(--muted,#526173);font-size:.7rem}.add-level{width:100%;margin-top:12px}.full-width{width:100%;margin-top:8px}.empty-state{border:1px dashed var(--border,#cfd7e1);border-radius:14px;padding:18px;text-align:center;color:var(--muted,#526173)}.hidden{display:none!important}@media(max-width:850px){.streak-evolution-flow{grid-template-columns:1fr}.flow-arrow{transform:rotate(90deg);justify-self:center}.streak-level-grid{grid-template-columns:1fr}.streak-level-grid .level-message-wrap{grid-column:auto}.streak-level-top{align-items:flex-start}.streak-level-top .danger-text{margin-left:auto}}

/* v1.19.2.1 streak level image upload */
.level-upload-status{display:block;min-height:18px;margin-top:4px}.level-icon-file{width:100%;padding:8px;border:1px solid #d9e1ea;border-radius:10px;background:#fff}

.streak-scope-card{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:14px 0;padding:14px 16px;border:1px solid #dfe7f0;border-radius:14px;background:#f8fafc}.streak-scope-card>div{display:grid;gap:3px}.streak-scope-card strong{font-size:15px;color:#102f55}.streak-scope-card small{color:#526173}.streak-card-context{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-bottom:14px;margin-bottom:16px;border-bottom:1px solid #e8edf2}.streak-card-context>div{display:grid;gap:3px}.streak-card-context strong{font-size:15px;color:#102f55}.streak-card-context small{color:#526173}.loyalty-level-head{display:flex;justify-content:space-between;align-items:center;gap:18px}.streak-weekly-mini{display:flex;align-items:center;gap:9px;min-width:150px}.streak-weekly-mini strong{display:block;color:#102f55}.streak-weekly-mini small{display:block;color:#526173}.loyalty-level-badge img{width:42px;height:42px;object-fit:contain;border-radius:10px}.streak-scope-card .badge{white-space:nowrap}@media(max-width:700px){.streak-card-context,.streak-scope-card,.loyalty-level-head{align-items:flex-start;flex-direction:column}.streak-weekly-mini{min-width:0}}
.franchise-checklist{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;padding:10px;border:1px solid #dfe5ea;border-radius:12px;background:#f8fafc;max-height:180px;overflow:auto}
.franchise-checklist label{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;padding:7px 8px;border-radius:8px;background:#fff}
.franchise-checklist input{accent-color:#17365d}
.franchise-check-all{grid-column:1/-1;border-bottom:1px solid #e5e7eb!important;background:transparent!important;padding-bottom:9px!important}

/* INDEF v1.19.2.7 — Rachas: iconografía SVG consistente y limpia */
.streak-visual-icon,.streak-stat-icon,.streak-inline-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.streak-visual-icon{width:42px;height:42px;border-radius:13px;background:#eef5fb;border:1px solid #dce8f3;color:#1f5d91}
.streak-visual-icon svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.streak-stat-icon{width:28px;height:28px;color:#1f5d91}
.streak-stat-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.streak-inline-icon{width:20px;height:20px;vertical-align:middle}
.streak-inline-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.loyalty-level-badge>[data-streak-icon],.loyalty-level-badge>.streak-level-icon-svg{display:flex;width:100%;height:100%;align-items:center;justify-content:center}
.loyalty-level-badge>[data-streak-icon] svg,.loyalty-level-badge>.streak-level-icon-svg svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.streak-level-icon-svg{display:inline-flex;width:100%;height:100%;align-items:center;justify-content:center;color:#1f5d91}
.streak-level-icon-svg svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.streak-level-icon-fallback{font-size:0}
.streak-level-icon-fallback svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.streak-level-grid .level-emoji{font-weight:700}
.streak-config-grid{margin-top:18px}
@media(max-width:850px){.streak-visual-icon{width:38px;height:38px}.streak-level-top{gap:10px}}

/* v1.19.2.9 — Rachas: icono personalizado visible y sin sección de recompensas redundante */
.loyalty-level-badge.streak-level-badge-large,.loyalty-level-badge.streak-level-badge-small{display:flex;align-items:center;justify-content:center;flex:0 0 auto;border-radius:14px;background:#f7fafc;border:1px solid #e3eaf1;overflow:hidden;color:#1f5d91}
.loyalty-level-badge.streak-level-badge-large{width:64px;height:64px}
.loyalty-level-badge.streak-level-badge-small{width:46px;height:46px;border-radius:12px}
.streak-custom-level-icon{display:block;width:56px!important;height:56px!important;max-width:56px!important;max-height:56px!important;object-fit:contain;border-radius:10px}
.streak-level-badge-small .streak-custom-level-icon{width:38px!important;height:38px!important;max-width:38px!important;max-height:38px!important}
.loyalty-level-badge .streak-level-icon-svg{display:flex;width:100%;height:100%;align-items:center;justify-content:center}
.loyalty-level-badge .streak-level-icon-svg svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:700px){.loyalty-level-badge.streak-level-badge-large{width:58px;height:58px}.streak-custom-level-icon{width:50px!important;height:50px!important;max-width:50px!important;max-height:50px!important}.loyalty-level-head{gap:14px}.streak-weekly-mini{width:100%}}

/* INDEF v1.19.2.11 — modal de edición de usuarios estable y responsive */
#memberEditModal{align-items:center;overflow-y:auto;overscroll-behavior:contain;padding:14px;}
#memberEditModal .member-edit-card{width:min(860px,100%);max-width:860px;max-height:calc(100dvh - 28px);overflow:hidden;display:flex;flex-direction:column;box-sizing:border-box;}
#memberEditModal .qr-modal-header{position:sticky;top:0;z-index:3;background:#fff;padding-bottom:12px;border-bottom:1px solid #edf0f4;}
#memberEditModal .member-edit-grid{overflow-y:auto;min-height:0;padding:16px 3px 4px;margin-top:0;}
#memberEditModal .member-edit-actions{position:sticky;bottom:0;z-index:3;background:#fff;border-top:1px solid #edf0f4;padding:12px 0 0;margin-top:10px;}
#memberEditModal .member-edit-info{min-width:0;}
#memberEditModal .franchise-checklist{max-height:150px;min-height:0;}
#memberEditModal .message{margin:8px 0 0;}
@media(max-width:700px){
  #memberEditModal{align-items:flex-start;padding:8px;}
  #memberEditModal .member-edit-card{max-height:calc(100dvh - 16px);border-radius:18px;padding:14px;}
  #memberEditModal .member-edit-grid{grid-template-columns:92px minmax(0,1fr);gap:12px;padding-top:12px;}
  #memberEditModal .member-edit-photo{display:block;}
  #memberEditModal .member-edit-photo .placeholder,#memberEditModal .member-edit-photo img{width:88px;height:88px;}
  #memberEditModal .photo-input-label{font-size:11px;margin-top:8px;}
  #memberEditModal .photo-input-label .photo-file{font-size:11px;padding:5px;}
  #memberEditModal .member-edit-info{gap:9px;}
  #memberEditModal .member-edit-info .form-field{min-width:0;}
  #memberEditModal .member-edit-info input,#memberEditModal .member-edit-info select{min-width:0;width:100%;box-sizing:border-box;}
  #memberEditModal .franchise-checklist{grid-template-columns:1fr;max-height:125px;}
  #memberEditModal .member-edit-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:8px;}
  #memberEditModal .member-edit-actions .danger{margin-right:0;}
}
@media(max-width:520px){
  #memberEditModal .member-edit-grid{grid-template-columns:1fr;}
  #memberEditModal .member-edit-photo{display:grid;grid-template-columns:82px 1fr;gap:10px;align-items:center;}
  #memberEditModal .member-edit-photo .placeholder,#memberEditModal .member-edit-photo img{width:82px;height:82px;}
  #memberEditModal .member-edit-actions{grid-template-columns:1fr 1fr;}
}
body.modal-open{overflow:hidden;}

/* =========================================================
   INDEF v1.19.3.0 — UI POLISH
   Visual redesign focused on hierarchy, density, accessibility and paint cost.
   No functional selectors or data attributes are changed.
   ========================================================= */
:root{
  --ui-bg:#f4f7fb;
  --ui-surface:#ffffff;
  --ui-surface-soft:#f8fafc;
  --ui-border:#e4e9f0;
  --ui-border-strong:#d7dee8;
  --ui-text:#0F3D3E;
  --ui-muted:#526173;
  --ui-primary:var(--tenant-primary,#0F3D3E);
  --ui-accent:var(--tenant-accent,#10B991);
  --ui-success:#18794e;
  --ui-danger:#b42318;
  --ui-radius:16px;
  --ui-radius-sm:12px;
  --ui-shadow:0 8px 28px rgba(15,61,62,.055);
  --ui-shadow-hover:0 12px 32px rgba(15,61,62,.09);
}
html{background:var(--ui-bg);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
body{background:var(--ui-bg);color:var(--ui-text);line-height:1.45}
button,input,select,textarea{font:inherit}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--ui-accent) 24%,transparent);outline-offset:2px}

/* Administrative canvas */
.admin-shell{background:var(--ui-bg)!important}
.admin-shell .admin-app{background:transparent!important}
.admin-shell .admin-app>.topbar,
.admin-shell .admin-app>.page-header{margin-bottom:22px}
.admin-shell .sidebar{
  background:linear-gradient(180deg,var(--tenant-primary,#0F3D3E) 0%,#0d2441 100%)!important;
  box-shadow:10px 0 30px rgba(10,29,52,.10);
  border-right:1px solid rgba(255,255,255,.07);
}
.admin-shell .sidebar-brand{padding:20px 18px 18px!important;border-bottom:1px solid rgba(255,255,255,.09)!important}
.admin-shell .sidebar-brand img{filter:drop-shadow(0 4px 10px rgba(0,0,0,.12))}
.admin-shell .sidebar-section-label{font-size:11px!important;letter-spacing:.16em!important;color:#91bdf2!important;padding-top:16px!important}
.admin-shell .nav-item,.admin-shell .sidebar-group-summary{
  min-height:44px!important;
  border-radius:11px!important;
  margin:2px 6px!important;
  padding:10px 12px!important;
  font-size:13px!important;
}
.admin-shell .nav-item:hover,.admin-shell .sidebar-group-summary:hover{transform:none!important;background:rgba(255,255,255,.075)!important}
.admin-shell .nav-item.active{
  background:#fff!important;color:var(--tenant-primary,#0F3D3E)!important;
  box-shadow:0 5px 18px rgba(0,0,0,.13)!important;
}
.admin-shell .nav-item.active .nav-icon{color:var(--ui-accent)!important}
.admin-shell .nav-subitem{min-height:38px!important;margin:1px 10px 1px 18px!important;border-radius:9px!important;padding-left:38px!important}
.admin-shell .nav-subitem.active{background:rgba(255,255,255,.12)!important;color:#fff!important}
.admin-shell .sidebar-footer{border-top-color:rgba(255,255,255,.10)!important}

/* Content hierarchy */
.admin-shell .card,.admin-shell .stat-card,.admin-shell .ops-metric,
.beneficiary-app .card{
  background:var(--ui-surface)!important;
  border:1px solid var(--ui-border)!important;
  border-radius:var(--ui-radius)!important;
  box-shadow:var(--ui-shadow)!important;
}
.admin-shell .card:hover,.admin-shell .stat-card:hover,.admin-shell .ops-metric:hover{box-shadow:var(--ui-shadow-hover)!important}
.admin-shell h1{font-size:clamp(27px,2.4vw,34px);letter-spacing:-.025em;color:var(--ui-text)}
.admin-shell h2,.beneficiary-app h2{letter-spacing:-.018em;color:var(--ui-text)}
.admin-shell h3,.beneficiary-app h3{letter-spacing:-.01em;color:var(--ui-text)}
.eyebrow,.section-kicker{color:color-mix(in srgb,var(--ui-primary) 62%,var(--ui-accent))!important}
.muted{color:var(--ui-muted)!important}

/* Controls */
input,select,textarea{
  border:1px solid var(--ui-border-strong)!important;
  background:#fff!important;
  color:var(--ui-text)!important;
  border-radius:var(--ui-radius-sm)!important;
  box-shadow:0 1px 1px rgba(15,61,62,.02)!important;
  transition:border-color .15s ease,box-shadow .15s ease,background .15s ease;
}
input:hover,select:hover,textarea:hover{border-color:#c6d0dc!important}
input:focus,select:focus,textarea:focus{
  border-color:color-mix(in srgb,var(--ui-accent) 68%,#fff)!important;
  box-shadow:0 0 0 4px color-mix(in srgb,var(--ui-accent) 11%,transparent)!important;
}
button,.secondary-link{
  min-height:42px;
  border-radius:11px!important;
  box-shadow:none;
  transition:transform .14s ease,box-shadow .14s ease,background-color .14s ease,border-color .14s ease;
}
button:hover,.secondary-link:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(15,61,62,.09)}
button.primary,.primary{background:var(--ui-primary)!important;box-shadow:0 6px 16px rgba(16,36,63,.14)}
button.primary:hover,.primary:hover{filter:none;background:color-mix(in srgb,var(--ui-primary) 92%,#000)!important}
button.secondary,.secondary,.secondary-link{background:#f3f6fa!important;border:1px solid var(--ui-border)!important;color:var(--ui-text)!important}
button.secondary:hover,.secondary:hover,.secondary-link:hover{background:#edf2f7!important;border-color:#d5dde7!important}
button.danger,.danger{background:#b42318!important;box-shadow:0 5px 14px rgba(180,35,24,.12)}
.badge{border:1px solid transparent;line-height:1.2}
.badge.active{background:#e8f7ef;color:#176b45;border-color:#cdebd9}

/* Filters, toolbars and tables */
.employee-filters,.employee-tools,.admin-help,.campaign-location-box,
.license-summary-item,.support-composer,.support-panel{
  background:var(--ui-surface-soft)!important;
  border-color:var(--ui-border)!important;
}
.employee-filters,.employee-tools{border-radius:14px!important}
.table-wrap{border:1px solid var(--ui-border);border-radius:14px;background:#fff}
table{border-collapse:separate;border-spacing:0}
th{font-size:11px!important;text-transform:uppercase;letter-spacing:.055em;color:#526173;background:#f8fafc}
th,td{border-bottom:1px solid #edf1f5!important;padding:13px 12px!important}
tbody tr:last-child td{border-bottom:0!important}
tbody tr:hover td{background:#fbfdff}

/* Beneficiary experience */
.beneficiary-app{max-width:960px!important;padding-top:28px}
.beneficiary-desktop-head{padding:4px 2px 6px}
.beneficiary-desktop-head h1{font-size:32px;letter-spacing:-.03em}
.beneficiary-tabs{background:#eaf0f6!important;border:1px solid #e1e7ef!important;border-radius:15px!important;padding:5px!important;box-shadow:0 4px 14px rgba(15,61,62,.035)}
.beneficiary-tab{border-radius:11px!important;transition:background-color .15s ease,color .15s ease,box-shadow .15s ease}
.beneficiary-tab.active{box-shadow:0 4px 12px rgba(15,61,62,.08)!important}
.beneficiary-app .section-title{align-items:flex-start}
.beneficiary-app .card{padding:24px}
.qr-account-card,.engagement-card{overflow:hidden}
.beneficiary-credential-stage{border-color:#e1e7ef!important;background:linear-gradient(145deg,#f7fafc,#fff)!important;box-shadow:0 12px 30px rgba(15,61,62,.065)!important}
.beneficiary-credential-frame{box-shadow:0 6px 20px rgba(15,61,62,.07)!important}
.engagement-grid{gap:12px}
.engagement-stat{background:#f8fafc!important;border-color:#e5eaf0!important;border-radius:14px!important}
.engagement-stat strong{font-variant-numeric:tabular-nums}
.loyalty-level-card{border-color:#e2e8ef!important;border-radius:16px!important;background:linear-gradient(180deg,#fff,#fbfcfe)!important}
.loyalty-level-badge.streak-level-badge-large{width:68px;height:68px;border-radius:16px;background:#f7fafc;border-color:#e1e7ef}
.loyalty-level-badge.streak-level-badge-small{background:#f7fafc;border-color:#e1e7ef}
.streak-custom-level-icon{padding:4px}
.beneficiary-bottom-nav{box-shadow:0 10px 30px rgba(15,61,62,.13)!important;border-color:#dfe6ee!important}

/* Editing modal: preserve the stable behavior while improving density */
#memberEditModal .member-edit-card{border:1px solid var(--ui-border)!important;border-radius:20px!important;box-shadow:0 24px 70px rgba(10,28,50,.25)!important}
#memberEditModal .qr-modal-header,#memberEditModal .member-edit-actions{background:#fff!important}
#memberEditModal .franchise-checklist{background:#F1F5F9!important;border-color:#e1e7ef!important}
#memberEditModal .franchise-checklist label{border:1px solid #edf1f5!important}

/* Reduce expensive motion and respect accessibility preferences */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* Responsive polish */
@media(max-width:900px){
  .admin-shell .admin-app{padding-left:20px!important;padding-right:20px!important}
  .admin-shell h1{font-size:28px}
}
@media(max-width:700px){
  .beneficiary-app{padding-top:0!important}
  .beneficiary-app .card{padding:17px!important}
  .beneficiary-mobile-header{border-bottom:1px solid rgba(215,222,232,.7);margin-bottom:8px}
  .beneficiary-brand strong{color:var(--ui-text)}
  .section-title h2{font-size:22px!important}
  .engagement-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .loyalty-level-badge.streak-level-badge-large{width:60px;height:60px}
  .beneficiary-bottom-nav{background:rgba(255,255,255,.94)!important;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
}
@media(max-width:520px){
  .admin-shell .admin-app{padding-left:14px!important;padding-right:14px!important}
  .admin-shell .card{border-radius:15px!important;padding:17px!important}
  .engagement-grid{gap:8px}
  .engagement-stat{padding:12px!important}
}

/* =========================================================
   INDEF v1.19.4.0 · POLISH
   Refinamiento transversal: jerarquía, densidad, estados y responsive.
   No cambia selectores de datos ni lógica de negocio.
   ========================================================= */
:root{
  --ui-space-1:4px;
  --ui-space-2:8px;
  --ui-space-3:12px;
  --ui-space-4:16px;
  --ui-space-5:20px;
  --ui-space-6:24px;
  --ui-space-7:32px;
  --ui-focus:color-mix(in srgb,var(--ui-accent) 18%,transparent);
}

html{scroll-behavior:smooth;scrollbar-gutter:stable}
body{overflow-x:hidden}
::selection{background:color-mix(in srgb,var(--ui-accent) 20%,#fff);color:var(--ui-text)}

/* Navegación: menos ruido y mejor lectura */
.admin-shell .sidebar{box-shadow:6px 0 22px rgba(10,29,52,.08)!important}
.admin-shell .sidebar-menu-scroll{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}
.admin-shell .sidebar-menu-scroll::-webkit-scrollbar{width:6px}
.admin-shell .sidebar-menu-scroll::-webkit-scrollbar-track{background:transparent}
.admin-shell .sidebar-menu-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,.20);border-radius:999px}
.admin-shell .sidebar-group-summary .sidebar-group-chevron{transition:transform .16s ease;color:#9db2c9}
.admin-shell .sidebar-group[open] .sidebar-group-chevron{transform:rotate(180deg)}
.admin-shell .nav-item,.admin-shell .sidebar-group-summary{font-weight:750!important;letter-spacing:-.005em}
.admin-shell .nav-item .nav-icon,.admin-shell .sidebar-group-summary .nav-icon{opacity:.9}
.admin-shell .nav-item.active .nav-icon{opacity:1}

/* Encabezados y ritmo vertical */
.admin-shell .page-head,.admin-shell .topbar{max-width:1280px}
.admin-shell .page-head h1,.admin-shell .topbar h1{line-height:1.08}
.admin-shell .page-head p,.admin-shell .topbar .muted{max-width:72ch}
.section-title{min-width:0}
.section-title>div{min-width:0}
.section-title .muted{max-width:72ch}

/* Superficies: una sola elevación visual, menos apariencia de "bloques apilados" */
.admin-shell .card,.admin-shell .stat-card,.admin-shell .ops-metric,.beneficiary-app .card{
  box-shadow:0 5px 20px rgba(15,61,62,.045)!important;
}
.admin-shell .card:hover,.admin-shell .stat-card:hover,.admin-shell .ops-metric:hover{
  box-shadow:0 9px 26px rgba(15,61,62,.075)!important;
}

/* Controles */
input,select,textarea{min-height:44px}
textarea{resize:vertical;min-height:110px}
button,.secondary-link{will-change:auto}
button:hover,.secondary-link:hover{transform:translateY(-1px);box-shadow:0 6px 15px rgba(15,61,62,.075)}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible{
  outline:3px solid var(--ui-focus)!important;outline-offset:2px!important;
}
button:disabled{filter:none!important}

/* Tablas: datos primero, adornos después */
.table-wrap{overflow:auto;overscroll-behavior:contain}
table{font-variant-numeric:tabular-nums}
th{position:sticky;top:0;z-index:1}
tbody tr{transition:background-color .12s ease}

/* Estados de carga y mensajes */
.message,.empty-state{line-height:1.45}
.empty-state{min-height:84px;display:flex;align-items:center;justify-content:center}

/* Modal de edición: nunca invade la pantalla completa sin necesidad */
.qr-modal{overscroll-behavior:contain}
#memberEditModal .member-edit-card{width:min(760px,calc(100vw - 32px));max-height:min(92dvh,900px)}
#memberEditModal .member-edit-actions{position:sticky;bottom:0;z-index:4;padding-top:12px;border-top:1px solid var(--ui-border)!important}

/* Iconografía: SVG siempre ópticamente alineado */
.nav-icon svg,.icon svg,.streak-stat-icon svg,.streak-inline-icon svg,.loyalty-level-badge svg,.loyalty-reward-icon svg{
  display:block;width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;
}
.master-nav-icon{display:inline-flex!important;align-items:center;justify-content:center;font-size:0}
.master-nav-icon svg{width:17px;height:17px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* Usuario final: foco en lo importante y mejor uso del ancho */
.beneficiary-app{max-width:980px!important}
.beneficiary-app .section-title h2{line-height:1.15}
.engagement-stat{min-height:92px}
.loyalty-level-card{box-shadow:none!important}
.loyalty-level-head{align-items:center}
.loyalty-level-badge.streak-level-badge-large{flex-basis:68px}
.loyalty-level-badge.streak-level-badge-small{flex-basis:46px}
.streak-custom-level-icon{object-fit:contain;display:block}
.beneficiary-bottom-nav{padding-bottom:max(8px,env(safe-area-inset-bottom))!important}

/* Evita que ayudas de diagnóstico internas aparezcan en producción */
#staticBuildGuard,.portal-page-boot{display:none!important}

/* Respeto por usuarios que reducen movimiento */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  tbody tr,button,.secondary-link,.sidebar-group-chevron{transition:none!important}
}

@media(max-width:900px){
  .admin-shell .admin-app{padding-top:22px!important}
  .admin-shell .page-head{margin-bottom:18px}
}
@media(max-width:700px){
  .admin-shell .page-head h1{font-size:26px!important}
  .admin-shell .page-head p{font-size:14px}
  .section-title{gap:14px}
  .section-title>button{flex:0 0 auto}
  .table-wrap{border-radius:12px}
  .table-wrap table{min-width:680px}
  .beneficiary-app .section-title{gap:12px}
  .beneficiary-app .section-title>button{min-height:40px}
  .loyalty-level-head{align-items:flex-start;flex-direction:column}
  .streak-weekly-mini{width:100%;padding-top:2px}
}
@media(max-width:520px){
  .admin-shell .page-head{padding-inline:2px}
  .admin-shell .page-head h1{font-size:24px!important}
  .admin-shell .card{margin-bottom:14px!important}
  .section-title>button{width:100%}
  .beneficiary-app .section-title>button{width:auto}
  #memberEditModal .member-edit-card{width:calc(100vw - 20px);max-height:94dvh}
  .beneficiary-bottom-nav{left:10px!important;right:10px!important;bottom:max(8px,env(safe-area-inset-bottom))!important}
}

/* Micro-polish for inline icon affordances */
.button-icon,.security-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.button-icon{width:17px;height:17px}
.security-icon{width:16px;height:16px;margin-right:5px;vertical-align:-3px}
.button-icon svg,.security-icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.master-sidebar-tip>span{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;font-size:0;color:#bfe6da!important;text-shadow:none!important}
.master-sidebar-tip>span:before{content:"";width:8px;height:8px;border:1.5px solid currentColor;border-radius:50%;box-shadow:0 0 0 3px rgba(112,180,255,.10)}
.marketing-view-switcher a{display:inline-flex;align-items:center;gap:7px}
.segment-presets button{display:inline-flex;align-items:center;gap:7px}
.segment-presets .button-icon{width:16px;height:16px}
.qr-security-note strong{display:inline-flex;align-items:center}
.loyalty-reward-icon{display:inline-flex;align-items:center;justify-content:center}
.loyalty-reward-icon svg{width:24px;height:24px}
/* v1.19.4.0 — sistema comercial */
.master-commercial-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0}.master-commercial-item{padding:16px 18px;border:1px solid #dfe5ea;border-radius:16px;background:#fff}.master-commercial-item span{display:block;font-size:11px;font-weight:900;letter-spacing:.08em;color:#526173}.master-commercial-item strong{display:block;margin-top:6px;font-size:22px;color:#0F3D3E;font-variant-numeric:tabular-nums}@media(max-width:800px){.master-commercial-strip{grid-template-columns:1fr 1fr}}@media(max-width:520px){.master-commercial-strip{grid-template-columns:1fr}}

/* v1.19.8.4 — Centro Maestro: navegación por hash + cuenta fija */
.master-shell .master-sidebar {
  display:flex!important;
  flex-direction:column!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
}
/* Sticky dentro del sidebar: no tapa el menú al hacer scroll y hereda el color del sidebar. */
.master-shell .master-sidebar .master-user-card {
  position:sticky!important;
  bottom:0!important;
  flex:0 0 auto;
  margin:auto 0 0!important;
  background:inherit!important;
  box-shadow:0 -10px 16px -6px rgba(8,25,48,.28)!important;
  z-index:2!important;
}

.branch-registration-url{display:flex;align-items:center;gap:8px;min-width:280px}.branch-registration-url code{display:block;max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:7px;padding:6px 8px}.branch-registration-url .small-btn{flex:0 0 auto}.franchise-context{display:flex;flex-direction:column;gap:3px}.franchise-context strong{font-size:15px}.franchise-context span{font-weight:700}.franchise-context small{opacity:.75}
/* v1.19.9.0 — Resellers */
.reseller-form{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end}
.reseller-form button{min-height:44px}
.reseller-linked-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.reseller-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border,#e5e7eb);border-radius:999px;padding:8px 10px;background:var(--surface,#fff);font-weight:700}
.reseller-chip button{border:0;background:transparent;cursor:pointer;font-size:18px;line-height:1}
.mini{padding:7px 10px!important;font-size:12px!important}

.campaign-grid{display:grid;gap:14px}.qr-special-card{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:16px;border:1px solid #e4eaf1;border-radius:14px;background:#fff}.campaign-qr-wrap{text-align:center}.campaign-qr{display:inline-flex;background:#fff;padding:8px;border-radius:10px}.campaign-qr img,.campaign-qr canvas{display:block}@media(max-width:680px){.qr-special-card{display:grid}.campaign-qr-wrap{justify-self:center}}

/* v1.19.9.5 · Analytics de registros por sucursal */
.branch-analytics{margin:0 0 20px;padding:20px;border:1px solid var(--tenant-border,#dfe6ef);border-radius:18px;background:var(--tenant-surface,#fff)}
.branch-analytics .section-title{align-items:flex-start;margin-bottom:14px}
.branch-analytics-controls select{min-width:155px}
.branch-analytics-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0 18px}
.analytics-mini{padding:15px 16px;border:1px solid rgba(16,36,63,.09);border-radius:15px;background:linear-gradient(180deg,#fff,#f8fafc);display:flex;flex-direction:column;gap:5px}
.analytics-mini span{font-size:11px;font-weight:800;letter-spacing:.08em;color:#526173}.analytics-mini strong{font-size:25px;line-height:1.1}.analytics-mini small{font-size:12px;color:#526173}
.branch-analytics-table-wrap{margin-top:4px}.branch-analytics-table-wrap table{min-width:680px}
@media(max-width:760px){.branch-analytics-summary{grid-template-columns:1fr}.branch-analytics .section-title{flex-direction:column}.branch-analytics-controls select{width:100%}}

/* v1.19.9.8 — acceso de beneficiarios sin QR en cada login */
.membership-selector{margin-top:18px;padding-top:16px;border-top:1px solid var(--border,#dbe3ef)}
.membership-options{display:grid;gap:10px;margin-top:12px}
.membership-option{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;padding:13px 14px;border:1px solid var(--border,#dbe3ef);border-radius:12px;background:var(--surface,#fff);text-align:left;cursor:pointer}
.membership-option:hover{transform:translateY(-1px);box-shadow:0 5px 16px rgba(15,35,65,.08)}
.membership-option span{font-weight:600}
.membership-option small{color:#526173}

/* v1.20.0.0 — sistema de acceso unificado */
.auth-page{min-height:100vh;margin:0;background:var(--auth-background,#f6f8fb);color:var(--tenant-text,#111827)}
.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(360px,.9fr) minmax(420px,1.1fr)}
.auth-visual{display:flex;align-items:center;justify-content:center;padding:56px;background:linear-gradient(145deg,var(--auth-primary,var(--tenant-primary,#0F3D3E)),color-mix(in srgb,var(--auth-primary,var(--tenant-primary,#0F3D3E)) 82%,#000));color:#fff}
.auth-visual-inner{width:min(560px,100%)}.auth-logo{width:82px;height:82px;object-fit:contain;background:#fff;border-radius:14px;padding:10px;margin-bottom:32px}.auth-kicker{display:block;font-size:11px;font-weight:900;letter-spacing:.14em;text-transform:uppercase;opacity:.72;margin-bottom:12px}.auth-visual h1{font-size:clamp(36px,4vw,58px);line-height:1.02;letter-spacing:-1.8px;margin:0 0 18px;color:#fff}.auth-visual p{max-width:520px;font-size:16px;line-height:1.65;color:rgba(255,255,255,.76);margin:0}.auth-trust{display:flex;flex-wrap:wrap;gap:9px;margin-top:28px}.auth-trust span{padding:9px 12px;border:1px solid rgba(255,255,255,.15);border-radius:999px;background:rgba(255,255,255,.07);font-size:11px;font-weight:800}
.auth-panel{display:flex;align-items:center;justify-content:center;padding:42px 28px}.auth-card{width:min(480px,100%);padding:12px}.auth-card h2{font-size:36px;letter-spacing:-1px;margin:8px 0}.auth-card .muted{line-height:1.55}.auth-brand-mobile{display:none}.auth-context[hidden]{display:none!important}.auth-context{display:flex;align-items:center;gap:11px;margin:20px 0 4px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--auth-accent,var(--tenant-accent,#10B991)) 22%,#dbe3ec);border-radius:14px;background:color-mix(in srgb,var(--auth-accent,var(--tenant-accent,#10B991)) 5%,#fff)}.auth-context-dot{width:9px;height:9px;border-radius:50%;background:var(--auth-accent,var(--tenant-accent,#10B991));box-shadow:0 0 0 4px color-mix(in srgb,var(--auth-accent,var(--tenant-accent,#10B991)) 12%,transparent)}.auth-context small,.auth-context strong{display:block}.auth-context small{font-size:11px;color:#526173;text-transform:uppercase;font-weight:900;letter-spacing:.07em}.auth-context strong{font-size:13px;margin-top:2px}.auth-password-wrap{display:block;position:relative}.auth-password-wrap input{padding-right:82px}.auth-eye{position:absolute;right:7px;top:50%;transform:translateY(-50%)!important;min-height:36px;padding:8px 10px;background:transparent!important;box-shadow:none!important;color:#52627a;font-size:11px}.auth-eye:hover{box-shadow:none!important;color:var(--auth-accent,var(--tenant-accent,#10B991))}.auth-row{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.auth-link-button{padding:0;min-height:auto;background:transparent!important;box-shadow:none!important;color:var(--auth-accent,var(--tenant-accent,#10B991));font-size:12px}.auth-link-button:hover{box-shadow:none!important;transform:none!important;text-decoration:underline}.auth-submit{min-height:52px;margin-top:20px!important;border-radius:14px!important}.auth-message{min-height:22px;margin-top:12px}.auth-message.success{color:#17733b}.auth-divider{display:flex;align-items:center;gap:12px;margin:26px 0 10px;color:#8490a1;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.auth-divider:before,.auth-divider:after{content:"";height:1px;background:#e4e9ef;flex:1}.auth-secondary-link{display:flex;justify-content:space-between;align-items:center;width:100%;box-sizing:border-box;padding:11px 13px;margin-top:8px;border:1px solid #e0e6ed;border-radius:12px;background:#fff;color:#24334a;text-decoration:none;font-size:12px;font-weight:800}.auth-secondary-link:hover{border-color:#cbd5e1;background:#f9fbfd}.auth-footer{text-align:center;color:#526173;font-size:11px;line-height:1.5;margin:22px auto 0;max-width:340px}
/* beneficiary access */
.beneficiary-login-page{min-height:100vh;background:var(--tenant-background,#f6f8fb)}.beneficiary-login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(300px,.72fr) minmax(420px,1fr)}.beneficiary-login-hero{display:flex;align-items:center;justify-content:center;padding:48px;background:var(--tenant-primary,#0F3D3E);color:#fff}.beneficiary-login-hero-inner{width:min(480px,100%)}.beneficiary-login-hero img{width:72px;height:72px;object-fit:contain;background:#fff;border-radius:14px;padding:10px;margin-bottom:28px}.beneficiary-login-hero h1{color:#fff;font-size:clamp(32px,4vw,52px);line-height:1.03;letter-spacing:-1.5px;margin:0 0 16px}.beneficiary-login-hero p{color:rgba(255,255,255,.75);line-height:1.65;margin:0}.beneficiary-login-perks{display:grid;gap:10px;margin-top:28px}.beneficiary-login-perks span{font-size:12px;font-weight:800;color:rgba(255,255,255,.85)}.beneficiary-login-panel{display:flex;align-items:center;justify-content:center;padding:36px 24px}.beneficiary-login-card{width:min(480px,100%);padding:8px}.beneficiary-login-card h2{font-size:34px;letter-spacing:-1px;margin:8px 0}.beneficiary-login-card .muted{line-height:1.55}.membership-selector{margin-top:20px}.membership-selector h3{margin-bottom:4px}.membership-options{display:grid;gap:9px;margin-top:12px}.membership-option{display:grid;gap:3px;text-align:left;padding:14px 15px!important;border:1px solid #dfe5ec!important;border-radius:14px!important;background:#fff!important;color:#152238!important;box-shadow:none!important}.membership-option:hover{border-color:var(--tenant-accent,#10B991)!important;background:#f8fbff!important}.membership-option strong{font-size:13px}.membership-option span,.membership-option small{font-size:11px;color:#6d788a}.membership-option span{font-weight:800}.beneficiary-context{margin:18px 0 4px}.beneficiary-login-links{display:flex;justify-content:space-between;gap:10px;margin-top:18px}.beneficiary-login-links a{font-size:12px}.beneficiary-login-footer{text-align:center;color:#526173;font-size:11px;line-height:1.5;margin-top:22px}
@media(max-width:900px){.auth-shell,.beneficiary-login-shell{grid-template-columns:1fr}.auth-visual,.beneficiary-login-hero{display:none}.auth-panel,.beneficiary-login-panel{padding:28px 18px}.auth-card,.beneficiary-login-card{max-width:520px}.auth-brand-mobile{display:block;margin-bottom:24px}.auth-brand-mobile img{width:48px;height:48px;object-fit:contain}.auth-card h2,.beneficiary-login-card h2{font-size:30px}}
@media(max-width:520px){.auth-panel,.beneficiary-login-panel{padding:18px 14px}.auth-card,.beneficiary-login-card{padding:4px}.auth-row{margin-top:10px}.auth-submit{min-height:50px}.beneficiary-login-links{flex-direction:column}.beneficiary-login-links a{text-align:center}.membership-option{padding:13px!important}}


/* INDEF v1.20.0.2 — Mi cuenta: alineación definitiva de la credencial QR móvil */
@media (max-width:700px){
  /* La credencial debe respetar el ancho real de la app, no el viewport completo. */
  .beneficiary-app{
    overflow-x:hidden!important;
  }
  .qr-account-card,
  .beneficiary-credential-stage,
  .beneficiary-credential-frame,
  .beneficiary-qr{
    width:100%!important;
    max-width:100%!important;
    margin-left:0!important;
    margin-right:0!important;
    box-sizing:border-box!important;
  }
  .beneficiary-credential-stage{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    padding:0 0 8px!important;
  }
  .beneficiary-credential-frame{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    padding:0!important;
  }
  .beneficiary-qr{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    overflow:visible!important;
  }
  .beneficiary-qr .credential-designed-qr{
    display:block!important;
    width:min(100%,380px)!important;
    max-width:100%!important;
    height:auto!important;
    min-width:0!important;
    max-height:none!important;
    aspect-ratio:auto!important;
    object-fit:contain!important;
    margin:0 auto!important;
    transform:none!important;
  }
  .beneficiary-qr canvas,
  .beneficiary-qr>img:not(.credential-designed-qr){
    display:block!important;
    width:min(100%,330px)!important;
    max-width:100%!important;
    height:auto!important;
    margin:0 auto!important;
    transform:none!important;
  }
  .qr-countdown-card{
    width:100%!important;
    max-width:380px!important;
    margin:8px auto 0!important;
  }
}

/* INDEF v1.20.0.3 — navegación de beneficiario: microinteracciones y transición del tab activo */
.beneficiary-tab{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  -webkit-tap-highlight-color:transparent;
  transition:color .22s ease,background-color .22s ease,box-shadow .22s ease,transform .18s ease;
}
.beneficiary-tab::after{
  content:"";
  position:absolute;
  left:12%; right:12%; bottom:4px;
  height:2px;
  border-radius:999px;
  background:var(--tenant-accent,#10B991);
  transform:scaleX(0);
  transform-origin:center;
  opacity:0;
  transition:transform .24s cubic-bezier(.2,.8,.2,1),opacity .2s ease;
  z-index:0;
}
.beneficiary-tab > *{position:relative;z-index:1}
.beneficiary-tab.active::after{transform:scaleX(1);opacity:.85}
.beneficiary-tab:not(.active):active{transform:scale(.97)}
.beneficiary-tab.active .nav-icon{transition:transform .28s cubic-bezier(.2,.9,.25,1),background-color .22s ease,color .22s ease,box-shadow .22s ease}
.beneficiary-tab.active.tab-activated .nav-icon{animation:beneficiaryNavPop .42s cubic-bezier(.2,.9,.25,1)}
.beneficiary-tab.tab-activated::before{
  content:"";
  position:absolute;
  width:22px;height:22px;
  left:50%;top:34%;
  margin:-11px 0 0 -11px;
  border-radius:50%;
  border:1px solid color-mix(in srgb,var(--tenant-accent,#10B991) 30%,transparent);
  opacity:0;
  animation:beneficiaryNavRipple .5s ease-out;
  pointer-events:none;
  z-index:0;
}
@keyframes beneficiaryNavPop{
  0%{transform:scale(.86) rotate(-3deg)}
  55%{transform:scale(1.14) rotate(1deg)}
  100%{transform:scale(1) rotate(0)}
}
@keyframes beneficiaryNavRipple{
  0%{transform:scale(.65);opacity:.55}
  100%{transform:scale(1.8);opacity:0}
}
@media(max-width:700px){
  .beneficiary-bottom-nav .beneficiary-tab{
    min-height:58px;
    border-radius:14px!important;
    gap:4px;
  }
  .beneficiary-bottom-nav .beneficiary-tab::after{
    left:26%;right:26%;bottom:3px;height:2px;
  }
  .beneficiary-bottom-nav .beneficiary-tab.active{
    background:color-mix(in srgb,var(--tenant-accent,#10B991) 7%,#fff)!important;
  }
  .beneficiary-bottom-nav .beneficiary-tab.active .nav-icon{
    box-shadow:0 5px 14px color-mix(in srgb,var(--tenant-accent,#10B991) 14%,transparent);
  }
}
@media(prefers-reduced-motion:reduce){
  .beneficiary-tab,.beneficiary-tab::after,.beneficiary-tab .nav-icon{transition:none!important}
  .beneficiary-tab.active.tab-activated .nav-icon,.beneficiary-tab.tab-activated::before{animation:none!important}
}

/* v1.20.0.4 - Capacitor safe-area and native-shell polish */
html.capacitor-app body{
  padding-top:max(0px, env(safe-area-inset-top));
  padding-right:max(0px, env(safe-area-inset-right));
  padding-bottom:max(0px, env(safe-area-inset-bottom));
  padding-left:max(0px, env(safe-area-inset-left));
}
html.capacitor-app .beneficiary-mobile-header{
  padding-top:max(12px, env(safe-area-inset-top));
}
html.capacitor-app .beneficiary-tabs{
  padding-bottom:max(8px, env(safe-area-inset-bottom));
}
html.capacitor-app button,html.capacitor-app a{
  -webkit-tap-highlight-color:transparent;
}
html.capacitor-app .native-tap{
  transform:scale(.985);
}

/* v1.20.0.16 — beneficiario: QR limpio + racha separada + branding del tenant */
.beneficiary-desktop-brand{display:flex;align-items:center;gap:14px}.beneficiary-desktop-brand img{width:52px;height:52px;object-fit:contain;border-radius:14px}.qr-only-panel{min-height:430px;display:flex;align-items:center;justify-content:center}.qr-only-stage{margin:0 auto;border:0;background:transparent;box-shadow:none;padding:18px}.qr-only-stage .beneficiary-credential-frame{min-height:290px}.qr-only-countdown{width:min(300px,100%)}.qr-only-panel #qrMessage{max-width:420px;text-align:center;margin:0 auto}.streak-main-card{margin-top:0}.beneficiary-tabs{grid-template-columns:repeat(6,minmax(0,1fr))}.beneficiary-bottom-nav{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:700px){
  .beneficiary-desktop-brand img{width:42px;height:42px}
  .beneficiary-desktop-brand{gap:10px}
  .qr-only-panel{
    min-height:calc(100vh - 170px);
    padding:0!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
    gap:6px!important;
  }
  .qr-only-stage{
    width:100%;
    padding:18px 8px 24px;
    box-sizing:border-box;
    display:flex;
    flex-direction:column;
    align-items:center;
  }
  .qr-only-stage .beneficiary-credential-frame{min-height:245px}
  .qr-only-countdown{width:min(270px,100%)}
  .qr-only-stage .qr-beneficiary-actions{width:min(270px,100%)}
  .qr-only-stage .qr-beneficiary-actions button{width:100%}
  .qr-only-panel #qrMessage{
    width:calc(100% - 24px);
    max-width:380px;
    margin:0 auto;
    text-align:center;
  }
  .streak-main-card{margin-top:0}
  .beneficiary-bottom-nav .beneficiary-tab b{font-size:11px}
}

/* v1.20.0.20 — Mi QR móvil: evitar que el mensaje quede al lado de la credencial */
@media(max-width:700px){
  .qr-only-panel{
    flex-direction:column!important;
  }
  .qr-only-panel>.qr-only-stage,
  .qr-only-panel>#qrMessage{
    flex:0 0 auto;
  }
}

/* v1.20.0.18 — icono dinámico de nivel de racha en navegación */
.beneficiary-bottom-nav .nav-icon{display:flex;align-items:center;justify-content:center;width:22px;height:22px}
.beneficiary-bottom-nav .nav-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.beneficiary-bottom-nav .streak-nav-custom-icon{width:22px!important;height:22px!important;max-width:22px;max-height:22px;object-fit:contain;display:block}

/* v1.20.0.18 — iconos de nivel configurados por empresa (emoji o imagen) */
.streak-level-emoji{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:34px;line-height:1}
.streak-nav-emoji{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:20px;line-height:1}
/* v1.20.0.30 modal editor + points wallet */
body.modal-open{overflow:hidden}
.app-modal[hidden]{display:none!important}.app-modal{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:20px}.app-modal-backdrop{position:absolute;inset:0;background:rgba(8,18,35,.62);backdrop-filter:blur(3px)}.app-modal-card{position:relative;width:min(620px,100%);max-height:min(760px,calc(100vh - 40px));overflow:auto;background:var(--surface,#fff);border:1px solid var(--border,#dfe5ec);border-radius:24px;box-shadow:0 28px 80px rgba(0,0,0,.24);padding:26px}.app-modal-header{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.app-modal-header h2{margin:5px 0 7px}.app-modal-header p{margin:0}.app-modal-form{margin-top:22px}.modal-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.modal-form-grid .form-field:last-child{grid-column:1/-1}.input-suffix{display:flex;align-items:center;border:1px solid var(--border,#dfe5ec);border-radius:12px;background:#fff;overflow:hidden}.input-suffix input{border:0!important;border-radius:0!important;flex:1}.input-suffix b{padding:0 13px;color:#526173}.modal-info{display:grid;gap:4px;margin-top:16px;padding:14px 16px;border-radius:14px;background:#f5f8fb;color:#475467}.app-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.type-edit-modal-card .icon-button{font-size:24px}.points-hero{display:flex;align-items:center;justify-content:space-between;gap:18px}.points-balance{font-size:2.5rem;font-weight:850;letter-spacing:-.04em}.points-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.points-package,.points-reward{border:1px solid var(--border,#dfe5ec);border-radius:18px;padding:18px;display:grid;gap:10px;background:#fff}.points-package strong,.points-reward strong{font-size:1.25rem}.points-package .price{font-size:1.5rem;font-weight:850}.points-actions{display:flex;gap:10px;align-items:center}.points-transaction{display:flex;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--border,#edf0f3)}.points-positive{font-weight:800}.points-negative{font-weight:800}.points-status{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.points-empty{padding:22px;border:1px dashed var(--border,#dfe5ec);border-radius:16px;text-align:center;color:#526173}.points-note{font-size:.88rem;color:#526173}.points-mode-notice{display:grid;gap:4px;margin:12px 0 0;padding:13px 15px;border:1px solid #dfe6ee;border-radius:14px;background:#f8fafc;color:#475467}.points-mode-notice strong{font-size:.92rem;color:var(--tenant-primary,#0F3D3E)}.points-mode-notice span{font-size:.86rem;line-height:1.45}.points-mode-notice.spending{border-color:#cfd9e4;background:#f5f8fb}.points-mode-notice.earning{border-color:#cfe4d8;background:#f3faf5}.points-mode-notice[hidden]{display:none!important}
@media(max-width:760px){.modal-form-grid,.points-grid{grid-template-columns:1fr}.modal-form-grid .form-field:last-child{grid-column:auto}.app-modal{padding:10px}.app-modal-card{padding:20px;border-radius:20px;max-height:calc(100vh - 20px)}.points-hero{align-items:flex-start;flex-direction:column}.points-balance{font-size:2rem}}
.points-admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.points-admin-grid>div{min-width:0}.points-admin-list{display:grid;gap:10px;margin-top:12px}.points-admin-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--border,#dfe5ec);border-radius:14px;background:#fff}.points-admin-row>div:first-child{display:grid;gap:4px}.points-admin-row span{color:#526173;font-size:.88rem}.points-orders-admin{margin-top:24px;padding-top:20px;border-top:1px solid var(--border,#edf0f3)}.points-orders-admin h3{margin-top:0}@media(max-width:820px){.points-admin-grid{grid-template-columns:1fr}}

/* v1.20.0.31 · puntos destacados + OTP de contingencia */
.qr-points-highlight{width:min(300px,100%);margin:14px auto 10px;padding:16px 20px 18px;text-align:center;border:1px solid #dfe6ee;border-radius:18px;background:linear-gradient(180deg,#f8fafc,#fff);box-shadow:0 10px 26px rgba(15,61,62,.08)}
.qr-points-first{order:-2;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}
.qr-points-first:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(15,61,62,.12)}
.qr-points-first:focus-visible{outline:3px solid rgba(37,99,235,.28);outline-offset:3px}
.qr-points-highlight strong{font-variant-numeric:tabular-nums;text-shadow:0 0 0 rgba(15,61,62,0)}
.qr-points-highlight .section-kicker{margin-bottom:2px}
.qr-points-highlight strong{display:block;font-size:2.05rem;line-height:1.05;letter-spacing:-.04em;animation:qrPointsPulse 1.8s ease-in-out infinite}
.qr-points-highlight small{display:block;margin-top:5px;color:#526173;font-size:.78rem}
@keyframes qrPointsPulse{0%,100%{opacity:.72;transform:scale(1)}50%{opacity:1;transform:scale(1.045)}}
.qr-otp-card{width:min(300px,100%);margin:10px auto 12px;padding:15px 16px;border:1px solid #dfe6ee;border-radius:18px;background:#fff;box-shadow:0 8px 22px rgba(15,61,62,.06);display:grid;gap:9px;text-align:center}
.qr-otp-card strong{display:block;font-size:15px}.qr-otp-card small{display:block;color:#526173;font-size:11px;line-height:1.4}.qr-otp-card button{width:100%}
.qr-otp-result{display:grid;gap:2px;padding:12px;border-radius:14px;background:#f5f8fb;border:1px dashed #cfd9e4}.qr-otp-result strong{font-size:2rem;letter-spacing:.18em;font-variant-numeric:tabular-nums}.qr-otp-result span:last-child{font-size:11px;color:#17733b;font-weight:800}
@media(max-width:700px){.qr-points-highlight,.qr-otp-card{width:min(100%,330px)}.qr-points-highlight strong{font-size:1.9rem}}

/* v1.20.0.40 — iconografía UI consistente, sin emojis */
.beneficiary-tab .tab-icon{display:inline-grid;place-items:center;width:24px;height:24px;color:currentColor;line-height:0}.beneficiary-tab .tab-icon svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.streak-nav-custom-icon{object-fit:contain}.streak-nav-icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
/* v1.20.0.50 — métricas de demo pública */
.master-demo-metrics{margin:18px 0 28px;padding:24px;border:1px solid #dfe6ef;border-radius:22px;background:#fff;display:grid;grid-template-columns:minmax(260px,.8fr) 1.6fr;gap:22px;align-items:center}.master-demo-metrics h2{margin:6px 0 5px;font-size:25px;letter-spacing:-.035em}.master-demo-metrics p{margin:0;color:#65758b;font-size:13px;max-width:430px}.master-demo-metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.master-demo-metrics-grid article{border:1px solid #e2e8f0;border-radius:14px;padding:13px;background:#f8fafc}.master-demo-metrics-grid span{display:block;font-size:11px;letter-spacing:.09em;color:#526173;font-weight:900}.master-demo-metrics-grid strong{display:block;font-size:24px;margin-top:4px;letter-spacing:-.035em}@media(max-width:900px){.master-demo-metrics{grid-template-columns:1fr}.master-demo-metrics-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.master-demo-metrics-grid{grid-template-columns:1fr 1fr}.master-demo-metrics-grid strong{font-size:21px}}


/* v1.20.0.60 — Fidly Master branding · Concepto 2
   Alcance: Centro Maestro únicamente. No modifica tenants, permisos ni lógica.
   Paleta sólida, sin gradientes. */
.master-shell{
  --master-primary:#0F3D3E;
  --master-deep:#083536;
  --master-accent:#10B991;
  --master-muted:#526173;
  --master-surface:#F1F5F9;
  --master-border:#DCE5E7;
  background:var(--master-surface)!important;
}
.master-shell .master-sidebar{
  background:var(--master-deep)!important;
  background-image:none!important;
  color:#fff!important;
  border-right:1px solid rgba(255,255,255,.08)!important;
}
.master-shell .master-brand{
  background:transparent!important;
  border-bottom:1px solid rgba(255,255,255,.10)!important;
}
.master-shell .master-brand-mark{
  width:44px!important;
  height:44px!important;
  border-radius:12px!important;
  display:grid!important;
  place-items:center!important;
  padding:6px!important;
  box-sizing:border-box!important;
  background:#F1F5F9!important;
  color:var(--master-primary)!important;
  box-shadow:none!important;
}
.master-shell .master-brand-mark img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  display:block!important;
}
.master-shell .master-brand-copy strong{
  color:#fff!important;
  letter-spacing:.12em!important;
}
.master-shell .master-brand-copy span{color:#A8B8B8!important}
.master-shell .master-nav-heading{color:#a9cfc3!important}
.master-shell .master-nav .nav-item{color:#D6E0E0!important}
.master-shell .master-nav .nav-item:hover{
  background:rgba(16,185,145,.12)!important;
  border-color:rgba(16,185,145,.18)!important;
  color:#fff!important;
}
.master-shell .master-nav .nav-item.active,
.master-shell .master-sidebar .nav-item[aria-current="page"]{
  background:#fff!important;
  color:var(--master-primary)!important;
  border-color:#fff!important;
  box-shadow:0 6px 18px rgba(8,53,54,.22)!important;
}
.master-shell .master-nav .nav-item.active .master-nav-icon,
.master-shell .master-sidebar .nav-item[aria-current="page"] .master-nav-icon{
  background:#DDF7F0!important;
  color:var(--master-primary)!important;
}
.master-shell .master-nav-icon{
  color:#B8CDCD!important;
  background:rgba(255,255,255,.06)!important;
}
.master-shell .master-sidebar-tip{
  background:rgba(255,255,255,.035)!important;
  border-color:rgba(255,255,255,.08)!important;
}
.master-shell .master-sidebar-tip>span{
  background:var(--master-accent)!important;
  color:var(--master-accent)!important;
  text-shadow:none!important;
}
.master-shell .master-user-card{
  background:rgba(255,255,255,.04)!important;
  border-color:rgba(255,255,255,.09)!important;
}
.master-shell .master-user-label{color:#789292!important}
.master-shell .master-user-card strong{color:#F3F8F8!important}
.master-shell .master-user-card button{
  background:rgba(255,255,255,.06)!important;
  border-color:rgba(255,255,255,.10)!important;
  color:#D6E0E0!important;
}
.master-shell .master-user-card button:hover{background:rgba(16,185,145,.14)!important;color:#fff!important}
.master-shell .master-eyebrow,
.master-shell .master-kicker{color:var(--master-primary)!important}
.master-shell .master-status{border-color:var(--master-border)!important;background:#fff!important;color:var(--master-muted)!important}
.master-shell .master-status i{background:var(--master-accent)!important;box-shadow:0 0 0 4px #DDF7F0!important}
.master-shell .master-welcome{
  background:#fff!important;
  border-color:var(--master-border)!important;
  box-shadow:0 14px 35px rgba(15,61,62,.06)!important;
}
.master-shell .master-primary-action{
  background:var(--master-primary)!important;
  box-shadow:0 9px 22px rgba(15,61,62,.18)!important;
}
.master-shell .master-primary-action:hover{background:#0B3435!important}
.master-shell .master-quick-card>b{color:var(--master-primary)!important}
.master-shell .master-card-icon,
.master-shell .master-quick-icon{
  background:#E5F6F1!important;
  color:var(--master-primary)!important;
}
.master-shell .master-note-icon{
  background:#E5F6F1!important;
  color:var(--master-primary)!important;
}
.master-shell .master-demo-metrics-grid article{background:#F8FBFB!important;border-color:var(--master-border)!important}
.master-shell .master-demo-metrics,
.master-shell .master-commercial-strip,
.master-shell .master-overview-card,
.master-shell .master-quick-card,
.master-shell .master-note,
.master-shell .card{
  border-color:var(--master-border)!important;
}

/* Master login — same Fidly identity, outside .master-shell */
.master-login.portal-login{border-top-color:var(--master-primary)!important}
.master-login .eyebrow{color:var(--master-primary)!important}
.master-login .primary,
.master-login button.primary{background:var(--master-primary)!important;color:#fff!important}
.master-login .primary:hover,
.master-login button.primary:hover{background:#0B3435!important}
.master-login-brand{display:flex;align-items:center;gap:13px;margin:0 0 22px}
.master-login-brand img{width:52px;height:52px;object-fit:contain;padding:7px;box-sizing:border-box;border:1px solid var(--master-border);border-radius:14px;background:#F1F5F9}
.master-login-brand strong{display:block;color:var(--master-primary);font-size:15px;letter-spacing:.14em;font-weight:950}
.master-login-brand span{display:block;margin-top:3px;color:var(--master-muted);font-size:11px}

/* v1.20.0.60 — Master login token variables */
.master-login{
  --master-primary:#0F3D3E;
  --master-deep:#083536;
  --master-accent:#10B991;
  --master-muted:#526173;
  --master-border:#DCE5E7;
}
.master-login.portal-login{background:#fff}

/* Fidly beneficiary promotions */
.beneficiary-promotions-list{display:grid;gap:14px}.promotion-card{display:grid;grid-template-columns:auto 1fr;gap:16px;padding:20px;border:1px solid #dfe5ea;border-radius:18px;background:#fff;box-shadow:0 8px 24px rgba(15,61,62,.05)}.promotion-card-icon{width:44px;height:44px;border-radius:13px;background:#edf7f4;color:var(--tenant-primary,#0F3D3E);display:grid;place-items:center}.promotion-card-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.promotion-card img{width:100%;max-height:220px;object-fit:cover;border-radius:14px;grid-column:1/-1}.promotion-card-body{min-width:0}.promotion-card h3{margin:4px 0 7px}.promotion-card p{margin:0 0 10px;color:#526173}.campaign-chip-icon{display:inline-flex;width:16px;height:16px;vertical-align:-3px;margin-right:4px}.campaign-chip-icon svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.coupon-courtesy-option{margin:12px 0 4px;font-weight:800}.coupon-courtesy-option input{accent-color:var(--tenant-primary,#0F3D3E)}
@media(max-width:650px){.promotion-card{grid-template-columns:1fr}.promotion-card-icon{width:40px;height:40px}}


.promo-auto-help{margin:8px 0 10px}.member-promotion-panel{width:100%;margin:12px 0}.member-promotion-panel.hidden{display:none}.member-promotion-choice-list{display:grid;gap:9px}.member-promotion-choice{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;padding:13px 14px;border:1px solid #dce5e8;border-radius:14px;background:#fff;color:inherit;cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.member-promotion-choice:hover{transform:translateY(-1px)}.member-promotion-choice.selected{border-color:var(--tenant-accent,#10B991);box-shadow:0 0 0 3px color-mix(in srgb,var(--tenant-accent,#10B991) 16%,transparent);background:#f2fbf8}.member-promotion-choice-main{min-width:0}.member-promotion-choice-main strong,.member-promotion-choice-main small,.member-promotion-choice-main b{display:block}.member-promotion-choice-main strong{font-size:14px}.member-promotion-choice-main small{margin-top:3px;color:#526173}.member-promotion-choice-main b{margin-top:6px;font-size:12px}.member-promotion-choice-mark{flex:0 0 auto;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:1px solid #d8e0e7;color:#8a96a5;font-size:15px}.member-promotion-choice.selected .member-promotion-choice-mark{background:var(--tenant-accent,#10B991);border-color:var(--tenant-accent,#10B991);color:#fff}.promotion-history-note{display:flex;gap:9px;align-items:center;margin:4px 0 16px;padding:10px 12px;border:1px solid #e2e8ee;border-radius:12px;background:#f8fafc;color:#6b7787;font-size:11px}.promotion-history-note .section-kicker{margin:0;color:#526173}.beneficiary-promotion-group{display:grid;gap:10px}.beneficiary-promotion-group+.beneficiary-promotion-group{margin-top:22px}.beneficiary-promotion-group-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.beneficiary-promotion-group-title h3{margin:0;font-size:14px}.beneficiary-promotion-group-title span{font-size:11px;color:#526173}.beneficiary-promotions-card .promotion-card.expired{opacity:.76;background:#f8fafc!important}.beneficiary-promotions-card .promotion-card.expired .beneficiary-coupon-card{filter:grayscale(.25)}
.member-promotion-card{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;border:1px solid #b9eadc;border-radius:16px;background:#f2fbf8}.member-promotion-card strong,.member-promotion-card small,.member-promotion-card b{display:block}.member-promotion-card strong{font-size:15px}.member-promotion-card small{margin-top:4px;color:#5f6d7f}.member-promotion-card b{margin-top:8px;font-size:13px}.member-promotion-panel.hidden{display:none}

/* v1.20.0.72 · QR de cliente definitivo y campos opcionales de perfil */
.profile-field[hidden]{display:none!important}
.beneficiary-qr-image{background:#fff;border-radius:10px}


/* Fidly v1.20.0.77 — comprobante térmico animado */
.purchase-receipt-modal{position:fixed;inset:0;z-index:10020;display:grid;place-items:center;padding:18px;overflow:auto}
.purchase-receipt-modal[hidden]{display:none!important}
.purchase-receipt-backdrop{position:absolute;inset:0;background:rgba(7,14,24,.72);backdrop-filter:blur(8px)}
.purchase-receipt-dialog{position:relative;width:min(470px,100%);max-height:min(94vh,850px);overflow:auto;border-radius:30px;outline:none}
.purchase-success-card{position:relative;padding:24px 20px 18px;border:1px solid rgba(255,255,255,.09);border-radius:30px;background:#10151d;color:#f8fafc;box-shadow:0 30px 90px rgba(0,0,0,.38);overflow:hidden}
.purchase-success-status{display:flex;align-items:center;gap:12px;margin-bottom:12px}.purchase-success-status .section-kicker{color:#91a4bb}.purchase-success-status h2{margin:2px 0 2px;font-size:23px;letter-spacing:-.4px;color:#fff}.purchase-success-status p{margin:0;color:#9aa8ba;font-size:13px}.purchase-success-check{width:42px;height:42px;display:grid;place-items:center;flex:0 0 42px;border-radius:50%;background:#fff;color:#111820;box-shadow:0 0 0 6px rgba(255,255,255,.06)}.purchase-success-check svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.purchase-receipt-close{position:absolute;right:14px;top:14px;width:34px;height:34px;border:1px solid rgba(255,255,255,.12);border-radius:50%;background:rgba(255,255,255,.06);color:#dce5ef;font-size:22px;line-height:1;cursor:pointer;z-index:10}.purchase-printer{position:relative;padding:54px 0 0}.purchase-printer-slot{position:relative;height:min(60vh,505px);min-height:390px;overflow:hidden;border-radius:18px 18px 24px 24px;background:linear-gradient(#18202b,#080d14);border:1px solid #2a3441;box-shadow:inset 0 12px 25px rgba(0,0,0,.48),inset 0 -18px 30px rgba(0,0,0,.34),0 22px 42px rgba(0,0,0,.22)}
.purchase-printer-slot:before{content:"";position:absolute;left:4%;right:4%;top:7px;height:16px;border-radius:10px;background:#05080c;box-shadow:0 2px 0 rgba(255,255,255,.08),0 5px 10px rgba(0,0,0,.5);z-index:5}.purchase-printer-slot:after{content:"";position:absolute;left:7%;right:7%;top:25px;height:2px;background:rgba(255,255,255,.11);z-index:6}.purchase-printer-head{position:absolute;left:7%;right:7%;top:16px;height:8px;border-radius:99px;background:#020407;box-shadow:0 0 12px rgba(0,0,0,.8);z-index:7}
.purchase-receipt-paper{position:absolute;left:11%;right:11%;top:22px;min-height:540px;padding:24px 20px 34px;background:#fff;color:#1e252c;border-radius:1px 1px 5px 5px;box-shadow:0 14px 30px rgba(0,0,0,.25);transform:translateY(-112%);animation:purchaseReceiptPrintAdvanced 1.95s steps(18,end) .08s forwards;z-index:2}.purchase-receipt-paper:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:repeating-linear-gradient(90deg,var(--receipt-primary,var(--tenant-primary,#0F3D3E)) 0 8px,transparent 8px 13px);opacity:.75}.purchase-receipt-tear{position:absolute;left:0;right:0;height:10px;background:#fff;z-index:2}.purchase-receipt-tear:after{content:"";position:absolute;left:0;right:0;height:10px;background:linear-gradient(135deg,transparent 0 35%,#fff 35% 65%,transparent 65%) 0 0/12px 10px repeat-x}.purchase-receipt-tear-top{top:-5px}.purchase-receipt-tear-bottom{bottom:-5px}
.purchase-receipt-brand{display:flex;align-items:center;justify-content:center;gap:9px;padding-top:2px;margin-bottom:12px;text-align:center}.purchase-receipt-brand img{width:42px;height:42px;object-fit:contain}.purchase-receipt-brand strong{display:block;font-size:15px;letter-spacing:-.2px}.purchase-receipt-brand small{display:block;margin-top:2px;color:#526173;font-size:8px;text-transform:uppercase;letter-spacing:.1em}.purchase-receipt-total-line{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;padding:12px 0 11px;border-top:1px dashed #c9cfd5;border-bottom:1px dashed #c9cfd5}.purchase-receipt-total-line span{font-size:11px;text-transform:uppercase;letter-spacing:.09em;font-weight:900;color:#6f7881}.purchase-receipt-total-line strong{font-size:25px;letter-spacing:-.8px;color:var(--receipt-primary,var(--tenant-primary,#0F3D3E))}.purchase-receipt-meta{display:grid;grid-template-columns:auto 1fr;gap:5px 10px;padding:11px 0;font-size:11px}.purchase-receipt-meta span,.purchase-receipt-lines span{color:#727b84}.purchase-receipt-meta strong{text-align:right;font-weight:800;word-break:break-word}.purchase-receipt-lines{display:grid;gap:7px;padding:11px 0 9px;border-top:1px dotted #cbd1d6;font-size:11px}.purchase-receipt-lines>div{display:flex;justify-content:space-between;gap:14px}.purchase-receipt-lines strong{font-weight:800}.purchase-receipt-grand-total{display:flex;align-items:center;justify-content:space-between;padding:10px 0 13px;border-top:1.5px solid #252c33;font-size:11px;font-weight:900}.purchase-receipt-grand-total strong{font-size:16px;color:var(--receipt-primary,var(--tenant-primary,#0F3D3E))}.purchase-receipt-barcode{height:43px;margin:3px 0 1px;display:flex;align-items:stretch;justify-content:center;overflow:hidden}.purchase-receipt-barcode svg{width:100%;height:43px;display:block}.purchase-receipt-barcode-text{display:block;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:7px;color:#6e767e;letter-spacing:.08em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.purchase-receipt-footer{display:block;text-align:center;color:#526173;font-size:8px;line-height:1.35;padding:8px 12px 0;text-transform:uppercase;letter-spacing:.08em}.purchase-receipt-result{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 2px 0}.purchase-receipt-result>div:first-child{display:grid;gap:3px;min-width:0}.purchase-receipt-result strong{font-size:15px;color:#fff}.purchase-receipt-result span{font-size:11px;color:#8e9aaa}.purchase-receipt-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.purchase-receipt-actions button{min-height:42px}.purchase-receipt-done{background:#fff;color:#10151d;border-color:#fff}.purchase-receipt-actions .secondary{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14);color:#e9eef4}
@keyframes purchaseReceiptPrintAdvanced{0%{transform:translateY(-112%)}55%{transform:translateY(-13%)}65%{transform:translateY(-2%)}72%{transform:translateY(1.2%)}78%{transform:translateY(-.8%)}84%{transform:translateY(.45%)}90%{transform:translateY(-.2%)}100%{transform:translateY(0)}}
.purchase-printer-slot.receipt-printing:before{animation:printerMouth 1.95s steps(6,end) .08s both}.purchase-printer-slot.receipt-printed{box-shadow:inset 0 12px 25px rgba(0,0,0,.48),inset 0 -18px 30px rgba(0,0,0,.34),0 22px 42px rgba(0,0,0,.22)}@keyframes printerMouth{0%,100%{transform:scaleX(1)}35%{transform:scaleX(.97)}70%{transform:scaleX(1.015)}}
@media(max-width:600px){.history-actions{width:100%}.history-actions button{flex:1}.purchase-receipt-modal{padding:8px}.purchase-success-card{padding:20px 14px 14px;border-radius:22px}.purchase-receipt-dialog{max-height:96vh}.purchase-printer{padding-top:48px}.purchase-printer-slot{height:62vh;min-height:350px}.purchase-receipt-paper{left:7%;right:7%;min-height:515px;padding-left:16px;padding-right:16px}.purchase-success-status h2{font-size:20px}.purchase-receipt-total-line strong{font-size:22px}.purchase-receipt-result{align-items:flex-start;flex-direction:column}.purchase-receipt-actions{width:100%;justify-content:stretch}.purchase-receipt-actions button{flex:1}}
@media(prefers-reduced-motion:reduce){.purchase-receipt-paper{animation:none;transform:translateY(0)}.purchase-printer-slot.receipt-printing:before{animation:none}}


/* v1.20.0.79 — QR fullscreen real: solo el código + animación */
.qr-open-target{cursor:zoom-in!important;outline:none}
.qr-open-target:focus-visible{outline:3px solid color-mix(in srgb,var(--tenant-accent,#0F3D3E) 55%,transparent);outline-offset:6px;border-radius:10px}
.qr-lightbox{position:fixed!important;inset:0!important;z-index:100000!important;padding:20px!important;display:grid!important;place-items:center!important;background:rgba(5,12,24,.90)!important;backdrop-filter:blur(14px)!important}
.qr-lightbox-backdrop{position:absolute!important;inset:0!important;background:radial-gradient(circle at center,rgba(24,48,79,.26),transparent 58%)!important;backdrop-filter:none!important}
.qr-lightbox-dialog{position:relative!important;z-index:1!important;width:auto!important;max-width:none!important;max-height:none!important;overflow:visible!important;background:transparent!important;border:0!important;border-radius:0!important;padding:0!important;box-shadow:none!important;display:grid!important;place-items:center!important}
.qr-lightbox-close{position:fixed!important;right:20px!important;top:20px!important;width:48px!important;height:48px!important;border:1px solid rgba(255,255,255,.30)!important;border-radius:50%!important;background:rgba(255,255,255,.10)!important;color:#fff!important;font-size:30px!important;line-height:1!important;cursor:pointer!important;z-index:3!important;box-shadow:0 12px 32px rgba(0,0,0,.22)!important;backdrop-filter:blur(10px)!important;transition:transform .18s ease,background .18s ease,border-color .18s ease!important}
.qr-lightbox-close:hover{background:rgba(255,255,255,.18)!important;border-color:rgba(255,255,255,.48)!important;transform:scale(1.05)!important}
.qr-lightbox-image-wrap{position:relative!important;width:min(82vw,520px)!important;height:min(82vw,520px)!important;min-height:0!important;padding:18px!important;box-sizing:border-box!important;background:#fff!important;border:0!important;border-radius:30px!important;box-shadow:0 34px 100px rgba(0,0,0,.48),0 0 0 1px rgba(255,255,255,.18)!important;display:grid!important;place-items:center!important;overflow:hidden!important;transform:scale(.82)!important;opacity:0!important;filter:blur(5px)!important;transition:opacity .22s ease,transform .42s cubic-bezier(.18,.82,.2,1),filter .28s ease!important}
.qr-lightbox-ready .qr-lightbox-image-wrap{transform:scale(1)!important;opacity:1!important;filter:blur(0)!important}
.qr-lightbox-image-wrap::before{content:"";position:absolute;z-index:2;left:7%;right:7%;top:-20%;height:18%;border-radius:999px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),rgba(23,142,255,.55),rgba(255,255,255,.08),transparent);filter:blur(2px);opacity:0;transform:translateY(-20%);pointer-events:none}
.qr-lightbox-ready .qr-lightbox-image-wrap::before{animation:qrScanLine 1.15s .18s cubic-bezier(.2,.8,.2,1) 1 forwards}
.qr-lightbox-image-wrap::after{content:"";position:absolute;inset:8px;border-radius:23px;border:1px solid rgba(15,61,62,.07);pointer-events:none}
.qr-lightbox-image-wrap img{display:block!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:contain!important;image-rendering:auto!important;border-radius:12px!important;position:relative;z-index:1}
@keyframes qrScanLine{0%{opacity:0;transform:translateY(-20%)}15%{opacity:1}75%{opacity:.8}100%{opacity:0;transform:translateY(560%)}}
@media(max-width:700px){.qr-lightbox{padding:14px!important}.qr-lightbox-image-wrap{width:min(88vw,430px)!important;height:min(88vw,430px)!important;padding:14px!important;border-radius:25px!important}.qr-lightbox-image-wrap::after{inset:6px;border-radius:19px}.qr-lightbox-close{right:14px!important;top:14px!important;width:44px!important;height:44px!important;font-size:28px!important}}
@media(prefers-reduced-motion:reduce){.qr-lightbox-image-wrap{transition:none!important;transform:none!important;opacity:1!important;filter:none!important}.qr-lightbox-ready .qr-lightbox-image-wrap::before{animation:none!important;display:none!important}}
body.qr-lightbox-open{overflow:hidden}

/* v1.20.0.80 — separación visual entre promociones y notificaciones */
.campaign-type-box{margin:16px 0;padding:16px;border:1px solid #dfe6ef;border-radius:16px;background:#f8fafc;display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,280px);gap:8px 18px;align-items:end}.campaign-type-box h3{margin:4px 0}.campaign-type-box label{margin:0}.campaign-type-box .muted{grid-column:1/-1}.campaign-coupon-disabled{opacity:.62}.campaign-coupon-disabled .coupon-fields,.campaign-coupon-disabled .coupon-courtesy-option{pointer-events:none}.campaign-type-chip{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:900;letter-spacing:.04em;background:#eef4ff;color:#3159a8}.campaign-type-chip.notification{background:#f1f5f9;color:#475569}.campaign-type-chip.promotion{background:#eaf8f0;color:#17733b}
@media(max-width:650px){.campaign-type-box{grid-template-columns:1fr}.campaign-type-box .muted{grid-column:auto}}


/* v1.20.0.81 — rediseño móvil de Promociones y Notificaciones + QR más sutil */
.beneficiary-section[data-panel="notifications"] .notification-center-card,
.beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card{
  border:1px solid #e2e8f0;
  background:linear-gradient(180deg,#ffffff 0%,#fbfcfd 100%);
  box-shadow:0 14px 36px rgba(15,61,62,.07);
  overflow:hidden;
}
.beneficiary-section[data-panel="notifications"] .notification-center-card{
  padding:24px;
}
.beneficiary-section[data-panel="notifications"] .notification-center-card .section-title,
.beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title{
  position:relative;
  margin-bottom:18px;
  padding:18px;
  border:1px solid #e6ebf0;
  border-radius:18px;
  background:#f8fafc;
  align-items:center;
}
.beneficiary-section[data-panel="notifications"] .notification-center-card .section-title>div,
.beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title>div{
  min-width:0;
}
.beneficiary-section[data-panel="notifications"] .notification-center-card .section-title::before,
.beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title::before{
  content:"";
  position:absolute;
  left:18px;
  top:18px;
  width:42px;
  height:42px;
  border-radius:14px;
  background:#eef3f8;
  box-shadow:inset 0 0 0 1px rgba(15,61,62,.04);
}
.beneficiary-section[data-panel="notifications"] .notification-center-card .section-title>div,
.beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title>div{
  padding-left:56px;
}
.beneficiary-section[data-panel="notifications"] .notification-center-card .section-title::after{
  content:"";
  position:absolute;
  left:30px;
  top:30px;
  width:18px;
  height:18px;
  border:1.8px solid var(--tenant-primary,#0F3D3E);
  border-radius:9px 9px 5px 5px;
  box-sizing:border-box;
}
.beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title::after{
  content:"";
  position:absolute;
  left:30px;
  top:30px;
  width:18px;
  height:14px;
  border:1.8px solid var(--tenant-primary,#0F3D3E);
  border-radius:4px;
  transform:rotate(-4deg);
  box-sizing:border-box;
}
.beneficiary-section[data-panel="notifications"] .notification-center-card .section-title h2,
.beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title h2{
  margin:3px 0 5px;
  font-size:clamp(22px,3vw,30px);
  line-height:1.12;
  letter-spacing:-.02em;
}
.beneficiary-section[data-panel="notifications"] .notification-center-card .section-title p,
.beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title p{
  max-width:620px;
  margin:0;
  line-height:1.45;
}
.beneficiary-section[data-panel="notifications"] #enableNotificationsBtn{
  flex:0 0 auto;
  min-height:46px;
  padding:0 18px;
  border-radius:13px;
  font-weight:800;
}
.notification-permission{
  margin:0 0 14px;
  border:1px solid #e4eaf0;
  box-shadow:none;
}
.notification-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:0 0 14px;
  padding:11px 13px;
  border:1px solid #e7ecf1;
  border-radius:13px;
  background:#fff;
}
.notification-toolbar .secondary{
  min-height:38px;
  border-radius:10px;
  white-space:nowrap;
}
.notification-list{gap:12px}
.notification-card{
  position:relative;
  grid-template-columns:auto minmax(0,1fr);
  gap:15px;
  padding:14px;
  border:1px solid #e2e8ee;
  border-radius:17px;
  background:#fff;
  box-shadow:0 5px 18px rgba(15,61,62,.045);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.notification-card:hover{
  transform:translateY(-1px);
  border-color:#d4dde6;
  box-shadow:0 10px 24px rgba(15,61,62,.07);
}
.notification-card.unread{
  border-color:#c5dfd0;
  box-shadow:0 8px 22px rgba(23,115,59,.07);
}
.notification-card.unread::before{
  content:"";
  position:absolute;
  left:0;
  top:14px;
  bottom:14px;
  width:3px;
  border-radius:0 4px 4px 0;
  background:#17733b;
}
.notification-card>img{
  width:88px;
  height:88px;
  border-radius:14px;
}
.notification-card-body{padding:2px 2px 1px 0}
.notification-card-top{
  align-items:center;
  font-size:11px;
}
.notification-card-top span{
  display:inline-flex;
  align-items:center;
  min-height:22px;
  padding:0 8px;
  border-radius:999px;
  background:#f1f5f9;
  color:#526173;
  font-weight:800;
}
.notification-card.unread .notification-card-top span{
  background:#eaf7ef;
  color:#17733b;
}
.notification-card h3{
  margin:7px 0 5px;
  font-size:16px;
  line-height:1.25;
}
.notification-card p{
  font-size:13px;
  line-height:1.5;
}
.notification-card small{font-size:11px}
.notification-card .inline-btn{
  padding:8px 12px;
  border-radius:9px;
}

/* Promociones: tarjetas más limpias, con jerarquía de cupón */
.beneficiary-promotions-list{gap:13px}
.beneficiary-promotions-card .empty-state{
  border:1px dashed #dbe3ea;
  border-radius:15px;
  background:#f8fafc;
  padding:22px 16px;
}
.beneficiary-promotions-card .promotion-card{
  grid-template-columns:auto minmax(0,1fr);
  gap:14px;
  padding:15px;
  border:1px solid #e1e7ed;
  border-radius:17px;
  background:#fff;
  box-shadow:0 6px 20px rgba(15,61,62,.05);
}
.beneficiary-promotions-card .promotion-card>img{
  grid-column:1/-1;
  width:100%;
  max-height:190px;
  border-radius:13px;
  object-fit:cover;
}
.beneficiary-promotions-card .promotion-card>div{
  min-width:0;
  padding:2px 1px 1px;
}
.beneficiary-promotions-card .promotion-card .eyebrow{
  display:inline-flex;
  align-items:center;
  min-height:22px;
  padding:0 8px;
  border-radius:999px;
  background:#edf7f4;
  color:var(--tenant-primary,#0F3D3E);
  font-size:11px;
  letter-spacing:.1em;
}
.beneficiary-promotions-card .promotion-card h2{
  margin:7px 0 5px;
  font-size:17px;
  line-height:1.25;
  letter-spacing:-.01em;
}
.beneficiary-promotions-card .promotion-card p{
  margin:0 0 10px;
  font-size:13px;
  line-height:1.5;
  color:#5f6d7f;
}
.beneficiary-coupon-card{
  margin:11px 0 10px;
  padding:13px 14px;
  border:1px dashed #cbd8e3;
  border-radius:14px;
  background:linear-gradient(180deg,#f8fafc 0%,#f3f7fa 100%);
  position:relative;
  overflow:hidden;
}
.beneficiary-coupon-card::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:4px;
  background:var(--tenant-accent,#0f3d3e);
}
.beneficiary-coupon-card span{
  display:block;
  margin-bottom:5px;
  color:#526173;
  font-size:11px;
  font-weight:900;
  letter-spacing:.09em;
}
.beneficiary-coupon-card strong{
  display:block;
  color:var(--tenant-primary,#0F3D3E);
  font-size:18px;
  line-height:1.1;
  letter-spacing:.06em;
  word-break:break-word;
}
.beneficiary-coupon-card small{
  display:block;
  margin-top:5px;
  color:#526173;
  font-size:11px;
  line-height:1.4;
}
.beneficiary-promotions-card .promotion-card>div>small{
  display:block;
  color:#526173;
  font-size:11px;
  line-height:1.4;
}
.beneficiary-promotions-card .promotion-card .inline-btn{
  padding:9px 12px;
  border-radius:9px;
  margin-top:10px;
}

/* El QR ampliado conserva animación de entrada, pero sin una línea que parezca un escáner */
.qr-lightbox-image-wrap::before{
  left:14%!important;
  right:14%!important;
  top:10%!important;
  height:80%!important;
  border-radius:28px!important;
  background:radial-gradient(circle at 50% 50%,rgba(23,50,77,.08),transparent 62%)!important;
  filter:none!important;
  opacity:0!important;
  transform:scale(.94)!important;
}
.qr-lightbox-ready .qr-lightbox-image-wrap::before{
  animation:qrSoftGlow .9s .12s ease-out 1 forwards!important;
}
@keyframes qrSoftGlow{
  0%{opacity:0;transform:scale(.94)}
  45%{opacity:1;transform:scale(1)}
  100%{opacity:0;transform:scale(1.04)}
}
@media(max-width:650px){
  .beneficiary-section[data-panel="notifications"] .notification-center-card,
  .beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card{
    padding:14px;
    border-radius:20px;
  }
  .beneficiary-section[data-panel="notifications"] .notification-center-card .section-title,
  .beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title{
    margin-bottom:14px;
    padding:15px;
    border-radius:16px;
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
  }
  .beneficiary-section[data-panel="notifications"] .notification-center-card .section-title::before,
  .beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title::before{
    left:15px;top:15px;width:38px;height:38px;border-radius:12px;
  }
  .beneficiary-section[data-panel="notifications"] .notification-center-card .section-title::after,
  .beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title::after{
    left:25px;top:25px;
  }
  .beneficiary-section[data-panel="notifications"] .notification-center-card .section-title>div,
  .beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title>div{
    padding-left:50px;
  }
  .beneficiary-section[data-panel="notifications"] .notification-center-card .section-title h2,
  .beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title h2{
    font-size:23px;
  }
  .beneficiary-section[data-panel="notifications"] .notification-center-card .section-title p,
  .beneficiary-section[data-panel="promotions"] .beneficiary-promotions-card .section-title p{
    font-size:13px;
    line-height:1.45;
  }
  .beneficiary-section[data-panel="notifications"] #enableNotificationsBtn{
    width:100%;
    min-height:44px;
  }
  .notification-toolbar{
    align-items:stretch;
    flex-direction:column;
    gap:9px;
  }
  .notification-toolbar .secondary{width:100%}
  .notification-card{
    grid-template-columns:1fr;
    padding:13px;
  }
  .notification-card>img{
    width:100%;
    height:128px;
  }
  .notification-card-body{padding:0 1px 2px}
  .notification-card h3{font-size:16px}
  .beneficiary-promotions-card .promotion-card{
    grid-template-columns:1fr;
    gap:11px;
    padding:13px;
  }
  .beneficiary-promotions-card .promotion-card>img{
    max-height:150px;
  }
  .beneficiary-promotions-card .promotion-card h2{font-size:16px}
  .beneficiary-coupon-card{padding:12px 13px}
}
@media(prefers-reduced-motion:reduce){
  .notification-card{transition:none}
  .notification-card:hover{transform:none}
  .qr-lightbox-ready .qr-lightbox-image-wrap::before{animation:none!important;display:none!important}
}

/* v1.20.0.84 · Portal contrast and empty-state normalization */
.admin-shell .card, .admin-shell .stat-card, .admin-shell .ops-metric, .admin-shell .employee-tools, .admin-shell .employee-filters, .admin-shell .quick-card, .admin-shell .admin-help, .admin-shell .module-box, .admin-shell .branch-panel, .admin-shell .scope-grid { color:var(--tenant-text)!important; }
.admin-shell .card p, .admin-shell .card label, .admin-shell .card span, .admin-shell .card small, .admin-shell .card td, .admin-shell .card th { color:inherit; }
.admin-shell .card .muted, .admin-shell .card .small, .admin-shell .card .eyebrow, .admin-shell .card .filter-field label { color:var(--tenant-muted)!important; }
.admin-shell .card a:not(.primary):not(.secondary-link), .admin-shell .card .back-link { color:color-mix(in srgb,var(--tenant-accent) 62%,#000)!important; }
.admin-shell .card input, .admin-shell .card select, .admin-shell .card textarea { color:var(--tenant-text)!important; background:var(--tenant-surface)!important; }
.admin-shell .card table { color:var(--tenant-text)!important; }
.admin-shell .card table th { color:var(--tenant-text)!important; background:color-mix(in srgb,var(--tenant-primary) 4%,var(--tenant-surface))!important; }
.admin-shell .card table td { color:var(--tenant-text); }
.admin-shell .empty-state { display:table-cell!important; width:100%!important; min-height:0!important; height:120px!important; padding:32px 18px!important; text-align:center!important; vertical-align:middle!important; color:var(--tenant-muted)!important; background:transparent!important; }
.admin-shell .table-wrap { width:100%; }
.admin-shell .table-wrap table { min-width:100%; }
.admin-shell .section-title > div:first-child { min-width:0; }
.admin-shell .section-title > div:first-child > h2, .admin-shell .section-title > div:first-child > p { max-width:100%; }
.admin-shell .type-scope-note { display:flex; align-items:flex-start; gap:10px; margin:16px 0; padding:13px 15px; }
.admin-shell .type-scope-note strong { color:var(--tenant-text)!important; white-space:nowrap; }
.admin-shell .type-scope-note span { color:var(--tenant-muted)!important; line-height:1.45; }
@media(max-width:700px){ .admin-shell .type-scope-note{flex-direction:column;gap:4px;} .admin-shell .section-title{align-items:flex-start;flex-direction:column;} .admin-shell .section-title > button{width:100%;} }

/* =========================================================
   Fidly v1.20.0.86 · BRAND CARD SYSTEM
   Unifica las tarjetas del portal de empresa usando el branding
   de la empresa activa, sin teñir toda la interfaz ni afectar
   el Centro Maestro.
   ========================================================= */
:root{
  --brand-card-surface:color-mix(in srgb,var(--tenant-surface,#fff) 96%,var(--tenant-primary,#0F3D3E) 4%);
  --brand-card-soft:color-mix(in srgb,var(--tenant-surface,#fff) 92%,var(--tenant-primary,#0F3D3E) 8%);
  --brand-card-accent:color-mix(in srgb,var(--tenant-primary,#0F3D3E) 14%,var(--tenant-surface,#fff));
  --brand-card-border:color-mix(in srgb,var(--tenant-primary,#0F3D3E) 16%,var(--tenant-surface,#fff));
  --brand-card-border-strong:color-mix(in srgb,var(--tenant-primary,#0F3D3E) 28%,var(--tenant-surface,#fff));
  --brand-card-muted:color-mix(in srgb,var(--tenant-text,#0F3D3E) 76%,var(--tenant-surface,#fff));
}

/* Shell de empresa: la marca activa manda también en navegación. */
.admin-shell .sidebar{
  background:var(--tenant-primary,#0F3D3E)!important;
}
.admin-shell .nav-item.active{
  background:var(--tenant-secondary,#fff)!important;
  color:var(--tenant-primary,#0F3D3E)!important;
}
.admin-shell .nav-item.active .nav-icon{color:color-mix(in srgb,var(--tenant-accent,var(--tenant-primary)) 62%,#000)!important}
.admin-shell .nav-subitem.active{
  background:color-mix(in srgb,var(--tenant-accent,#10B991) 18%,var(--tenant-primary,#0F3D3E))!important;
  color:var(--tenant-secondary,#fff)!important;
}

/* Regla única para las tarjetas principales del portal. */
.admin-shell .card,
.admin-shell .stat-card,
.admin-shell .ops-metric,
.admin-shell .report-chart-card,
.admin-shell .chart-card,
.admin-shell .quick-card,
.admin-shell .branch-panel,
.admin-shell .module-box,
.admin-shell .license-summary-item,
.admin-shell .commercial-metric,
.admin-shell .dashboard-branch-card,
.admin-shell .loyalty-admin-card,
.admin-shell .points-admin-card,
.admin-shell .support-hero-card,
.admin-shell .support-detail,
.admin-shell .device-management,
.admin-shell .device-audit-panel,
.admin-shell .analytics-toolbar,
.admin-shell .report-filter-card,
.admin-shell .campaign-create-card,
.admin-shell .notification-center-card,
.admin-shell .beneficiary-promotions-card{
  background:var(--brand-card-surface)!important;
  border-color:var(--brand-card-border)!important;
}

/* El color de empresa aparece de forma sutil y consistente, no como
   una mezcla arbitraria de colores distintos por pantalla. */
.admin-shell .stat-card,
.admin-shell .ops-metric,
.admin-shell .commercial-metric,
.admin-shell .license-summary-item{
  box-shadow:inset 0 3px 0 var(--brand-card-accent),0 5px 20px rgba(15,61,62,.045)!important;
}

.admin-shell .stat-card span,
.admin-shell .ops-metric span,
.admin-shell .commercial-metric span,
.admin-shell .license-summary-item>span,
.admin-shell .report-chart-card .chart-kicker{
  color:color-mix(in srgb,var(--tenant-primary,#0F3D3E) 72%,var(--tenant-accent,#10B991))!important;
}
.admin-shell .stat-card strong,
.admin-shell .ops-metric strong,
.admin-shell .commercial-metric strong,
.admin-shell .license-summary-item strong{
  color:var(--tenant-text,#0F3D3E)!important;
}
.admin-shell .stat-card small,
.admin-shell .ops-metric small,
.admin-shell .commercial-metric small,
.admin-shell .license-summary-item small{
  color:var(--brand-card-muted)!important;
}

/* Filtros, herramientas y subtarjetas: misma familia cromática. */
.admin-shell .report-filters,
.admin-shell .employee-filters,
.admin-shell .employee-tools,
.admin-shell .admin-help,
.admin-shell .campaign-type-box,
.admin-shell .cashier-confirm-total,
.admin-shell .cashier-summary>div:not(.purchase-total),
.admin-shell .cashier-status,
.admin-shell .cashier-context,
.admin-shell .employee-preview-card{
  background:var(--brand-card-soft)!important;
  border-color:var(--brand-card-border)!important;
}

/* Modo caja: el total importante usa el primario de la empresa en vez
   de un negro/azul fijo, manteniendo texto legible. */
.admin-shell .cashier-summary .purchase-total,
.admin-shell .purchase-summary .purchase-total{
  background:var(--tenant-primary,#0F3D3E)!important;
  color:var(--tenant-secondary,#fff)!important;
  border-color:color-mix(in srgb,var(--tenant-primary,#0F3D3E) 82%,#000)!important;
}
.admin-shell .cashier-summary .purchase-total span,
.admin-shell .purchase-summary .purchase-total span,
.admin-shell .cashier-summary .purchase-total strong,
.admin-shell .purchase-summary .purchase-total strong{
  color:var(--tenant-secondary,#fff)!important;
}
.admin-shell .cashier-step{background:var(--tenant-surface,#fff)!important;border-color:var(--brand-card-border)!important}
.admin-shell .step-number{background:var(--tenant-primary,#0F3D3E)!important;color:var(--tenant-secondary,#fff)!important}
.admin-shell .cashier-optional summary,.admin-shell .cashier-public-option summary{color:color-mix(in srgb,var(--tenant-accent,var(--tenant-primary)) 62%,#000)!important}

/* Reportería: el bloque de análisis usa exactamente la misma superficie
   que las demás tarjetas del portal. El branding queda en acentos y
   bordes, evitando el antiguo fondo azul que provocaba contraste roto. */
.admin-shell .report-hero{
  background:var(--brand-card-surface)!important;
  border:1px solid var(--brand-card-border)!important;
  border-left:4px solid var(--tenant-accent,var(--tenant-primary))!important;
  color:var(--tenant-text,#0F3D3E)!important;
}
.admin-shell .report-hero h2{color:var(--tenant-text,#0F3D3E)!important}
.admin-shell .report-hero p{color:var(--brand-card-muted,#526173)!important}
.admin-shell .report-hero .eyebrow{color:color-mix(in srgb,var(--tenant-accent,var(--tenant-primary)) 62%,#000)!important}
.admin-shell .report-hero-period{
  background:var(--brand-card-soft)!important;
  border-color:var(--brand-card-border)!important;
  color:var(--tenant-text,#0F3D3E)!important;
}
.admin-shell .report-hero-period span{color:var(--brand-card-muted)!important}
.admin-shell .report-hero-period strong{color:var(--tenant-primary,#0F3D3E)!important}
.admin-shell .report-stat-primary{border-top-color:var(--tenant-accent,var(--tenant-primary))!important}
.admin-shell .report-chart-card h3{color:var(--tenant-text,#0F3D3E)!important}

/* Tablas y estados vacíos respetan la misma superficie. */
.admin-shell .table-wrap{
  background:var(--tenant-surface,#fff)!important;
  border-color:var(--brand-card-border)!important;
}
.admin-shell th{
  background:var(--brand-card-soft)!important;
  color:var(--tenant-text,#0F3D3E)!important;
}
.admin-shell tbody tr:hover td{
  background:color-mix(in srgb,var(--tenant-accent,#10B991) 4%,var(--tenant-surface,#fff))!important;
}
.admin-shell .empty-state{
  color:var(--brand-card-muted)!important;
  background:var(--tenant-surface,#fff)!important;
}

/* No permitir que componentes con gradientes antiguos vuelvan a romper
   la consistencia cromática del portal. */
.admin-shell .modern-hero,
.admin-shell .branch-analytics,
.admin-shell .analytics-mini{
  background:var(--brand-card-surface)!important;
  border-color:var(--brand-card-border)!important;
}
.admin-shell .hero-kpi,
.admin-shell .analytics-mini{
  background:var(--brand-card-soft)!important;
  border-color:var(--brand-card-border)!important;
}
.admin-shell .hero-kpi strong{color:var(--tenant-primary,#0F3D3E)!important}

/* Promociones/notificaciones administrativas: conservar el significado
   de cada módulo, pero con el mismo lenguaje de superficie. */
.admin-shell .campaign-type-chip.promotion{
  background:color-mix(in srgb,var(--tenant-accent,#10B991) 12%,var(--tenant-surface,#fff))!important;
  color:color-mix(in srgb,var(--tenant-primary,#0F3D3E) 78%,var(--tenant-accent,#10B991))!important;
}
.admin-shell .campaign-type-chip.notification{
  background:var(--brand-card-soft)!important;
  color:var(--tenant-text,#0F3D3E)!important;
}

/* Accesibilidad: los fondos claros no heredan colores de marca que
   puedan dejar texto con contraste insuficiente. */
.admin-shell .card p,
.admin-shell .card label,
.admin-shell .card span,
.admin-shell .card small,
.admin-shell .card td,
.admin-shell .card th{
  text-shadow:none!important;
}

/* v1.20.0.86 · cobertura total de tarjetas del portal de empresa */
.admin-shell [class*="card"]{
  --local-card-surface:var(--brand-card-surface);
  --local-card-border:var(--brand-card-border);
}
.admin-shell [class*="card"]:not(.purchase-success-card):not(.qr-modal-card){
  border-color:var(--local-card-border)!important;
}
.admin-shell [class*="card"]:not(.purchase-success-card):not(.qr-modal-card){
  background:var(--local-card-surface);
}

/* Beneficiario: las tarjetas informativas también usan la misma paleta de
   la empresa, manteniendo blanco puro para credenciales/QR cuando aplica. */
.beneficiary-app .notification-center-card,
.beneficiary-app .beneficiary-promotions-card,
.beneficiary-app .engagement-card,
.beneficiary-app .loyalty-level-card,
.beneficiary-app .history-summary{
  background:var(--brand-card-surface)!important;
  border-color:var(--brand-card-border)!important;
}
.beneficiary-app .notification-card,
.beneficiary-app .beneficiary-promotions-card .promotion-card,
.beneficiary-app .beneficiary-coupon-card,
.beneficiary-app .engagement-stat{
  border-color:var(--brand-card-border)!important;
  background:var(--brand-card-soft)!important;
}
.beneficiary-app .notification-card.unread{border-left-color:var(--tenant-accent,#10B991)!important}
.beneficiary-app .beneficiary-coupon-card::before{background:var(--tenant-accent,var(--tenant-primary))!important}


/* =========================================================
   Fidly v1.20.0.91 · TARJETAS PRINCIPALES UNIFICADAS
   La identidad compartida se aplica únicamente a las tarjetas principales
   de cada módulo. Las tarjetas de contenido, tablas, formularios y métricas
   conservan su propia jerarquía visual.
   ========================================================= */
:root{
  --brand-main-surface:var(--tenant-surface,#fff);
  --brand-main-border:color-mix(in srgb,var(--tenant-primary,#0F3D3E) 18%,var(--tenant-surface,#fff));
  --brand-main-accent:var(--tenant-accent,var(--tenant-primary,#0F3D3E));
  --brand-main-muted:color-mix(in srgb,var(--tenant-text,#0F3D3E) 76%,var(--tenant-surface,#fff));
  --brand-main-shadow:0 8px 24px rgba(15,61,62,.055);
  --brand-main-shadow-hover:0 10px 28px rgba(15,61,62,.075);
}

/* Familia visual de tarjetas principales: solo los encabezados/resúmenes
   que presentan cada módulo. */
.admin-shell .dashboard-section,
.admin-shell .modern-hero,
.admin-shell .report-hero,
.admin-shell .support-hero-card,
.admin-shell .campaign-create-card,
.admin-shell .commercial-section,
.admin-shell .license-support-card,
.admin-shell .notification-center-card,
.admin-shell .beneficiary-promotions-card,
.admin-shell .loyalty-admin-card,
.admin-shell .points-admin-card,
.admin-shell .streak-main-card{
  background:var(--brand-main-surface)!important;
  color:var(--tenant-text)!important;
  border:1px solid var(--brand-main-border)!important;
  border-radius:18px!important;
  box-shadow:inset 4px 0 0 var(--brand-main-accent),var(--brand-main-shadow)!important;
  transition:box-shadow .16s ease,border-color .16s ease!important;
}

/* Al pasar el ratón NO se cambia la superficie, el borde ni el acento.
   Solo se permite una elevación muy ligera. */
.admin-shell .dashboard-section:hover,
.admin-shell .modern-hero:hover,
.admin-shell .report-hero:hover,
.admin-shell .support-hero-card:hover,
.admin-shell .campaign-create-card:hover,
.admin-shell .commercial-section:hover,
.admin-shell .license-support-card:hover,
.admin-shell .notification-center-card:hover,
.admin-shell .beneficiary-promotions-card:hover,
.admin-shell .loyalty-admin-card:hover,
.admin-shell .points-admin-card:hover,
.admin-shell .streak-main-card:hover{
  background:var(--brand-main-surface)!important;
  border-color:var(--brand-main-border)!important;
  box-shadow:inset 4px 0 0 var(--brand-main-accent),var(--brand-main-shadow-hover)!important;
  transform:none!important;
}

/* Tipografía de las tarjetas principales */
.admin-shell .dashboard-section h2,
.admin-shell .modern-hero h2,
.admin-shell .report-hero h2,
.admin-shell .support-hero-card h2,
.admin-shell .campaign-create-card h2,
.admin-shell .commercial-section h2,
.admin-shell .license-support-card h2,
.admin-shell .notification-center-card h2,
.admin-shell .beneficiary-promotions-card h2,
.admin-shell .loyalty-admin-card h2,
.admin-shell .points-admin-card h2,
.admin-shell .streak-main-card h2{
  color:var(--tenant-text)!important;
}

.admin-shell .dashboard-section p,
.admin-shell .modern-hero p,
.admin-shell .report-hero p,
.admin-shell .support-hero-card p,
.admin-shell .campaign-create-card p,
.admin-shell .commercial-section p,
.admin-shell .license-support-card p,
.admin-shell .notification-center-card p,
.admin-shell .beneficiary-promotions-card p,
.admin-shell .loyalty-admin-card p,
.admin-shell .points-admin-card p,
.admin-shell .streak-main-card p{
  color:var(--brand-main-muted)!important;
}

.admin-shell .dashboard-section .eyebrow,
.admin-shell .modern-hero .eyebrow,
.admin-shell .report-hero .eyebrow,
.admin-shell .support-hero-card .eyebrow,
.admin-shell .campaign-create-card .eyebrow,
.admin-shell .commercial-section .eyebrow,
.admin-shell .license-support-card .eyebrow,
.admin-shell .notification-center-card .eyebrow,
.admin-shell .beneficiary-promotions-card .eyebrow,
.admin-shell .loyalty-admin-card .eyebrow,
.admin-shell .points-admin-card .eyebrow,
.admin-shell .streak-main-card .eyebrow,
.admin-shell .dashboard-section .section-kicker,
.admin-shell .modern-hero .section-kicker,
.admin-shell .report-hero .section-kicker,
.admin-shell .support-hero-card .section-kicker,
.admin-shell .campaign-create-card .section-kicker,
.admin-shell .commercial-section .section-kicker,
.admin-shell .license-support-card .section-kicker,
.admin-shell .notification-center-card .section-kicker,
.admin-shell .beneficiary-promotions-card .section-kicker,
.admin-shell .loyalty-admin-card .section-kicker,
.admin-shell .points-admin-card .section-kicker,
.admin-shell .streak-main-card .section-kicker{
  color:var(--brand-main-accent)!important;
}

/* KPI dentro de la tarjeta principal: misma familia de marca, sin convertir
   las tarjetas pequeñas del resto del módulo al mismo estilo. */
.admin-shell .modern-hero .hero-kpi,
.admin-shell .report-hero .report-hero-period,
.admin-shell .dashboard-section .dashboard-branch-card{
  background:color-mix(in srgb,var(--tenant-primary,#0F3D3E) 7%,var(--tenant-surface,#fff))!important;
  border:1px solid var(--brand-main-border)!important;
  color:var(--tenant-text)!important;
  border-radius:14px!important;
}

.admin-shell .modern-hero .hero-kpi strong,
.admin-shell .report-hero .report-hero-period strong,
.admin-shell .dashboard-section .dashboard-branch-card strong{
  color:var(--tenant-primary)!important;
}

/* Las tarjetas secundarias mantienen jerarquía y NO heredan el diseño de la
   tarjeta principal. */
.admin-shell .member-create-card,
.admin-shell .report-filter-card,
.admin-shell .analytics-toolbar,
.admin-shell .report-chart-card,
.admin-shell .chart-card,
.admin-shell .stat-card,
.admin-shell .ops-metric,
.admin-shell .device-management,
.admin-shell .device-audit-panel,
.admin-shell .branch-panel,
.admin-shell .employee-filters,
.admin-shell .employee-tools{
  box-shadow:0 5px 20px rgba(15,61,62,.045)!important;
}

/* Controles vinculados a la misma marca de la empresa. */
.admin-shell input:focus,
.admin-shell select:focus,
.admin-shell textarea:focus{
  border-color:var(--brand-main-accent)!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--brand-main-accent) 14%,transparent)!important;
}


/* v1.20.0.98 — Fidly platform logo: monochrome + white tile, globally consistent */
img[data-platform-logo]{
  background:#fff!important;
  border-radius:12px!important;
  padding:7px!important;
  box-sizing:border-box!important;
  object-fit:contain!important;
  border:1px solid rgba(15,61,62,.10)!important;
  box-shadow:0 5px 16px rgba(15,61,62,.10)!important;
}
.admin-shell .sidebar-brand img[data-platform-logo]{
  width:44px!important; height:44px!important; min-width:44px!important; max-width:44px!important;
  flex:0 0 44px!important;
}
.auth-logo[data-platform-logo]{width:82px!important;height:82px!important;padding:10px!important;border-radius:14px!important;margin-bottom:32px!important}
.auth-brand-mobile img[data-platform-logo]{width:52px!important;height:52px!important;padding:7px!important;border-radius:12px!important}
.beneficiary-login-hero img[data-platform-logo]{width:72px!important;height:72px!important;padding:9px!important;border-radius:14px!important}
.beneficiary-brand img[data-platform-logo],.beneficiary-desktop-brand img[data-platform-logo]{width:48px!important;height:48px!important;padding:7px!important;border-radius:12px!important}
.master-brand-mark{background:#fff!important;border-radius:12px!important;display:grid!important;place-items:center!important;overflow:hidden!important;box-shadow:0 5px 16px rgba(15,61,62,.10)!important}
.master-brand-mark img{width:100%!important;height:100%!important;display:block!important;object-fit:contain!important;padding:6px!important;box-sizing:border-box!important}
.tenant-registration-brand img[data-platform-logo]{background:#fff!important}



/* v1.20.0.98 — Company logo tile: keep each tenant logo, never replace it with Fidly */
img[data-platform-logo]{
  background:#fff!important;
  border-radius:12px!important;
  padding:7px!important;
  box-sizing:border-box!important;
  object-fit:contain!important;
  border:1px solid rgba(15,23,42,.10)!important;
  box-shadow:0 5px 16px rgba(15,23,42,.10)!important;
}
img[data-platform-logo][data-logo-source="tenant"]{
  background:#fff!important;
}

/* Registro/recuperación de clientes con múltiples franquicias */
.beneficiary-franchise-picker{margin:0 0 14px;padding:14px 16px;border:1px solid var(--tenant-primary,#0F3D3E);border-radius:14px;background:rgba(255,255,255,.82)}
.beneficiary-franchise-picker label{display:flex;flex-direction:column;gap:7px;margin:0}
.beneficiary-franchise-picker label>span{font-weight:800}
.beneficiary-franchise-picker select{width:100%;min-height:46px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;padding:10px 12px;font:inherit;color:#0f172a}
.beneficiary-franchise-picker small{display:block;color:#526173;line-height:1.4}


/* v1.20.0.131 — transición de tab bar móvil: indicador deslizante + entrada suave de sección */
@media(max-width:700px){
  .beneficiary-bottom-nav{position:fixed;isolation:isolate;overflow:visible;}
  .beneficiary-bottom-nav::before{
    content:"";
    position:absolute;
    z-index:0;
    top:7px;
    left:var(--nav-indicator-left,7px);
    width:var(--nav-indicator-width,calc((100% - 22px)/5));
    height:58px;
    border-radius:15px;
    background:color-mix(in srgb,var(--tenant-accent,#10B991) 9%,#fff);
    box-shadow:0 5px 16px color-mix(in srgb,var(--tenant-accent,#10B991) 10%,transparent);
    transform:translate3d(0,0,0);
    transition:left .34s cubic-bezier(.22,.8,.25,1),width .28s ease,top .22s ease,height .22s ease,border-radius .22s ease,box-shadow .22s ease;
    pointer-events:none;
  }
  .beneficiary-bottom-nav .beneficiary-tab{position:relative;z-index:1;}
  .beneficiary-bottom-nav .beneficiary-tab.active .nav-icon{transform:translateY(-1px) scale(1.02);}
  .beneficiary-bottom-nav .beneficiary-tab.active b{transform:translateY(-.5px);}
  .beneficiary-bottom-nav.is-scrolled::before{
    top:5px;
    height:52px;
    border-radius:13px;
    box-shadow:0 4px 12px color-mix(in srgb,var(--tenant-accent,#10B991) 9%,transparent);
  }
  .beneficiary-section.active{animation:beneficiarySectionEnter .28s cubic-bezier(.22,.8,.25,1) both;}
}
@keyframes beneficiarySectionEnter{
  from{opacity:.45;transform:translate3d(0,8px,0);}
  to{opacity:1;transform:translate3d(0,0,0);}
}
@media(prefers-reduced-motion:reduce){
  .beneficiary-bottom-nav::before{transition:none!important;}
  .beneficiary-section.active{animation:none!important;}
}

/* v1.20.0.130 — navegación móvil: tamaño cómodo al inicio y reducción sutil durante scroll */
@media(max-width:700px){
  .beneficiary-app{padding-bottom:116px!important}
  .beneficiary-bottom-nav{
    left:50%!important;
    right:auto!important;
    bottom:max(10px,env(safe-area-inset-bottom))!important;
    width:min(calc(100vw - 24px),390px)!important;
    transform:translateX(-50%);
    box-sizing:border-box;
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
    gap:2px!important;
    padding:7px!important;
    min-height:0!important;
    border-radius:22px!important;
    box-shadow:0 12px 32px rgba(15,61,62,.15)!important;
    transition:width .22s ease,padding .22s ease,border-radius .22s ease,box-shadow .22s ease,transform .22s ease!important;
  }
  .beneficiary-bottom-nav .beneficiary-tab{
    min-width:0!important;
    width:100%!important;
    min-height:58px!important;
    height:58px!important;
    padding:5px 2px 6px!important;
    gap:4px!important;
    border-radius:15px!important;
    box-sizing:border-box;
    color:#526173!important;
    background:transparent!important;
    transition:min-height .22s ease,height .22s ease,padding .22s ease,gap .22s ease,border-radius .22s ease!important;
  }
  .beneficiary-bottom-nav .beneficiary-tab.active{
    color:var(--tenant-primary,#0F3D3E)!important;
    background:transparent!important;
    box-shadow:none!important;
  }
  .beneficiary-bottom-nav .nav-icon{
    width:34px!important;
    height:34px!important;
    flex:0 0 34px!important;
    border-radius:11px!important;
    background:#f3f5f8!important;
    color:#748094!important;
    box-shadow:none!important;
    transition:width .22s ease,height .22s ease,flex-basis .22s ease,border-radius .22s ease!important;
  }
  .beneficiary-bottom-nav .beneficiary-tab.active .nav-icon{
    background:color-mix(in srgb,var(--tenant-accent,#10B991) 12%,#fff)!important;
    color:color-mix(in srgb,var(--tenant-accent,#10B991) 62%,#000)!important;
    box-shadow:0 4px 10px color-mix(in srgb,var(--tenant-accent,#10B991) 12%,transparent)!important;
  }
  .beneficiary-bottom-nav .nav-icon svg{width:19px!important;height:19px!important}
  .beneficiary-bottom-nav .streak-nav-custom-icon{width:21px!important;height:21px!important}
  .beneficiary-bottom-nav .beneficiary-tab b{
    font-size:11px!important;
    font-weight:750!important;
    line-height:1.05!important;
    letter-spacing:-.01em;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    max-width:100%;
    transition:font-size .22s ease!important;
  }
  .beneficiary-bottom-nav .beneficiary-tab::after{
    left:30%!important;
    right:30%!important;
    bottom:1px!important;
    height:2px!important;
    background:var(--tenant-accent,#10B991)!important;
  }
  .beneficiary-bottom-nav .beneficiary-tab.tab-activated::before{display:none!important}

  /* Al hacer scroll se reduce poco: sigue siendo totalmente utilizable y táctil. */
  .beneficiary-bottom-nav.is-scrolled{
    width:min(calc(100vw - 34px),370px)!important;
    padding:5px!important;
    border-radius:20px!important;
    box-shadow:0 9px 24px rgba(15,61,62,.13)!important;
  }
  .beneficiary-bottom-nav.is-scrolled .beneficiary-tab{
    min-height:52px!important;
    height:52px!important;
    padding:4px 2px 5px!important;
    gap:3px!important;
    border-radius:13px!important;
  }
  .beneficiary-bottom-nav.is-scrolled .nav-icon{
    width:30px!important;
    height:30px!important;
    flex-basis:30px!important;
    border-radius:10px!important;
  }
  .beneficiary-bottom-nav.is-scrolled .nav-icon svg{width:18px!important;height:18px!important}
  .beneficiary-bottom-nav.is-scrolled .streak-nav-custom-icon{width:20px!important;height:20px!important}
  .beneficiary-bottom-nav.is-scrolled .beneficiary-tab b{font-size:9.5px!important}
}
@media(max-width:360px){
  .beneficiary-bottom-nav{width:calc(100vw - 24px)!important;max-width:none!important;border-radius:20px!important}
  .beneficiary-bottom-nav .beneficiary-tab{min-height:49px!important;height:49px!important}
  .beneficiary-bottom-nav .nav-icon{width:28px!important;height:28px!important;flex-basis:28px!important;border-radius:10px!important}
  .beneficiary-bottom-nav .beneficiary-tab b{font-size:11px!important}
}

/* v1.20.0.134 — aplicación automática de cupón seleccionado en Caja */
.coupon-filter{display:flex;gap:4px;margin:4px 0 18px;padding:4px;border:1px solid #dfe6ee;border-radius:14px;background:#f5f7fa}
.coupon-filter-btn{flex:1;border:0;border-radius:10px;padding:10px 12px;background:transparent;color:#526173;font-weight:900;font-size:13px;cursor:pointer;transition:background .18s ease,color .18s ease,box-shadow .18s ease}
.coupon-filter-btn:hover{color:var(--tenant-primary,#0F3D3E)}
.coupon-filter-btn.active{background:#fff;color:var(--tenant-primary,#0F3D3E);box-shadow:0 2px 8px rgba(23,50,77,.10)}
.coupon-filter-btn span{display:inline-grid;place-items:center;min-width:19px;height:19px;margin-left:4px;padding:0 5px;border-radius:999px;background:#e8edf4;color:#526173;font-size:11px}
.coupon-filter-panel{min-height:30px}
.beneficiary-coupon-card.selected{border-style:solid;border-color:var(--tenant-accent,#10B991);background:#f0fbf7;box-shadow:0 0 0 3px rgba(16,185,145,.10)}
.beneficiary-coupon-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.coupon-selected-badge{padding:4px 7px;border-radius:999px;background:#dff7ed;color:#147a5b;font-size:11px;letter-spacing:.05em}
.coupon-select-btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;margin-top:10px;padding:9px 13px;border-radius:11px;text-decoration:none;font-size:12px;font-weight:900;cursor:pointer}
.coupon-select-btn.selected{background:#e8f8f2;color:#147a5b;border:1px solid #b8e9d7;box-shadow:none}
.coupon-select-btn:disabled{opacity:.65;cursor:wait}
.promotion-card.coupon-is-selected{border-color:#b8e9d7;box-shadow:0 8px 24px rgba(16,185,145,.08)}
.coupon-selection-message{margin:0 0 12px;padding:10px 12px;border-radius:12px}
@media(max-width:600px){.coupon-filter{margin-top:0}.coupon-filter-btn{padding:10px 9px}.coupon-select-btn{width:100%}}

/* Fidly v1.20.0.148 — jerarquía de franquicias */
.table-subline{display:block;margin-top:4px;color:#526173;font-size:11px;font-weight:600}.app-url-cell{display:inline-block;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#315579;font-size:12px}.row-actions{display:flex;gap:8px;flex-wrap:wrap}.ghost.small-btn{background:transparent;border:1px solid #cbd5e1;color:#334155}.hierarchy-detail-card{scroll-margin-top:18px}.hierarchy-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:4px 0 18px}.hierarchy-summary span{padding:12px 14px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc;color:#526173;font-size:12px}.hierarchy-summary strong{display:block;color:var(--tenant-primary,#0F3D3E);font-size:20px;margin-bottom:2px}.hierarchy-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;margin-bottom:16px}.subcard{border:1px solid #e2e8f0;border-radius:16px;padding:18px;background:#fff}.section-title.compact{margin-bottom:12px}.section-title.compact h3{margin:0 0 4px}.hierarchy-create{display:grid;grid-template-columns:minmax(0,1fr) minmax(120px,.65fr) auto;gap:8px;margin-bottom:10px}.subfranchise-card-grid{display:grid;gap:9px}.subfranchise-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc}.subfranchise-card h4{margin:2px 0;font-size:14px}.subfranchise-card p{margin:0;color:#526173;font-size:12px}.hierarchy-level-label{font-size:11px;font-weight:800;letter-spacing:.12em;color:#526173}.subfranchise-metric{text-align:right}.subfranchise-metric strong{display:block;font-size:20px;color:var(--tenant-primary,#0F3D3E)}.subfranchise-metric span{font-size:11px;color:#526173}.hierarchy-empty{border:1px dashed #cbd5e1;border-radius:12px;padding:14px}.branch-hierarchy-card{margin-top:0}.hierarchy-branch-grid{align-items:end}.hierarchy-path-pill{display:inline-flex;align-items:center;min-height:26px;padding:4px 9px;border-radius:999px;background:#eef4f8;color:#315579;font-size:11px;font-weight:700}.franchise-brand-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.franchise-brand-grid .wide-field{grid-column:1/-1}.franchise-brand-preview{--preview-primary:#0F3D3E;--preview-secondary:#F4F7FB;--preview-accent:#0EA5A4;--preview-bg:#F5F8FC;--preview-surface:#fff;--preview-text:#0F3D3E;--preview-radius:14px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin:14px 0;padding:14px;border:1px solid color-mix(in srgb,var(--preview-primary) 18%,#e2e8f0);border-radius:16px;background:var(--preview-bg);color:var(--preview-text)}.franchise-brand-preview img{width:44px;height:44px;object-fit:contain;padding:6px;border-radius:12px;background:var(--preview-surface);box-shadow:0 4px 12px rgba(15,23,42,.08)}.franchise-brand-preview strong,.franchise-brand-preview span{display:block}.franchise-brand-preview span{font-size:11px;color:color-mix(in srgb,var(--preview-text) 64%,transparent);margin-top:3px}.franchise-brand-preview button{border:0;padding:9px 13px;border-radius:var(--preview-radius);background:var(--preview-primary);color:var(--preview-secondary);font-weight:700}.scope-assignment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:end}.scope-assignment-grid>button{justify-self:start}.scope-admin-summary{display:grid;gap:8px;margin-top:16px}.scope-admin-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc}.scope-admin-row strong,.scope-admin-row span{display:block}.scope-admin-row>div>span{margin-top:2px;color:#526173;font-size:11px}.scope-assignment-grid select[multiple]{min-height:112px}.hierarchy-detail-card[hidden],#scopeAssignmentPanel[hidden],#franchiseBrandingPanel[hidden],#subfranchiseForm[hidden]{display:none!important}
@media(max-width:900px){.hierarchy-split{grid-template-columns:1fr}.hierarchy-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.scope-assignment-grid{grid-template-columns:1fr}.franchise-brand-grid{grid-template-columns:1fr}.franchise-brand-grid .wide-field{grid-column:auto}.hierarchy-create{grid-template-columns:1fr}.franchise-brand-preview{grid-template-columns:auto 1fr}.franchise-brand-preview button{grid-column:1/-1}.app-url-cell{max-width:160px}}
@media(max-width:560px){.hierarchy-summary{grid-template-columns:1fr 1fr}.subcard{padding:14px}.scope-admin-row{align-items:flex-start;flex-direction:column}.row-actions{flex-direction:column}.row-actions .small-btn{width:100%}}


/* v1.20.0.181 — compact data tables: maximum 10 visible body rows */
.table-scroll{
  width:100%;
  max-width:100%;
  overflow-x:auto;
}
.table-scroll.table-scroll-active{
  max-height:var(--table-viewport-height,560px);
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.table-scroll.table-scroll-active thead th{
  position:sticky;
  top:0;
  z-index:2;
  background:var(--tenant-surface,#fff);
}
.table-scroll.table-scroll-active table{
  margin:0;
}

.company-admin-password-mode{display:flex;align-items:center;gap:8px;font-size:14px;color:#59687c;grid-column:1/-1}.company-admin-password-mode input{width:auto;margin:0}.company-admin-form input[hidden]{display:none}

/* Role-specific dashboard */
.role-dashboard-card{margin-top:18px}.role-dashboard-metrics{margin-top:4px}.role-dashboard-card[hidden]{display:none!important}


/* Fidly v1.20.0.186 — transición fluida del contenido administrativo */
.admin-shell .admin-app{view-transition-name:fidly-admin-page;}
.admin-shell.spa-navigating .admin-app{pointer-events:none;}
.admin-shell.spa-entered .admin-app{animation:fidlyAdminPageEnter .22s cubic-bezier(.22,.8,.28,1) both;}
@keyframes fidlyAdminPageEnter{from{opacity:.84;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
::view-transition-old(fidly-admin-page){animation:fidlyAdminPageOut .14s ease both;}
::view-transition-new(fidly-admin-page){animation:fidlyAdminPageIn .22s cubic-bezier(.22,.8,.28,1) both;}
@keyframes fidlyAdminPageOut{to{opacity:.86;transform:translateY(-3px)}}
@keyframes fidlyAdminPageIn{from{opacity:.8;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.admin-shell.spa-entered .admin-app,::view-transition-old(fidly-admin-page),::view-transition-new(fidly-admin-page){animation:none!important}}

/* v1.20.0.187 — navegación estable y composición simétrica de menús */
.company-admin-role-picker .admin-role-options{
  grid-auto-rows:minmax(74px,1fr);
  align-items:stretch;
}
.company-admin-role-picker .admin-role-option{
  min-height:74px!important;
  height:100%;
  box-sizing:border-box;
}
.quick-grid{
  grid-auto-rows:1fr;
}
.quick-grid .quick-card{
  height:100%;
  min-height:125px;
  box-sizing:border-box;
}
.admin-shell .sidebar-group-summary>span:not(.nav-icon):not(.sidebar-group-chevron){
  min-width:0;
  flex:1 1 auto;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.admin-shell .sidebar-group-summary .sidebar-group-chevron{
  flex:0 0 auto;
}
@media(max-width:800px){
  .company-admin-role-picker .admin-role-options{grid-auto-rows:minmax(64px,1fr)}
  .company-admin-role-picker .admin-role-option{min-height:64px!important}
}

/* ==========================================================================
   Fidly · Libreta de ahorro (capa final del portal, caja, beneficiario y maestro)
   Cubierta = color principal de la empresa. Hojas = papel de seguridad.
   Tinta de impresora para texto, cifras en mono tabular, sellos para estados.
   La marca de cada empresa (--tenant-*) sigue mandando: esta capa solo la
   interpreta con materiales de libreta.
   ========================================================================== */
:root{
  --lb-paper:color-mix(in srgb,var(--tenant-background,#eef4ef) 70%,#eef4ef);
  --lb-sheet:color-mix(in srgb,var(--tenant-surface,#fff) 88%,#f8fbf8);
  --lb-rule:color-mix(in srgb,var(--tenant-text,#1c2b33) 16%,var(--tenant-surface,#fff));
  --lb-rule-strong:color-mix(in srgb,var(--tenant-text,#1c2b33) 32%,var(--tenant-surface,#fff));
  --lb-ink:var(--tenant-text,#1c2b33);
  --lb-ink-soft:color-mix(in srgb,var(--tenant-text,#1c2b33) 76%,var(--tenant-surface,#fff));
  --lb-cover:var(--tenant-primary,#0b3b3c);
  --lb-cover-deep:color-mix(in srgb,var(--tenant-primary,#0b3b3c) 80%,#000);
  --lb-on-cover:var(--tenant-secondary,#fff);
  --lb-accent:var(--tenant-accent,#25b094);
  --lb-accent-ink:color-mix(in srgb,var(--tenant-accent,#25b094) 62%,#000);
  --lb-credit:#0b7a63;
  --lb-debit:#b23a2e;
  --lb-stamp:#6b3fa0;
  --lb-r:6px;
  --lb-display:Archivo,"Arial Narrow",system-ui,sans-serif;
  --lb-text:Archivo,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --lb-mono:"Martian Mono",ui-monospace,"Cascadia Mono",Consolas,monospace;
  --lb-cloth:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6'%3E%3Cpath d='M0 6L6 0M-1 1L1-1M5 7L7 5' stroke='%23ffffff' stroke-width='.5' opacity='.07'/%3E%3C/svg%3E");
  --lb-guilloche:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='40' viewBox='0 0 160 40'%3E%3Cg fill='none' stroke='%231c2b33' stroke-width='.6' opacity='.05'%3E%3Cpath d='M0 20c20-18 60-18 80 0s60 18 80 0'/%3E%3Cpath d='M0 20c20 18 60 18 80 0s60-18 80 0'/%3E%3Cpath d='M0 10c20-8 60-8 80 10s60 8 80-10'/%3E%3Cpath d='M0 30c20 8 60 8 80-10s60-8 80 10'/%3E%3C/g%3E%3C/svg%3E");
}

/* Tipografía y superficie base */
html,body{font-family:var(--lb-text)}
body{background:var(--lb-paper) var(--lb-guilloche)!important;color:var(--lb-ink);font-size:16px;line-height:1.55}
button,input,select,textarea{font-family:var(--lb-text)}
h1,h2,h3,.topbar h1{font-family:var(--lb-display);letter-spacing:-.015em;text-wrap:balance}
h1,.topbar h1{font-weight:800!important;font-stretch:88%}
h2{font-weight:800;font-stretch:92%}
h3{font-weight:700}
::selection{background:var(--lb-stamp);color:#fff}
:focus-visible{outline:2px solid var(--lb-stamp)!important;outline-offset:2px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:0!important}
.muted,.small.muted,p.muted{color:var(--lb-ink-soft)!important}

/* Etiquetas: rótulo impreso en mono, sin mayúsculas espaciadas gritonas */
.eyebrow,.section-kicker,.master-kicker,.master-eyebrow,.auth-kicker,.sidebar-section-label,.master-nav-heading,.master-sidebar-label{
  font-family:var(--lb-mono)!important;font-size:11px!important;font-weight:500!important;letter-spacing:.02em!important;
}
.eyebrow,.section-kicker,.master-kicker,.master-eyebrow,.auth-kicker{color:var(--lb-ink-soft)!important}

/* Cifras: tinta de impresora, tabulares */
td,.stat-card strong,.ops-metric strong,.commercial-metric strong,.license-summary-item strong,.hero-kpi strong,.purchase-total,.qr-result-id,.uuid{font-variant-numeric:tabular-nums}
.stat-card strong,.ops-metric strong,.commercial-metric strong,.license-summary-item strong,.hero-kpi strong,.purchase-total{font-family:var(--lb-mono)!important;font-weight:700!important;letter-spacing:-.03em!important}

/* ---------- Cubierta: barra lateral ---------- */
.admin-shell .sidebar,.admin-shell:not(.master-shell) .sidebar{
  background:var(--lb-cover) var(--lb-cloth)!important;
  box-shadow:inset -14px 0 22px -18px rgba(0,0,0,.6)!important;border-right:0!important;
}
.admin-shell .sidebar .nav-item,.admin-shell .sidebar .nav-link{border-radius:var(--lb-r)!important}
.admin-shell .sidebar .nav-item.active,.admin-shell .sidebar .nav-link.active{
  background:var(--lb-paper)!important;color:var(--lb-ink)!important;box-shadow:none!important;
  border-radius:var(--lb-r) 0 0 var(--lb-r)!important;margin-right:-12px!important;
}
.admin-shell .sidebar .nav-item.active .nav-icon,.admin-shell .sidebar .nav-link.active .nav-icon{color:var(--lb-cover)!important}
.admin-shell .sidebar .nav-item.active::before,.admin-shell .sidebar .nav-link.active::before{display:none!important}

/* ---------- Hojas: tarjetas y secciones ---------- */
.card,.admin-shell .card,.admin-shell .dashboard-section,.admin-shell .modern-hero,.admin-shell .report-hero,.admin-shell .support-hero-card,.admin-shell .campaign-create-card,.admin-shell .commercial-section,.admin-shell .license-support-card,.admin-shell .notification-center-card,.admin-shell .beneficiary-promotions-card,.admin-shell .loyalty-admin-card,.admin-shell .points-admin-card,.admin-shell .streak-main-card,.auth-card{
  background:var(--lb-sheet)!important;border:1px solid var(--lb-rule)!important;border-radius:var(--lb-r)!important;
  box-shadow:0 1px 0 var(--lb-rule)!important;
}
.admin-shell .dashboard-section:hover,.admin-shell .modern-hero:hover,.admin-shell .report-hero:hover{box-shadow:0 1px 0 var(--lb-rule)!important}
.modern-hero,.dashboard-branch-card,.admin-shell .report-hero{border-left-width:1px!important}

/* Métricas como celdas de un renglón, no tarjetas dentro de tarjetas */
.admin-shell .stat-card,.admin-shell .ops-metric,.admin-shell .commercial-metric,.admin-shell .license-summary-item,.hero-kpi{
  background:transparent!important;border:0!important;border-top:2px solid var(--lb-ink)!important;border-radius:0!important;box-shadow:none!important;
}
.admin-shell .stat-card span,.admin-shell .ops-metric span,.admin-shell .commercial-metric span,.admin-shell .license-summary-item>span,.hero-kpi span{
  font-family:var(--lb-mono)!important;font-size:11px!important;letter-spacing:.02em!important;color:var(--lb-ink-soft)!important;
}
.dashboard-branch-card{background:transparent!important;border:1.5px dashed var(--lb-rule-strong)!important;border-radius:var(--lb-r)!important}

/* ---------- Libro mayor: tablas ---------- */
.table-wrap{border:1px solid var(--lb-rule);border-radius:var(--lb-r);background:var(--lb-sheet)}
table th{font-family:var(--lb-mono)!important;font-size:11px!important;font-weight:500!important;letter-spacing:.02em!important;color:var(--lb-ink-soft)!important;background:var(--lb-sheet)!important;border-bottom:2px solid var(--lb-ink)!important}
table td{border-bottom:1px solid var(--lb-rule)!important;color:var(--lb-ink)}
table tbody tr:hover td{background:color-mix(in srgb,var(--lb-accent) 6%,var(--lb-sheet))}

/* ---------- Botones ---------- */
button,.secondary-link,.button{border-radius:var(--lb-r)!important;font-weight:700!important}
button.primary,.primary,.admin-shell button.primary{
  background:var(--lb-cover)!important;color:var(--lb-on-cover)!important;border:1.5px solid var(--lb-cover)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 2px 0 var(--lb-cover-deep)!important;
}
button.primary:hover,.primary:hover{filter:none!important;background:var(--lb-cover-deep)!important;transform:none!important}
button.primary:active,.primary:active{transform:translateY(1px)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.1)!important}
button.secondary,.secondary,.secondary-link{
  background:var(--lb-sheet)!important;color:var(--lb-ink)!important;border:1.5px solid var(--lb-rule-strong)!important;box-shadow:none!important;
}
button.secondary:hover,.secondary:hover,.secondary-link:hover{border-color:var(--lb-ink)!important;transform:none!important;box-shadow:none!important}
button:hover{transform:none}
button:disabled{opacity:.5}

/* ---------- Formularios de ventanilla ---------- */
input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea{
  background:#fff!important;border:1.5px solid var(--lb-rule-strong)!important;border-radius:4px!important;color:var(--lb-ink)!important;
}
input:focus,select:focus,textarea:focus{border-color:var(--lb-ink)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--lb-stamp) 18%,transparent)!important}
input::placeholder,textarea::placeholder{color:color-mix(in srgb,var(--lb-ink) 55%,#fff)}
label{color:var(--lb-ink)}
input[type=checkbox],input[type=radio]{accent-color:var(--lb-cover)}

/* ---------- Sellos: estados ---------- */
.badge{background:transparent!important;border:1.5px solid currentColor!important;border-radius:4px!important;font-family:var(--lb-mono)!important;font-size:11px!important;font-weight:700!important;letter-spacing:.02em;padding:3px 7px!important}
.badge.active{color:var(--lb-credit)!important}
.badge.inactive{color:var(--lb-debit)!important}
.badge.master{color:var(--lb-stamp)!important}
.message{color:var(--lb-credit)}
.message.error{color:var(--lb-debit)!important}
.empty-state{border:1.5px dashed var(--lb-rule-strong)!important;background:transparent!important;border-radius:var(--lb-r)!important;color:var(--lb-ink-soft)!important}

/* ---------- Acceso (login) ---------- */
.auth-visual{background:var(--lb-cover) var(--lb-cloth)!important;box-shadow:inset -18px 0 28px -20px rgba(0,0,0,.55)}
.auth-panel{background:var(--lb-paper) var(--lb-guilloche)!important}
.auth-trust span,.auth-trust li{border-radius:4px!important}

/* ---------- Beneficiario: pestañas de libreta ---------- */
.beneficiary-tab{border-radius:var(--lb-r) var(--lb-r) 0 0!important}
.beneficiary-tab.active,.beneficiary-tab[aria-selected="true"]{background:var(--lb-sheet)!important;box-shadow:inset 0 -2px 0 var(--lb-cover)!important}

/* ---------- Detalles del navegador ---------- */
*{scrollbar-color:var(--lb-rule-strong) transparent}
a{text-underline-offset:3px}

@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition:none!important}}

/* Libreta · refuerzos de especificidad y aplanado de hojas anidadas */
body:not(#lb) .eyebrow,body:not(#lb) .section-kicker,body:not(#lb) .master-kicker,body:not(#lb) .master-eyebrow,body:not(#lb) .auth-kicker,body:not(#lb) .admin-shell .eyebrow,body:not(#lb) .admin-shell .section-kicker{
  font-family:var(--lb-mono)!important;font-size:11px!important;font-weight:500!important;letter-spacing:.02em!important;color:var(--lb-ink-soft)!important;
}
body:not(#lb) .auth-visual .eyebrow,body:not(#lb) .auth-visual .auth-kicker,body:not(#lb) .master-sidebar .master-kicker{color:color-mix(in srgb,var(--lb-on-cover) 72%,var(--lb-cover))!important}
body:not(#lb) .admin-shell .sidebar .sidebar-section-label{font-family:var(--lb-mono)!important;letter-spacing:.02em!important;color:color-mix(in srgb,var(--lb-on-cover) 62%,var(--lb-cover))!important}
body:not(#lb) .admin-shell .sidebar .nav-item.active,body:not(#lb) .admin-shell .sidebar .nav-link.active,body:not(#lb) .admin-shell .sidebar .nav-subitem.active{
  background:var(--lb-paper)!important;color:var(--lb-ink)!important;box-shadow:none!important;border:0!important;border-radius:var(--lb-r) 0 0 var(--lb-r)!important;
}
body:not(#lb) .admin-shell .sidebar .nav-item.active *,body:not(#lb) .admin-shell .sidebar .nav-link.active *{color:var(--lb-ink)!important}
/* hojas dentro de hojas: se vuelven renglones */
body:not(#lb) .card .card-inner,body:not(#lb) .card-inner,body:not(#lb) .role-dashboard-card{
  background:transparent!important;border:0!important;border-top:1px solid var(--lb-rule)!important;border-radius:0!important;box-shadow:none!important;padding-left:0!important;padding-right:0!important;
}
body:not(#lb) .analytics-mini{background:transparent!important;border:0!important;border-top:2px solid var(--lb-ink)!important;border-radius:0!important;box-shadow:none!important}
body:not(#lb) .analytics-mini span{font-family:var(--lb-mono)!important;font-size:11px!important;letter-spacing:.02em!important;color:var(--lb-ink-soft)!important}
body:not(#lb) .analytics-mini strong{font-family:var(--lb-mono)!important;letter-spacing:-.03em!important}
body:not(#lb) .quick-card{background:var(--lb-sheet)!important;border:1px solid var(--lb-rule)!important;border-radius:var(--lb-r)!important;box-shadow:none!important}
body:not(#lb) .quick-card:hover{border-color:var(--lb-ink)!important;transform:none!important}
body:not(#lb) .quick-card .quick-icon{display:none!important}
/* credencial del beneficiario: una sola hoja con renglones perforados */
body:not(#lb) .qr-account-card,body:not(#lb) .qr-beneficiary-card{background:transparent!important;border:0!important;box-shadow:none!important}
body:not(#lb) .beneficiary-credential-stage{background:var(--lb-sheet) var(--lb-guilloche)!important;border:1px solid var(--lb-rule)!important;border-radius:14px!important;box-shadow:0 18px 40px -26px rgba(7,43,44,.55)!important}
body:not(#lb) .qr-points-highlight,body:not(#lb) .beneficiary-credential-frame,body:not(#lb) .qr-countdown-card,body:not(#lb) .qr-otp-card{
  background:transparent!important;border:0!important;border-bottom:1.5px dashed var(--lb-rule-strong)!important;border-radius:0!important;box-shadow:none!important;
}
body:not(#lb) .qr-otp-card{border-bottom:0!important}
body:not(#lb) .qr-points-highlight strong{font-family:var(--lb-mono)!important;letter-spacing:-.04em!important;color:var(--lb-ink)!important}
body:not(#lb) .beneficiary-tabs{background:transparent!important;border:0!important;border-bottom:2px solid var(--lb-ink)!important;border-radius:0!important;box-shadow:none!important}
body:not(#lb) .beneficiary-tab{background:transparent!important;border:0!important;box-shadow:none!important}
body:not(#lb) .beneficiary-tab.active,body:not(#lb) .beneficiary-tab[aria-selected="true"]{background:var(--lb-sheet)!important;box-shadow:inset 0 -3px 0 var(--lb-cover)!important;border-radius:var(--lb-r) var(--lb-r) 0 0!important}
body:not(#lb) .qr-countdown-track{background:var(--lb-rule)!important;border-radius:0!important}
body:not(#lb) .dashboard-branch-card{background:transparent!important;border:1.5px dashed var(--lb-rule-strong)!important;border-radius:var(--lb-r)!important;box-shadow:none!important}
body:not(#lb) .beneficiary-login-hero .auth-kicker,body:not(#lb) .auth-visual .auth-kicker,body:not(#lb) .auth-visual .eyebrow{color:color-mix(in srgb,var(--lb-on-cover) 72%,var(--lb-cover))!important}
body:not(#lb) .beneficiary-login-hero{background:var(--lb-cover) var(--lb-cloth)!important}
body:not(#lb) .beneficiary-credential-frame{padding:12px 0!important}
body:not(#lb) .beneficiary-credential-frame img,body:not(#lb) .beneficiary-credential-frame canvas{max-width:100%!important;width:min(100%,330px)!important;height:auto!important;margin-left:auto!important;margin-right:auto!important}
body:not(#lb) .beneficiary-qr canvas,body:not(#lb) .beneficiary-qr>img:not(.credential-designed-qr),body:not(#lb) .beneficiary-qr svg{max-width:100%!important;width:min(100%,330px)!important;height:auto!important;margin:0 auto!important}
/* QR de la credencial: nunca más ancho que la hoja (defecto previo en teléfonos) */
body:not(#lb) .beneficiary-credential-frame img,body:not(#lb) .beneficiary-credential-frame canvas,body:not(#lb) .beneficiary-qr .credential-designed-qr{
  width:min(280px,calc(100vw - 110px))!important;max-width:min(280px,calc(100vw - 110px))!important;height:auto!important;
}
/* qrcodejs dibuja canvas + img; una regla anterior forzaba ambos visibles y el QR se salía de la hoja */
body:not(#lb) .beneficiary-qr canvas:has(+ img),body:not(#lb) .beneficiary-qr canvas:has(~ img:not([style*="display: none"])){display:none!important}
body:not(#lb) .beneficiary-qr{flex-direction:column!important}
body:not(#lb) .beneficiary-qr{padding:0 16px!important;box-sizing:border-box!important}
body:not(#lb) .beneficiary-qr>img{width:100%!important;max-width:300px!important}

/* v1.22 — animación de selección y hover del menú de empresa */
.admin-shell .sidebar .nav-item,
.admin-shell .sidebar .nav-link,
.admin-shell .sidebar .nav-subitem,
.admin-shell .sidebar .sidebar-group-summary{
  transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,transform .12s ease!important;
}
.admin-shell .sidebar .nav-item.active,
.admin-shell .sidebar .nav-subitem.active{animation:indefNavPick .22s ease both}
.admin-shell .sidebar .nav-item:not(.active):active,
.admin-shell .sidebar .nav-subitem:not(.active):active{transform:scale(.98)}
@keyframes indefNavPick{from{transform:translateX(-4px);opacity:.6}to{transform:none;opacity:1}}
@media(prefers-reduced-motion:reduce){
  .admin-shell .sidebar .nav-item.active,
  .admin-shell .sidebar .nav-subitem.active{animation:none}
}

/* Auditoría 2026-09: el input de archivo no debe desbordar su columna (modal de edición). */
.photo-input-label{min-width:0}
.photo-input-label .photo-file{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box}
/* Roles → acciones de cuenta del administrador (solo Administrador completo). */
.admin-account-actions{display:grid;gap:10px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line,#e1e6ed)}
.admin-account-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px}
.admin-account-row input{margin:0;min-width:0}
.admin-account-actions>.danger{justify-self:start}
@media(max-width:700px){.admin-account-row{grid-template-columns:1fr}}
.cashier-reset-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.cashier-reset-form input{margin:0;width:140px;min-width:0}

/* ── Empresa y franquicias → Marca: selector de color (muestra + código hex) ── */
.color-field-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 14px;margin:0;padding:0;border:0;min-width:0}
.color-field-grid legend{grid-column:1/-1;padding:0;margin:0 0 10px;font:700 13px/1.3 var(--lb-text);color:var(--lb-ink)}
.admin-shell .color-field{display:grid;gap:6px;margin:0;min-width:0}
.color-field-name{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font:700 13px/1.3 var(--lb-text);color:var(--lb-ink)}
.color-field-name small{font:400 11px/1.3 var(--lb-text);color:var(--lb-ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.color-field-control{display:flex;align-items:center;gap:10px;height:46px;padding:5px 12px 5px 5px;border:1.5px solid var(--lb-rule-strong);border-radius:4px;background:#fff;transition:border-color .15s ease-out,box-shadow .15s ease-out}
.color-field-control:hover{border-color:var(--lb-ink-soft)}
.color-field-control:focus-within{border-color:var(--lb-ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--lb-stamp) 18%,transparent)}
.admin-shell .color-field input[type=color]{-webkit-appearance:none;appearance:none;flex:0 0 34px;width:34px!important;min-width:34px;max-width:34px;height:34px!important;min-height:0!important;margin:0!important;padding:0!important;border:1px solid color-mix(in srgb,var(--lb-ink) 18%,transparent)!important;border-radius:3px!important;background:none!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);cursor:pointer}
.admin-shell .color-field input[type=color]::-webkit-color-swatch-wrapper{padding:0}
.admin-shell .color-field input[type=color]::-webkit-color-swatch{border:0;border-radius:2px}
.admin-shell .color-field input[type=color]::-moz-color-swatch{border:0;border-radius:2px}
.admin-shell .color-field input[type=color]:focus-visible{outline:0}
.admin-shell .color-field-grid .color-field input.color-field-hex.color-field-hex{flex:1 1 0;min-width:0!important;width:0!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;outline:0;font:500 13px/1 var(--lb-mono)!important;letter-spacing:.04em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--lb-ink)}
.admin-shell .color-field-grid .color-field input.color-field-hex.color-field-hex[aria-invalid=true]{color:var(--lb-debit)}
.color-field-control:has(.color-field-hex[aria-invalid=true]){border-color:var(--lb-debit)}

/* ── Controles de la app: renglones con interruptor ── */
.app-controls-list{display:grid;gap:18px;align-content:start}
.app-controls-group h4{margin:0;padding:0 0 8px;border-bottom:2px solid var(--lb-ink);font:500 11px/1.2 var(--lb-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--lb-ink-soft)}
.app-controls-group ul{list-style:none;margin:0;padding:0}
.admin-shell .app-controls-list .switch-row{display:flex;align-items:center;gap:14px;margin:0;padding:13px 2px;border-bottom:1px solid var(--lb-rule);cursor:pointer;font:400 14px/1.3 var(--lb-text);color:var(--lb-ink);text-align:left}
.switch-row-name{flex:1 1 auto;min-width:0}
.switch-row-state{font:500 11px/1 var(--lb-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--lb-ink-soft)}
.switch-row-state::before{content:"Oculto"}
.switch-row:has(.switch:checked) .switch-row-state{color:var(--lb-credit)}
.switch-row:has(.switch:checked) .switch-row-state::before{content:"Visible"}
.switch-row:hover .switch-row-name{text-decoration:underline;text-decoration-color:var(--lb-rule-strong);text-underline-offset:3px}
.admin-shell .switch{-webkit-appearance:none;appearance:none;position:relative;flex:0 0 42px;width:42px!important;min-width:42px;max-width:42px;height:24px!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;border-radius:999px!important;background:color-mix(in srgb,var(--lb-ink) 48%,var(--tenant-surface,#fff))!important;box-shadow:inset 0 1px 2px rgba(7,43,44,.18);cursor:pointer;transition:background-color .2s cubic-bezier(.22,1,.36,1)}
.admin-shell .switch::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(7,43,44,.35);transition:transform .2s cubic-bezier(.22,1,.36,1)}
.admin-shell .switch:checked{background:var(--lb-cover)!important}
.admin-shell .switch:checked::after{transform:translateX(18px)}
.admin-shell .switch:focus-visible{outline:2px solid var(--lb-stamp);outline-offset:3px}
.admin-shell .switch:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:900px){.color-field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.color-field-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.admin-shell .switch,.admin-shell .switch::after,.color-field-control{transition:none}}

/* ── Menú lateral colapsable (escritorio). Estado en html.sidebar-collapsed, ver sidebar-collapse.js ── */
.sidebar-collapse-btn{display:none}
@media(min-width:761px){
  .admin-shell{--sb-w:260px}
  .master-shell{--sb-w:264px}
  .sidebar-collapse-btn{display:grid;place-items:center;position:fixed;z-index:45;top:26px;left:calc(var(--sb-w) - 14px);width:28px;height:28px;margin:0;padding:0;border-radius:50%;border:1px solid rgba(15,61,62,.2);background:#fff;color:var(--tenant-primary,#0F3D3E);box-shadow:0 2px 8px rgba(12,28,48,.16);cursor:pointer}
  .sidebar-collapse-btn:hover{background:#eef4f3}
  .sidebar-collapse-btn:focus-visible{outline:2px solid var(--tenant-primary,#0F3D3E);outline-offset:2px}
  .sidebar-collapse-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
  html.sidebar-collapsed .admin-shell .sidebar{transform:translateX(-100%)!important;box-shadow:none!important}
  html.sidebar-collapsed .admin-shell .admin-app{margin-left:0!important;padding-left:60px!important}
  html.sidebar-collapsed .sidebar-collapse-btn{left:14px}
  html.sidebar-collapsed .sidebar-collapse-btn svg{transform:rotate(180deg)}
  html.sidebar-anim .admin-shell .sidebar{transition:transform .22s cubic-bezier(.22,1,.36,1)!important}
  html.sidebar-anim .admin-shell .admin-app{transition:margin-left .22s cubic-bezier(.22,1,.36,1),padding-left .22s cubic-bezier(.22,1,.36,1)}
  html.sidebar-anim .sidebar-collapse-btn{transition:left .22s cubic-bezier(.22,1,.36,1)}
}
@media(min-width:761px) and (max-width:1050px){.admin-shell:not(.master-shell){--sb-w:236px}}
/* El contenido ocupa todo el ancho disponible (con o sin menú): .admin-shell es flex y .admin-app no crecía. */
.admin-shell>.admin-app{flex:1 1 auto}
/* Las tarjetas dentro de grids se estiran a su columna (margin auto las encogía al contenido). */
.admin-shell .admin-app .card{margin-left:0;margin-right:0}
@media(prefers-reduced-motion:reduce){html.sidebar-anim .admin-shell .sidebar,html.sidebar-anim .admin-shell .admin-app,html.sidebar-anim .sidebar-collapse-btn{transition:none!important}}
/* Beneficios y consumo: rango de fechas personalizado en segunda fila */
.analytics-toolbar .custom-range{grid-column:1/-1;order:1;display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:12px}
.analytics-toolbar .custom-range[hidden]{display:none}
@media(max-width:520px){.analytics-toolbar .custom-range{grid-template-columns:1fr}}
.branch-analytics-subtitle{margin:22px 0 4px;font-size:16px}


/* ═══ Panel de empresa · estructura común (rediseño 2026-09, fase A) ═══
   Un solo bloque para menú, barra superior, botones, pestañas, tablas y avisos.
   Anclado a #globalSidebar y a .admin-shell:not(.master-shell) para no tocar el Centro Maestro.
   Radios: 6px controles, 10px superficies. Colores: siempre --tenant-*.
   body:not(#fa)… suma especificidad de id: la capa anterior usa body:not(#lb) y !important. */
:root{
  --p-r-sm:6px;--p-r:10px;
  --p-on-primary:var(--tenant-secondary,#fff);
  --p-line:color-mix(in srgb,var(--tenant-text,#1c2b33) 12%,transparent);
  --p-muted:color-mix(in srgb,var(--tenant-text,#1c2b33) 68%,var(--tenant-surface,#fff));
  --p-hover:color-mix(in srgb,var(--tenant-primary,#0b3b3c) 5%,var(--tenant-surface,#fff));
  --p-ico-error:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='black'%3E%3Cpath d='M165.66,101.66,139.31,128l26.35,26.34a8,8,0,0,1-11.32,11.32L128,139.31l-26.34,26.35a8,8,0,0,1-11.32-11.32L116.69,128,90.34,101.66a8,8,0,0,1,11.32-11.32L128,116.69l26.34-26.35a8,8,0,0,1,11.32,11.32ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z'/%3E%3C/svg%3E");
  --p-ico-success:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='black'%3E%3Cpath d='M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z'/%3E%3C/svg%3E");
  --p-ico-warning:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='black'%3E%3Cpath d='M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z'/%3E%3C/svg%3E");
  --p-ico-info:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='black'%3E%3Cpath d='M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z'/%3E%3C/svg%3E");
}
.ph{width:1.15em;height:1.15em;flex:none;fill:currentColor;vertical-align:-.2em}
button .ph,a .ph,label .ph{margin-right:6px}

/* Menú lateral */
body:not(#fa) #globalSidebar{background:var(--tenant-primary)!important;color:var(--p-on-primary)!important;display:flex!important;flex-direction:column!important;padding:0!important;gap:0!important}
body:not(#fa) #globalSidebar .sidebar-brand{display:flex;align-items:center;gap:12px;margin:0!important;padding:18px 16px 16px!important;border-bottom:1px solid color-mix(in srgb,var(--p-on-primary) 14%,transparent)!important;background:none!important}
body:not(#fa) #globalSidebar .sidebar-brand img{width:40px!important;height:40px!important;border-radius:var(--p-r)!important;background:#fff;object-fit:contain;padding:4px;flex:none}
body:not(#fa) #globalSidebar .sidebar-brand strong{display:block;font-size:15px!important;line-height:1.2;color:var(--p-on-primary)!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body:not(#fa) #globalSidebar .sidebar-brand span{display:block;font-size:12px!important;color:color-mix(in srgb,var(--p-on-primary) 72%,transparent)!important;letter-spacing:0!important;text-transform:none!important}
body:not(#fa) #globalSidebar .sidebar-menu-scroll{flex:1 1 auto!important;min-height:0;overflow-y:auto!important;padding:10px 10px 12px!important;margin:0!important;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--p-on-primary) 25%,transparent) transparent}
body:not(#fa) #globalSidebar .sidebar-nav{display:flex!important;flex-direction:column!important;gap:2px!important;margin:0!important;padding:0!important;border:0!important;background:none!important}
body:not(#fa) #globalSidebar :is(.nav-item,.sidebar-group-summary){position:relative;display:flex!important;align-items:center!important;gap:10px!important;min-height:40px!important;height:auto!important;padding:8px 10px!important;margin:0!important;border:0!important;border-radius:var(--p-r-sm)!important;background:transparent!important;box-shadow:none!important;color:color-mix(in srgb,var(--p-on-primary) 84%,transparent)!important;font:600 14px/1.25 Archivo,system-ui,sans-serif!important;letter-spacing:0!important;text-transform:none!important;text-decoration:none!important;cursor:pointer;transition:background-color .15s ease,color .15s ease}
body:not(#fa) #globalSidebar :is(.nav-item,.sidebar-group-summary):hover{background:color-mix(in srgb,var(--p-on-primary) 9%,transparent)!important;color:var(--p-on-primary)!important}
body:not(#fa) #globalSidebar .nav-link.active{background:color-mix(in srgb,var(--p-on-primary) 15%,transparent)!important;color:var(--p-on-primary)!important}
body:not(#fa) #globalSidebar :is(.nav-item,.sidebar-group-summary):focus-visible{outline:2px solid var(--p-on-primary)!important;outline-offset:-2px}
body:not(#fa) #globalSidebar .nav-icon{display:grid!important;place-items:center;width:20px!important;height:20px!important;flex:none!important;margin:0!important;padding:0!important;background:none!important;border:0!important;box-shadow:none!important;color:inherit!important}
body:not(#fa) #globalSidebar .nav-icon svg{width:20px!important;height:20px!important;fill:currentColor!important;stroke:none!important}
body:not(#fa) #globalSidebar .nav-item>span:last-child,body:not(#fa) #globalSidebar .sidebar-group-summary>span:nth-child(2){flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body:not(#fa) #globalSidebar .sidebar-group{margin:0!important;padding:0!important;border:0!important;background:none!important}
body:not(#fa) #globalSidebar .sidebar-group-summary{list-style:none}
body:not(#fa) #globalSidebar .sidebar-group-summary::-webkit-details-marker,body:not(#fa) #globalSidebar .sidebar-group-summary::marker{display:none;content:""}
body:not(#fa) #globalSidebar .sidebar-group-chevron{display:grid!important;place-items:center;width:16px!important;height:16px!important;margin:0 0 0 auto!important;opacity:.7;transform:none!important;transition:transform .18s ease}
body:not(#fa) #globalSidebar .sidebar-group-chevron svg{width:16px!important;height:16px!important;fill:currentColor!important}
body:not(#fa) #globalSidebar .sidebar-group[open]>summary .sidebar-group-chevron{transform:rotate(180deg)!important}
body:not(#fa) #globalSidebar .sidebar-group[open]>summary{color:var(--p-on-primary)!important}
body:not(#fa) #globalSidebar .sidebar-subnav{margin:2px 0 6px 19px!important;padding:0 0 0 10px!important;border-left:1px solid color-mix(in srgb,var(--p-on-primary) 18%,transparent)!important}
body:not(#fa) #globalSidebar .nav-subitem{min-height:36px!important;padding:7px 10px!important;font-size:13.5px!important;font-weight:500!important}
body:not(#fa) #globalSidebar .nav-subitem .nav-icon,body:not(#fa) #globalSidebar .nav-subitem .nav-icon svg{width:18px!important;height:18px!important}
body:not(#fa) #globalSidebar .sidebar-help{flex:none;padding:8px 10px!important;border-top:1px solid color-mix(in srgb,var(--p-on-primary) 14%,transparent)!important}
body:not(#fa) #globalSidebar .sidebar-footer{flex:none;display:flex!important;align-items:center;justify-content:space-between;gap:8px;margin:0!important;padding:10px 12px 12px 16px!important;border-top:1px solid color-mix(in srgb,var(--p-on-primary) 14%,transparent)!important;background:none!important;color:color-mix(in srgb,var(--p-on-primary) 78%,transparent)!important;font-size:13px!important}
body:not(#fa) #globalSidebar .sidebar-footer [data-user-name]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body:not(#fa) #globalSidebar .sidebar-footer button{display:inline-flex!important;align-items:center;gap:6px;flex:none;min-height:36px;padding:6px 10px!important;border:0!important;border-radius:var(--p-r-sm)!important;background:transparent!important;box-shadow:none!important;color:var(--p-on-primary)!important;font:600 13px Archivo,system-ui,sans-serif!important;cursor:pointer}
body:not(#fa) #globalSidebar .sidebar-footer button:hover{background:color-mix(in srgb,var(--p-on-primary) 10%,transparent)!important}
body:not(#fa) #globalSidebar .sidebar-footer .nav-icon,body:not(#fa) #globalSidebar .sidebar-footer .nav-icon svg{width:18px!important;height:18px!important}
@media(prefers-reduced-motion:reduce){body:not(#fa) #globalSidebar *{transition:none!important}}

/* Barra superior: título, una línea de descripción y la acción principal */
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .topbar{display:flex!important;align-items:center!important;gap:16px!important;margin:0 0 24px!important;padding:0!important;border:0!important;background:none!important;box-shadow:none!important;min-height:0!important}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .topbar h1{margin:0!important;font-size:clamp(24px,2.4vw,30px)!important;line-height:1.15!important;letter-spacing:-.015em!important;color:var(--tenant-text)!important}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .topbar h1~p.muted{margin:6px 0 0!important;max-width:72ch;font-size:15px!important;line-height:1.45!important;color:var(--p-muted)!important}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .topbar :is(#currentUser,.eyebrow,.top-actions .secondary-link,#logout){display:none!important}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .topbar .top-actions{margin-left:auto!important;display:flex!important;gap:8px!important;flex-wrap:wrap}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) #sidebarToggle{display:none;place-items:center;flex:none;width:44px!important;height:44px!important;padding:0!important;border:0!important;border-radius:var(--p-r-sm)!important;background:var(--tenant-primary)!important;color:var(--p-on-primary)!important;box-shadow:none!important;font-size:0}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) #sidebarToggle .ph{width:22px;height:22px;margin:0}
@media(max-width:760px){body:not(#fa):not(#fb) .admin-shell:not(.master-shell) #sidebarToggle{display:grid!important;position:static!important;inset:auto!important;transform:none!important;margin:0!important}body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .topbar{align-items:flex-start!important}}

/* Rótulos en mayúsculas: fuera de los encabezados de tarjeta; el título basta */
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .admin-app :is(.eyebrow,.section-kicker):has(+ :is(h1,h2,h3,h4)){display:none!important}

/* Formas: una sola escala */
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .admin-app :is(.card,.stat-card,.ops-metric,.device-management,.device-audit-panel,.employee-tools,.employee-filters,.metric-card){border-radius:var(--p-r)!important}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .admin-app :where(button,.button,a.primary,a.secondary,input,select,textarea,.file-btn,.file-button):not(.switch){border-radius:var(--p-r-sm)!important}
@media(min-width:761px){body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .admin-app :is(button,a.primary,a.secondary){white-space:nowrap}}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .admin-app button:not(:disabled):active{transform:translateY(1px)}

/* Pestañas: un solo estilo (Inventario y Campañas) */
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) :is(.inv-tabs,.marketing-view-switcher){display:flex!important;gap:4px!important;margin:0 0 20px!important;padding:0!important;border:0!important;border-bottom:1px solid var(--p-line)!important;border-radius:0!important;background:none!important;box-shadow:none!important;overflow-x:auto;scrollbar-width:none}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .admin-app :is(.inv-tabs,.marketing-view-switcher) :is(button,a){display:inline-flex!important;align-items:center;gap:8px;min-height:44px;margin:0 0 -1px!important;padding:10px 14px!important;border:0!important;border-bottom:2px solid transparent!important;border-radius:0!important;background:none!important;box-shadow:none!important;color:var(--p-muted)!important;font:600 14px Archivo,system-ui,sans-serif!important;text-decoration:none!important;white-space:nowrap;cursor:pointer}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .admin-app :is(.inv-tabs,.marketing-view-switcher) :is(button,a):hover{color:var(--tenant-text)!important}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .admin-app :is(.inv-tabs,.marketing-view-switcher) :is(button,a).active{color:var(--tenant-text)!important;border-bottom-color:var(--tenant-primary)!important}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .marketing-view-switcher .button-icon svg{width:18px;height:18px}

/* Tablas: cifras a la derecha, vacíos atenuados, fila activa visible */
body:not(#fa):not(#fb) :is(.admin-shell:not(.master-shell),.cashier-shell) :is(td,th).num{text-align:right!important;font-variant-numeric:tabular-nums}
body:not(#fa):not(#fb) :is(.admin-shell:not(.master-shell),.cashier-shell) td.cell-empty{color:var(--p-muted)!important}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .admin-app tbody tr:hover>td{background:var(--p-hover)}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) .admin-app td.empty-state{padding:32px 16px!important;text-align:center!important;color:var(--p-muted)!important;white-space:normal!important}

/* Avisos: icono real en lugar de emojis (panel-ui.js pone is-*) */
body:not(#fa):not(#fb) .message:empty{display:none}
body:not(#fa):not(#fb) .message:is(.is-error,.is-success,.is-warning,.is-info){display:flex!important;align-items:flex-start;gap:8px;padding:10px 12px!important;border-radius:var(--p-r-sm)!important;font-weight:600!important;font-size:14px!important;line-height:1.45!important;text-align:left}
body:not(#fa):not(#fb) .message:is(.is-error,.is-success,.is-warning,.is-info)::before{content:"";width:18px;height:18px;flex:none;margin-top:1px;background:currentColor;-webkit-mask:var(--p-ico) center/contain no-repeat;mask:var(--p-ico) center/contain no-repeat}
body:not(#fa):not(#fb) .message.is-error{--p-ico:var(--p-ico-error);background:#fdeceb!important;color:#9f1d1d!important}
body:not(#fa):not(#fb) .message.is-success{--p-ico:var(--p-ico-success);background:#e6f5ec!important;color:#12613b!important}
body:not(#fa):not(#fb) .message.is-warning{--p-ico:var(--p-ico-warning);background:#fff3d6!important;color:#7a4a00!important}
body:not(#fa):not(#fb) .message.is-info{--p-ico:var(--p-ico-info);background:color-mix(in srgb,var(--tenant-primary,#0b3b3c) 8%,#fff)!important;color:var(--tenant-text,#1c2b33)!important}

/* Inventario: candado como icono */
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) :is(.lock-note,.lock-row){display:inline-flex;align-items:center;gap:6px}
body:not(#fa):not(#fb) .admin-shell:not(.master-shell) :is(.lock-note,.lock-row) .ph{margin:0;opacity:.75}
/* ═══ fin del bloque de fase A ═══ */
