/* ============ MediCare · Sistema de Consultorio Médico ============ */
:root{
  --primary:#0d9488;
  --primary-soft:color-mix(in srgb,var(--primary) 10%,#fff);
  --primary-soft2:color-mix(in srgb,var(--primary) 18%,#fff);
  --primary-dark:color-mix(in srgb,var(--primary) 82%,#000);
  --accent:#38bdf8;
  --ink:#1e293b; --muted:#64748b; --line:#e6edf3; --bg:#f3f8fb; --card:#fff;
  --ok:#16a34a; --warn:#f59e0b; --bad:#ef4444; --info:#0ea5e9; --violet:#8b5cf6;
  --radius:16px; --sidebar-w:268px;
  --shadow:0 1px 2px rgba(15,60,80,.04),0 8px 24px rgba(15,60,80,.06);
  --shadow-lg:0 12px 40px rgba(15,60,80,.14);
  --bs-primary:var(--primary); --bs-primary-rgb:13,148,136;
  --bs-body-font-family:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --bs-body-color:var(--ink); --bs-body-bg:var(--bg); --bs-border-color:var(--line);
}
html,body{font-family:var(--bs-body-font-family);background:var(--bg);color:var(--ink);font-size:.925rem}
a{color:var(--primary-dark)}
.shadow-soft{box-shadow:var(--shadow-lg)!important;border:0;border-radius:14px}

/* Bootstrap overrides */
.btn{border-radius:11px;font-weight:600;padding:.5rem 1rem}
.btn-primary{--bs-btn-bg:var(--primary);--bs-btn-border-color:var(--primary);--bs-btn-hover-bg:var(--primary-dark);--bs-btn-hover-border-color:var(--primary-dark);--bs-btn-active-bg:var(--primary-dark);--bs-btn-active-border-color:var(--primary-dark);--bs-btn-disabled-bg:var(--primary);box-shadow:0 6px 16px color-mix(in srgb,var(--primary) 30%,transparent)}
.btn-outline-primary{--bs-btn-color:var(--primary-dark);--bs-btn-border-color:var(--primary-soft2);--bs-btn-hover-bg:var(--primary);--bs-btn-hover-border-color:var(--primary);--bs-btn-active-bg:var(--primary)}
.btn-light{--bs-btn-bg:#fff;--bs-btn-border-color:var(--line);--bs-btn-hover-bg:var(--primary-soft);--bs-btn-hover-border-color:var(--primary-soft2)}
.btn-sm{padding:.3rem .65rem;border-radius:9px;font-size:.8rem}
.form-control,.form-select{border-radius:11px;border-color:#dbe5ec;padding:.55rem .85rem;background-color:#fbfdfe}
.form-control:focus,.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 .22rem color-mix(in srgb,var(--primary) 16%,transparent);background:#fff}
.form-label{font-weight:600;font-size:.8rem;color:#475569;margin-bottom:.3rem}
.input-group-text{background:var(--primary-soft);border-color:#dbe5ec;color:var(--primary-dark);border-radius:11px}
.modal-content{border:0;border-radius:20px;box-shadow:var(--shadow-lg)}
.modal-header{border-bottom:1px solid var(--line);padding:1.1rem 1.4rem}
.modal-footer{border-top:1px solid var(--line)}
.modal-title{font-weight:700}
.dropdown-menu{border-radius:14px;padding:.5rem;border:1px solid var(--line)}
.dropdown-item{border-radius:9px;padding:.5rem .8rem;font-weight:500}
.nav-tabs-x{border:0;gap:.4rem;flex-wrap:wrap}
.nav-tabs-x .nav-link{border:0;border-radius:11px;color:var(--muted);font-weight:600;padding:.55rem 1rem;background:#fff;border:1px solid var(--line)}
.nav-tabs-x .nav-link.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 6px 16px color-mix(in srgb,var(--primary) 28%,transparent)}
.pagination .page-link{border-radius:9px!important;margin:0 2px;border:1px solid var(--line);color:var(--ink)}
.pagination .active .page-link{background:var(--primary);border-color:var(--primary);color:#fff}

/* ============ Layout ============ */
.app-shell{display:flex;min-height:100vh}
.sidebar{width:var(--sidebar-w);background:#fff;border-right:1px solid var(--line);position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:1040;transition:transform .25s}
.main{margin-left:var(--sidebar-w);flex:1;min-width:0;display:flex;flex-direction:column;min-height:100vh}
.brand{display:flex;align-items:center;gap:.8rem;padding:1.25rem 1.3rem;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--line)}
.brand-mark{width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;display:grid;place-items:center;font-size:1.4rem;box-shadow:0 8px 18px color-mix(in srgb,var(--primary) 35%,transparent)}
.brand-logo{width:44px;height:44px;object-fit:contain;border-radius:12px}
.brand-text{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.brand-text strong{font-size:1.05rem;font-weight:800;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand-text small{color:var(--muted);font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-nav{flex:1;overflow-y:auto;padding:.6rem .85rem 1rem;scrollbar-width:thin}
.nav-group{font-size:.66rem;text-transform:uppercase;letter-spacing:.09em;color:#94a3b8;font-weight:700;padding:1rem .75rem .4rem}
.nav-item-x{display:flex;align-items:center;gap:.75rem;padding:.62rem .8rem;border-radius:12px;color:#475569;text-decoration:none;font-weight:600;font-size:.88rem;margin-bottom:2px;position:relative;transition:.15s}
.nav-item-x i{font-size:1.1rem;width:22px;text-align:center;color:#94a3b8;transition:.15s}
.nav-item-x:hover{background:var(--primary-soft);color:var(--primary-dark)}
.nav-item-x:hover i{color:var(--primary)}
.nav-item-x.active{background:linear-gradient(90deg,var(--primary-soft2),var(--primary-soft));color:var(--primary-dark)}
.nav-item-x.active i{color:var(--primary)}
.nav-item-x.active::before{content:"";position:absolute;left:-.85rem;top:20%;bottom:20%;width:4px;border-radius:0 4px 4px 0;background:var(--primary)}
.nav-pill{margin-left:auto;font-style:normal;font-size:.68rem;background:var(--primary);color:#fff;border-radius:20px;padding:.1rem .5rem;font-weight:700}
.side-card{margin:.5rem .9rem 1rem;padding:.9rem 1rem;border-radius:16px;background:linear-gradient(135deg,var(--primary),color-mix(in srgb,var(--primary) 60%,var(--accent)));color:#fff;display:flex;gap:.8rem;align-items:center}
.sc-ico{width:40px;height:40px;border-radius:12px;background:rgba(255,255,255,.2);display:grid;place-items:center;font-size:1.2rem}
.sc-num{font-size:1.5rem;font-weight:800;line-height:1}.sc-lbl{font-size:.72rem;opacity:.9}
.topbar{height:72px;background:rgba(255,255,255,.85);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:1rem;padding:0 1.6rem;position:sticky;top:0;z-index:1020}
.tb-title h1{font-size:1.25rem;font-weight:800;margin:0;letter-spacing:-.3px}
.tb-title span{font-size:.78rem;color:var(--muted)}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:.7rem}
.tb-date{align-items:center;gap:.45rem;background:var(--primary-soft);color:var(--primary-dark);padding:.45rem .8rem;border-radius:11px;font-weight:600;font-size:.8rem}
.btn-icon{width:42px;height:42px;border-radius:12px;border:1px solid var(--line);background:#fff;display:grid;place-items:center;color:#475569;font-size:1.15rem;cursor:pointer;text-decoration:none}
.btn-icon:hover{background:var(--primary-soft);color:var(--primary)}
.btn-icon .dot{position:absolute;top:-5px;right:-5px;background:var(--bad);color:#fff;font-size:.62rem;border-radius:20px;min-width:18px;height:18px;display:grid;place-items:center;font-weight:700;padding:0 4px}
.user-chip{display:flex;align-items:center;gap:.6rem;padding:.3rem .7rem .3rem .3rem;border-radius:14px;border:1px solid var(--line);background:#fff;text-decoration:none;color:var(--ink)}
.user-chip strong{display:block;font-size:.82rem}.user-chip small{color:var(--muted);font-size:.7rem}
.avatar{width:36px;height:36px;border-radius:11px;background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;font-weight:700;display:grid;place-items:center;font-size:.8rem}
.content{padding:1.6rem;flex:1}
.app-footer{padding:1rem 1.6rem;color:#94a3b8;font-size:.76rem;text-align:center}
.sidebar-backdrop{display:none}
@media(max-width:991.98px){
  .sidebar{transform:translateX(-100%)}.sidebar.open{transform:none;box-shadow:var(--shadow-lg)}
  .main{margin-left:0}.content{padding:1rem}.topbar{padding:0 1rem}
  .sidebar-backdrop.show{display:block;position:fixed;inset:0;background:rgba(15,40,60,.4);z-index:1035}
}

/* ============ Components ============ */
.card-x{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.3rem}
.card-x.p-0{padding:0}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}
.card-head h5,.card-head h6{margin:0;font-weight:700}
.card-head .sub{font-size:.76rem;color:var(--muted)}
.page-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:1.2rem;align-items:center}
.search-box{position:relative;flex:1;min-width:220px;max-width:420px}
.search-box i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#94a3b8}
.search-box input{padding-left:2.5rem}
.table-x{margin:0;--bs-table-bg:transparent}
.table-x thead th{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;font-weight:700;border-bottom:1px solid var(--line);background:#fafcfd;padding:.8rem 1rem;white-space:nowrap}
.table-x td{padding:.8rem 1rem;vertical-align:middle;border-color:var(--line)}
.table-x tbody tr:hover{background:#f8fcfc}
.table-responsive.rounded-x{border-radius:var(--radius)}
.badge-soft{display:inline-flex;align-items:center;gap:.3rem;padding:.28rem .65rem;border-radius:20px;font-size:.72rem;font-weight:700}
.bs-success{background:#dcfce7;color:#15803d}.bs-warning{background:#fef3c7;color:#b45309}.bs-danger{background:#fee2e2;color:#b91c1c}
.bs-info{background:#e0f2fe;color:#0369a1}.bs-primary{background:var(--primary-soft2);color:var(--primary-dark)}.bs-secondary{background:#f1f5f9;color:#475569}
.avatar-sm{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-weight:700;font-size:.8rem;color:#fff;flex:none;background:linear-gradient(135deg,var(--primary),var(--accent))}
.avatar-sm.f{background:linear-gradient(135deg,#f472b6,#a78bfa)}.avatar-sm.m{background:linear-gradient(135deg,#38bdf8,#0d9488)}
.cell-user{display:flex;align-items:center;gap:.75rem}.cell-user .n{font-weight:700;line-height:1.2}.cell-user .s{font-size:.75rem;color:var(--muted)}
.row-actions{display:flex;gap:.3rem;justify-content:flex-end}
.act{width:32px;height:32px;border-radius:9px;border:1px solid var(--line);background:#fff;color:#475569;display:inline-grid;place-items:center;font-size:.9rem;cursor:pointer;text-decoration:none;transition:.15s}
.act:hover{background:var(--primary-soft);color:var(--primary);border-color:var(--primary-soft2)}
.act.del:hover{background:#fee2e2;color:var(--bad);border-color:#fecaca}
.empty{text-align:center;padding:3rem 1rem;color:var(--muted)}
.empty i{font-size:2.6rem;color:#cbd5e1;display:block;margin-bottom:.5rem}

/* KPI cards */
.kpi{position:relative;overflow:hidden;display:flex;gap:1rem;align-items:center;padding:1.2rem 1.3rem;border-radius:var(--radius);background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);height:100%}
.kpi::after{content:"";position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:50%;background:var(--kc,var(--primary));opacity:.07}
.kpi-ico{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;font-size:1.5rem;color:var(--kc,var(--primary));background:color-mix(in srgb,var(--kc,var(--primary)) 13%,#fff);flex:none}
.kpi .lbl{font-size:.76rem;color:var(--muted);font-weight:600}
.kpi .val{font-size:1.65rem;font-weight:800;letter-spacing:-.5px;line-height:1.1;margin:.1rem 0}
.kpi .trend{font-size:.72rem;font-weight:700}
.trend.up{color:var(--ok)}.trend.down{color:var(--bad)}.trend.flat{color:var(--muted)}

/* Hero */
.hero{border-radius:20px;padding:1.6rem 1.8rem;color:#fff;background:linear-gradient(120deg,var(--primary) 0%,color-mix(in srgb,var(--primary) 55%,var(--accent)) 100%);position:relative;overflow:hidden;box-shadow:0 14px 34px color-mix(in srgb,var(--primary) 28%,transparent)}
.hero::before,.hero::after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.1)}
.hero::before{width:240px;height:240px;right:-60px;top:-90px}.hero::after{width:150px;height:150px;right:140px;bottom:-90px}
.hero h2{font-weight:800;font-size:1.5rem;margin:0 0 .3rem}.hero p{margin:0;opacity:.92}
.hero .btn{background:#fff;color:var(--primary-dark);border:0;box-shadow:none}
.hero .btn-ghost{background:rgba(255,255,255,.18);color:#fff}
.hero .btn:hover{transform:translateY(-1px)}
.chart-box{position:relative;height:290px}.chart-box.sm{height:230px}

/* Timeline / lists */
.list-clean{list-style:none;margin:0;padding:0}
.list-clean li{display:flex;align-items:center;gap:.8rem;padding:.7rem 0;border-bottom:1px dashed var(--line)}
.list-clean li:last-child{border:0}
.time-pill{min-width:62px;text-align:center;padding:.4rem .3rem;border-radius:11px;background:var(--primary-soft);color:var(--primary-dark);font-weight:700;font-size:.8rem}
.prog{height:8px;border-radius:8px;background:#eef3f6;overflow:hidden}.prog>span{display:block;height:100%;border-radius:8px;background:var(--primary)}
.quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:.8rem}
.quick a{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem .5rem;border-radius:14px;background:#fff;border:1px solid var(--line);text-decoration:none;color:var(--ink);font-weight:600;font-size:.8rem;text-align:center;transition:.18s}
.quick a i{font-size:1.5rem;width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:color-mix(in srgb,var(--qc,var(--primary)) 13%,#fff);color:var(--qc,var(--primary))}
.quick a:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--primary-soft2)}

/* Ficha */
.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}
.detail-grid .k{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;font-weight:700}
.detail-grid .v{font-weight:600}
.vital{padding:.8rem;border-radius:14px;background:var(--primary-soft);text-align:center}
.vital b{display:block;font-size:1.15rem}.vital small{color:var(--muted);font-size:.7rem}
.section-title{font-weight:700;font-size:.95rem;display:flex;align-items:center;gap:.5rem;margin:1.2rem 0 .8rem;color:var(--primary-dark)}
.section-title::after{content:"";flex:1;height:1px;background:var(--line)}

/* Autocomplete */
.ac-wrap{position:relative}
.ac-list{position:absolute;left:0;right:0;top:100%;z-index:1060;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);max-height:260px;overflow:auto;margin-top:4px}
.ac-item{padding:.6rem .9rem;cursor:pointer;border-bottom:1px solid #f1f5f9}.ac-item:hover{background:var(--primary-soft)}
.ac-item small{display:block;color:var(--muted)}

/* Slots */
.slots{display:flex;flex-wrap:wrap;gap:.4rem}
.slot{padding:.35rem .7rem;border-radius:9px;border:1px solid var(--line);background:#fff;font-weight:600;font-size:.8rem;cursor:pointer}
.slot:hover{border-color:var(--primary);color:var(--primary)}.slot.sel{background:var(--primary);color:#fff;border-color:var(--primary)}
.slot.off{opacity:.35;pointer-events:none;text-decoration:line-through}

/* Week strip */
.week-strip{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.3rem}
.wd{min-width:74px;text-align:center;padding:.6rem .4rem;border-radius:14px;background:#fff;border:1px solid var(--line);text-decoration:none;color:var(--ink);flex:1}
.wd small{display:block;color:var(--muted);font-weight:600;font-size:.68rem;text-transform:uppercase}.wd b{font-size:1.15rem}
.wd .c{display:block;font-size:.66rem;color:var(--primary-dark);font-weight:700}
.wd.act2{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 8px 18px color-mix(in srgb,var(--primary) 30%,transparent)}
.wd.act2 small,.wd.act2 .c{color:#fff}
.doc-dot{width:10px;height:10px;border-radius:50%;display:inline-block}

/* Backup module */
.bk-hero{border-radius:20px;padding:1.6rem;background:linear-gradient(120deg,#0f766e,#0ea5e9);color:#fff;position:relative;overflow:hidden}
.bk-hero::after{content:"\F3EA";font-family:"bootstrap-icons";position:absolute;right:20px;top:-10px;font-size:9rem;opacity:.12}
.bk-card{border:1px solid var(--line);border-radius:18px;padding:1.4rem;background:#fff;height:100%;box-shadow:var(--shadow);transition:.2s}
.bk-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.bk-card .ic{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;font-size:1.6rem;margin-bottom:1rem;background:color-mix(in srgb,var(--c) 14%,#fff);color:var(--c)}
.bk-card h5{font-weight:700}
.danger-zone{border:1.5px dashed #fca5a5;background:#fff7f7;border-radius:18px;padding:1.4rem}
.drop-zone{border:2px dashed #cbd5e1;border-radius:16px;padding:1.4rem;text-align:center;background:#fafcfd;transition:.2s;cursor:pointer}
.drop-zone:hover,.drop-zone.drag{border-color:var(--primary);background:var(--primary-soft)}

/* Empresa */
.logo-preview{width:150px;height:150px;border-radius:24px;border:2px dashed #cbd5e1;display:grid;place-items:center;background:#fafcfd;overflow:hidden}
.logo-preview img{max-width:100%;max-height:100%;object-fit:contain}
.fmt-preview{background:var(--primary-soft);border-radius:14px;padding:1rem;text-align:center}
.fmt-preview b{font-size:1.6rem;color:var(--primary-dark)}
.color-sw{width:34px;height:34px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1px var(--line);cursor:pointer;display:inline-block}
.color-sw.on{box-shadow:0 0 0 3px var(--primary)}

/* ============ Login ============ */
.login-page{min-height:100vh;display:flex;background:#fff}
.login-art{flex:1.15;position:relative;overflow:hidden;color:#fff;padding:3rem 3.5rem;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(140deg,#0d9488 0%,#14b8a6 45%,#38bdf8 100%)}
.login-art .blob{position:absolute;border-radius:50%;background:rgba(255,255,255,.12)}
.login-art .b1{width:420px;height:420px;right:-120px;top:-120px}.login-art .b2{width:260px;height:260px;left:-80px;bottom:-60px}.login-art .b3{width:120px;height:120px;right:25%;bottom:12%;background:rgba(255,255,255,.1)}
.login-art .ecg{position:absolute;left:0;right:0;bottom:18%;opacity:.35}
.la-brand{display:flex;align-items:center;gap:.8rem;position:relative;z-index:2}
.la-brand .mk{width:50px;height:50px;border-radius:16px;background:rgba(255,255,255,.22);display:grid;place-items:center;font-size:1.6rem;backdrop-filter:blur(6px)}
.la-brand img{width:50px;height:50px;object-fit:contain;background:#fff;border-radius:14px;padding:4px}
.la-brand b{font-size:1.3rem;font-weight:800}
.la-copy{position:relative;z-index:2;max-width:520px}
.la-copy h2{font-size:2.5rem;font-weight:800;line-height:1.15;letter-spacing:-1px}
.la-copy p{opacity:.92;font-size:1.05rem}
.la-feats{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin-top:1.8rem}
.la-feats div{background:rgba(255,255,255,.16);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.25);border-radius:14px;padding:.75rem 1rem;font-weight:600;font-size:.85rem;display:flex;gap:.6rem;align-items:center}
.la-foot{position:relative;z-index:2;font-size:.8rem;opacity:.85}
.login-form-wrap{flex:1;display:grid;place-items:center;padding:2rem;background:linear-gradient(180deg,#fff,#f6fbfc)}
.login-box{width:100%;max-width:410px}
.login-box h3{font-weight:800;letter-spacing:-.5px}
.login-box .form-control{padding:.8rem 1rem;font-size:.95rem}
.login-box .input-group .form-control{border-left:0}
.login-box .input-group-text{border-right:0;background:#fbfdfe;color:#94a3b8;padding-left:1rem}
.login-box .btn-login{padding:.85rem;font-size:1rem;border-radius:13px;width:100%}
.chip-demo{display:inline-flex;gap:.4rem;align-items:center;background:var(--primary-soft);color:var(--primary-dark);padding:.4rem .8rem;border-radius:20px;font-size:.78rem;font-weight:600}
@media(max-width:991.98px){.login-art{display:none}}

/* Print */
@media print{
  .sidebar,.topbar,.app-footer,.no-print,.page-actions,.toast-container{display:none!important}
  .main{margin:0}.content{padding:0}.card-x{box-shadow:none;border:0}
  body{background:#fff}
}

/* ============ Tema: menú oscuro + tarjetas KPI de color ============ */
.sidebar{background:linear-gradient(180deg,#0c2f3c 0%,#0a2530 100%);border-right:0;box-shadow:4px 0 24px rgba(8,37,48,.18)}
.brand{border-bottom:1px solid rgba(255,255,255,.08);color:#fff}
.brand-text strong{color:#fff}.brand-text small{color:#8fb3be}
.brand-logo{background:#fff;padding:4px}
.side-nav{scrollbar-color:rgba(255,255,255,.2) transparent}
.nav-group{color:#6f98a6}
.nav-item-x{color:#c5dbe2}
.nav-item-x i{color:#7fa9b7}
.nav-item-x:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item-x:hover i{color:#5eead4}
.nav-item-x.active{background:linear-gradient(90deg,rgba(45,212,191,.22),rgba(45,212,191,.06));color:#fff;box-shadow:inset 0 0 0 1px rgba(94,234,212,.18)}
.nav-item-x.active i{color:#5eead4}
.nav-item-x.active::before{background:#2dd4bf;left:-.85rem}
.nav-pill{background:#2dd4bf;color:#06303a}
.side-card{background:linear-gradient(135deg,#14b8a6,#0ea5e9);box-shadow:0 10px 24px rgba(0,0,0,.25)}

.kpi{--kc:#0d9488;color:#fff;border:0;padding:1.3rem 1.4rem;flex-direction:row-reverse;justify-content:space-between;align-items:flex-start;
  background:linear-gradient(135deg,var(--kc) 0%,color-mix(in srgb,var(--kc) 78%,#fff) 100%);
  box-shadow:0 10px 26px color-mix(in srgb,var(--kc) 35%,transparent)}
.kpi::after{width:150px;height:150px;right:auto;left:-40px;top:auto;bottom:-70px;background:#fff;opacity:.12}
.kpi::before{content:"";position:absolute;right:-30px;top:-40px;width:120px;height:120px;border-radius:50%;background:#fff;opacity:.1}
.kpi>div:not(.kpi-ico){flex:1;min-width:0;position:relative;z-index:1}
.kpi .kpi-ico{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.75);width:50px;height:50px;border-radius:14px;font-size:1.4rem;position:relative;z-index:1}
.kpi .lbl{color:rgba(255,255,255,.92);font-weight:700;letter-spacing:.04em;text-transform:uppercase;font-size:.7rem}
.kpi .val{font-size:1.9rem;font-weight:800;margin:.3rem 0 .7rem;color:#fff}
.kpi .val small{color:rgba(255,255,255,.8)!important}
.kpi .trend,.kpi>div>div:last-child{font-size:.74rem}
.kpi .trend{display:inline-block;background:rgba(255,255,255,.2);color:#fff!important;padding:.25rem .7rem;border-radius:20px;font-weight:700}
.kpi .trend.up,.kpi .trend.down,.kpi .trend.flat{color:#fff!important}
.kpi .text-muted{color:rgba(255,255,255,.88)!important}
.kpi>div>div:last-child:not(.trend):not(.val):not(.lbl){background:rgba(255,255,255,.2);display:inline-block;padding:.25rem .7rem;border-radius:20px;color:#fff}
.kpi>div>div:last-child:not(.trend):not(.val):not(.lbl) .trend{background:none;padding:0}
.kpi .val{font-size:1.6rem;white-space:nowrap}

/* ============ Tema profesional dinámico (derivado del color principal) ============ */
:root{
  --accent:color-mix(in srgb,var(--primary) 55%,#22d3ee);
  --side1:color-mix(in srgb,var(--primary) 24%,#06121d);
  --side2:color-mix(in srgb,var(--primary) 14%,#040c14);
  --hi:color-mix(in srgb,var(--primary) 45%,#fff);
  --bg:#f2f6fb;
}
html,body{background:var(--bg)}
body{background-image:radial-gradient(900px 380px at 85% -80px,color-mix(in srgb,var(--primary) 9%,transparent),transparent)}
.sidebar{background:linear-gradient(180deg,var(--side1) 0%,var(--side2) 100%);position:fixed}
.sidebar::after{content:"";position:absolute;inset:auto 0 0 0;height:220px;pointer-events:none;opacity:.5;
  background:radial-gradient(180px 140px at 20% 100%,color-mix(in srgb,var(--primary) 35%,transparent),transparent)}
.brand-mark{background:linear-gradient(135deg,var(--primary),var(--accent))}
.nav-item-x i{color:color-mix(in srgb,var(--hi) 55%,#6b8794)}
.nav-item-x:hover i,.nav-item-x.active i{color:var(--hi)}
.nav-item-x.active{background:linear-gradient(90deg,color-mix(in srgb,var(--primary) 45%,transparent),color-mix(in srgb,var(--primary) 8%,transparent));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--hi) 22%,transparent)}
.nav-item-x.active::before{background:var(--hi)}
.nav-pill{background:var(--hi);color:#06121d}
.side-card{background:linear-gradient(135deg,var(--primary),var(--accent));z-index:1;position:relative}
.nav-group{color:color-mix(in srgb,var(--hi) 35%,#5a7482)}
.avatar,.avatar-sm{background:linear-gradient(135deg,var(--primary),var(--accent))}
.topbar{background:rgba(255,255,255,.88)}
.card-x{border-color:#e3eaf3;box-shadow:0 1px 2px rgba(16,42,80,.04),0 10px 30px rgba(16,42,80,.06)}
.card-x:hover{box-shadow:0 1px 2px rgba(16,42,80,.05),0 14px 36px rgba(16,42,80,.09)}
.hero{background:linear-gradient(115deg,color-mix(in srgb,var(--primary) 88%,#000) 0%,var(--primary) 50%,var(--accent) 120%);
  box-shadow:0 18px 40px color-mix(in srgb,var(--primary) 32%,transparent)}
.hero .hero-ecg{position:absolute;left:0;right:0;bottom:0;width:100%;height:70px;opacity:.22;z-index:1}
.hero h2{letter-spacing:-.5px}
.table-x thead th{background:color-mix(in srgb,var(--primary) 4%,#fff)}
.kpi{background:linear-gradient(135deg,color-mix(in srgb,var(--kc) 92%,#000) 0%,var(--kc) 55%,color-mix(in srgb,var(--kc) 72%,#fff) 100%)}
.theme-opt{display:flex;align-items:center;gap:.7rem;width:100%;border:0;background:none;padding:.5rem .6rem;border-radius:10px;font-weight:600;font-size:.85rem;color:var(--ink);text-align:left}
.theme-opt span{width:22px;height:22px;border-radius:50%;box-shadow:0 0 0 3px #fff,0 0 0 4px #dbe5ec}
.theme-opt:hover,.theme-opt.on{background:var(--primary-soft)}
/* Login con el color del tema */
.login-art{background:linear-gradient(145deg,color-mix(in srgb,var(--primary) 70%,#000) 0%,var(--primary) 55%,var(--accent) 120%)}
.login-art::before{content:"";position:absolute;inset:0;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80'%3E%3Cpath d='M34 20h12v14h14v12H46v14H34V46H20V34h14z' fill='%23fff'/%3E%3C/svg%3E")}
.login-form-wrap{background:linear-gradient(180deg,#fff,color-mix(in srgb,var(--primary) 4%,#f6f9fd))}
.bk-hero{background:linear-gradient(120deg,color-mix(in srgb,var(--primary) 80%,#000),var(--primary) 60%,var(--accent))}

/* ===== Asistente IA + Chat IA ===== */
.ia-hero{background:linear-gradient(120deg,var(--primary),var(--accent));border-radius:20px;color:#fff;padding:1.4rem 1.6rem;margin-bottom:1rem;position:relative;overflow:hidden}
.ia-hero:after{content:"";position:absolute;right:-50px;top:-70px;width:240px;height:240px;border-radius:50%;background:rgba(255,255,255,.12)}
.ia-hero h2{font-size:1.25rem;font-weight:800;margin:0 0 4px}.ia-hero p{margin:0 0 14px;opacity:.9;font-size:.88rem}
.ia-ask{display:flex;gap:8px;background:#fff;border-radius:14px;padding:6px;box-shadow:0 10px 30px -12px rgba(0,0,0,.35);position:relative;z-index:1}
.ia-ask textarea{flex:1;border:0;outline:0;resize:none;padding:.65rem .8rem;font-size:.97rem;border-radius:10px;background:transparent;color:var(--ink);min-height:48px;max-height:120px}
.ia-ask button{border:0;border-radius:11px;padding:0 20px;font-weight:700;color:#fff;background:var(--primary);display:flex;align-items:center;gap:8px;white-space:nowrap;align-self:stretch}
.ia-ask button:disabled{opacity:.6}
.ia-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;position:relative;z-index:1}
.ia-chip{border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.16);color:#fff;border-radius:999px;padding:5px 12px;font-size:.78rem;cursor:pointer;transition:.15s}
.ia-chip:hover{background:rgba(255,255,255,.3)}
.ia-res{margin-bottom:1rem}.ia-res h5{font-weight:800;margin:0;font-size:1.05rem}.ia-meta{color:var(--muted);font-size:.78rem}
.ia-sum{background:var(--primary-soft);border:1px solid var(--primary-soft2);border-radius:12px;padding:10px 14px;font-size:.88rem;color:var(--ink);display:flex;gap:10px;align-items:flex-start;margin:12px 0}
.ia-sum>i{color:var(--primary)}
.ia-chart{position:relative;height:300px;margin:8px 0 14px}
.ia-sql{background:#0f172a;color:#e2e8f0;border-radius:12px;padding:12px 14px;font-size:.78rem;white-space:pre-wrap;word-break:break-word;margin:10px 0 0}
.ia-tbl{max-height:420px;overflow:auto;border:1px solid var(--line);border-radius:12px}
.ia-tbl .table th{position:sticky;top:0;background:#f8fafc;z-index:1}
.ia-side .it{display:flex;gap:8px;align-items:center;padding:7px 4px;border-bottom:1px solid var(--line);cursor:pointer;border-radius:8px}
.ia-side .it:hover{background:var(--bg)}.ia-side .it:last-child{border:0}
.ia-side .it .tx{flex:1;min-width:0;font-size:.82rem;line-height:1.25}.ia-side .it .tx small{color:var(--muted);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ia-side .it button{border:0;background:none;color:var(--muted);padding:2px 4px}.ia-side .it button:hover{color:#e11d48}
.ia-load{display:flex;align-items:center;gap:12px;padding:22px;color:var(--muted)}
.ia-dots span{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--primary);margin-right:4px;animation:iad 1s infinite ease-in-out}.ia-dots span:nth-child(2){animation-delay:.15s}.ia-dots span:nth-child(3){animation-delay:.3s}
@keyframes iad{0%,80%,100%{transform:scale(.5);opacity:.4}40%{transform:scale(1);opacity:1}}
.ia-setup .st{display:flex;gap:12px;margin-bottom:10px}.ia-setup .st b{width:26px;height:26px;border-radius:50%;background:var(--primary-soft2);color:var(--primary);display:grid;place-items:center;flex:none;font-size:.8rem}
.seg-x{display:inline-flex;background:var(--bg);border-radius:10px;padding:3px;border:1px solid var(--line)}
.seg-x button{border:0;background:transparent;color:var(--muted);font-size:.75rem;font-weight:600;padding:.3rem .7rem;border-radius:8px}
.seg-x button.on{background:#fff;color:var(--primary);box-shadow:0 1px 4px rgba(15,23,42,.1)}
.ia-toast{position:fixed;top:18px;right:18px;z-index:2000;background:#16a34a;color:#fff;padding:.65rem 1rem;border-radius:12px;font-size:.88rem;box-shadow:0 10px 30px -8px rgba(0,0,0,.3);opacity:0;transform:translateY(-8px);transition:.25s}
.ia-toast.warning{background:#f59e0b}.ia-toast.danger{background:#ef4444}.ia-toast.on{opacity:1;transform:none}
/* chat */
.chat-fab{position:fixed;right:22px;bottom:22px;width:58px;height:58px;border-radius:50%;border:0;color:#fff;font-size:1.5rem;background:linear-gradient(135deg,var(--primary),var(--accent));box-shadow:0 14px 30px -8px color-mix(in srgb,var(--primary) 70%,transparent);z-index:1045;display:grid;place-items:center;transition:transform .15s}
.chat-fab:hover{transform:scale(1.07)}
.chat-panel{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);overflow:hidden}
.chat-root:not(.chat-page) .chat-panel{position:fixed;right:22px;bottom:92px;width:390px;height:min(620px,calc(100dvh - 120px));border-radius:20px;box-shadow:0 30px 70px -20px rgba(15,23,42,.4);z-index:1046}
.chat-root:not(.chat-page) .chat-panel[hidden]{display:none}
.chat-page .chat-panel{height:calc(100dvh - 230px);min-height:460px;max-width:880px;border-radius:18px;box-shadow:var(--shadow)}
.chat-head{display:flex;align-items:center;gap:10px;padding:12px 14px;color:#fff;background:linear-gradient(120deg,var(--primary),var(--accent))}
.chat-head b{display:block;line-height:1.1}.chat-head small{opacity:.85;font-size:.72rem}
.chat-head button{border:0;background:rgba(255,255,255,.2);color:#fff;border-radius:9px;width:32px;height:32px}
.chat-av{width:36px;height:36px;border-radius:12px;background:rgba(255,255,255,.22);display:grid;place-items:center}
.chat-msgs{flex:1;overflow-y:auto;padding:14px;background:var(--bg);display:flex;flex-direction:column;gap:10px}
.chat-m{display:flex}.chat-m.me{justify-content:flex-end}
.chat-b{max-width:88%;padding:9px 13px;border-radius:16px;font-size:.88rem;line-height:1.45;word-break:break-word}
.chat-m.bot .chat-b{background:#fff;border:1px solid var(--line);border-bottom-left-radius:5px}
.chat-m.me .chat-b{background:var(--primary);color:#fff;border-bottom-right-radius:5px}
.chat-sugs{display:flex;flex-wrap:wrap;gap:6px}.chat-sug{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 11px;font-size:.78rem;color:var(--ink)}.chat-sug:hover{border-color:var(--primary);color:var(--primary)}
.chat-tg{display:block;margin-top:8px;border:0;background:none;color:var(--primary);font-size:.78rem;font-weight:600;padding:0}.chat-tg.on{color:var(--muted)}
.chat-tbl{margin-top:6px;border:1px solid var(--line);border-radius:10px;overflow:hidden;max-width:100%}.chat-tbl .table{font-size:.74rem}.chat-tbl .table td,.chat-tbl .table th{padding:.35rem .5rem}
.chat-in{display:flex;gap:8px;padding:10px;border-top:1px solid var(--line);background:#fff;align-items:flex-end}
.chat-in textarea{flex:1;resize:none;border:1px solid var(--line);border-radius:12px;padding:.55rem .75rem;font-size:16px;background:var(--bg);color:var(--ink);outline:0;max-height:110px}
.chat-in textarea:focus{border-color:var(--primary)}
.chat-in button{width:42px;height:42px;border:0;border-radius:12px;color:#fff;background:var(--primary)}.chat-in button:disabled{opacity:.5}
@media(max-width:575.98px){.ia-ask{flex-direction:column}.ia-ask button{padding:12px;justify-content:center}.ia-hero{padding:1rem}
 .chat-root:not(.chat-page) .chat-panel{inset:0;width:auto;height:auto;border-radius:0}body.chat-open .chat-fab{display:none}}
