:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#263a51;background:#f4f7fb;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.65;cursor:wait}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #8bbbf1;outline-offset:2px}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1{font-size:31px;letter-spacing:-.8px;color:#142d50}h2{font-size:18px;color:#1a365b}p{color:#6a7b91;line-height:1.6}.eyebrow{font-size:11px;font-weight:800;letter-spacing:1.65px;color:#4c8c3b}.eyebrow.light{color:#b2e59c}.login-layout{min-height:100vh;display:grid;grid-template-columns:45% 55%;background:#f7f9fc}.login-brand{background:linear-gradient(152deg,#10294e,#244778 66%,#2d6282);padding:44px 54px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden;color:#fff}.login-brand:before{content:"";position:absolute;width:400px;height:400px;border:1px solid #ffffff1d;border-radius:50%;right:-130px;bottom:-160px;box-shadow:0 0 0 75px #ffffff08,0 0 0 155px #ffffff06;pointer-events:none}.login-logo{width:220px;max-width:90%;background:white;padding:12px;border-radius:12px;position:relative}.login-brand-inner{max-width:465px;position:relative}.login-brand h1{font-size:clamp(32px,3.7vw,53px);line-height:1.1;color:white;margin:18px 0}.login-brand p{color:#d1deee;font-size:17px}.login-points{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.login-points span{border:1px solid #ffffff30;border-radius:28px;padding:9px 12px;font-size:12px;color:#e6f4e3}.login-brand small{color:#c0d2e8;position:relative}.login-main{display:flex;justify-content:center;align-items:center;padding:40px}.login-card{width:min(440px,100%)}.login-card h2{font-size:36px;margin:12px 0}.login-card>p{font-size:15px}.form-grid,.dialog-form{display:grid;gap:17px}.login-card .form-grid{margin-top:30px}label{display:grid;gap:7px;font-weight:650;color:#405570;font-size:13px}input,select,textarea{border:1px solid #d5dfea;border-radius:9px;padding:12px 13px;min-width:0;width:100%;background:#fff;color:#263a51}input::placeholder{color:#9ba7b7}.primary,.secondary,.ghost{border-radius:9px;padding:11px 17px;border:1px solid transparent;font-weight:700;white-space:nowrap}.primary{background:#244d84;color:#fff}.primary:hover{background:#193d70}.secondary{background:#eaf0f7;color:#244d84}.secondary:hover{background:#dbe7f5}.ghost{background:#f5f7fa;color:#355376}.ghost:hover{background:#eaf0f7}.full{width:100%;padding:14px}.login-foot{margin-top:24px;padding-top:20px;border-top:1px solid #e4eaf1;color:#8390a0;font-size:12px;line-height:1.6}.error-text{color:#b73232;font-weight:600;margin:14px 0 0;min-height:20px}.shell{display:flex;min-height:100vh}.sidebar{width:250px;position:fixed;inset:0 auto 0 0;background:#172e53;color:#fff;padding:26px 15px;display:flex;flex-direction:column;z-index:2}.brand-block{padding:0 11px}.brand-block img{background:white;padding:10px;width:195px;max-width:100%;border-radius:11px}.brand-block p{margin:12px 5px 36px;font-weight:800;font-size:12px;letter-spacing:1.6px;color:#e8f0fb}.brand-block span{color:#a7d97e}.sidebar-section-label{font-size:10px;letter-spacing:1.4px;color:#a2bad7;padding:0 15px 10px;font-weight:700}.sidebar nav{display:grid;gap:5px}.sidebar nav button{color:#d5e2f2;background:transparent;border:0;border-radius:8px;text-align:left;padding:14px;display:flex;gap:13px;align-items:center}.sidebar nav button.active,.sidebar nav button:hover{background:#2c4a7b;color:#fff}.nav-icon{font-size:20px;width:20px}.sidebar-bottom{margin-top:auto;border-top:1px solid #ffffff2c;padding:19px 9px 0;display:flex;gap:10px;align-items:start}.sidebar-bottom strong{display:block;color:#e5f0fd;font-size:12px}.sidebar-bottom small{display:block;color:#aec2dd;font-size:11px;margin-top:5px;line-height:1.5}.sync-dot,.green-dot{width:8px;height:8px;background:#79b956;border-radius:50%;flex-shrink:0;margin-top:3px}.workspace{margin-left:250px;width:calc(100% - 250px);min-width:0}.topbar{height:76px;background:white;border-bottom:1px solid #e9edf3;display:flex;justify-content:flex-end;align-items:center;padding:0 36px}.topbar-right{display:flex;gap:23px;align-items:center}.connection-chip{font-size:12px;color:#517a40;background:#f1f7ee;border:1px solid #e4efdf;border-radius:30px;padding:8px 13px;display:flex;align-items:center;gap:7px}.user-info{text-align:right}.user-info strong{display:block;color:#2a4668;font-size:13px}.user-info small{display:block;color:#71839b;margin-top:3px;text-transform:capitalize}.content{padding:32px 36px;max-width:1500px;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:15px}.page-head h1{margin:9px 0 5px}.page-head p{margin:0}.notice{margin:22px 0;background:#fffaf0;border:1px solid #f1e2c8;border-left:4px solid #e2ad4f;color:#856330;padding:13px 16px;border-radius:7px;font-size:12px;line-height:1.7}.error-banner{background:#fff0f0;color:#ad3737;padding:14px 16px;border:1px solid #efcaca;border-radius:9px;margin:15px 0}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:20px 0}.stat{border-radius:13px;background:#fff;border:1px solid #e5eaf1;padding:22px;box-shadow:0 3px 14px #172b5009}.stat small{font-size:12px;color:#718199}.stat b{font-size:35px;color:#254c83;display:block;margin:12px 0 4px;letter-spacing:-1px}.stat span{font-size:11px;color:#91a0b0}.panel{border-radius:13px;background:#fff;border:1px solid #e5eaf1;padding:22px;box-shadow:0 3px 14px #172b5009}.double-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:18px}.panel-heading{display:flex;justify-content:space-between;gap:10px;align-items:center;border-bottom:1px solid #edf0f4;margin-bottom:12px}.panel-heading h2{margin:0;padding-bottom:16px}.panel-heading small{color:#8a97a9}.metric-row{padding:13px 2px;display:flex;justify-content:space-between;border-bottom:1px solid #f0f3f6;color:#657790}.metric-row strong{color:#2b4162}.metric-row:last-child{border-bottom:0}.toolbar{display:flex;align-items:center;gap:11px;flex-wrap:wrap;margin:20px 0}.toolbar input{max-width:320px}.toolbar select{max-width:260px}.toolbar-spacer{flex:1}.table-panel{padding:5px 20px}.table-scroll{width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%;white-space:nowrap}th,td{text-align:left;padding:16px 12px;border-bottom:1px solid #edf1f6}th{font-size:12px;color:#77869a;font-weight:700}td{color:#354963;font-size:13px}tbody tr:last-child td{border-bottom:0}td strong{font-weight:700;color:#254263}td small{display:block;margin-top:5px;color:#8a9aaa}.pill{display:inline-block;border-radius:20px;padding:5px 10px;background:#eaf2e4;color:#527c3e;font-weight:700;font-size:11px}.pill.gray{background:#eff2f6;color:#617289}.pill.yellow{background:#fff3d9;color:#a76b1f}.pill.red{background:#ffeded;color:#b24848}.pill.blue{background:#e8f0fc;color:#3d6ba4}.tiny-button{border:0;border-radius:6px;background:#eef3f9;color:#254c83;font-weight:700;padding:7px 9px;font-size:12px}.tiny-button:hover{background:#dfeafa}.tiny-button.danger{color:#ab4949;background:#fff0ef}.description-inline,.tip{color:#71839b;font-size:13px}.tip{margin:18px 2px}.empty{padding:30px 12px;text-align:center;color:#8390a2;white-space:normal}footer{color:#8b98aa;font-size:11px;margin:30px 0}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.dialog-head h2{margin:0}.icon-close{border:0;background:none;font-size:27px;color:#7f8b9b}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:5px}.form-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}dialog{border:0;border-radius:15px;box-shadow:0 18px 90px #0c2c4560;padding:26px;width:min(540px,94vw);max-height:90vh;overflow-y:auto}dialog::backdrop{background:#142541a3}.toast{position:fixed;right:25px;bottom:25px;background:#1f3d60;color:white;padding:14px 19px;border-radius:10px;box-shadow:0 7px 30px #0003;z-index:20;max-width:360px}.toast.bad{background:#9c3a3a}@media(max-width:1050px){.stats-grid{grid-template-columns:repeat(2,1fr)}.double-grid{grid-template-columns:1fr}}@media(max-width:760px){.login-layout{grid-template-columns:1fr}.login-brand{padding:25px;gap:24px}.login-brand h1{font-size:30px}.login-brand-inner{margin:5px 0}.login-main{padding:36px 22px}.login-card h2{font-size:29px}.sidebar{position:static;width:100%;padding:15px}.brand-block img{width:150px}.brand-block p{margin:8px 3px 10px}.sidebar nav{display:flex;overflow-x:auto;gap:4px}.sidebar nav button{min-width:max-content}.sidebar-section-label,.sidebar-bottom{display:none}.shell{display:block}.workspace{margin:0;width:100%}.topbar{padding:12px 17px;height:auto}.topbar-right{gap:11px;width:100%;justify-content:flex-end;flex-wrap:wrap}.connection-chip{display:none}.content{padding:23px 17px}.page-head{align-items:start;flex-direction:column}.stats-grid{gap:10px}.stat{padding:17px}.stat b{font-size:28px}.form-two{grid-template-columns:1fr}}

