
/*
 * SISTEMA VISUAL VECTOR89 — v18b 2026-05-18 (Ada · Luminous Premium Concierge)
 *
 * Aman Resorts / Four Seasons / Amex Centurion / private banking hospitality.
 * NO ERP. NO accounting SaaS. NO Apple Wallet sterile.
 *
 * TYPOGRAPHY — 5 ROLES (strict, sin excepciones)
 *   Hero display    Cormorant 32px / clamp(26-36) / 300 / -.02em
 *   Section title   DM Sans 11px / 500 / .12em / UPPERCASE / gold
 *   Primary value   Cormorant 28px / clamp(24-32) / 300 / -.018em
 *   Body            DM Sans 14px / 400 / -.005em / textm
 *   Metadata        DM Sans 11.5px / 500 / .04em / UPPERCASE / textl
 *
 * COLOR — Warm metallic premium
 *   Base cream      #fbf7ed (page) / #f4eedb (tier2) / #ede5cf (tier3) / #fefcf6 (warm white card)
 *   Deep navy       #0d1f3c (navy) / #152a50 (navy2) / #0a1730 (navy-deep)
 *   Metallic gold   #8b6f2e (deep) / #b08a3f (brass principal) / #d4b86a (champagne) / #e8d49a (shimmer)
 *   Text WARM       #1a1a2e text / #5a4f3d textm WARM BROWN / #8c7d68 textl WARM BEIGE
 *
 * SHADOW — 3 capas siempre (contact + ambient + drop)
 *   --shadow-soft / --shadow-medium / --shadow-deep / --shadow-hover
 *
 * GLOW — soft warm bloom (NO neon, NO gamer)
 *   --glow-gold-soft / --glow-gold-medium / --glow-warm-bloom
 *
 * SURFACE GRADIENTS — 155deg (luz top-left implícita)
 *   --surface-card / --surface-card-elevated / --surface-hero / --surface-dark / --surface-metal
 *
 * EDGE HIGHLIGHTS — inset top luminoso
 *   --edge-soft / --edge-gold / --edge-deep
 *
 * SPACING — 8px-rooted
 *   --s-1=4 --s-2=8 --s-3=12 --s-4=16 --s-5=24 --s-6=32 --s-7=48 --s-8=64
 *
 * RADII
 *   --r-sm=10 --r-md=14 --r-lg=16 --r-xl=20 --r-pill=999
 */
