:root{
  --bg:#f4f6fb; --panel:#fff; --ink:#1b2333; --muted:#7c869c; --line:#e7ebf3;
  --brand:#3b5bfd; --brand-ink:#2440e6;
  --ok:#18b26b; --ok-bg:#e7f8f0;
  --warn:#e8a52a; --warn-bg:#fdf4e3;
  --bad:#e23d51; --bad-bg:#fdecee;
  --muted-bg:#eef1f6;
  --shadow:0 1px 2px rgba(20,30,60,.04),0 6px 20px rgba(20,30,60,.06);
  --radius:14px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--brand);text-decoration:none}
b{font-weight:700}

/* Topbar */
.topbar{display:flex;align-items:center;gap:24px;padding:0 24px;height:60px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.brand{display:flex;align-items:center;gap:9px;font-size:16px;color:var(--ink);font-weight:500}
.brand b{color:var(--brand)}
.brand-dot{width:12px;height:12px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px rgba(59,91,253,.15)}
.topnav{display:flex;gap:6px;margin-left:8px}
.topnav a{padding:7px 12px;border-radius:8px;color:var(--muted);font-weight:500}
.topnav a.active,.topnav a:hover{background:var(--muted-bg);color:var(--ink)}
.topbar-actions{margin-left:auto}

.container{max-width:1400px;margin:0 auto;padding:24px}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:9px;padding:9px 16px;font:inherit;font-weight:600;cursor:pointer;transition:.15s}
.btn-primary{background:var(--brand);color:#fff}
.btn-primary:hover{background:var(--brand-ink)}
.btn-ghost{background:transparent;color:var(--muted);border-color:var(--line)}
.btn-ghost:hover{background:var(--muted-bg);color:var(--ink)}
.btn-sm{padding:5px 10px;font-size:13px}

/* Summary cards */
.summary{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:20px}
.scard{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.scard .k{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.scard .v{font-size:28px;font-weight:800;margin-top:4px;letter-spacing:-.02em}
.scard.alert{background:var(--bad-bg);border-color:#f6c9cf}
.scard.alert .v,.scard.alert .k{color:var(--bad)}
.scard .v.ok{color:var(--ok)} .scard .v.bad{color:var(--bad)} .scard .v.warn{color:var(--warn)} .scard .v.muted{color:var(--muted)}

/* Toolbar */
.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.tabs{display:flex;gap:4px;background:var(--panel);padding:4px;border-radius:10px;border:1px solid var(--line)}
.tabs a{padding:7px 14px;border-radius:7px;color:var(--muted);font-weight:600}
.tabs a.active{background:var(--brand);color:#fff}
.toolbar .spacer{flex:1}
.field{display:flex;align-items:center;gap:6px}
.field select,.field input,.search input{border:1px solid var(--line);background:var(--panel);border-radius:9px;padding:9px 12px;font:inherit;color:var(--ink)}
.search input{width:240px}

/* Table card */
.tablewrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
table.grid{width:100%;border-collapse:collapse}
table.grid th{ text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;padding:14px 16px;border-bottom:1px solid var(--line);white-space:nowrap}
table.grid td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
table.grid tr:last-child td{border-bottom:none}
table.grid tbody tr:hover{background:#fafbfe}
.site-name{font-weight:700;color:var(--ink)}
.site-url{color:var(--muted);font-size:12.5px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.tag-chip{display:inline-block;background:var(--muted-bg);color:var(--muted);font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px;margin-top:3px}

/* Status pill */
.pill{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:12.5px;padding:4px 10px;border-radius:20px}
.pill::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.pill.ok{color:var(--ok);background:var(--ok-bg)}
.pill.warn{color:var(--warn);background:var(--warn-bg)}
.pill.bad{color:var(--bad);background:var(--bad-bg)}
.pill.muted{color:var(--muted);background:var(--muted-bg)}

.availbar{height:6px;border-radius:4px;background:var(--muted-bg);overflow:hidden;width:70px;margin-top:5px}
.availbar > i{display:block;height:100%;background:var(--ok)}
.num{font-variant-numeric:tabular-nums;font-weight:700}
.sub{color:var(--muted);font-size:12px}
.badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px}
.badge.ok{color:var(--ok);background:var(--ok-bg)} .badge.warn{color:var(--warn);background:var(--warn-bg)} .badge.bad{color:var(--bad);background:var(--bad-bg)} .badge.muted{color:var(--muted);background:var(--muted-bg)}

/* Sparkline + segments */
.sparkcell{width:200px}
.spark{width:180px;height:34px;display:block}
.segs{display:flex;gap:2px;margin-top:4px;width:180px}
.segs > i{flex:1;height:6px;border-radius:2px;background:var(--muted-bg)}
.segs > i.u{background:var(--ok)} .segs > i.d{background:var(--bad)} .segs > i.p{background:var(--warn)} .segs > i.n{background:var(--muted-bg)}

.rowmenu{position:relative}
.rowmenu-btn{border:none;background:none;color:var(--muted);cursor:pointer;font-size:20px;padding:4px 8px;border-radius:6px;line-height:1}
.rowmenu-btn:hover{background:var(--muted-bg)}
.rowmenu-pop{position:absolute;right:0;top:100%;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);min-width:150px;padding:6px;z-index:10}
.rowmenu-pop a{display:block;padding:8px 10px;border-radius:7px;color:var(--ink);font-weight:500}
.rowmenu-pop a:hover{background:var(--muted-bg)}
.rowmenu-pop a.danger{color:var(--bad)}

.empty{padding:60px 20px;text-align:center;color:var(--muted)}

/* Modal */
.modal-overlay{position:fixed;inset:0;background:rgba(16,24,45,.45);display:flex;align-items:flex-start;justify-content:center;padding:60px 20px;z-index:50;overflow:auto}
.modal-overlay[hidden]{display:none}
.modal{background:#fff;border-radius:16px;width:560px;max-width:100%;box-shadow:0 20px 60px rgba(16,24,45,.3);animation:pop .15s ease}
@keyframes pop{from{transform:translateY(-8px);opacity:.6}to{transform:none;opacity:1}}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--line)}
.modal-head h3{margin:0;font-size:18px}
.modal-close{border:none;background:none;font-size:26px;color:var(--muted);cursor:pointer;line-height:1}
.modal-body{padding:20px 22px;display:flex;flex-direction:column;gap:14px}
.modal-body label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13px;color:var(--ink)}
.modal-body input,.modal-body select{border:1px solid var(--line);border-radius:9px;padding:10px 12px;font:inherit}
.modal-body input:focus,.modal-body select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(59,91,253,.12)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}

/* Detail page */
.detail-head{display:flex;align-items:center;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.detail-head h1{font-size:22px;margin:0}
.detail-head .site-url{max-width:none}
.back{color:var(--muted);font-weight:600}
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}
.panel h2{font-size:14px;margin:0 0 14px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.chart-box{height:280px;position:relative}
.legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.legend .item{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);font-weight:600}
.legend .dot{width:10px;height:10px;border-radius:50%}
.uptime-grid{display:flex;flex-wrap:wrap;gap:4px}
.uptime-grid .cell{width:13px;height:13px;border-radius:3px;background:var(--muted-bg)}
.uptime-grid .cell.u{background:var(--ok)} .uptime-grid .cell.d{background:var(--bad)} .uptime-grid .cell.p{background:var(--warn)}
.incidents{width:100%;border-collapse:collapse}
.incidents th{text-align:left;font-size:11px;text-transform:uppercase;color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--line)}
.incidents td{padding:11px 12px;border-bottom:1px solid var(--line)}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}

