:root{
  --primary:#3d7bff; --primary-600:#2f66e0; --primary-50:#eef4ff; --primary-100:#dce8ff;
  --teal:#14b8a6; --amber:#f5a524; --rose:#f0556b; --violet:#8b6cf0; --sky:#2bb3e8;
  --bg:#f4f7fc; --surface:#fff; --ink:#1e2a4a; --muted:#7a86a3; --line:#e6ecf5;
  --radius:16px; --shadow:0 6px 24px rgba(40,70,140,.07); --sb-w:264px;
  --bs-primary:#3d7bff; --bs-primary-rgb:61,123,255; --bs-body-font-family:'Plus Jakarta Sans','Segoe UI',system-ui,sans-serif; --bs-body-color:#1e2a4a; --bs-border-color:#e6ecf5;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--bs-body-font-family);font-size:.92rem}
a{text-decoration:none}
.btn-primary{--bs-btn-bg:var(--primary);--bs-btn-border-color:var(--primary);--bs-btn-hover-bg:var(--primary-600);--bs-btn-hover-border-color:var(--primary-600);--bs-btn-active-bg:var(--primary-600);border-radius:10px;font-weight:600}
.btn{border-radius:10px;font-weight:600}
.btn-soft{background:var(--primary-50);color:var(--primary);border:0}.btn-soft:hover{background:var(--primary-100);color:var(--primary-600)}
.text-primary{color:var(--primary)!important}
.form-control,.form-select{border-radius:10px;border-color:#dbe4f2;padding:.55rem .85rem}
.form-control:focus,.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(61,123,255,.12)}
.form-label{font-weight:600;font-size:.82rem;color:#4a5878;margin-bottom:.3rem}
.form-text{color:var(--muted)}

/* ---------- Layout ---------- */
.app-shell{display:flex;min-height:100vh}
.sidebar{width:var(--sb-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}
.sb-brand{display:flex;align-items:center;gap:.75rem;padding:1.15rem 1.25rem;color:var(--ink)}
.brand-ico{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,#4f8cff,#27c4a8);display:grid;place-items:center;color:#fff;font-size:1.3rem;flex:none;box-shadow:0 8px 18px rgba(61,123,255,.28)}
.sb-logo{width:42px;height:42px;object-fit:contain;border-radius:11px;background:#fff;flex:none}
.sb-brand-text{display:flex;flex-direction:column;line-height:1.2;min-width:0}.sb-brand-text b{font-size:.98rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sb-brand-text small{color:var(--muted);font-size:.72rem}
.sb-nav{flex:1;overflow-y:auto;padding:.25rem .8rem 1rem}
.sb-nav::-webkit-scrollbar{width:5px}.sb-nav::-webkit-scrollbar-thumb{background:#dbe3f1;border-radius:9px}
.sb-group{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#a0aac2;padding:1rem .75rem .4rem}
.sb-link{display:flex;align-items:center;gap:.75rem;padding:.6rem .8rem;border-radius:12px;color:#55648a;font-weight:500;margin-bottom:2px;position:relative;transition:.15s}
.sb-link i{font-size:1.1rem;width:22px;text-align:center;color:#8c9abb;transition:.15s}
.sb-link:hover{background:#f1f5fc;color:var(--ink)}.sb-link:hover i{color:var(--primary)}
.sb-link.active{background:linear-gradient(90deg,var(--primary-50),#f7faff);color:var(--primary);font-weight:700}
.sb-link.active i{color:var(--primary)}
.sb-link.active::before{content:"";position:absolute;left:-.8rem;top:20%;bottom:20%;width:4px;border-radius:0 4px 4px 0;background:var(--primary)}
.sb-count{margin-left:auto;font-style:normal;font-size:.68rem;font-weight:700;background:#ffe3e7;color:var(--rose);border-radius:20px;padding:.1rem .5rem}
.sb-count.warn{background:#fff1d6;color:#b87800}.sb-count.info{background:#dff4ff;color:#0a7cae}
.sb-user{display:flex;align-items:center;gap:.7rem;padding:.9rem 1.1rem;border-top:1px solid var(--line);background:#fbfcff}
.sb-user-info{display:flex;flex-direction:column;line-height:1.2;min-width:0;flex:1}.sb-user-info b{font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sb-user-info small{color:var(--muted);font-size:.72rem}
.sb-out{color:var(--muted);font-size:1.2rem}.sb-out:hover{color:var(--rose)}
.avatar{width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,#dce8ff,#e3f7f2);color:var(--primary-600);display:grid;place-items:center;font-weight:800;font-size:.8rem;flex:none}
.avatar.sm{width:30px;height:30px;border-radius:9px;font-size:.7rem}
.main-col{flex:1;margin-left:var(--sb-w);min-width:0;display:flex;flex-direction:column;transition:margin .25s}
.topbar{height:68px;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:1030}
.topbar-title h1{font-size:1.2rem;font-weight:800;margin:0}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:.7rem}
.today{align-items:center;gap:.45rem;color:var(--muted);font-size:.82rem;background:#f1f5fc;border-radius:10px;padding:.45rem .8rem}
.icon-btn{width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:#fff;display:grid;place-items:center;font-size:1.15rem;color:#55648a}
.icon-btn:hover{background:var(--primary-50);color:var(--primary)}
.icon-btn .dot{position:absolute;top:-5px;right:-5px;background:var(--rose);color:#fff;font-size:.62rem;font-weight:700;border-radius:20px;padding:.1rem .38rem;border:2px solid #fff}
.user-chip{display:flex;align-items:center;gap:.5rem;border:1px solid var(--line);background:#fff;border-radius:12px;padding:.3rem .65rem .3rem .35rem;font-weight:600;color:var(--ink)}
.notif-menu{min-width:290px;border-radius:14px;border:1px solid var(--line);box-shadow:var(--shadow);padding:.5rem}
.notif-menu .dropdown-item{border-radius:9px;display:flex;align-items:center;gap:.6rem;padding:.55rem .7rem}.notif-menu b{margin-left:auto}
.dropdown-menu{border-radius:14px;border:1px solid var(--line);box-shadow:var(--shadow)}
.content{padding:1.6rem;flex:1}
.app-footer{display:flex;justify-content:space-between;padding:1rem 1.6rem;color:var(--muted);font-size:.78rem;border-top:1px solid var(--line);background:#fff}
.sb-backdrop{display:none}
@media(max-width:991px){
  .sidebar{transform:translateX(-100%)}.main-col{margin-left:0}
  body.sb-open .sidebar{transform:none;box-shadow:0 0 40px rgba(20,30,60,.2)}
  body.sb-open .sb-backdrop{display:block;position:fixed;inset:0;background:rgba(20,30,60,.35);z-index:1035}
  .content{padding:1rem}.topbar{padding:0 1rem}
}
@media(min-width:992px){body.sb-collapsed .sidebar{transform:translateX(-100%)}body.sb-collapsed .main-col{margin-left:0}}

/* ---------- Cards ---------- */
.card-x{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.card-x .card-head{padding:1.1rem 1.3rem .2rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.card-x .card-head h5,.card-x .card-head h6{margin:0;font-weight:800}
.card-x .card-head small{color:var(--muted)}
.card-x .card-body-x{padding:1.1rem 1.3rem 1.3rem}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.3rem}
.page-head h2{font-size:1.35rem;font-weight:800;margin:0}.page-head p{margin:0;color:var(--muted)}

.chart-box{position:relative;height:290px}
.chart-box.sm{height:240px}
.legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:.4rem}
.mini-list{list-style:none;margin:0;padding:0}
.mini-list li{display:flex;align-items:center;gap:.8rem;padding:.7rem 0;border-bottom:1px dashed var(--line)}
.mini-list li:last-child{border:0}
.mini-list .t{font-weight:600;line-height:1.25}.mini-list .s{font-size:.76rem;color:var(--muted)}.mini-list .r{margin-left:auto;text-align:right;font-weight:700;white-space:nowrap}
.progress-slim{height:8px;border-radius:8px;background:#edf1f8}.progress-slim .progress-bar{border-radius:8px}

/* ---------- Tablas ---------- */
.table-x{margin:0;--bs-table-bg:transparent}
.table-x thead th{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;background:#f8faff;border-bottom:1px solid var(--line);padding:.8rem 1rem;white-space:nowrap}
.table-x tbody td{padding:.8rem 1rem;vertical-align:middle;border-color:var(--line)}
.table-x tbody tr:hover{background:#fafcff}
.badge-soft{display:inline-block;padding:.28rem .65rem;border-radius:20px;font-size:.72rem;font-weight:700}
.row-actions{display:flex;gap:.3rem;justify-content:flex-end}
.act{width:32px;height:32px;border-radius:9px;border:0;background:#f1f5fc;color:#5b6a8c;display:grid;place-items:center;font-size:.95rem;transition:.15s}
.act:hover{background:var(--primary-50);color:var(--primary)}.act.del:hover{background:#ffe3e7;color:var(--rose)}.act.ok:hover{background:#dcf7f3;color:var(--teal)}
.cell-avatar{display:flex;align-items:center;gap:.65rem;font-weight:600}
.toolbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}
.search-box{position:relative;min-width:240px}.search-box i{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);color:var(--muted)}.search-box input{padding-left:2.4rem}
.pagination .page-link{border:0;border-radius:9px;margin:0 2px;color:#55648a;font-weight:600}.pagination .active>.page-link{background:var(--primary)}
.empty{text-align:center;padding:3rem 1rem;color:var(--muted)}.empty i{font-size:2.6rem;display:block;margin-bottom:.4rem;color:#c3cde2}

/* ---------- Login ---------- */
.login-body{background:#fff;min-height:100vh}
.login-wrap{display:grid;grid-template-columns:1.1fr 1fr;min-height:100vh}
.login-hero{background:linear-gradient(145deg,#cfe1ff 0%,#d9f1ee 100%);position:relative;overflow:hidden;display:flex;align-items:center;padding:3rem 4rem}
.hero-content{position:relative;z-index:2;max-width:520px}
.hero-brand{display:flex;align-items:center;gap:.8rem;font-weight:800;font-size:1.2rem;margin-bottom:2.6rem;color:#1b2f66}
.hero-brand img{width:46px;height:46px;border-radius:12px;background:#fff;object-fit:contain}
.login-hero h1{font-weight:800;font-size:2.4rem;line-height:1.2;color:#17295c}.login-hero h1 em{font-style:normal;color:#2f66e0}
.login-hero p{color:#46608f;font-size:1.05rem;margin:1rem 0 1.5rem}
.hero-points{list-style:none;padding:0;margin:0;display:grid;gap:.7rem;color:#27407a;font-weight:600}.hero-points i{color:#17a58f;margin-right:.5rem}
.hero-city{position:absolute;left:0;bottom:0;width:100%;height:46%;z-index:1}
.hero-bubbles span{position:absolute;border-radius:50%;background:rgba(255,255,255,.45)}
.hero-bubbles span:nth-child(1){width:340px;height:340px;top:-110px;right:-80px}.hero-bubbles span:nth-child(2){width:180px;height:180px;top:42%;left:-60px}.hero-bubbles span:nth-child(3){width:90px;height:90px;top:18%;left:44%}
.login-form-side{display:grid;place-items:center;padding:2rem;background:linear-gradient(180deg,#fff,#f7faff)}
.login-card{width:100%;max-width:420px}
.login-ico{width:60px;height:60px;border-radius:18px;background:linear-gradient(135deg,#4f8cff,#27c4a8);color:#fff;display:grid;place-items:center;font-size:1.7rem;margin-bottom:1.2rem;box-shadow:0 12px 26px rgba(61,123,255,.3)}
.login-card h2{font-weight:800}
.input-icon{position:relative}.input-icon>i{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:#8c9abb;font-size:1.1rem;z-index:2}
.input-icon .form-control{padding-left:2.8rem;background:#f7f9fd}
.pw-toggle{position:absolute;right:.6rem;top:50%;transform:translateY(-50%);border:0;background:none;color:#8c9abb;font-size:1.1rem;z-index:3}
.btn-glow{box-shadow:0 10px 22px rgba(61,123,255,.3)}
.login-foot{text-align:center;color:var(--muted);font-size:.78rem;margin-top:2rem}
@media(max-width:900px){.login-wrap{grid-template-columns:1fr}.login-hero{display:none}}

/* ---------- Módulos especiales ---------- */
.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.5rem}
.perm-grid label{display:flex;align-items:center;gap:.5rem;border:1px solid var(--line);border-radius:10px;padding:.5rem .75rem;cursor:pointer;font-weight:500}
.perm-grid label:hover{background:var(--primary-50)}
.logo-drop{border:2px dashed #cdd8ee;border-radius:16px;padding:1.4rem;text-align:center;background:#fafcff}
.logo-drop img{max-height:110px;max-width:100%;object-fit:contain}
.money-preview{background:linear-gradient(120deg,#eef4ff,#e8f8f4);border-radius:14px;padding:1rem 1.2rem;font-size:1.5rem;font-weight:800;color:#1f3b86}
.bk-stat{display:flex;align-items:center;gap:.9rem}
.danger-zone{border:1px solid #ffd5db;background:linear-gradient(180deg,#fff7f8,#fff);border-radius:var(--radius)}
.bk-file{display:flex;align-items:center;gap:1rem;padding:.85rem 0;border-bottom:1px dashed var(--line)}.bk-file:last-child{border:0}
.bk-file .fi{width:44px;height:44px;border-radius:13px;background:var(--primary-50);color:var(--primary);display:grid;place-items:center;font-size:1.3rem;flex:none}
.recibo-doc{background:#fff;max-width:820px;margin:1rem auto;padding:2.2rem;border:1px solid var(--line);border-radius:14px}
@media print{.sidebar,.topbar,.app-footer,.no-print,.sb-backdrop{display:none!important}.main-col{margin:0!important}.content{padding:0}.recibo-doc,.card-x{border:0;box-shadow:none}body{background:#fff}}

/* ===== Sidebar de color ===== */
.sidebar{background:linear-gradient(185deg,#12396b 0%,#0e5072 55%,#0a6578 100%);border-right:0;box-shadow:4px 0 24px rgba(15,50,90,.18)}
.sb-brand{color:#fff;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:.4rem}
.sb-brand-text small{color:rgba(255,255,255,.6)}
.sb-group{color:rgba(255,255,255,.42)}
.sb-link{color:rgba(255,255,255,.76)}
.sb-link i{color:rgba(255,255,255,.55)}
.sb-link:hover{background:rgba(255,255,255,.09);color:#fff}.sb-link:hover i{color:#7ff0d6}
.sb-link.active{background:linear-gradient(90deg,rgba(255,255,255,.2),rgba(255,255,255,.07));color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.sb-link.active i{color:#7ff0d6}
.sb-link.active::before{background:#7ff0d6;left:-.8rem}
.sb-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25)}
.sb-user{background:rgba(6,25,50,.28);border-top:1px solid rgba(255,255,255,.1);color:#fff}
.sb-user-info small{color:rgba(255,255,255,.6)}
.sb-user .avatar{background:rgba(255,255,255,.18);color:#fff}
.sb-out{color:rgba(255,255,255,.7)}.sb-out:hover{color:#ffb3bd}
.sb-count{background:#ff8a99;color:#fff}.sb-count.warn{background:#ffc15a;color:#5a3900}.sb-count.info{background:#6fd3ff;color:#06415c}
.brand-ico{box-shadow:0 6px 16px rgba(0,0,0,.25)}

/* ===== KPI en tarjetas de color ===== */
.kpi{position:relative;overflow:hidden;display:block;padding:1.15rem 1.25rem 1.1rem;color:#fff;border:0;height:100%;box-shadow:0 10px 24px rgba(40,70,140,.14);transition:transform .2s,box-shadow .2s}
.kpi:hover{transform:translateY(-3px);box-shadow:0 16px 30px rgba(40,70,140,.2)}
.kpi::before{content:"";position:absolute;right:-40px;bottom:-60px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.12)}
.kpi::after{content:"";position:absolute;right:40px;top:-50px;width:100px;height:100px;border-radius:50%;background:rgba(255,255,255,.08)}
.kpi .ico{position:absolute;top:1rem;right:1rem;width:46px;height:46px;border-radius:13px;background:rgba(255,255,255,.22);color:#fff!important;display:grid;place-items:center;font-size:1.4rem;border:1px solid rgba(255,255,255,.3);backdrop-filter:blur(4px);z-index:1}
.kpi>div{position:relative;z-index:1}
.kpi .lbl{color:rgba(255,255,255,.88);font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding-right:3.4rem;min-height:1.1rem}
.kpi .val{color:#fff;font-size:1.75rem;font-weight:800;line-height:1.15;margin:.35rem 0 .85rem;letter-spacing:-.01em}
.kpi .sub{display:inline-block;background:rgba(255,255,255,.2);color:#fff;border-radius:9px;padding:.28rem .7rem;font-size:.75rem;font-weight:600}
.kpi .sub b{color:#fff!important}
.c-teal{background:linear-gradient(135deg,#34cf9f,#1b9e78)}
.c-amber{background:linear-gradient(135deg,#ffbe5c,#f39a1f)}
.c-blue{background:linear-gradient(135deg,#5b95ff,#3466dd)}
.c-rose{background:linear-gradient(135deg,#ff8595,#ee4f66)}
.c-violet{background:linear-gradient(135deg,#a68cff,#7351e0)}
.c-sky{background:linear-gradient(135deg,#43c8f5,#1799d6)}

/* ===== Banner de bienvenida ===== */
.hello{background:linear-gradient(120deg,#1a4f94 0%,#14788f 60%,#1fa58e 100%);border-radius:var(--radius);padding:1.5rem 1.8rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;position:relative;overflow:hidden;color:#fff;box-shadow:0 12px 28px rgba(20,90,140,.22)}
.hello h3{font-weight:800;font-size:1.45rem;margin:0 0 .25rem}.hello p{margin:0;color:rgba(255,255,255,.85)}
.hello .quick{display:flex;gap:.5rem;flex-wrap:wrap;position:relative;z-index:1}
.hello .btn-light{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3)!important;color:#fff}.hello .btn-light:hover{background:rgba(255,255,255,.28);color:#fff}
.hello .btn-primary{background:#fff;border-color:#fff;color:#14588a}.hello .btn-primary:hover{background:#eaf4ff;color:#0e4573}
.hello>div:first-child{position:relative;z-index:1}
.hello::after{content:"\F3AD";font-family:bootstrap-icons;position:absolute;right:30%;bottom:-48px;font-size:11rem;color:rgba(255,255,255,.07)}
.hello::before{content:"";position:absolute;left:-60px;top:-80px;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.07)}

/* ===== Tarjetas del dashboard ===== */
.card-x .card-head h5{font-size:1.02rem}
.card-x .card-head{padding-bottom:.5rem}
.mini-list li:hover{background:#f8faff}

/* ===== Portal de residentes ===== */
.portal-top{background:linear-gradient(120deg,#12396b,#0e5072 60%,#0a6578);padding:.8rem 0;color:#fff;box-shadow:0 6px 20px rgba(15,50,90,.2)}
.portal-nav{display:flex;gap:.3rem;flex-wrap:wrap}
.portal-nav a{color:rgba(255,255,255,.78);padding:.5rem .9rem;border-radius:10px;font-weight:600}
.portal-nav a:hover{background:rgba(255,255,255,.1);color:#fff}.portal-nav a.active{background:rgba(255,255,255,.2);color:#fff}
.portal-hero{background:linear-gradient(120deg,#1a4f94,#14788f 60%,#1fa58e);color:#fff;border-radius:var(--radius);padding:1.6rem 1.8rem;box-shadow:0 12px 28px rgba(20,90,140,.2);position:relative;overflow:hidden}
.portal-hero::after{content:"\F3AD";font-family:bootstrap-icons;position:absolute;right:20px;bottom:-40px;font-size:10rem;color:rgba(255,255,255,.08)}

/* ===== CRM ===== */
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(272px,1fr);gap:1rem;overflow-x:auto;padding-bottom:1rem;align-items:start}
.kb-col{background:#eef2fa;border-radius:var(--radius);padding:.7rem;min-height:260px;transition:.15s}
.kb-col.over{background:#dfe9ff;outline:2px dashed var(--primary)}
.kb-head{display:flex;align-items:center;gap:.5rem;padding:.35rem .4rem .7rem;font-weight:800}
.kb-head .dot{width:10px;height:10px;border-radius:50%}
.kb-head .cnt{margin-left:auto;background:#fff;border-radius:20px;padding:.05rem .6rem;font-size:.75rem;font-weight:700}
.kb-sum{font-size:.74rem;color:var(--muted);padding:0 .4rem .6rem;font-weight:600}
.kb-card{background:#fff;border-radius:14px;padding:.85rem .9rem;margin-bottom:.65rem;box-shadow:0 2px 8px rgba(40,70,140,.08);cursor:grab;border-left:4px solid var(--c,#3d7bff);transition:transform .15s,box-shadow .15s}
.kb-card:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(40,70,140,.14)}
.kb-card.dragging{opacity:.4}
.kb-card .nm{font-weight:700;line-height:1.25;color:var(--ink)}
.kb-card .meta{font-size:.75rem;color:var(--muted);display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.35rem}
.kb-card .money{font-weight:800;color:#1f3b86;margin-top:.45rem}
.kb-card .foot{display:flex;align-items:center;justify-content:space-between;margin-top:.55rem;font-size:.74rem}
.prio{width:9px;height:9px;border-radius:50%;display:inline-block}.prio.alta{background:#f0556b}.prio.media{background:#f5a524}.prio.baja{background:#14b8a6}
.stepper{display:flex;gap:.35rem;flex-wrap:wrap}
.stepper button{flex:1;min-width:92px;border:0;border-radius:11px;padding:.6rem .4rem;background:#eef2fa;color:#5b6a8c;font-weight:700;font-size:.78rem;transition:.15s}
.stepper button:hover{background:var(--primary-100)}
.stepper button.done{background:#dcf7f3;color:#0f8f7d}.stepper button.cur{color:#fff;background:var(--c)}
.tl{position:relative;padding-left:1.7rem}
.tl::before{content:"";position:absolute;left:.62rem;top:6px;bottom:6px;width:2px;background:var(--line)}
.tl-item{position:relative;padding-bottom:1.1rem}
.tl-item .pin{position:absolute;left:-1.7rem;top:0;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:.8rem;box-shadow:0 0 0 4px #fff}
.tl-item .t{font-weight:700}.tl-item .s{font-size:.78rem;color:var(--muted)}.tl-item .d{font-size:.86rem;color:#4a5878;margin-top:.15rem}
.risk{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .7rem;border-radius:20px;font-size:.74rem;font-weight:800}
.risk.alto{background:#ffe3e7;color:#d63a52}.risk.medio{background:#fff1d6;color:#b87800}.risk.bajo{background:#dcf7f3;color:#0f8f7d}
.profile-head{background:linear-gradient(120deg,#1a4f94,#14788f 60%,#1fa58e);border-radius:var(--radius);color:#fff;padding:1.4rem 1.6rem;display:flex;gap:1.1rem;align-items:center;flex-wrap:wrap;position:relative;overflow:hidden;box-shadow:0 12px 28px rgba(20,90,140,.2)}
.profile-head .avatar{width:68px;height:68px;border-radius:20px;font-size:1.5rem;background:rgba(255,255,255,.2);color:#fff;border:1px solid rgba(255,255,255,.35)}
.profile-head h3{font-weight:800;margin:0}.profile-head p{margin:0;opacity:.85}
.profile-head .btn-light{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3)!important;color:#fff}.profile-head .btn-light:hover{background:rgba(255,255,255,.28);color:#fff}
.task-row{display:flex;align-items:center;gap:.85rem;padding:.8rem 1rem;border-bottom:1px dashed var(--line)}.task-row:last-child{border:0}
.task-row.done .tt{text-decoration:line-through;color:var(--muted)}
.chk{width:30px;height:30px;border-radius:50%;border:2px solid #c8d3ea;background:#fff;display:grid;place-items:center;color:#fff;flex:none;transition:.15s}.chk:hover{border-color:var(--teal)}.task-row.done .chk{background:var(--teal);border-color:var(--teal)}

.kb-col{border-top:4px solid var(--c,#3d7bff);background:linear-gradient(180deg,#f1f5fd,#e9eef9)}
.kb-body{min-height:120px}
.kb-empty{border:2px dashed #cdd8ee;border-radius:14px;padding:1.4rem .5rem;text-align:center;color:#8da0c4;font-size:.82rem;font-weight:600}
.kb-empty i{display:block;font-size:1.5rem;margin-bottom:.2rem}
.kb-col:not(:has(.kb-card)) .kb-sum{opacity:.5}

/* ===== IA: asistente y chat ===== */
.ia-hero{background:linear-gradient(120deg,#12306e,#1e5bd8 55%,#13b5a3);border-radius:20px;color:#fff;padding:24px 28px;margin-bottom:18px;position:relative;overflow:hidden;box-shadow:0 14px 34px -14px rgba(30,91,216,.55)}
.ia-hero:after{content:"";position:absolute;right:-60px;top:-80px;width:260px;height:260px;border-radius:50%;background:rgba(255,255,255,.08)}
.ia-hero h3{font-size:1.3rem;font-weight:800;margin:0 0 4px}.ia-hero p{margin:0 0 14px;opacity:.88;font-size:.9rem}
.ia-ask{display:flex;gap:8px;background:#fff;border-radius:14px;padding:6px;box-shadow:0 10px 30px -12px rgba(0,0,0,.45);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:#0f172a;min-height:48px;max-height:120px}
.ia-ask button{border:0;border-radius:11px;padding:0 20px;font-weight:700;color:#fff;background:linear-gradient(135deg,#1e5bd8,#13b5a3);display:flex;align-items:center;gap:8px;white-space:nowrap}
.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,.3);background:rgba(255,255,255,.14);color:#fff;border-radius:999px;padding:5px 12px;font-size:.78rem;cursor:pointer;transition:.15s}
.ia-chip:hover{background:rgba(255,255,255,.28)}
.ia-res h5{font-size:1.05rem}.ia-meta{color:#7a88a8;font-size:.78rem}
.ia-sum{background:linear-gradient(135deg,#eaf3ff,#e8fbf6);border:1px solid #d3e4ff;border-radius:12px;padding:10px 14px;font-size:.88rem;color:#17356f;display:flex;gap:10px;align-items:flex-start;margin:12px 0}
.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 #e3e9f5;border-radius:12px;margin-top:6px}
.ia-tbl thead th{position:sticky;top:0;background:#f5f8fe;z-index:1}
.ia-side .it{display:flex;gap:8px;align-items:center;padding:7px 4px;border-bottom:1px solid #edf1f8;cursor:pointer;border-radius:8px}
.ia-side .it:hover{background:#f3f7ff}.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:#7a88a8;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ia-side .it button{border:0;background:none;color:#8a97b3;padding:2px 4px}.ia-side .it button:hover{color:#e11d48}
.ia-load{display:flex;align-items:center;gap:12px;padding:26px;color:#7a88a8}
.ia-dots span{display:inline-block;width:8px;height:8px;border-radius:50%;background:#1e5bd8;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:#e8f0ff;color:#1e5bd8;display:grid;place-items:center;flex:none;font-size:.8rem}
.seg{display:inline-flex;background:#eef2fa;border-radius:10px;padding:3px}.seg button{border:0;background:none;padding:3px 12px;border-radius:8px;font-size:.78rem;font-weight:600;color:#6b7a99}.seg button.on{background:#fff;color:#1e5bd8;box-shadow:0 1px 4px rgba(30,60,120,.15)}
.ia-toasts{position:fixed;top:18px;right:18px;z-index:2000;display:flex;flex-direction:column;gap:8px}
.ia-toast{background:#10b981;color:#fff;padding:.6rem 1rem;border-radius:12px;font-weight:600;font-size:.88rem;box-shadow:0 10px 24px -8px rgba(0,0,0,.35);transition:.3s}
.ia-toast.danger{background:#ef4444}.ia-toast.warning{background:#f59e0b}.ia-toast.out{opacity:0;transform:translateX(20px)}
.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,#1e5bd8,#13b5a3);box-shadow:0 14px 30px -8px rgba(30,91,216,.65);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 #e3e9f5;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,.45);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:0 10px 30px -14px rgba(30,60,120,.25)}
.chat-head{display:flex;align-items:center;gap:10px;padding:12px 14px;color:#fff;background:linear-gradient(120deg,#12306e,#1e5bd8 60%,#13b5a3)}
.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,.18);color:#fff;border-radius:9px;width:32px;height:32px}
.chat-av{width:36px;height:36px;border-radius:12px;background:rgba(255,255,255,.2);display:grid;place-items:center}
.chat-msgs{flex:1;overflow-y:auto;padding:14px;background:#f4f7fd;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 #e3e9f5;border-bottom-left-radius:5px}
.chat-m.me .chat-b{background:linear-gradient(135deg,#1e5bd8,#2f7bff);color:#fff;border-bottom-right-radius:5px}
.chat-sugs{display:flex;flex-wrap:wrap;gap:6px}.chat-sug{border:1px solid #d6e0f3;background:#fff;border-radius:999px;padding:5px 11px;font-size:.78rem;color:#2b3a5c}.chat-sug:hover{border-color:#1e5bd8;color:#1e5bd8}
.chat-tg{display:block;margin-top:8px;border:0;background:none;color:#1e5bd8;font-size:.78rem;font-weight:600;padding:0}.chat-tg.on{color:#7a88a8}
.chat-tbl{margin-top:6px;border:1px solid #e3e9f5;border-radius:10px;overflow:hidden;max-width:100%}.chat-tbl table{font-size:.74rem}.chat-tbl td,.chat-tbl th{padding:.3rem .5rem}
.chat-in{display:flex;gap:8px;padding:10px;border-top:1px solid #e3e9f5;background:#fff;align-items:flex-end}
.chat-in textarea{flex:1;resize:none;border:1px solid #d6e0f3;border-radius:12px;padding:.55rem .75rem;font-size:16px;background:#f4f7fd;outline:0;max-height:110px}
.chat-in textarea:focus{border-color:#1e5bd8}
.chat-in button{width:42px;height:42px;border:0;border-radius:12px;color:#fff;background:linear-gradient(135deg,#1e5bd8,#13b5a3)}.chat-in button:disabled{opacity:.5}
@media(max-width:575.98px){.chat-root:not(.chat-page) .chat-panel{inset:0;width:auto;height:auto;border-radius:0}body.chat-open .chat-fab{display:none}.ia-ask{flex-direction:column}.ia-ask button{padding:12px;justify-content:center}.ia-hero{padding:18px}}