:root{
  /* Warm base canvas */
  --cream:#fbf7ed;--cream2:#f4eedb;--cream3:#ede5cf;--white-warm:#fefcf6;--sand:#e8dcc8;
  /* Deep luxury moments */
  /* ⚠️ FALLBACK NEUTRO (2026-08-04). Antes aquí vivía el navy+oro de MAVYS, así que
     cualquier tenant SIN `palette` en el KV nacía con el look de otra clienta —
     le pasó a Marilyn hasta agosto 2026. Ahora el default es grafito/piedra: no se
     parece a NADIE, así que un cliente sin paleta se nota de inmediato.
     Inerte para los 14 tenants vivos: todos traen su `palette` propia. */
  --navy:#2e2c2a;--navy2:#46423e;
  /* Metallic gold scale */
  --gold:#6e6862;--gold2:#9a938c;
  /* Derivados auto-tenant via color-mix sobre --gold del tenant */
  --gold-deep:color-mix(in srgb,var(--gold) 70%,#000 30%);
  --gold-light:var(--gold2);
  --gold-shimmer:color-mix(in srgb,var(--gold2) 60%,#fff 40%);
  /* Text — WARM CRISP (v18j: typography character con autoridad)
     Hero leía luxury pero body Google Docs elegante. Body necesita solidez.
     v18i: textm #2d2620 / textl #5a4f3d (~10:1 / ~6:1) — todavía thin/faded
     v18j: textm #221c14 / textl #3d3328 (~13:1 / ~10:1) — confident solid */
  --text:#161420;--textm:#221c14;--textl:#3d3328;
  /* Text on dark surfaces */
  --text-on-dark:rgba(255,255,255,.92);--text-on-dark-m:rgba(255,255,255,.62);--text-on-dark-l:rgba(255,255,255,.38);
  /* Semantic (status only) */
  --green:#2d6a4f;--green2:#e8f5ee;--red:#8b2635;--red2:#fdeaec;
  /* amber/amber2 derivados del tenant gold para que warnings nunca clashen */
  --amber:color-mix(in srgb,var(--gold) 75%,#000 12%);
  --amber2:color-mix(in srgb,var(--gold2) 22%,#fff 78%);
  --blue:#3a6da3;--blue2:#d6eaf8;--lb:#a1ddfd;
  /* RGB triplets para alpha */
  --gold-rgb:176,138,63;--navy-rgb:13,31,60;--white-rgb:255,255,255;
  /* Aliases legacy */
  --white:var(--white-warm);--primary:var(--navy);--secondary:var(--gold);
  --login1:#0a1828;--login2:#152a50;
  /* Spacing */
  --s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;
  /* Radii */
  --r-sm:10px;--r-md:14px;--r-lg:16px;--r-xl:20px;--r-pill:999px;
  /* Shadows — 3-layer luminous */
  --shadow-soft:0 1px 2px rgba(13,31,60,.04),0 4px 14px rgba(13,31,60,.05),0 14px 36px rgba(13,31,60,.04);
  --shadow-medium:0 2px 4px rgba(13,31,60,.05),0 8px 24px rgba(13,31,60,.07),0 28px 56px rgba(13,31,60,.05);
  --shadow-deep:0 4px 8px rgba(13,31,60,.06),0 16px 36px rgba(13,31,60,.09),0 36px 72px rgba(13,31,60,.07);
  --shadow-hover:0 2px 4px rgba(13,31,60,.06),0 14px 32px rgba(13,31,60,.10),0 32px 64px rgba(13,31,60,.07);
  /* Glows — warm bloom */
  --glow-gold-soft:0 0 24px rgba(var(--gold-rgb),.12),0 0 48px rgba(var(--gold-rgb),.08);
  --glow-gold-medium:0 0 32px rgba(var(--gold-rgb),.20),0 0 64px rgba(var(--gold-rgb),.10);
  --glow-warm-bloom:0 0 80px rgba(var(--gold2-rgb),.18),0 0 160px rgba(var(--gold2-rgb),.08);
  /* Surface gradients — 155deg luz top-left */
  --surface-card:linear-gradient(155deg,#fefcf6 0%,#fbf7ed 100%);
  --surface-card-elevated:linear-gradient(155deg,#fefcf6 0%,#f4eedb 100%);
  --surface-hero:linear-gradient(155deg,#fefcf6 0%,#f4eedb 55%,#ede5cf 100%);
  --navy-deep:color-mix(in srgb,var(--navy) 62%,#000 38%);
  --surface-dark:linear-gradient(155deg,var(--navy2) 0%,var(--navy) 50%,var(--navy-deep) 100%);
  --surface-metal:linear-gradient(135deg,var(--gold-deep) 0%,var(--gold) 45%,var(--gold2) 100%);
  /* Edge highlights — inset top luminous */
  --edge-soft:inset 0 1px 0 rgba(255,255,255,.65);
  --edge-gold:inset 0 1px 0 rgba(var(--gold2-rgb),.22);
  --edge-deep:inset 0 -1px 0 rgba(13,31,60,.06);
}
*{box-sizing:border-box;margin:0;padding:0}
/*
 * TYPOGRAPHY GRAMMAR v18g — Una sola gramática global
 * ─────────────────────────────────────────────────────
 *
 * SERIF Cormorant Garamond 300 (uso restringido)
 *   .t-display   clamp(26,4.5vw,32) / 1.15 / -.02em   → hero greeting + page identity (Videos/Recursos/etc.)
 *   .t-value     clamp(22,3.5vw,28) / 1.05 / -.018em → monto prime, cifra hero stat
 *
 * SANS DM Sans
 *   .t-body      14 / 400 / -.005em / 1.6 / textm   → todo el contenido principal
 *   .t-strong    14 / 500 / text                    → emphasis en body
 *   .t-helper    12.5 / 400 / -.005em / 1.5 / textl → texto auxiliar
 *
 * LABEL DM Sans 500 UPPERCASE — UNA SOLA REGLA, dos colores
 *   .t-label        11.5 / 500 / .12em / 1.4 / gold  → identificadores estructurales (card-ttl, primario)
 *   .t-label.muted  igual, color textl                → eyebrows, table headers, sub-labels (recede)
 *
 * REGLA SERIF: SOLO en hero/value/page-identity moments. NUNCA mezclar
 *   en cards administrativas. La serif debe ser un EVENTO, no un estilo.
 *
 * REGLA LABEL: TODOS los identificadores comparten SIZE+TRACKING+CASING.
 *   La única variable es el color (gold primary vs textl muted).
 */
body{font-family:"DM Sans",sans-serif;background:var(--cream);color:var(--textm);line-height:1.5;font-size:14px;font-weight:400;letter-spacing:-.005em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
/* GRAMMAR UTILITY CLASSES — v18j tighter, more authoritative */
.t-display{font-family:"Cormorant Garamond",serif;font-size:clamp(28px,5vw,40px);font-weight:400;letter-spacing:-.02em;line-height:1.1;color:var(--text)}
.t-value{font-family:"Cormorant Garamond",serif;font-size:clamp(22px,3.5vw,28px);font-weight:400;letter-spacing:-.018em;line-height:1.05;color:var(--text)}
.t-body{font-size:14px;font-weight:400;letter-spacing:-.005em;line-height:1.5;color:var(--textm)}
.t-strong{font-size:14px;font-weight:500;letter-spacing:-.005em;color:var(--text)}
.t-helper{font-size:12.5px;font-weight:400;letter-spacing:-.005em;line-height:1.45;color:var(--textl)}
.t-label{font-size:11.5px;font-weight:600;letter-spacing:.06em;line-height:1.3;text-transform:uppercase;color:var(--gold)}
.t-label.muted{color:var(--textl)}
.t-label.on-dark{color:var(--gold-light)}
.t-label.on-dark.muted{color:var(--text-on-dark-l)}
strong{font-weight:500}
em{font-style:italic}
#login{position:fixed;inset:0;background:linear-gradient(135deg,var(--login1) 0%,var(--navy) 50%,var(--login2) 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999;padding:20px;gap:10px;overflow:hidden}#login::before{content:'';position:absolute;top:-220px;right:-220px;width:650px;height:650px;border-radius:50%;border:1px solid rgba(var(--gold-rgb),.18);pointer-events:none}#login::after{content:'';position:absolute;top:-150px;right:-150px;width:480px;height:480px;border-radius:50%;border:1px solid rgba(var(--gold-rgb),.08);pointer-events:none}
.lb{background:rgba(var(--white-rgb),.07);border:1px solid rgba(var(--gold-rgb),.25);border-radius:18px;padding:44px 52px;max-width:440px;width:92%;text-align:center;position:relative;z-index:1}
.lb-logo{font-family:"Cormorant Garamond",serif;font-size:32px;font-weight:300;font-style:italic;letter-spacing:-.015em;line-height:1;color:var(--white);margin-bottom:2px}.lb-logo span{color:var(--gold2);font-weight:400}
.lb-sub{font-size:12.5px;color:rgba(var(--white-rgb),.6);letter-spacing:-.005em;line-height:1.45;margin-bottom:24px;font-weight:400}
.lb-inp{width:100%;padding:12px 16px;border:1px solid rgba(var(--white-rgb),.15);border-radius:8px;background:rgba(var(--white-rgb),.08);color:var(--white);font-size:15px;outline:none;letter-spacing:.12em;text-align:center}
.lb-inp:focus{border-color:rgba(var(--gold-rgb),.5)}
.lb-btn{width:100%;margin-top:12px;padding:13px;background:rgba(var(--gold-rgb),.2);border:1px solid rgba(var(--gold-rgb),.5);color:var(--gold-light);font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;border-radius:var(--r-sm)}
.lb-err{color:#f1948a;font-size:13px;margin-top:8px;min-height:14px}
#app{display:none}
.sb{position:fixed;left:0;top:0;bottom:0;width:240px;background:var(--surface-dark);display:flex;flex-direction:column;z-index:100;border-right:none;overflow-y:auto;box-shadow:1px 0 0 rgba(0,0,0,.25),inset -1px 0 0 rgba(var(--gold-rgb),.06),inset 1px 0 0 rgba(255,255,255,.04)}
.main{margin-left:240px}
.sb-head{padding:20px 18px 14px;border-bottom:1px solid rgba(255,255,255,.06)}
.sb-brand{font-family:"Cormorant Garamond",serif;font-size:22px;color:var(--text-on-dark);letter-spacing:-.015em;font-weight:300;font-style:italic;line-height:1}.sb-brand span{color:var(--gold-light);font-weight:400}
.sb-clientlbl{font-size:10.5px;color:var(--text-on-dark-l);letter-spacing:.08em;line-height:1.3;text-transform:uppercase;font-weight:600;margin-top:2px}
.sb-profile{padding:14px 18px;border-bottom:1px solid rgba(255,255,255,.06);display:flex;align-items:center;gap:11px}
.sb-av{width:42px;height:42px;border-radius:50%;object-fit:cover;border:1px solid rgba(var(--gold2-rgb),.25);box-shadow:0 0 0 3px rgba(var(--gold-rgb),.06),0 2px 8px rgba(0,0,0,.3)}
.sb-name{font-family:"Cormorant Garamond",serif;font-size:16px;color:var(--text-on-dark);font-weight:400;letter-spacing:-.01em}
/* Sidebar plan label — t-label.on-dark (v18j tracking .08) */
.sb-planlbl{font-size:10.5px;color:var(--gold-light);letter-spacing:.08em;line-height:1.3;text-transform:uppercase;margin-top:3px;font-weight:600}
/* 2026-06-08 (ADR-0019): selector de Entidad (tenants collab multi-entidad — Veraiza).
   Reusa las vars del sidebar oscuro (--text-on-dark*, --gold-light, --gold-rgb) → nativo en cualquier paleta. */
.sb-entidad{padding:13px 18px 4px}
.sb-entidad-lbl{display:block;font-size:10px;color:var(--text-on-dark-l);letter-spacing:.1em;text-transform:uppercase;font-weight:600;margin-bottom:7px}
.sb-entidad-field{position:relative}
.sb-entidad-sel{width:100%;padding:10px 34px 10px 12px;border:1px solid rgba(var(--gold-rgb),.28);border-radius:9px;background:rgba(255,255,255,.05);color:var(--text-on-dark);font-family:inherit;font-size:13px;font-weight:500;letter-spacing:-.005em;outline:none;cursor:pointer;-webkit-appearance:none;appearance:none;transition:border-color .2s ease,background .2s ease}
.sb-entidad-sel:hover{background:rgba(255,255,255,.08);border-color:rgba(var(--gold-rgb),.5)}
.sb-entidad-sel:focus{border-color:var(--gold-light);box-shadow:0 0 0 3px rgba(var(--gold-rgb),.12)}
.sb-entidad-chev{position:absolute;right:11px;top:50%;transform:translateY(-50%);width:15px;height:15px;pointer-events:none;color:rgba(var(--gold-rgb),.7)}
.sb-entidad-sel option{color:#222;background:#fff;font-weight:500}
.sb-entidad-sel option:disabled{color:#9aa0a6;font-style:italic}
.sb-nav{padding:10px 0}
.nav-item{display:flex;align-items:center;gap:11px;padding:11px 18px;color:var(--text-on-dark-m);font-size:13.5px;cursor:pointer;transition:background .2s ease,color .2s ease;border-left:2px solid transparent}
.nav-item:hover{color:var(--text-on-dark);background:rgba(255,255,255,.05)}
.nav-item.active{color:var(--gold-light);border-left-color:var(--gold-light);background:rgba(var(--gold-rgb),.10);box-shadow:inset 0 0 24px rgba(var(--gold-rgb),.04)}
.nav-icon{width:18px;height:18px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:rgba(var(--gold-rgb),.6)}
.nav-icon svg{width:16px;height:16px;display:block}
.nav-item.active .nav-icon{color:var(--gold-light)}
.nav-item:hover .nav-icon{color:rgba(var(--gold-rgb),.95)}
.nav-badge{display:inline-block;background:#b94a3a;color:#fff;font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px;margin-left:auto;min-width:18px;text-align:center;line-height:1.2}
.sol-stat{background:#fff;border:1px solid var(--sand);border-radius:10px;padding:14px 16px}
.sol-stat__label{font-size:11px;color:var(--textl);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}
.sol-stat__value{font-family:'Cormorant Garamond',serif;font-size:28px;color:var(--navy,#1a1a2e);font-weight:300;line-height:1}
.sol-stat--nueva{border-left:3px solid #b94a3a}
.sol-stat--contactada{border-left:3px solid #d4a55a}
.sol-stat--agendada{border-left:3px solid #5a8a5a}
.sol-stat--total{border-left:3px solid var(--gold,#c4a35a)}
.sol-row td{padding:12px 14px;border-top:1px solid var(--sand);font-size:13px;color:var(--navy,#1a1a2e);vertical-align:middle}
.sol-row:hover{background:rgba(196,163,90,.05)}
.sol-status-pill{display:inline-block;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:600;letter-spacing:.02em}
.sol-status-pill--Nueva{background:#fbeae8;color:#b94a3a}
.sol-status-pill--Contactada{background:#fef4e0;color:#a87a2a}
.sol-status-pill--Agendada{background:#e5f0e5;color:#3a6a3a}
.sol-status-pill--Descartada{background:#eee;color:#888}
.sol-wa-btn{background:#25D366;color:#fff;padding:6px 12px;border-radius:6px;font-size:12px;text-decoration:none;display:inline-block;font-weight:500}
.sol-wa-btn:hover{background:#1ea756}
.sb-div{border-top:1px solid rgba(255,255,255,.06);margin:6px 0}
/* Sidebar section label — t-label.on-dark.muted (v18j tracking .06) */
.sb-seclbl{font-size:10.5px;color:var(--text-on-dark-l);letter-spacing:.08em;line-height:1.3;text-transform:uppercase;font-weight:600;padding:10px 18px 6px}
.contact-a{display:flex;align-items:center;gap:11px;padding:9px 14px;color:var(--text-on-dark-m);font-size:12.5px;line-height:1.45;font-weight:400;letter-spacing:-.005em;text-decoration:none;margin:1px 8px;border-radius:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .2s ease,color .2s ease}
.contact-a svg{flex-shrink:0;width:14px;height:14px;color:rgba(var(--gold-rgb),.6)}
.contact-a:hover{background:rgba(255,255,255,.06);color:var(--text-on-dark)}
.contact-a:hover svg{color:var(--gold-light)}
.sb-foot{padding:14px 18px;border-top:1px solid rgba(255,255,255,.06);text-align:center;margin-top:auto}
.main{margin-left:240px;min-height:100vh;padding:var(--s-7) var(--s-7) var(--s-8)}
/* PAGO ROW — integrado dentro de Contrato Activo, compacto, no hero gigante */
.pago-row{background:var(--surface-card-elevated);border:1px solid rgba(var(--gold-rgb),.20);border-radius:var(--r-sm);padding:14px 18px;margin-bottom:var(--s-4);display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap;box-shadow:0 1px 2px rgba(var(--navy-rgb),.04),var(--edge-soft),var(--glow-gold-soft);position:relative;overflow:hidden}
.pago-row::before{content:'';position:absolute;top:-20px;right:-20px;width:140px;height:140px;background:radial-gradient(circle at top right,rgba(var(--gold2-rgb),.16) 0%,transparent 60%);pointer-events:none}
.pago-row-info{flex:1;min-width:200px;position:relative;z-index:1}
.pago-row-lbl{font-size:11.5px;color:var(--gold);letter-spacing:.06em;line-height:1.3;text-transform:uppercase;font-weight:600;margin-bottom:6px}
.pago-row-monto{font-family:"Cormorant Garamond",serif;font-size:24px;font-weight:400;color:var(--text);letter-spacing:-.018em;line-height:1.05;display:inline-block;margin-right:10px;vertical-align:baseline}
.pago-row-meta{font-size:12.5px;color:var(--textm);display:inline-block;vertical-align:baseline;line-height:1.45;font-weight:400;letter-spacing:-.005em}
.pago-row-action{flex-shrink:0;position:relative;z-index:1}
.pago-row-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--surface-metal);color:#fff;border:1px solid rgba(139,111,46,.3);padding:10px 18px;border-radius:var(--r-sm);font-size:12.5px;font-weight:500;cursor:pointer;letter-spacing:.02em;transition:box-shadow .3s ease,transform .2s ease;box-shadow:0 1px 2px rgba(0,0,0,.1),var(--edge-gold),var(--glow-gold-soft);text-shadow:0 1px 0 rgba(0,0,0,.18)}
.pago-row-btn:hover{box-shadow:var(--shadow-soft),var(--edge-gold),var(--glow-gold-medium);transform:translateY(-1px)}
.pago-row-note{display:inline-flex;align-items:center;font-size:12.5px;font-weight:400;letter-spacing:.02em;color:var(--textm);white-space:nowrap}
.pago-row.is-vencido .pago-row-note{color:var(--red)}
.pago-row.is-vencido{border-color:rgba(139,38,53,.25);background:linear-gradient(155deg,#fefcf6 0%,#fcefef 60%,#f5e3e3 100%);box-shadow:0 1px 2px rgba(139,38,53,.06),var(--edge-soft),0 0 24px rgba(139,38,53,.10)}
.pago-row.is-vencido .pago-row-lbl{color:var(--red)}
.pago-row.is-vencido::before{background:radial-gradient(circle at top right,rgba(139,38,53,.10) 0%,transparent 60%)}
.pago-row.is-paid{border-color:rgba(45,106,79,.22);background:linear-gradient(155deg,#fefcf6 0%,#eef5ef 60%,#dfeae1 100%);box-shadow:0 1px 2px rgba(45,106,79,.05),var(--edge-soft),0 0 20px rgba(45,106,79,.08)}
.pago-row.is-paid .pago-row-lbl{color:var(--green)}
.pago-row.is-paid::before{background:radial-gradient(circle at top right,rgba(45,106,79,.10) 0%,transparent 60%)}
/* Incluye list — hairline editorial, no bullets decorativos */
.incluye-list{display:flex;flex-direction:column;gap:7px;margin-top:8px}
/* 2026-08-17 ADR-0027: nombre y descripción CORREN EN EL MISMO RENGLÓN y el
   texto envuelve a todo lo ancho.
   Se intentó antes con dos columnas (nombre fijo + descripción a la derecha) y
   estaba mal: cuando la descripción envolvía, la fila crecía y dejaba un hueco
   debajo del título. Angélica: "¿por qué hay espacio abajo de cada título?
   quiero que aproveches todo el renglón". Inline no puede dejar ese hueco. */
.incluye-item{font-size:13px;color:var(--textl);padding-left:18px;position:relative;line-height:1.5;font-weight:400;letter-spacing:-.005em;display:block}
.incluye-serv{color:var(--text);font-weight:500;font-size:14px}
.incluye-serv::after{content:' — ';color:var(--textl);font-weight:400}
.incluye-desc{display:inline;color:var(--textl)}
/* Varias frases en un solo renglón: se separan sin romper la línea. */
.incluye-desc + .incluye-desc::before{content:' · ';opacity:.55}
.incluye-item::before{content:'';position:absolute;left:0;top:.72em;width:9px;height:1px;background:var(--textl);opacity:.5}
/* Términos del add-on ("pago único · $5,500 MXN"): mismo renglón, al final. */
.incluye-terminos{opacity:.85}
.incluye-sep{height:1px;background:var(--textl);opacity:.18;margin:14px 0 12px}
.incluye-subtit{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--textl);margin-bottom:8px}
/* HERO PAGO — luminous concierge anchor */
.hero-pago{background:var(--surface-hero);border:1px solid rgba(var(--gold-rgb),.18);border-radius:var(--r-xl);padding:30px 36px;margin-bottom:var(--s-5);display:flex;align-items:center;justify-content:space-between;gap:var(--s-5);flex-wrap:wrap;box-shadow:var(--shadow-medium),var(--edge-soft),var(--glow-gold-soft);position:relative;overflow:hidden}
.hero-pago::before{content:'';position:absolute;top:0;right:0;width:280px;height:280px;background:radial-gradient(circle at top right,rgba(var(--gold2-rgb),.16) 0%,transparent 60%);pointer-events:none}
.hero-pago-info{flex:1;min-width:240px;position:relative;z-index:1}
.hero-pago-lbl{font-size:11.5px;color:var(--gold);letter-spacing:.06em;line-height:1.3;text-transform:uppercase;font-weight:600;margin-bottom:12px}
.hero-pago-monto{font-family:"Cormorant Garamond",serif;font-size:clamp(30px,5.5vw,38px);font-weight:400;color:var(--text);line-height:1.05;letter-spacing:-.018em;margin-bottom:10px}
.hero-pago-meta{font-size:13px;color:var(--textm);line-height:1.5;font-weight:400;letter-spacing:-.005em}
.hero-pago-action{flex-shrink:0;position:relative;z-index:1}
.hero-pago-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--surface-metal);color:#fff;border:1px solid rgba(139,111,46,.3);padding:14px 28px;border-radius:var(--r-sm);font-size:13.5px;font-weight:500;cursor:pointer;letter-spacing:.02em;transition:box-shadow .3s ease,transform .2s ease;box-shadow:var(--shadow-soft),var(--edge-gold),var(--glow-gold-soft);text-shadow:0 1px 0 rgba(0,0,0,.18)}
.hero-pago-btn:hover{box-shadow:var(--shadow-medium),var(--edge-gold),var(--glow-gold-medium);transform:translateY(-1px)}
.hero-pago.is-vencido{border-color:rgba(139,38,53,.22);background:linear-gradient(155deg,#fefcf6 0%,#fcefef 55%,#f5e3e3 100%);box-shadow:var(--shadow-medium),var(--edge-soft),0 0 32px rgba(139,38,53,.10)}
.hero-pago.is-vencido .hero-pago-lbl{color:var(--red)}
.hero-pago.is-vencido::before{background:radial-gradient(circle at top right,rgba(139,38,53,.10) 0%,transparent 60%)}
.hero-pago.is-paid{border-color:rgba(45,106,79,.22);background:linear-gradient(155deg,#fefcf6 0%,#eef5ef 55%,#dfeae1 100%);box-shadow:var(--shadow-medium),var(--edge-soft),0 0 28px rgba(45,106,79,.10)}
.hero-pago.is-paid .hero-pago-lbl{color:var(--green)}
.hero-pago.is-paid::before{background:radial-gradient(circle at top right,rgba(45,106,79,.10) 0%,transparent 60%)}
.pg{display:none}.pg.active{display:block;animation:pgFadeIn .3s ease}
/* Hero display — t-display (v18j weight 400 + tracking tight) */
.pg-title{font-family:"Cormorant Garamond",serif;font-size:clamp(28px,5vw,40px);font-weight:400;color:var(--text);letter-spacing:-.02em;line-height:1.1;margin-bottom:var(--s-2)}
.pg-title em{font-style:italic;color:var(--gold);font-weight:500}
/* Page eyebrow — t-label.muted (v18j tracking .06 tighter) */
.pg-sub{font-size:11.5px;color:var(--textl);margin:0 0 var(--s-6);padding-bottom:0;border-bottom:none;letter-spacing:.06em;text-transform:uppercase;font-weight:600;line-height:1.3}
/* Card — luminous warm surface + DEFINED border (v18j tighter structure) */
.card{background:var(--surface-card);border:1px solid rgba(var(--navy-rgb),.16);border-radius:var(--r-lg);padding:var(--s-5) 28px;margin-bottom:var(--s-4);box-shadow:var(--shadow-soft),var(--edge-soft);transition:box-shadow .3s ease,transform .2s ease}
.card:hover{box-shadow:var(--shadow-hover),var(--edge-soft);transform:translateY(-1px)}
/* Section title — role 2/5 */
/* Card title — t-label.primary (v18j tracking .06 tighter, line-height tighter) */
.card-ttl{font-size:11.5px;font-weight:600;letter-spacing:.06em;line-height:1.3;color:var(--gold);margin-bottom:var(--s-4);text-transform:uppercase}
/* Sub-label — t-label.muted (v18j tracking .06 tighter) */
.sub-lbl{font-size:11.5px;font-weight:600;letter-spacing:.06em;line-height:1.3;color:var(--textl);margin-bottom:var(--s-2);text-transform:uppercase}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.g5{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.stat{background:var(--surface-card);border:1px solid rgba(var(--navy-rgb),.16);border-radius:var(--r-sm);padding:14px 16px;box-shadow:var(--shadow-soft),var(--edge-soft)}
/* Stat value — t-value (v18j weight 400) */
.stat-v{font-family:"Cormorant Garamond",serif;font-size:clamp(22px,3.5vw,28px);font-weight:400;color:var(--text);letter-spacing:-.018em;line-height:1.05}
/* Stat label — t-label.muted (v18j tighter) */
.stat-l{font-size:11.5px;color:var(--textl);margin-top:4px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;line-height:1.3}
/* Badge — t-label.semantic (size matches label rhythm) */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;line-height:1.4;padding:0;border-radius:0;background:transparent}
.bg{color:var(--green)}.ba{color:var(--amber)}.br{color:var(--red)}.bb{color:var(--blue)}.bn{color:var(--navy)}.bgold{color:var(--gold)}
.notif{background:var(--surface-card-elevated);border:1px solid rgba(var(--gold-rgb),.18);border-radius:var(--r-md);padding:16px 20px;display:flex;gap:12px;margin-bottom:16px;box-shadow:var(--shadow-soft),var(--edge-soft)}
.notif-icon{font-size:20px;flex-shrink:0}
/* Notif title — t-label.primary (v18j tracking .06 tighter) */
.notif-ttl{font-size:11.5px;font-weight:600;color:var(--gold);margin-bottom:6px;letter-spacing:.06em;line-height:1.3;text-transform:uppercase}
/* Notif text — t-body (v18k lh 1.5 sistema) */
.notif-txt{font-size:14px;color:var(--textm);line-height:1.5;font-weight:400;letter-spacing:-.005em}
/* Tabla — v18j: tighter tracking, sharper dividers, tighter line-height */
.tabla{width:100%;border-collapse:collapse;font-size:14px}
.tabla th{text-align:left;font-size:11.5px;font-weight:600;letter-spacing:.06em;line-height:1.3;color:var(--textl);padding:14px 10px;border-bottom:1px solid rgba(var(--navy-rgb),.22);background:transparent;text-transform:uppercase}
.tabla td{padding:16px 10px;color:var(--textm);vertical-align:middle;border-bottom:1px solid rgba(var(--navy-rgb),.14);font-size:14px;font-weight:400;letter-spacing:-.005em;line-height:1.5}
.tabla tr:last-child td{border-bottom:none}
.tabla td:first-child{color:var(--textm);font-weight:400}
.tabla strong{font-weight:500;color:var(--text);letter-spacing:-.005em}
.prop-card{background:linear-gradient(135deg,var(--navy),var(--navy2));border-radius:14px;padding:22px 26px;border:1px solid rgba(var(--gold-rgb),.3);margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.prop-btn{background:rgba(var(--gold-rgb),.22);border:1px solid rgba(var(--gold-rgb),.5);color:var(--gold2);padding:9px 20px;border-radius:8px;text-decoration:none;font-size:13px;font-weight:500}
.link-row{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--cream2);border-radius:8px;margin-bottom:6px}
.link-icon{font-size:18px;width:26px;text-align:center;flex-shrink:0}
.link-name{font-size:14px;font-weight:500;color:var(--navy);flex:1;min-width:0}
.link-url-inp{font-size:11px;color:var(--textl);border:none;background:transparent;outline:none;font-family:monospace;width:100%;min-width:0}
/* 2026-05-15 v15-h: synced links (Historias/Promos del mes) ahora se ven igual que los editables (light gray monospace) */
.link-url-txt{font-size:11px;color:var(--textl);font-family:monospace;width:100%;min-width:0;word-break:break-all}
.link-open{background:var(--navy);color:var(--white);border:none;padding:6px 13px;border-radius:6px;font-size:11px;cursor:pointer;text-decoration:none;white-space:nowrap}
.add-link-btn{background:transparent;border:1px dashed var(--sand);color:var(--textl);padding:9px 14px;border-radius:6px;font-size:13px;cursor:pointer;width:100%;text-align:center;margin-top:6px;display:block}
/* ADR-0020/T-072: estado vacío de Recursos por-Entidad (llave vacía / "Próximamente") */
.rec-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:34px 20px;gap:5px}
.rec-empty-ic{font-size:25px;opacity:.45;margin-bottom:2px}
.rec-empty-ttl{font-size:14px;color:var(--textm);font-weight:500}
.rec-empty-ttl em{font-style:normal;color:var(--gold);font-weight:600}
.rec-empty-sub{font-size:12.5px;color:var(--textl);line-height:1.5}
.vid-banner-hoy{background:linear-gradient(135deg,var(--navy),var(--navy2));border-radius:14px;padding:14px 20px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.vid-banner-prox{background:var(--cream2);border:1px solid var(--sand);border-radius:14px;padding:12px 18px;margin-bottom:12px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.fbtn{padding:7px 14px;border-radius:20px;font-size:12px;font-weight:500;cursor:pointer;border:2px solid;transition:all .15s;white-space:nowrap}
.fbtn-light{border-color:var(--lb);background:#e8f6fe;color:var(--blue)}
.fbtn-dark{border-color:var(--navy);background:var(--navy);color:var(--white)}
.fbtn-green{border-color:var(--green);background:var(--green2);color:var(--green)}
.fbtn-red{border-color:var(--red);background:var(--red2);color:var(--red)}
.fbtn-session{border-color:var(--lb);background:#e8f6fe;color:var(--blue)}
.fbtn-active{border-color:var(--blue)!important;background:var(--blue)!important;color:var(--white)!important}
.fsel{padding:7px 12px;border:1px solid var(--sand);border-radius:7px;font-size:13px;background:var(--white);color:var(--text);outline:none}
/* v18k: vid-table converge a .tabla rhythm (label.muted th + body 14 td) */
.vid-table{width:100%;border-collapse:collapse;font-size:14px}
.vid-table th{text-align:left;font-size:11.5px;font-weight:600;letter-spacing:.06em;line-height:1.3;text-transform:uppercase;color:var(--textl);padding:14px 12px;border-bottom:1px solid rgba(var(--navy-rgb),.22);background:transparent}
.vid-table td{padding:14px 12px;border-bottom:1px solid rgba(var(--navy-rgb),.14);vertical-align:middle;font-size:14px;font-weight:400;letter-spacing:-.005em;line-height:1.5;color:var(--textm)}
.vid-table tr.vrow:hover td{background:var(--cream2);cursor:pointer}
/* Título de fila — sans body 14 strong (no serif decorativo en tabla) */
.vid-title-cell{font-size:14px;font-weight:500;color:var(--text);letter-spacing:-.005em;cursor:pointer}
.vid-title-cell:hover{color:var(--gold)}
.vbtn-grab{padding:5px 12px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid;background:var(--blue2);border-color:#85c1e9;color:var(--blue);margin-right:4px}
.vbtn-rech{padding:5px 12px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid;background:var(--red2);border-color:#f0b8c0;color:var(--red)}
.b-grab{background:var(--blue2);color:var(--blue)}.b-rech{background:var(--red2);color:var(--red)}.b-pub{background:var(--green2);color:var(--green)}.b-prop{background:#f5f5f5;color:#888;border:1px solid #ddd}.b-ed{background:#e8d5f5;color:#6c3483}.b-mover{background:var(--amber2);color:var(--amber);border:1px solid rgba(var(--gold-rgb),.30)}
/* 2026-05-14 v5 anti-flash: ocultar bloques tenant-only hasta que tenant-resolver
   los marque visibles. Antes los bloques de Mavys (paymentInfo, contracts, etc.)
   flasheaban al cargar Mayle/LDT/Javier durante 1 segundo. */
[data-tenant-only]{display:none}
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:5000;align-items:center;justify-content:center}
.modal-overlay.open{display:flex;animation:overlayFade .2s ease}
.modal-box{background:var(--white);border-radius:16px;width:92%;max-width:700px;max-height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.35);animation:modalSlideUp .25s ease}
.modal-head{padding:18px 22px;border-bottom:1px solid var(--sand);display:flex;align-items:center;justify-content:space-between;background:var(--navy)}
.modal-title{font-family:"Cormorant Garamond",serif;font-size:clamp(20px,3vw,24px);color:var(--white);font-weight:400;letter-spacing:-.018em;line-height:1.05}
.modal-close{background:rgba(var(--white-rgb),.15);border:none;color:var(--white);width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:20px;line-height:32px;text-align:center}
.modal-meta{padding:10px 22px;background:var(--cream2);border-bottom:1px solid rgba(var(--navy-rgb),.14);font-size:12.5px;color:var(--textl);font-weight:400;letter-spacing:-.005em;line-height:1.45}
.modal-body{flex:1;overflow-y:auto}
.modal-ta{width:100%;min-height:340px;padding:20px 22px;font-size:14px;font-family:"DM Sans",sans-serif;color:var(--textm);background:var(--white);border:none;outline:none;resize:vertical;line-height:1.6;font-weight:400;letter-spacing:-.005em}
.modal-foot{padding:14px 22px;border-top:1px solid var(--sand);display:flex;justify-content:flex-end;gap:10px;background:var(--cream2)}
.modal-save{background:var(--navy);color:var(--white);border:none;padding:9px 22px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer}
.modal-cancel{background:var(--white);color:var(--textm);border:1px solid var(--sand);padding:9px 22px;border-radius:8px;font-size:13px;cursor:pointer}
.inf-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:16px;background:var(--white);border:1px solid var(--sand);border-radius:10px;padding:12px 16px}
.inf-sel{padding:8px 12px;border:1px solid var(--sand);border-radius:8px;font-size:13px;background:var(--white);outline:none}
.date-inp{padding:7px 10px;border:1px solid var(--sand);border-radius:6px;font-size:12px;outline:none}
.load-btn{padding:8px 18px;background:var(--navy);color:var(--white);border:none;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:7px}
.load-btn:disabled{opacity:.6;cursor:not-allowed}
.loading-box{display:none;background:var(--cream2);border-radius:8px;padding:14px 18px;align-items:center;gap:14px;margin-bottom:14px}
.loading-box.show{display:flex}
.spin{width:28px;height:28px;border:3px solid var(--sand);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
.presup-card{background:var(--surface-dark);border:1px solid rgba(var(--gold-rgb),.22);border-radius:var(--r-lg);padding:24px 28px;margin-bottom:var(--s-4);box-shadow:var(--shadow-medium),var(--edge-gold),inset 0 0 80px rgba(var(--gold-rgb),.04)}
.mp-card{background:var(--surface-card);border:1px solid rgba(var(--navy-rgb),.05);border-radius:var(--r-lg);padding:24px 28px;margin-bottom:var(--s-4);box-shadow:var(--shadow-soft),var(--edge-soft)}
/* Primary value — t-value (v18j weight 400) */
.mp-val{font-family:"Cormorant Garamond",serif;font-size:clamp(22px,3.5vw,28px);font-weight:400;color:var(--text);letter-spacing:-.018em;line-height:1.05}
.mp-msg{font-size:13px;color:var(--textm);padding:12px 16px;background:var(--cream2);border-radius:var(--r-sm);margin-top:12px;line-height:1.5;font-weight:400;letter-spacing:-.005em}
.progress-track{background:rgba(var(--white-rgb),.12);border-radius:20px;height:14px;overflow:hidden;margin:8px 0}
.progress-track.light{background:var(--cream2)}
.progress-fill{height:100%;border-radius:20px;transition:width .8s ease;min-width:4px}
.progress-flag{position:absolute;right:-4px;top:50%;transform:translateY(-50%);font-size:16px}
.progress-wrap{position:relative}
.dual-panel{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:14px}
.dual-card{background:var(--surface-card);border:1px solid rgba(var(--navy-rgb),.06);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-soft),var(--edge-soft)}
.dual-head-msg{background:var(--surface-dark);padding:16px 20px;border-bottom:1px solid rgba(var(--gold-rgb),.18);box-shadow:var(--edge-gold)}
.dual-head-seg{background:var(--surface-dark);padding:16px 20px;border-bottom:1px solid rgba(var(--gold-rgb),.10);box-shadow:var(--edge-gold);position:relative}
.dual-head-seg::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--blue);opacity:.85}
.dual-body{padding:16px}
/* Dual card head title — t-label.on-dark (v18j tracking .06 tighter) */
.dual-dc-title{font-size:11.5px;font-weight:600;letter-spacing:.06em;line-height:1.3;text-transform:uppercase;color:var(--gold-light)}
.dual-dc-sub{font-size:12.5px;color:var(--text-on-dark-m);margin-top:4px;font-weight:400;letter-spacing:-.005em;line-height:1.5}
/* Status pills — t-label sized + semantic color (sistema unificado) */
.cv-great,.cv-good,.cv-warn,.cv-bad{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:3px 9px;border-radius:var(--r-pill);display:inline-block;line-height:1.4}
.cv-great{background:var(--green2);color:var(--green)}
.cv-good{background:var(--green2);color:var(--green)}
.cv-warn{background:var(--amber2);color:var(--amber)}
.cv-bad{background:var(--red2);color:var(--red)}
/* v18k: rank-table converge a system rhythm */
.rank-table{width:100%;border-collapse:collapse;font-size:13px}
.rank-table th{font-size:11.5px;font-weight:600;letter-spacing:.06em;line-height:1.3;text-transform:uppercase;color:var(--textl);padding:14px 10px;border-bottom:1px solid rgba(var(--navy-rgb),.22);background:transparent;text-align:left;white-space:nowrap}
.rank-table td{padding:14px 10px;border-bottom:1px solid rgba(var(--navy-rgb),.14);color:var(--textm);white-space:nowrap;font-weight:400;letter-spacing:-.005em;line-height:1.5}
.totals-row td{background:transparent;font-weight:500;border-top:1px solid rgba(var(--navy-rgb),.12)}
/* v18k: ref-table converge a system rhythm (th sobre dark = on-dark.muted) */
.ref-table{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:14px}
.ref-table th{background:var(--surface-dark);color:var(--gold-light);padding:14px 12px;font-size:11.5px;font-weight:600;letter-spacing:.06em;line-height:1.3;text-transform:uppercase;text-align:left;box-shadow:var(--edge-gold)}
.ref-table td{padding:14px 12px;border-bottom:1px solid rgba(var(--navy-rgb),.14);font-size:13px;color:var(--textm);font-weight:400;letter-spacing:-.005em;line-height:1.5}
.ref-table tr:last-child td{border-bottom:none}
/* v18k: daily-table converge a system rhythm */
.daily-table{width:100%;border-collapse:collapse;font-size:13px}
.daily-table th{font-size:11.5px;font-weight:600;letter-spacing:.06em;line-height:1.3;text-transform:uppercase;color:var(--textl);padding:14px 12px;border-bottom:1px solid rgba(var(--navy-rgb),.22);background:transparent;text-align:left}
.daily-table td{padding:14px 12px;border-bottom:1px solid rgba(var(--navy-rgb),.14);color:var(--textm);font-weight:400;letter-spacing:-.005em;line-height:1.5}
/* 2026-06-08 (Slice 4): informe Google Ads con la misma densidad que el de Meta v2 (~12px,
   padding más compacto). Scopeado a #viewGoogle para NO afectar otros informes/clientes. */
#viewGoogle .rank-table,#viewGoogle .daily-table,#viewGoogle .tabla{font-size:12px}
#viewGoogle .rank-table th,#viewGoogle .daily-table th,#viewGoogle .tabla th{padding:9px 10px;font-size:11px}
#viewGoogle .rank-table td,#viewGoogle .daily-table td,#viewGoogle .tabla td{padding:9px 10px;font-size:12px}
.tab-btns{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.tab-btn{padding:7px 16px;border:1px solid var(--sand);border-radius:20px;font-size:13px;font-weight:500;cursor:pointer;background:var(--white);color:var(--textm);transition:all .15s}
.tab-btn.active{background:var(--navy);color:var(--white);border-color:var(--navy)}
.token-box{background:var(--amber2);border:1px solid rgba(var(--gold-rgb),.35);border-radius:14px;padding:20px 24px;margin-bottom:16px}
.token-inp{width:100%;padding:10px 14px;border:1px solid var(--sand);border-radius:8px;font-size:13px;font-family:monospace;color:var(--text);background:var(--white);outline:none;margin:10px 0}
.save-token-btn{background:var(--navy);color:var(--white);border:none;padding:9px 20px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer}
.pwa-card{border:1px solid rgba(var(--gold-rgb),.18);background:var(--surface-card-elevated);border-radius:var(--r-lg);padding:24px 28px;margin-top:var(--s-4);display:flex;align-items:flex-start;gap:var(--s-4);box-shadow:var(--shadow-soft),var(--edge-soft)}
.pago-banner{position:absolute;top:0;right:0;background:linear-gradient(135deg,var(--amber),var(--gold));color:var(--white);border-radius:8px;padding:10px 14px;max-width:220px;font-size:12px;line-height:1.6;box-shadow:0 4px 16px rgba(var(--gold-rgb),.3);z-index:10}
.anuncio-banner{background:var(--surface-dark);border:1px solid rgba(var(--gold-rgb),.22);border-radius:var(--r-md);padding:14px 18px;margin-bottom:12px;display:flex;align-items:flex-start;gap:11px;font-size:13.5px;color:var(--text-on-dark);line-height:1.5;font-weight:400;letter-spacing:-.005em;box-shadow:var(--shadow-soft),var(--edge-gold)}
.banco-modal{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:6000;display:none;align-items:center;justify-content:center}
.banco-modal.open{display:flex}
.metric-row{display:flex;align-items:center;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--sand);font-size:13px}
.metric-row:last-child{border-bottom:none}
.rec-box{padding:12px 16px;border-radius:var(--r-sm);margin-top:10px;font-size:13px;line-height:1.5;font-weight:400;letter-spacing:-.005em}
@media print{
  body.printing-informes .sb,
  body.printing-informes #aiChatBtn,body.printing-informes #aiChatPanel,
  body.printing-informes #propuestaPopup,body.printing-informes #guionAlertPopup,
  body.printing-informes #bancoModal,body.printing-informes #perfilModal,
  body.printing-informes #guionModal,body.printing-informes .inf-toolbar,
  body.printing-informes .tab-btns{display:none!important}
  body.printing-informes .main{margin-left:0!important;padding:6px!important}
  body.printing-informes #pg-informes{display:block!important}
  body.printing-informes .pg:not(#pg-informes){display:none!important}
  body.printing-informes .presup-card{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.printing-informes .progress-fill{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.printing-informes .rank-table,body.printing-informes .ref-table{font-size:8px!important;min-width:unset!important;width:100%!important}
  body.printing-informes .rank-table th,body.printing-informes .rank-table td,
  body.printing-informes .ref-table th,body.printing-informes .ref-table td{padding:3px 4px!important}
  body.printing-informes #msgTab_campanas,body.printing-informes #segTab_campanas{overflow:visible!important;max-width:unset!important;display:block!important}
  body.printing-informes .dual-panel{display:block!important}
  body.printing-informes .dual-card{margin-bottom:8px;break-inside:avoid}
  .presup-card,.mp-card,.card{break-inside:avoid;margin-bottom:8px}
  @page{margin:10mm;size:letter landscape}
  body.printing-informes .presup-card{background:#f0f0f0!important;border:1px solid #999!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.printing-informes .presup-card *{color:#111!important}
  body.printing-informes .dual-head-msg,body.printing-informes .dual-head-seg{background:#ddd!important}
  body.printing-informes .dual-head-msg *,body.printing-informes .dual-head-seg *{color:#000!important}
  body.printing-informes .progress-track{background:#e8e8e8!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.printing-informes .progress-fill{background:#555!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.printing-informes .cv-great,body.printing-informes .cv-good,body.printing-informes .cv-warn,body.printing-informes .cv-bad{background:#eee!important;color:#000!important;border:1px solid #aaa}
  body.printing-informes .mp-msg,body.printing-informes .rec-box{background:#f5f5f5!important;color:#000!important}
}
@keyframes pgFadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes overlayFade{from{opacity:0}to{opacity:1}}
@keyframes modalSlideUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes toastIn{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:translateX(0)}}
@keyframes toastOut{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(16px)}}
#toastContainer{position:fixed;bottom:24px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{background:var(--navy);color:var(--white);padding:11px 16px;border-radius:10px;font-size:13px;font-weight:500;box-shadow:0 4px 20px rgba(0,0,0,.22);animation:toastIn .25s ease;max-width:300px;line-height:1.5;border-left:3px solid var(--gold2)}
.toast.error{border-left-color:#f1948a;background:#4a1a1a}
.toast.ok{border-left-color:#52be80}
.vid-search{padding:7px 14px;border:1px solid var(--sand);border-radius:20px;font-size:13px;outline:none;color:var(--text);background:var(--white);width:190px;transition:border-color .15s,width .2s}
.vid-search:focus{border-color:var(--gold);width:240px}
.sb::-webkit-scrollbar{width:3px}
.sb::-webkit-scrollbar-track{background:transparent}
.sb::-webkit-scrollbar-thumb{background:rgba(var(--gold-rgb),.25);border-radius:2px}
button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@media(max-width:900px){
  .sb{width:100%;position:fixed;bottom:0;top:auto;left:0;right:0;height:calc(60px + env(safe-area-inset-bottom));flex-direction:row;overflow:hidden;padding-bottom:env(safe-area-inset-bottom);border-right:none;border-top:1px solid rgba(var(--gold-rgb),.15);z-index:9000;touch-action:none;-webkit-user-select:none;user-select:none}
  .sb-head,.sb-profile,.sb-div,.sb-seclbl,.contact-a,.sb-foot{display:none!important}
  .sb-nav{display:flex;flex-direction:row;width:100%;height:60px;overflow:hidden}
  .nav-item{flex-direction:column;gap:1px;padding:6px 4px 10px;font-size:10px;font-weight:500;border-left:none;border-top:3px solid transparent;flex:1;min-width:0;text-align:center;justify-content:center;height:60px;white-space:nowrap;overflow:hidden;touch-action:manipulation}
  .nav-item.active{border-top-color:var(--gold2);border-left:none}
  .nav-icon{font-size:18px;width:auto;display:block;margin-bottom:2px}
  .mobile-only{display:flex!important}
  .main{margin-left:0!important;padding:calc(20px + env(safe-area-inset-top)) 16px calc(80px + env(safe-area-inset-bottom))!important;overflow-x:hidden;box-sizing:border-box}
  .g2,.g3,.g4,.dual-panel{grid-template-columns:1fr!important}
  .card,.info-card{max-width:100%;box-sizing:border-box;width:100%;overflow:hidden}
  .card{padding:22px 22px!important}
  .hero-pago{flex-direction:column;align-items:stretch;padding:24px 22px;gap:18px;border-radius:var(--r-lg)}
  .hero-pago::before{width:200px;height:200px}
  .hero-pago-action{width:100%}
  .hero-pago-btn{width:100%;padding:14px 18px}
  .pago-row{flex-direction:column;align-items:stretch;gap:12px;padding:14px 16px}
  .pago-row-monto{display:block;margin-right:0}
  .pago-row-meta{display:block;margin-top:2px}
  .pago-row-action{width:100%}
  .pago-row-btn{width:100%;padding:12px 18px}
  #pg-inicio .tabla{font-size:11px;width:100%}
  #pg-inicio .tabla th,#pg-inicio .tabla td{padding:4px 6px;white-space:normal;word-break:break-word;font-size:11px}
  .inf-toolbar{flex-direction:column;align-items:stretch}
  .rank-table,.ref-table,.daily-table{min-width:480px}
  #msgTab_campanas,#segTab_campanas,#msgTab_diario,#msgTab_metricas,#segTab_metricas{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .presup-card .four-grid,.presup-card .four-grid-seg{grid-template-columns:1fr 1fr!important}
  .dual-panel{gap:10px}.dual-panel .dual-card{min-width:0}
  .modal-box{max-height:92vh;width:96%}
  .load-btn{width:100%;justify-content:center}
  table.ref-table,table.rank-table{display:block;overflow-x:auto}
}

/* ══════════════════════════════════════════════════════════════════════════
 * DRA. MARILYN — rose gold metálico (2026-08-04)
 * ─────────────────────────────────────────────────────────────────────────
 * El COLOR vive en el KV (tenant.palette): --surface-dark trae su metal y
 * --text-on-dark* la tinta. Aquí sólo va lo que un token no puede expresar:
 * el barrido de luz (pseudo-elemento + animación) y el login sobre metal.
 *
 * Scope: body.tenant-marilyn, que pone tenant-resolver.js. Ningún otro
 * cliente entra a estas reglas.
 *
 * ⚠️ El texto va en TINTA, no en blanco: sobre el metal claro el blanco da
 * 2.2:1. La tinta #4A4340 da 4.5:1 sobre la parada más profunda del metal.
 * Si algún día el metal se vuelve oscuro, hay que invertir esto.
 * ═════════════════════════════════════════════════════════════════════════ */
@keyframes v89-sheen-marilyn{0%,58%{transform:translateX(-100%)}88%,100%{transform:translateX(120%)}}

body.tenant-marilyn .sb{overflow:hidden}
body.tenant-marilyn .sb::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:linear-gradient(115deg,transparent 34%,rgba(255,255,255,.42) 50%,transparent 66%);
  transform:translateX(-100%);animation:v89-sheen-marilyn 6s ease-in-out infinite 1.2s}
body.tenant-marilyn .sb > *{position:relative;z-index:1}
/* jerarquía por PESO: sobre el metal ningún gris intermedio sobrevive en todas
   las paradas del degradado, así que el activo se distingue por peso + barra. */
body.tenant-marilyn .nav-item{font-weight:400}
body.tenant-marilyn .nav-item:hover{background:rgba(36,31,30,.06);color:var(--text-on-dark)}
body.tenant-marilyn .nav-item.active{font-weight:600;background:rgba(36,31,30,.07);
  border-left-color:var(--gold-light);box-shadow:none}
body.tenant-marilyn .contact-a:hover{background:rgba(36,31,30,.06);color:var(--text-on-dark)}
body.tenant-marilyn .sb-av{border-color:rgba(36,31,30,.20)}

/* ── Login sobre metal. El barrido va como capa de background porque
      #login::before y ::after ya están ocupados por los dos círculos. ── */
@keyframes v89-sheen-login-marilyn{
  0%,58%{background-position:-150% 0,0 0} 88%,100%{background-position:250% 0,0 0}}
body.tenant-marilyn #login{
  background:linear-gradient(115deg,transparent 34%,rgba(255,255,255,.42) 50%,transparent 66%),
             var(--surface-dark);
  background-size:300% 100%,auto;background-repeat:no-repeat;
  animation:v89-sheen-login-marilyn 6s ease-in-out infinite 1.2s}
body.tenant-marilyn #login::before,
body.tenant-marilyn #login::after{border-color:rgba(36,31,30,.14)}
body.tenant-marilyn .lb{background:rgba(255,255,255,.42);border-color:rgba(36,31,30,.14)}
body.tenant-marilyn .lb-logo{color:#241F1E}
body.tenant-marilyn .lb-logo span{color:var(--gold-light)}
body.tenant-marilyn .lb-sub{color:#4A4340}
body.tenant-marilyn .lb-inp{background:rgba(255,255,255,.66);border-color:rgba(36,31,30,.16);color:#241F1E}
body.tenant-marilyn .lb-inp::placeholder{color:rgba(36,31,30,.42)}
body.tenant-marilyn .lb-btn{background:var(--navy);border-color:var(--navy);color:#fff}
body.tenant-marilyn .lb-err{color:#8B2635}
/* estos traen color inline (rgba --textoFuerte, que sigue siendo blanco por los
   botones y banners oscuros) → hay que ganarles con !important */
body.tenant-marilyn #loginClock,
body.tenant-marilyn #loginDate,
body.tenant-marilyn #_v89AdminBtn{color:#4A4340 !important}
body.tenant-marilyn #login .lb > div[style*="font-size:11px"],
body.tenant-marilyn #login > div[style] > div[style]{color:#4A4340 !important}
/* nombre del cliente + controles que traen blanco inline y caían sobre el metal.
   Detectados midiendo luminancia de TODO #login en producción, no a ojo. */
body.tenant-marilyn #lbName{color:#241F1E !important}
body.tenant-marilyn #lbName em{color:var(--gold-light) !important}
body.tenant-marilyn #eyeBtn{color:rgba(36,31,30,.55) !important}
body.tenant-marilyn #login a,
body.tenant-marilyn #login strong[style*="7cb9f7"]{color:#2E6B92 !important}

/* Demo: same client theme; Vector89 palette only. */
:root{--navy:#0b1d27;--navy2:#152d38;--gold:#bddb58;--gold-rgb:189,219,88;--gold2:#e3efbc;--cream:#f5f5f1;--cream2:#eef0e9;--sand:#dee3d7;--amber:#617525;--amber2:#f0f5df;--textoFuerte:#fff;--textoFuerte-rgb:255,255,255}#app{display:flex}.sb-brand span{color:var(--gold)}.sb-nav .nav-item{cursor:pointer}#modalTa{white-space:pre-wrap} .demo-caption{font-size:12px;color:var(--textl)}

.card-ttl,.pg-title em{color:#657e20}.sb .sb-brand span{color:#d9f45c}

/* Fill the available desktop column; keep the client mobile layout. */
#app .main{flex:1;min-width:0;width:calc(100% - 240px);box-sizing:border-box}
#app .pg{width:100%;max-width:none}
.demo-logout{display:block;margin:12px 24px;padding:8px 14px;background:var(--navy);color:var(--gold2);border:1px solid var(--gold);border-radius:6px;cursor:pointer}
@media(max-width:900px){#app .main{width:100%}}
#login{overflow-y:auto}#login .lb{flex-shrink:0}#login .lb-err{min-height:18px}