@media (max-width:1100px){.summary{grid-template-columns:repeat(2,1fr)}.metrics{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}}
@media (max-width:720px){.summary{grid-template-columns:1fr}.form-row{grid-template-columns:1fr}}

/* --- v4: login, configuración, notificaciones --- */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#eef1fb,#f4f6fb)}
.login-card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:34px;width:340px;display:flex;flex-direction:column;gap:14px}
.login-brand{display:flex;align-items:center;gap:9px;font-size:22px}
.login-brand b{color:var(--brand)}
.login-sub{margin:-8px 0 6px;color:var(--muted)}
.login-card label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13px}
.login-card input{border:1px solid var(--line);border-radius:9px;padding:10px 12px;font:inherit}
.login-card input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(59,91,253,.12)}
.login-error{background:var(--bad-bg);color:var(--bad);padding:9px 12px;border-radius:9px;font-weight:600;font-size:13px}

.wa-counter{display:inline-flex;align-items:center;gap:5px;background:var(--muted-bg);color:var(--ink);border-radius:20px;padding:6px 12px;font-size:13px;font-weight:600;margin-right:6px}
.wa-counter.bad{background:var(--bad-bg);color:var(--bad)}
.topbar-actions{display:flex;align-items:center;gap:10px}

.range-note{color:var(--muted);font-size:12.5px;margin:-4px 0 12px}
.notice{background:var(--ok-bg);color:var(--ok);border:1px solid #bfe9d4;padding:11px 14px;border-radius:10px;font-weight:600;margin-bottom:16px}

.notify-box{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fafbff}
.notify-title{font-weight:700;margin-bottom:4px}
.notify-sub{color:var(--muted);font-size:12.5px;margin-bottom:8px}
.acct-nums{display:flex;flex-direction:column;gap:7px}
.chk{display:flex;align-items:center;gap:8px;font-weight:500;font-size:13px;cursor:pointer}
.chk input{width:auto}
.chk-inline{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px}
.chk-inline input{width:auto}

.stack{display:flex;flex-direction:column;gap:12px}
.stack label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13px}
.stack input,.stack select{border:1px solid var(--line);border-radius:9px;padding:10px 12px;font:inherit}
.stack input:focus,.stack select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(59,91,253,.12)}
.field input[type=date]{border:1px solid var(--line);border-radius:9px;padding:8px 10px;font:inherit}

