/* Telecable · NPS — capa de marca sobre NexLink (paleta del sitio telecablecr.com) */
:root,[data-bs-theme=light]{
  --tc-magenta:#D90452;--tc-magenta-dark:#B00343;--tc-purple:#76278C;--tc-purple-dark:#5A1C6C;--tc-lilac:#B07ABF;--tc-gold:#F2A81D;--tc-bg:#F2F2F2;
  --bs-primary:#D90452;--bs-primary-rgb:217,4,82;--bs-primary-text-emphasis:#8a0334;--bs-primary-bg-subtle:#fde6ee;--bs-primary-border-subtle:#f6b3cb;
  --bs-secondary:#76278C;--bs-secondary-rgb:118,39,140;
  --bs-link-color:#76278C;--bs-link-hover-color:#5A1C6C;--bs-link-color-rgb:118,39,140;
  --bs-body-bg:#fff;--app-body-bg:#F2F2F2
}
body{background:var(--tc-bg)}
.btn-primary{--bs-btn-bg:#D90452;--bs-btn-border-color:#D90452;--bs-btn-hover-bg:#B00343;--bs-btn-hover-border-color:#B00343;--bs-btn-active-bg:#8a0334;--bs-btn-active-border-color:#8a0334;--bs-btn-disabled-bg:#e78aac;--bs-btn-disabled-border-color:#e78aac}
.btn-outline-primary{--bs-btn-color:#D90452;--bs-btn-border-color:#D90452;--bs-btn-hover-bg:#D90452;--bs-btn-hover-border-color:#D90452;--bs-btn-active-bg:#B00343;--bs-btn-active-border-color:#B00343}
.btn-secondary{--bs-btn-bg:#76278C;--bs-btn-border-color:#76278C;--bs-btn-hover-bg:#5A1C6C;--bs-btn-hover-border-color:#5A1C6C}
.btn-subtle-primary{background:#fde6ee;color:#B00343;border:0}.btn-subtle-primary:hover{background:#D90452;color:#fff}
.form-control:focus,.form-select:focus{border-color:#B07ABF;box-shadow:0 0 0 .2rem rgba(118,39,140,.15)}
.form-check-input:checked{background-color:#76278C;border-color:#76278C}
.text-purple{color:var(--tc-purple)!important}.text-magenta{color:var(--tc-magenta)!important}

/* ---------- login */
.auth-cover{background:linear-gradient(160deg,#76278C 0%,#5A1C6C 55%,#3f1250 100%)!important;position:relative;overflow:hidden}
.auth-cover::after{content:"";position:absolute;right:-120px;bottom:-120px;width:380px;height:380px;border-radius:50%;background:#D90452;opacity:.9}
.auth-cover::before{content:"";position:absolute;left:-80px;top:-80px;width:220px;height:220px;border-radius:50%;background:#B07ABF;opacity:.35}
.auth-cover .auth-content{color:#fff;position:relative;z-index:1}.auth-cover .auth-content h1{color:#fff!important}.auth-cover .auth-content p{color:rgba(255,255,255,.85)!important}
.auth-cover .cover-img{max-height:48vh;object-fit:contain;position:relative;z-index:1;filter:drop-shadow(0 18px 30px rgba(0,0,0,.25))}
.auth-brand{height:44px;width:auto}.auth-gold{color:var(--tc-gold)}

/* ---------- layout con barra lateral propia */
.tc-sidebar{width:260px;position:fixed;top:0;bottom:0;left:0;z-index:1020;background:#fff;border-right:1px solid var(--bs-border-color);display:flex;flex-direction:column;box-shadow:0 30px 30px 10px rgba(0,0,0,.02)}
.tc-sidebar .tc-brand{height:var(--app-header-height,70px);display:flex;align-items:center;padding:0 22px;border-bottom:1px solid var(--bs-border-color)}
.tc-sidebar .tc-brand img{height:26px;width:auto}
.tc-sidebar nav{flex:1;overflow-y:auto;padding:14px 12px}
.tc-sidebar .menu-heading{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--bs-secondary-color);padding:10px 12px 6px}
.tc-nav-link{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;text-align:left;padding:10px 12px;border-radius:10px;color:var(--bs-body-color);font-weight:500;transition:background .2s,color .2s,transform .2s}
.tc-nav-link i{font-size:17px;width:20px;color:var(--tc-purple);transition:color .2s}
.tc-nav-link small{display:block;font-size:11px;font-weight:400;opacity:.7;line-height:1.2}
.tc-nav-link:hover{background:#f7eef9;transform:translateX(2px)}
.tc-nav-link.active{background:linear-gradient(90deg,#D90452,#B00343);color:#fff;box-shadow:0 8px 18px rgba(217,4,82,.28)}
.tc-nav-link.active i,.tc-nav-link.active small{color:#fff;opacity:1}
.tc-sidebar .tc-side-foot{padding:14px 18px;border-top:1px solid var(--bs-border-color);font-size:11px;color:var(--bs-secondary-color);display:flex;align-items:center;gap:8px}
.tc-sidebar .tc-side-foot img{height:20px}
.app-header{left:260px!important;right:0!important;width:auto!important;max-width:calc(100vw - 260px)}.app-wrapper,.footer-wrapper{margin-left:260px!important}
.app-header .app-header-inner{padding-left:24px}
.tc-header-title{font-weight:600}.tc-header-title span{color:var(--bs-secondary-color);font-weight:400}
@media(max-width:1199.98px){
  .tc-sidebar{position:static;width:auto;flex-direction:column;margin-top:var(--app-header-height,70px);border-right:0;border-bottom:1px solid var(--bs-border-color)}
  .tc-sidebar .tc-brand,.tc-sidebar .menu-heading,.tc-sidebar .tc-side-foot{display:none}
  .tc-sidebar nav{display:flex;gap:6px;overflow-x:auto;padding:10px 12px}
  .tc-nav-link{white-space:nowrap;width:auto}.tc-nav-link small{display:none}
  .app-header{left:0!important;max-width:100vw}.app-wrapper,.footer-wrapper{margin-left:0!important;margin-top:0!important}
}

/* ---------- barra de filtros */
.tc-filters{background:#fff;border-radius:14px;padding:14px 16px;box-shadow:0 4px 18px rgba(118,39,140,.06);border:1px solid #eee}
.tc-filters label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--bs-secondary-color);margin-bottom:4px;display:block}
.tc-filters .form-select,.tc-filters .form-control{font-size:13px;padding-top:.35rem;padding-bottom:.35rem;min-width:120px}
.tc-seg{display:inline-flex;background:#f4eef6;border-radius:10px;padding:3px;gap:2px}
.tc-seg button{border:0;background:transparent;padding:.32rem .75rem;border-radius:8px;font-size:13px;color:#5A1C6C;font-weight:500;transition:all .2s}
.tc-seg button.active{background:#fff;color:#D90452;box-shadow:0 2px 8px rgba(118,39,140,.18)}
.tc-chip{border:1px solid var(--bs-border-color);background:#fff;border-radius:999px;padding:.2rem .7rem;font-size:12.5px;display:inline-flex;align-items:center;gap:6px;transition:all .2s;cursor:pointer}
.tc-chip i{width:10px;height:10px;border-radius:50%;display:inline-block}
.tc-chip.off{opacity:.45;background:#fafafa}
.tc-chip:hover{border-color:#B07ABF}

/* ---------- tarjetas */
.tc-card{border:0;border-radius:16px;box-shadow:0 4px 22px rgba(118,39,140,.07);animation:tcFadeUp .55s ease both}
.tc-card .card-header{background:transparent}
.tc-card h6{font-weight:600}
.tc-sub{font-size:12px;color:var(--bs-secondary-color)}
.tc-kpi{border-radius:16px;padding:16px 18px;background:#fff;box-shadow:0 4px 22px rgba(118,39,140,.07);position:relative;overflow:hidden;height:100%;animation:tcFadeUp .5s ease both;transition:transform .25s,box-shadow .25s}
.tc-kpi:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(118,39,140,.14)}
.tc-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--kpi-color,#76278C)}
.tc-kpi .kpi-name{font-size:13px;font-weight:600;color:#444}
.tc-kpi .kpi-value{font-size:2rem;font-weight:700;line-height:1.1;color:var(--kpi-color,#76278C)}
.tc-kpi .kpi-delta{font-size:12px;font-weight:600;border-radius:999px;padding:.1rem .5rem}
.tc-kpi .kpi-delta.up{background:#e8f7ee;color:#1d8a4a}.tc-kpi .kpi-delta.down{background:#fde6ee;color:#B00343}.tc-kpi .kpi-delta.eq{background:#f1f1f1;color:#666}
.tc-kpi .kpi-bar{display:flex;height:7px;border-radius:99px;overflow:hidden;margin-top:10px;background:#eee}
.tc-kpi .kpi-bar span{display:block;height:100%}
.tc-kpi .kpi-foot{font-size:11px;color:var(--bs-secondary-color);margin-top:6px;display:flex;justify-content:space-between}
.tc-kpi.featured{background:linear-gradient(135deg,#D90452 0%,#76278C 100%);color:#fff}
.tc-kpi.featured::before{display:none}
.tc-kpi.featured .kpi-name,.tc-kpi.featured .kpi-value,.tc-kpi.featured .kpi-foot{color:#fff}
.tc-kpi.featured .kpi-bar{background:rgba(255,255,255,.25)}
.tc-rel{font-size:2.4rem;font-weight:700}
.tc-badge-base{font-size:11px;background:#f4eef6;color:#5A1C6C;border-radius:999px;padding:.15rem .55rem;font-weight:600}
.tc-warn{font-size:11px;color:#9a6a00;background:#fff4dc;border-radius:8px;padding:.25rem .55rem;display:inline-block}
.tc-empty{min-height:220px;display:grid;place-items:center;color:var(--bs-secondary-color);font-size:14px}
.tc-chart{min-height:300px}
.tc-hbar-row{display:grid;grid-template-columns:minmax(120px,1.4fr) 3fr 52px;gap:10px;align-items:center;padding:5px 0;font-size:13px}
.tc-hbar-row .track{height:12px;background:#f4eef6;border-radius:99px;overflow:hidden}
.tc-hbar-row .fill{height:100%;border-radius:99px;background:linear-gradient(90deg,#76278C,#D90452);width:0;transition:width .8s cubic-bezier(.2,.8,.2,1)}
.tc-hbar-row b{text-align:right;color:#5A1C6C}
.tc-hbar-row span{line-height:1.2}

/* ---------- mapa */
.cr-map{min-height:280px;display:grid;place-items:center;color:var(--bs-secondary-color);position:relative}
.cr-map svg{display:block;width:100%;height:auto;max-height:340px}
.cr-province{stroke:#fff;stroke-width:1.2;vector-effect:non-scaling-stroke;transition:filter .2s,opacity .2s;cursor:pointer}
.cr-province:hover{filter:brightness(.85);stroke:#5A1C6C;stroke-width:2}
.cr-label{font-size:10px;font-weight:700;fill:#fff;pointer-events:none;paint-order:stroke;stroke:rgba(0,0,0,.35);stroke-width:2px}
.map-legend{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--bs-secondary-color)}
.map-legend .grad{flex:1;height:8px;border-radius:99px;background:linear-gradient(90deg,#f7e3ef,#B07ABF,#76278C,#D90452)}
.map-tip{position:absolute;pointer-events:none;background:#2b0f33;color:#fff;font-size:12px;padding:6px 10px;border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.2);white-space:nowrap;transform:translate(-50%,-120%)}

/* ---------- varios */
.page-title{font-weight:700;color:#2b0f33}.page-title small{font-weight:400;font-size:14px;color:var(--bs-secondary-color)}
.tc-loading{position:relative}.tc-loading::after{content:"";position:absolute;inset:0;background:rgba(255,255,255,.55);border-radius:16px;backdrop-filter:blur(1px)}
.site-credit{display:flex;align-items:center;justify-content:center;gap:10px;font-size:12px;color:var(--bs-secondary-color);padding:24px 0 8px}.site-credit img{height:22px}
.footer-wrapper ul{display:none!important}
@keyframes tcFadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){.tc-card,.tc-kpi{animation:none}.tc-hbar-row .fill{transition:none}}

/* ================= v2: resumen, análisis y exportación ================= */
.tc-hero{position:relative;overflow:hidden;border-radius:20px;padding:28px 30px;color:#fff;background:linear-gradient(120deg,#D90452 0%,#9c1a70 45%,#76278C 100%);box-shadow:0 14px 36px rgba(118,39,140,.25);animation:tcFadeUp .6s ease both}
.tc-hero::after{content:"";position:absolute;right:-70px;top:-90px;width:300px;height:300px;border-radius:50%;background:rgba(255,255,255,.08)}
.tc-hero::before{content:"";position:absolute;right:120px;bottom:-120px;width:240px;height:240px;border-radius:50%;background:rgba(242,168,29,.18)}
.tc-hero img{height:30px}.tc-hero h2{color:#fff;font-weight:700;margin:14px 0 4px}.tc-hero p{color:rgba(255,255,255,.85);margin:0}
.tc-hero .hero-badge{display:inline-flex;gap:6px;align-items:center;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:.25rem .75rem;font-size:12px;font-weight:600}
.tc-svc{border-radius:18px;background:#fff;box-shadow:0 4px 22px rgba(118,39,140,.08);padding:20px;height:100%;animation:tcFadeUp .55s ease both}
.tc-svc .svc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.tc-svc .svc-name{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#76278C}
.tc-svc .svc-nps{font-size:3.4rem;font-weight:800;line-height:1;color:#D90452}
.tc-svc .svc-meta{font-size:12px;color:var(--bs-secondary-color)}
.tc-svc .svc-stat{background:#faf6fb;border-radius:12px;padding:10px 12px;height:100%}
.tc-svc .svc-stat b{display:block;font-size:1.25rem;color:#2b0f33}.tc-svc .svc-stat span{font-size:11px;color:var(--bs-secondary-color)}
.tc-rank-row{display:grid;grid-template-columns:92px 1fr 40px;gap:8px;align-items:center;font-size:12.5px;padding:3px 0}
.tc-rank-row .bar{height:9px;border-radius:99px;background:#f1ecf3;overflow:hidden}.tc-rank-row .bar i{display:block;height:100%;border-radius:99px;transition:width .8s cubic-bezier(.2,.8,.2,1)}
.tc-rank-row.me{font-weight:700}
.tc-insight{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border-radius:12px;background:#faf6fb;margin-bottom:8px;font-size:13.5px;animation:tcFadeUp .5s ease both}
.tc-insight i{font-size:16px;margin-top:2px}.tc-insight.good i{color:#1d8a4a}.tc-insight.bad i{color:#D90452}.tc-insight.neutral i{color:#76278C}
.sig{font-size:10.5px;font-weight:700;border-radius:999px;padding:.08rem .45rem;margin-left:4px;white-space:nowrap}
.sig.up{background:#e8f7ee;color:#1d8a4a}.sig.down{background:#fde6ee;color:#B00343}
.tc-kpi.featured .sig.up,.tc-kpi.featured .sig.down{background:rgba(255,255,255,.22);color:#fff}
.tc-kpi .kpi-rank{font-size:11px;font-weight:600;opacity:.8}
.tc-spark{height:38px;margin:4px -6px -6px}
/* mapa de calor */
.tc-heat{width:100%;border-collapse:separate;border-spacing:3px;font-size:12.5px}
.tc-heat th{font-weight:600;color:var(--bs-secondary-color);text-align:center;padding:4px;font-size:11.5px;white-space:nowrap}
.tc-heat th.row{text-align:left;color:#2b0f33;min-width:118px;padding:4px 10px 4px 6px!important;overflow:visible;white-space:nowrap}
.tc-heat td{text-align:center;border-radius:8px;padding:8px 4px;font-weight:700;color:#fff;min-width:54px;transition:transform .15s}
.tc-heat td:hover{transform:scale(1.06)}
.tc-heat td.empty{background:#f4f1f5;color:#bbb;font-weight:400}
.tc-heat td small{display:block;font-size:9.5px;font-weight:500;opacity:.85}
.tc-heat tr.me th.row{color:#D90452}
/* drivers */
.tc-drv-group{margin-bottom:14px}.tc-drv-group h6{font-size:12.5px;margin-bottom:6px;color:#5A1C6C}
.tc-drv-row{display:grid;grid-template-columns:minmax(150px,1.2fr) 3fr 64px;gap:10px;align-items:center;font-size:12.5px;padding:3px 0}
.tc-drv-track{position:relative;height:16px;background:#f4eef6;border-radius:6px}
.tc-drv-track::after{content:"";position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:#b9a7bf}
.tc-drv-bar{position:absolute;top:2px;bottom:2px;border-radius:4px;transition:all .8s cubic-bezier(.2,.8,.2,1)}
.tc-drv-row b{text-align:right}
.tc-drv-total{font-size:12px;color:var(--bs-secondary-color)}
/* matriz de atributos */
.tc-matrix{width:100%;border-collapse:separate;border-spacing:3px;font-size:12.5px}
.tc-matrix th{font-size:11.5px;color:var(--bs-secondary-color);font-weight:600;text-align:center;padding:4px}
.tc-matrix th.attr{text-align:left;color:#2b0f33;font-weight:600;min-width:190px}
.tc-matrix td{text-align:center;border-radius:7px;padding:7px 4px;font-weight:600}
.tc-matrix td.best{outline:2px solid #F2A81D;outline-offset:-2px}
.tc-matrix th.me{color:#D90452}
.tc-legend-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:middle}
/* satisfacción de canales */
.tc-chan{border-radius:14px;background:#faf6fb;padding:12px 14px;height:100%}
.tc-chan .v{font-size:1.8rem;font-weight:800;color:#76278C;line-height:1.1}.tc-chan .v small{font-size:.9rem;color:var(--bs-secondary-color);font-weight:500}
.tc-chan .n{font-size:11px;color:var(--bs-secondary-color)}
.tc-stars{color:#F2A81D;letter-spacing:1px;font-size:13px}
/* utilidades */
.tc-card .card-tools{display:flex;gap:6px;align-items:center}
.tc-icon-btn{border:0;background:#f4eef6;color:#5A1C6C;border-radius:8px;width:30px;height:30px;display:inline-grid;place-items:center;transition:all .2s}
.tc-icon-btn:hover{background:#D90452;color:#fff}
.tc-skel{border-radius:16px;background:linear-gradient(90deg,#f3eef5 25%,#faf7fb 50%,#f3eef5 75%);background-size:200% 100%;animation:tcShimmer 1.2s infinite;min-height:140px}
@keyframes tcShimmer{from{background-position:200% 0}to{background-position:-200% 0}}
.tc-note{font-size:11.5px;color:var(--bs-secondary-color)}
.tc-def dt{color:#5A1C6C;font-size:13px}.tc-def dd{font-size:13px;color:#444;margin-bottom:10px}
.tc-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#5A1C6C;cursor:pointer}
@media print{
  .tc-sidebar,.app-header,.tc-filters,.footer-wrapper,#print-btn,.apexcharts-toolbar,.tc-icon-btn,.site-credit{display:none!important}
  .app-wrapper{margin:0!important;padding:0!important}body{background:#fff!important}
  .tc-card,.tc-kpi,.tc-svc,.tc-hero{box-shadow:none!important;break-inside:avoid;animation:none!important}
  .tc-hero{-webkit-print-color-adjust:exact;print-color-adjust:exact}.tc-heat td,.tc-matrix td,.tc-kpi.featured{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
/* v2.1: sin recortes */
.app-header .app-header-inner{min-width:0}
.app-header-start{min-width:0;overflow:hidden}.app-header-start .tc-header-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.app-header-end{flex-shrink:0;flex-wrap:nowrap}
@media(max-width:1500px){#data-stamp{display:none!important}}
@media(max-width:1280px){#session-email{display:none}}
.tc-heat th.row,.tc-matrix th.attr{position:sticky;left:0;z-index:2;background:#fff;padding-left:10px!important;padding-right:12px!important}
.tc-heat,.tc-matrix{min-width:max-content}
.table-responsive{padding-bottom:4px}
.card,.tc-card{overflow:visible}
.tc-card .card-body{min-width:0}
@media(max-width:1199.98px){.tc-sidebar nav .tc-nav-link{flex:0 0 auto;overflow:visible}.tc-sidebar nav{scrollbar-width:thin}}
.hero-badge{white-space:nowrap}
@media(max-width:575.98px){.tc-svc .svc-head{flex-direction:column}.tc-svc .svc-nps{font-size:2.8rem}.app-header-end .btn{padding:.25rem .5rem;font-size:12px}.tc-hero{padding:20px}.tc-hero h2{font-size:1.35rem}}
.tc-card .card-tools{flex-wrap:wrap;max-width:100%;justify-content:flex-end}
.tc-card .card-header>div:first-child{min-width:0;flex:1 1 220px}
.tc-seg{flex-wrap:wrap;max-width:100%}