/* Externaliza Business 1.2.1: contador de alertas pendientes en el menú */
.sidebar nav .nav-count{margin-left:auto;min-width:24px;min-height:23px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:2px 7px;background:#fce9bf;color:#704607;font-weight:800;font-size:11px;line-height:1.2;letter-spacing:0;flex-shrink:0}
.sidebar nav .nav-count[hidden]{display:none!important}
.sidebar nav button.active .nav-count{background:#fff2d5;color:#7a4b09}

/* Externaliza Business 1.3: calendario de vencimientos internos */
.stats-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
.calendar-intro{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:22px 0 16px;padding:17px 20px;border-radius:12px;background:#eef5ec;border:1px solid #d9e8d7}
.calendar-intro strong{color:#295c3c;font-size:14px}.calendar-intro p{margin:5px 0 0;font-size:12px;color:#617c67}
.calendar-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:14px 0 18px}
.calendar-kpi{background:#fff;border:1px solid #e3e9f1;border-radius:12px;padding:16px 17px;display:flex;flex-direction:column;gap:5px}
.calendar-kpi span{font-size:12px;color:#738399;font-weight:600}.calendar-kpi strong{font-size:27px;color:#244d84}.calendar-kpi small{font-size:10px;color:#929eac}
.calendar-kpi-alert strong{color:#b84538}
.calendar-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:18px 0 12px}
.calendar-toolbar select{width:auto;max-width:260px;min-width:190px}
.month-switch{display:flex;align-items:center;gap:9px;margin-right:auto}
.month-switch strong{min-width:155px;text-align:center;font-size:17px;color:#24476f}
.month-switch button{border:1px solid #d8e3ee;background:#fff;color:#244d84;border-radius:8px;min-width:36px;height:39px;font-weight:750;font-size:22px}
.month-switch .month-today{font-size:12px;padding:0 11px;min-width:0}
.calendar-panel{padding:16px}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:6px}
.calendar-weekdays span{font-size:12px;color:#667d98;text-align:center;font-weight:800;padding:5px}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.calendar-blank{min-height:92px;background:#f8fafc;border:1px dashed #edf0f4;border-radius:9px}
.calendar-day{min-width:0;min-height:92px;display:flex;flex-direction:column;align-items:stretch;gap:4px;text-align:left;padding:8px;border-radius:9px;border:1px solid #e1e8f1;background:#fff;color:#344961;overflow:hidden}
.calendar-day:hover{border-color:#89a8ce;background:#f7faff}.calendar-day.is-today{border-color:#8db781;background:#f7fbf4}
.calendar-day.is-selected{box-shadow:inset 0 0 0 2px #244d84;border-color:#244d84;background:#eff5ff}
.calendar-day-number{font-size:13px;font-weight:750;color:#2c4f75}
.calendar-event{border-radius:5px;padding:4px 6px;background:#fff0d5;color:#91601c;font-size:10px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;max-width:100%}
.calendar-event.event-overdue{background:#ffe9e7;color:#b54f42}
.calendar-more{font-size:10px;font-weight:700;color:#5c7999}
.calendar-list-panel{margin-top:16px}.calendar-list-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:15px}
.calendar-list-head h2{margin:0;font-size:18px}.calendar-list-head p{margin:5px 0 0;font-size:12px}
.calendar-footnote{font-size:12px;color:#72839a;margin:15px 0 0}
@media(max-width:1150px){.calendar-summary,.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.calendar-intro{align-items:start;flex-direction:column}.calendar-summary,.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-grid,.calendar-weekdays{gap:3px}.calendar-panel{padding:9px}.calendar-blank,.calendar-day{min-height:63px}.calendar-day{padding:5px 4px}.calendar-event{font-size:9px;padding:2px 3px}.calendar-toolbar select{max-width:100%}.month-switch{width:100%}.month-switch strong{flex:1;min-width:0}.calendar-list-head{align-items:start;flex-direction:column}}
@media(max-width:400px){.calendar-event{display:none}.calendar-day.has-events .calendar-day-number:after{content:' •';color:#d58b30}.calendar-day{min-height:48px}}

.row-actions{display:flex;gap:6px;align-items:center}

/* Externaliza Business 1.4: destinatarios configurables por empresa */
.recipients-intro{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#edf5ed;border:1px solid #dbe7d9;padding:18px 20px;border-radius:12px;margin:18px 0}
.recipients-intro strong{color:#285c3e;font-size:14px}.recipients-intro p{font-size:12px;color:#677d69;margin:6px 0 0;max-width:760px}.recipient-intro-icon{font-size:30px;color:#458454}
.recipient-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:12px 0 18px}
.recipient-kpi{background:#fff;border:1px solid #e0e8f2;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:7px}
.recipient-kpi span{font-size:12px;color:#77869b}.recipient-kpi strong{font-size:27px;color:#234b80}
.recipient-tags{display:flex;flex-wrap:wrap;gap:5px;min-width:170px}
.recipient-checks{border:1px solid #d8e3ee;border-radius:11px;padding:13px;display:grid;grid-template-columns:1fr 1fr;gap:11px}
.recipient-checks legend{font-size:13px;font-weight:750;color:#244b79;padding:0 6px}
.recipient-checks label,.recipient-active{display:flex;gap:8px;align-items:center;font-size:13px;color:#355677;font-weight:600}
.recipient-checks input,.recipient-active input{width:16px;height:16px;flex:0 0 16px;accent-color:#254e81}
@media(max-width:760px){.recipient-summary{grid-template-columns:1fr}.recipient-checks{grid-template-columns:1fr}}
