:root{--navy:#071f2d;--navy2:#0c3142;--ink:#152b36;--muted:#637681;--line:#dce4e7;--paper:#f4f7f7;--orange:#ec682c;--green:#248468}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:14px "Segoe UI",Tahoma,sans-serif}button,input,select{font:inherit}.app{min-height:100vh;display:grid;grid-template-columns:236px 1fr}aside{position:sticky;top:0;height:100vh;padding:28px 24px;background:var(--navy);color:#d7e4e8;display:flex;flex-direction:column;overflow:hidden}aside:after{content:"";position:absolute;width:210px;height:210px;border:1px solid #ffffff0d;border-radius:50%;left:-120px;bottom:120px;box-shadow:0 0 0 35px #ffffff08,0 0 0 70px #ffffff05;pointer-events:none}aside img{width:138px;height:106px;object-fit:contain;object-position:left;margin-bottom:8px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.18em;color:#78929e}aside nav{margin:38px -10px;display:grid;gap:6px;z-index:1}aside nav a{color:#9cb0b8;text-decoration:none;padding:12px 14px;border-left:2px solid transparent;display:flex;gap:13px;align-items:center;transition:.2s}aside nav a:first-letter{color:#eb7b47}aside nav a:hover,aside nav a.active{background:#0d3040;color:#fff;border-color:var(--orange)}aside footer{margin-top:auto;border-top:1px solid #21404d;padding-top:18px;display:grid;gap:2px;z-index:1}aside footer small{color:#79909a}.link{border:0;background:none;color:#e9926b;padding:10px 0;text-align:left;cursor:pointer}.content{padding:42px clamp(24px,5vw,72px) 70px;max-width:1500px;width:100%}.content>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.content h1,.content h2{font-family:"Segoe UI",Tahoma,sans-serif;margin:5px 0;letter-spacing:-.025em}.content h1{font-size:30px}.system-ok{background:#e6f3ef;color:#216b58;padding:9px 13px;font-size:12px;font-weight:600}.system-ok i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#2ba77f;margin-right:8px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid var(--line);margin-bottom:27px;position:relative}.metrics:before{content:"";position:absolute;left:0;right:0;top:-4px;height:4px;background:linear-gradient(90deg,var(--orange) 0 11%,var(--navy2) 11% 100%)}.metrics article{padding:20px 22px;border-right:1px solid var(--line)}.metrics article:last-child{border:0}.metrics span{font-size:10px;font-weight:700;letter-spacing:.13em;color:var(--muted)}.metrics strong{display:block;font-size:30px;margin-top:8px}.metrics small{color:var(--muted)}.metrics .warning{box-shadow:inset 0 -3px var(--orange)}.module{scroll-margin-top:20px;background:#fff;border:1px solid var(--line);margin-top:20px}.module-head{display:flex;justify-content:space-between;align-items:center;padding:21px 24px;border-bottom:1px solid var(--line);box-shadow:inset 4px 0 var(--navy2)}#servidores .module-head{box-shadow:inset 4px 0 var(--orange)}.module-head h2{font-size:20px}.module-head button,.submit,.login-panel button{border:0;background:var(--orange);color:white;padding:10px 16px;font-weight:700;cursor:pointer;box-shadow:0 2px 0 #bd471c}.module-head button:hover,.submit:hover,.login-panel button:hover{background:#d85620}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:720px}th{text-align:left;padding:11px 20px;color:#70818a;font-size:10px;letter-spacing:.08em;background:#f8fafa}td{padding:15px 20px;border-top:1px solid #edf1f2}td small{display:block;color:var(--muted);margin-top:3px}.status{display:inline-block;padding:4px 8px;font-size:11px;font-weight:700}.status.on{background:#e5f4ef;color:#23725d}.status.off{background:#edf0f1;color:#687980}.status.pending{background:#fff2dd;color:#8b5911}.empty{text-align:center;color:var(--muted);padding:34px}.notice{padding:12px 16px;margin-bottom:18px;border-left:3px solid}.notice.error{background:#fff0ef;color:#992d28;border-color:#d8483f}.notice.success{background:#e7f4ee;color:#216b58;border-color:#2b9472}dialog{border:0;padding:0;width:min(650px,calc(100% - 30px));box-shadow:0 24px 70px #00131f66}dialog::backdrop{background:#061923bb}dialog form{padding:27px}.dialog-head{display:flex;justify-content:space-between;margin-bottom:20px}.close{border:0;background:none;font-size:28px;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}label{display:grid;gap:7px;font-weight:600;font-size:12px}input,select{width:100%;border:1px solid #bdcbd0;background:#fff;padding:11px;color:var(--ink);outline:none}input:focus,select:focus,button:focus-visible,a:focus-visible{border-color:#167a93;outline:3px solid #68bfd6;outline-offset:2px}.submit{margin-top:22px}.hint{font-size:12px;color:var(--muted)}.login-page{background:var(--navy)}.login-shell{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr}.login-brand{position:relative;overflow:hidden;padding:7vw;color:#fff;background:radial-gradient(circle at 10% 80%,#15576a 0,transparent 42%),var(--navy)}.login-brand:after{content:"";position:absolute;width:420px;height:420px;border:1px solid #ffffff18;border-radius:50%;right:-160px;bottom:-150px;box-shadow:0 0 0 55px #ffffff08,0 0 0 115px #ffffff05}.login-brand img{width:150px;height:117px;object-fit:contain;object-position:left}.login-brand p{margin-top:15vh;font-size:10px;letter-spacing:.2em;color:#80a2ae}.login-brand h1{font-weight:650;font-size:clamp(35px,4vw,62px);line-height:1.05;letter-spacing:-.045em;max-width:650px;margin:16px 0}.login-brand span{color:#aac0c8}.login-panel{background:#f7f9f9;display:grid;place-items:center;padding:40px}.login-panel>div{width:min(380px,100%)}.login-panel h2{font-size:34px;margin:8px 0;letter-spacing:-.035em}.login-panel p{color:var(--muted);margin-bottom:28px}.login-panel form{display:grid;gap:17px}.login-panel button{padding:13px;margin-top:5px;display:flex;justify-content:space-between}
@media(max-width:800px){.app{display:block}aside{position:static;height:auto;padding:14px 22px;display:grid;grid-template-columns:auto 1fr;align-items:center}aside img{margin:0;width:112px;height:70px}aside>.eyebrow{display:none}aside nav{margin:10px 0 0;grid-column:1/-1;display:flex}aside nav a{flex:1;justify-content:center}aside footer{display:none}.content{padding:26px 16px}.content>header{align-items:flex-start;gap:15px}.system-ok{display:none}.metrics{grid-template-columns:1fr 1fr}.metrics article:nth-child(2){border-right:0}.metrics article:nth-child(-n+2){border-bottom:1px solid var(--line)}.form-grid{grid-template-columns:1fr}.login-shell{grid-template-columns:1fr}.login-brand{padding:28px 38px;min-height:290px}.login-brand img{width:122px;height:95px}.login-brand p{margin-top:25px}.login-brand h1{font-size:34px;max-width:560px}.login-panel{padding:36px 25px}}
@media(max-width:560px){aside nav a{font-size:0}aside nav a span{font-size:12px}.content h1{font-size:25px}.metrics article{padding:15px}.module-head{padding:17px 15px}.module-head button{padding:9px;font-size:12px}table{min-width:0}thead{display:none}tbody,tr,td{display:block}tr{padding:12px 15px;border-top:1px solid var(--line)}td{border:0;padding:5px 0 5px 42%;position:relative;min-height:27px}td:before{position:absolute;left:0;width:38%;font-size:10px;font-weight:700;letter-spacing:.05em;color:var(--muted)}td:nth-child(1):before{content:"IDENTIFICADOR"}td:nth-child(2):before{content:"NOMBRE / HOST"}td:nth-child(3):before{content:"NIVEL / AMI"}td:nth-child(4):before{content:"GRUPO / VERSIÓN"}td:nth-child(5):before{content:"ESTADO"}td:nth-child(6):before{content:"ACTIVIDAD"}.empty{padding:22px;text-align:left}.empty:before{display:none}.login-brand{min-height:245px;padding:22px 26px}.login-brand img{width:110px;height:86px}.login-brand p{margin-top:10px}.login-brand h1{font-size:28px;margin:10px 0}.login-panel{padding:34px 24px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
#campanas .module-head{box-shadow:inset 4px 0 var(--green)}.metrics:has(article:nth-child(5)){grid-template-columns:repeat(5,1fr)}label small{font-size:12px;color:var(--muted);font-weight:400}.wide{grid-column:1/-1}.edit{border:1px solid var(--line);background:#fff;color:var(--navy2);padding:7px 10px;font-weight:700;cursor:pointer}.edit:hover{border-color:var(--orange);color:var(--orange)}input[readonly]{background:#eef2f3;color:#6a7b82}@media(max-width:800px){.metrics:has(article:nth-child(5)){grid-template-columns:1fr 1fr}.metrics:has(article:nth-child(5)) article{border-bottom:1px solid var(--line)}}@media(max-width:560px){#campanas td:nth-child(1):before{content:"CAMPAÑA"}#campanas td:nth-child(2):before{content:"MÉTODO"}#campanas td:nth-child(3):before{content:"CANALES / AGENTE"}#campanas td:nth-child(4):before{content:"SERVIDOR"}#campanas td:nth-child(5):before{content:"TIMEOUT"}#campanas td:nth-child(6):before{content:"ESTADO"}#campanas td:nth-child(7):before{display:none}#campanas td:nth-child(7){padding-left:42%}}
.server-actions{display:grid;gap:8px;min-width:146px}.server-actions .ami-test-form{display:grid;gap:5px;margin:0}.server-actions small{font-size:10px;line-height:1.3}.test-ami{border:1px solid var(--navy2);background:var(--navy2);color:#fff;padding:7px 10px;font-weight:700;cursor:pointer}.test-ami:hover{background:#12485e}.test-ami:disabled{cursor:wait;opacity:.65}.status.online{background:#e5f4ef;color:#23725d}.status.offline{background:#fff0ef;color:#992d28}.status.error{background:#fde9e2;color:#a3421f}.status.unverified{background:#fff2dd;color:#8b5911}.server-error{margin:16px 20px}.ami-test-form input[type=hidden]{display:none}@media(max-width:560px){#servidores td:nth-child(1):before{content:"SERVIDOR"}#servidores td:nth-child(2):before{content:"HOST"}#servidores td:nth-child(3):before{content:"AMI"}#servidores td:nth-child(4):before{content:"VERSIÓN"}#servidores td:nth-child(5):before{content:"ESTADO"}#servidores td:nth-child(6):before{content:"ACTIVO"}#servidores td:nth-child(7):before{content:"ACCIONES"}.server-actions{grid-template-columns:1fr 1fr;align-items:start}.server-actions .ami-test-form{grid-column:2}.server-actions small{grid-column:1/-1}}
[hidden]{display:none!important}.server-actions .service-test-form{display:grid;gap:5px;margin:0}.delete-service-form{border-top:1px solid var(--line);margin:0 27px;padding:20px 0 27px}.delete-service{border:1px solid #b8322b;background:#fff;color:#a12822;padding:10px 16px;font-weight:700;cursor:pointer}.delete-service:hover{background:#fff0ef}.service-test-form input[type=hidden],.delete-service-form input[type=hidden]{display:none}@media(max-width:560px){#servidores td:nth-child(1):before{content:"SERVICIO"}#servidores td:nth-child(2):before{content:"TIPO"}#servidores td:nth-child(3):before{content:"CONEXIÓN"}#servidores td:nth-child(4):before{content:"VERSIÓN / BASE"}.server-actions .service-test-form{grid-column:2}}
.campaign-link{border:0;background:none;color:var(--navy2);padding:0;text-align:left;cursor:pointer}.campaign-link:hover strong{color:var(--orange);text-decoration:underline}.campaign-link small{font-weight:400}.dialog-content{padding:27px}.campaign-detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.campaign-detail-grid>div{border:1px solid var(--line);padding:12px;background:#f8fafa}.campaign-detail-grid span{display:block;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.08em}.campaign-detail-grid strong{display:block;margin-top:5px}.detail-actions{display:flex;justify-content:flex-end}.list-summary{margin-top:22px}.list-summary h3{margin:0 0 10px}.list-summary table{min-width:600px}@media(max-width:560px){.campaign-detail-grid{grid-template-columns:1fr 1fr}}
.campaign-page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:20px}.campaign-page-head .eyebrow{display:block;margin-top:20px}.campaign-page-head h2{font-size:25px}.campaign-page-head>button{border:0;background:var(--orange);color:#fff;padding:10px 16px;font-weight:700;cursor:pointer;box-shadow:0 2px 0 #bd471c}.back-link{color:var(--navy2);font-size:12px;font-weight:700;text-decoration:none}.back-link:hover{color:var(--orange)}.list-module{margin-top:20px}@media(max-width:560px){.campaign-page-head{align-items:flex-start;gap:15px}.campaign-page-head>button{white-space:nowrap}}
.load-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.load-card{margin-top:20px;padding:24px}.load-card h2{margin:6px 0 20px}.load-card .submit{display:inline-block}.txt-preview{margin-top:14px;padding:12px;background:#eef6f7;border-left:3px solid var(--navy2);color:var(--muted);font-size:12px;overflow-wrap:anywhere}@media(max-width:800px){.load-grid{grid-template-columns:1fr}}