/* --- v5: grupos, carga masiva, página pública --- */
.link-row{display:flex;align-items:center;gap:6px}
.link-input{border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12px;width:280px;color:var(--muted);background:#fafbff}
.bulk-form textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:12px;font:13px/1.5 ui-monospace,Menlo,Consolas,monospace;resize:vertical}
.bulk-form textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(59,91,253,.12)}
.bulk-form > label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13px;margin-bottom:14px}
.bulk-form .form-row{margin-bottom:14px}
.bulk-form select,.bulk-form input{border:1px solid var(--line);border-radius:9px;padding:10px 12px;font:inherit}
code{background:var(--muted-bg);padding:1px 6px;border-radius:5px;font-size:12px}

/* Página pública */
.pub-wrap{max-width:900px;margin:0 auto;padding:28px 20px}
.pub-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.pub-head .brand{font-size:18px}
.pub-period{display:flex;gap:4px;background:var(--panel);padding:4px;border-radius:10px;border:1px solid var(--line)}
.pub-period a{padding:6px 12px;border-radius:7px;color:var(--muted);font-weight:600;font-size:13px}
.pub-period a.active{background:var(--brand);color:#fff}
.pub-banner{border-radius:12px;padding:16px 20px;font-weight:700;font-size:16px;margin-bottom:20px}
.pub-banner.ok{background:var(--ok-bg);color:var(--ok)}
.pub-banner.bad{background:var(--bad-bg);color:var(--bad)}
.pub-banner.warn{background:var(--warn-bg);color:var(--warn)}
.pub-title{font-size:22px;margin:0 0 2px}
.pub-foot{text-align:center;color:var(--muted);font-size:12px;margin-top:20px}
.pub-empty{max-width:420px;margin:14vh auto;text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:40px;box-shadow:var(--shadow)}
.pub-empty h2{margin:0 0 6px}
