/* ════════════════════════════════════════
   STATUSPULSE — Estilos
════════════════════════════════════════ */

:root {
  --burple:#5865F2; --burple-dim:rgba(88,101,242,.18); --burple-border:rgba(88,101,242,.4);
  --green:#3ba55c;  --green-dim:rgba(59,165,92,.18);
  --red:#ed4245;    --red-dim:rgba(237,66,69,.18);
  --yellow:#faa61a; --yellow-dim:rgba(250,166,26,.18);
  --blue:#5865F2;   /* paused state reuses burple */
  --bg:#0b0d14; --surface:#111318; --surface2:#16181f; --surface3:#0e1016;
  --border:#1e2130; --text:#dcddde; --text-dim:#72767d;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);color:var(--text);
  font-family:'Inter',sans-serif;min-height:100vh;font-size:15px;
  background-image:
    radial-gradient(ellipse 70% 35% at 50% -5%,rgba(88,101,242,.07) 0%,transparent 70%);
}
body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:100;
  background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.025) 2px,rgba(0,0,0,.025) 4px);
}
::-webkit-scrollbar{width:6px;height:6px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}

/* ── Section headings keep Space Mono ── */
.sec-head{font-family:'Space Mono',monospace;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#fff;}
.sec-label{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-dim);}
.tnum{font-variant-numeric:tabular-nums;}

/* ── Pulse dots ── */
.pdot{width:11px;height:11px;border-radius:50%;flex-shrink:0;position:relative;cursor:default;}
.pdot.up    {background:var(--green); animation:kpg 2.2s infinite;}
.pdot.down  {background:var(--red);   animation:kpr 2.2s infinite;}
.pdot.warn  {background:var(--yellow);animation:kpy 2.2s infinite;}
.pdot.paused{background:var(--burple);animation:kpb 2.2s infinite;}
@keyframes kpg{0%{box-shadow:0 0 0 0 rgba(59,165,92,.7)} 70%{box-shadow:0 0 0 7px rgba(59,165,92,0)} 100%{box-shadow:0 0 0 0 rgba(59,165,92,0)}}
@keyframes kpr{0%{box-shadow:0 0 0 0 rgba(237,66,69,.7)} 70%{box-shadow:0 0 0 7px rgba(237,66,69,0)} 100%{box-shadow:0 0 0 0 rgba(237,66,69,0)}}
@keyframes kpy{0%{box-shadow:0 0 0 0 rgba(250,166,26,.7)} 70%{box-shadow:0 0 0 7px rgba(250,166,26,0)} 100%{box-shadow:0 0 0 0 rgba(250,166,26,0)}}
@keyframes kpb{0%{box-shadow:0 0 0 0 rgba(88,101,242,.7)} 70%{box-shadow:0 0 0 7px rgba(88,101,242,0)} 100%{box-shadow:0 0 0 0 rgba(88,101,242,0)}}

/* Latency tooltip on dot */
.lat-tip{
  position:absolute;bottom:calc(100% + 10px);left:50%;transform:translateX(-50%);
  background:#1a1d27;border:1px solid var(--burple-border);border-radius:7px;
  padding:6px 10px;pointer-events:none;opacity:0;transition:opacity .18s;
  z-index:500;white-space:nowrap;text-align:center;min-width:82px;
}
.lat-tip .lt-ms{color:#fff;font-weight:700;font-size:13px;display:block;line-height:1.3;}
.lat-tip .lt-lbl{color:var(--text-dim);font-size:9px;display:block;margin-top:1px;text-transform:uppercase;letter-spacing:.1em;}
.lat-tip::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#1a1d27;}
.pdot:hover .lat-tip{opacity:1;}

/* ── Uptime bars ── */
.bar-container{display:flex;gap:2px;height:26px;align-items:stretch;}
.bar-seg{flex:1;border-radius:2px;position:relative;cursor:pointer;transition:transform .1s,filter .1s;}
.bar-seg:hover{transform:scaleY(1.35);filter:brightness(1.6);z-index:3;}
.seg-green {background:var(--green); opacity:.68;}
.seg-yellow{background:var(--yellow);opacity:.82;}
.seg-red   {background:var(--red);   opacity:.88;}
.seg-none  {background:var(--border); opacity:.5;}  /* sem dados */
.seg-today {opacity:1!important;}
.seg-tip{
  position:absolute;bottom:calc(100% + 9px);left:50%;transform:translateX(-50%);
  background:#1a1d27;border:1px solid var(--border);border-radius:6px;
  padding:5px 10px;font-size:10px;white-space:nowrap;color:var(--text);
  pointer-events:none;opacity:0;transition:opacity .15s;z-index:400;line-height:1.6;
}
.bar-seg:hover .seg-tip{opacity:1;}

/* ── Cards ── */
.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;transition:border-color .2s;}
.card:hover{border-color:rgba(88,101,242,.2);}

/* ── Badges ── */
.badge {
  display: inline-block; /* Necessário para respeitar a largura fixa */
  text-align: center;
  font-size: 11px;
  padding: 3px 10px;
  border-radius: 20px;
  font-weight: 600;
  letter-spacing: .03em;
  white-space: nowrap;
}

/* Fixa o tamanho da coluna da direita para que todas as barras terminem alinhadas */
.svc-badge-col {
  width: 95px; 
}

.badge-up    {background:var(--green-dim); color:var(--green); border:1px solid rgba(59,165,92,.3);}
.badge-down  {background:var(--red-dim);   color:var(--red);   border:1px solid rgba(237,66,69,.3);}
.badge-warn  {background:var(--yellow-dim);color:var(--yellow);border:1px solid rgba(250,166,26,.3);}
.badge-paused{background:var(--burple-dim);color:var(--burple);border:1px solid var(--burple-border);}

/* ── Stat card ── */
.stat-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:20px 22px;position:relative;overflow:hidden;}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--burple),transparent);opacity:.7;}

/* ── Entrance ── */
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.fade-up{animation:fadeUp .45s ease both;}
.d1{animation-delay:.04s}.d2{animation-delay:.08s}.d3{animation-delay:.12s}
.d4{animation-delay:.16s}.d5{animation-delay:.20s}.d6{animation-delay:.24s}
.d7{animation-delay:.28s}.d8{animation-delay:.32s}

/* ── Expand button ── */
.xbtn{
  background:none;border:none;cursor:pointer;display:flex;align-items:center;gap:8px;
  color:var(--text);font-family:'Inter',sans-serif;font-size:14px;font-weight:500;
  padding:0;flex:1;min-width:0;text-align:left;transition:color .15s;
}
.xbtn:hover{color:#fff;}
.arrow{
  display:inline-flex;align-items:center;justify-content:center;
  width:18px;height:18px;border:1px solid var(--border);border-radius:4px;
  font-size:11px;flex-shrink:0;transition:transform .25s,background .2s,border-color .2s;
  color:var(--text-dim);
}
.xbtn.open .arrow{transform:rotate(90deg);background:var(--burple-dim);border-color:var(--burple-border);color:var(--burple);}

/* ── Detail panel ── */
.dpanel{max-height:0;overflow:hidden;transition:max-height .45s cubic-bezier(.4,0,.2,1),opacity .3s ease;opacity:0;}
.dpanel.open{max-height:1300px;opacity:1;}
.d-inner{border-top:1px solid var(--border);margin-top:14px;padding-top:22px;}

/* ── Action buttons inside expanded panel ── */
.act-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:8px;border:1px solid var(--border);
  background:none;cursor:pointer;color:var(--text-dim);transition:all .18s;flex-shrink:0;
}
.act-btn:hover{border-color:var(--burple-border);background:var(--burple-dim);color:var(--burple);}
.act-btn.danger:hover{border-color:rgba(237,66,69,.35);background:var(--red-dim);color:var(--red);}
.act-btn.pause-active{border-color:var(--burple-border);background:var(--burple-dim);color:var(--burple);}

/* ── Mini stat grid ── */
.mstat-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--surface3);}
.mstat{padding:15px 17px;border-right:1px solid var(--border);}
.mstat:last-child{border-right:none;}
@media(max-width:640px){
  .mstat-grid{grid-template-columns:repeat(2,1fr);}
  .mstat:nth-child(2){border-right:none;}
  .mstat:nth-child(3){border-top:1px solid var(--border);}
  .mstat:nth-child(4){border-top:1px solid var(--border);border-right:none;}
}

/* ── Chart ── */
.chart-wrap{
  position:relative;width:100%;
  background:var(--surface3);border:1px solid var(--border);border-radius:10px;
  padding:12px 8px 12px 8px;overflow:visible;
}
canvas.rchart{display:block;width:100%!important;height:155px!important;}
canvas.rchart-overlay{
  display:block;position:absolute;top:12px;left:8px;
  width:calc(100% - 16px)!important;height:155px!important;pointer-events:none;
}

/* Chart tooltip */
.chart-tip{
  position:absolute;background:#13151f;
  border:1px solid var(--burple-border);border-radius:8px;
  padding:8px 12px;font-size:12px;pointer-events:none;display:none;z-index:20;
  white-space:nowrap;filter:drop-shadow(0 3px 10px rgba(0,0,0,.6));
}
.chart-tip.visible{display:block;}
.chart-tip .ct-ms{color:#fff;font-weight:700;font-size:15px;display:block;line-height:1.4;}
.chart-tip .ct-dt{color:var(--burple);font-size:10px;display:block;margin-top:2px;font-family:'Space Mono',monospace;}
.chart-tip::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#13151f;}
.chart-tip::before{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:var(--burple-border);margin-top:1px;}
.chart-tip.below::after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:#13151f;}
.chart-tip.below::before{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:var(--burple-border);margin-top:0;margin-bottom:1px;}
.ch-line{position:absolute;width:1px;background:rgba(255,255,255,.08);pointer-events:none;display:none;}

/* ── Download button ── */
.dl-btn{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--burple-dim);border:1px solid var(--burple-border);color:var(--burple);
  padding:9px 18px;border-radius:8px;font-family:'Inter',sans-serif;
  font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;
}
.dl-btn:hover{background:rgba(88,101,242,.28);border-color:rgba(88,101,242,.65);transform:translateY(-1px);}

/* ── Layout ── */
.main-wrap{max-width:980px;margin:0 auto;padding:0 24px;}
@media(max-width:520px){.main-wrap{padding:0 16px;}}

.svc-row-inner{display:flex;align-items:center;gap:13px;}
.svc-pct{min-width:68px;font-size:13px;font-weight:600;}
.svc-bar{flex:1;min-width:0;overflow:hidden;}
@media(max-width:600px){.svc-badge-col{display:none;}.svc-pct{min-width:54px;font-size:12px;}}
@media(max-width:420px){.svc-pct{display:none;}}

#stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
@media(max-width:640px){#stats-grid{grid-template-columns:repeat(2,1fr);}}

.hdr-right{display:flex;align-items:center;gap:14px;}
@media(max-width:540px){.hdr-times,.hdr-sep{display:none;}}

.hero-inner{display:flex;align-items:center;gap:22px;}
@media(max-width:500px){.hero-inner{flex-direction:column;align-items:flex-start;gap:12px;}.hero-badge{margin-left:0!important;}}

.resp-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--surface3);}
.resp-cell{padding:15px 17px;border-right:1px solid var(--border);}
.resp-cell:last-child{border-right:none;}
@media(max-width:500px){.resp-grid{grid-template-columns:1fr;}.resp-cell{border-right:none;border-bottom:1px solid var(--border);}.resp-cell:last-child{border-bottom:none;}}

.bar-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
.leg-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text-dim);}
.leg-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0;}

/* ── + Add button ── */
.add-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:8px;
  background:var(--burple);border:none;color:#fff;font-size:20px;line-height:1;
  cursor:pointer;transition:all .18s;font-weight:300;flex-shrink:0;
}
.add-btn:hover{background:#4752c4;transform:scale(1.07);}

/* ── Modal overlay ── */
.modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(4px);
  z-index:1000;display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;transition:opacity .22s;padding:16px;
}
.modal-overlay.open{opacity:1;pointer-events:all;}
.modal{
  background:#13151f;border:1px solid var(--border);border-radius:14px;
  width:100%;max-width:480px;overflow:hidden;
  transform:translateY(16px) scale(.97);transition:transform .25s;
}
.modal-overlay.open .modal{transform:translateY(0) scale(1);}

.modal-header{
  background:linear-gradient(135deg,var(--burple) 0%,#4752c4 100%);
  padding:22px 24px 20px;
}
.modal-header h2{font-size:17px;font-weight:700;color:#fff;display:flex;align-items:center;gap:10px;}
.modal-header p{font-size:13px;color:rgba(255,255,255,.75);margin-top:5px;}

.modal-body{padding:24px;}

.modal-field{margin-bottom:18px;}
.modal-field label{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--text);margin-bottom:8px;}
.modal-field input{
  width:100%;background:var(--surface2);border:1px solid var(--border);
  border-radius:8px;padding:11px 14px;font-size:14px;font-family:'Inter',sans-serif;
  color:var(--text);outline:none;transition:border-color .18s;
}
.modal-field input:focus{border-color:var(--burple);}
.modal-field input::placeholder{color:var(--text-dim);}

/* Monitor type selector */
.type-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:4px;}
.type-opt{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:13px 8px;border:1px solid var(--border);border-radius:9px;
  background:var(--surface2);cursor:pointer;transition:all .18s;font-size:12px;font-weight:500;
  color:var(--text-dim);text-align:center;
}
.type-opt:hover{border-color:var(--burple-border);color:var(--text);}
.type-opt.selected{border-color:var(--burple);background:var(--burple-dim);color:var(--burple);}
.type-opt svg{opacity:.7;}
.type-opt.selected svg{opacity:1;}

.modal-hint{font-size:11px;color:var(--text-dim);margin-top:10px;display:flex;align-items:flex-start;gap:6px;line-height:1.5;}

.modal-footer{display:flex;gap:10px;justify-content:flex-end;padding:0 24px 24px;}
.btn-cancel{
  padding:10px 20px;border-radius:8px;border:1px solid var(--border);
  background:none;color:var(--text);font-family:'Inter',sans-serif;font-size:14px;
  font-weight:500;cursor:pointer;transition:background .18s;display:flex;align-items:center;gap:6px;
}
.btn-cancel:hover{background:var(--surface2);}
.btn-submit{
  padding:10px 22px;border-radius:8px;border:none;
  background:var(--burple);color:#fff;font-family:'Inter',sans-serif;font-size:14px;
  font-weight:600;cursor:pointer;transition:background .18s;display:flex;align-items:center;gap:7px;
}
.btn-submit:hover{background:#4752c4;}

/* ── Edit modal specific ── */
.edit-modal-header{background:linear-gradient(135deg,#2d3260 0%,#1e2140 100%);}

/* ── Confirm delete modal ── */
.del-modal-header{background:linear-gradient(135deg,#5a1a1e 0%,#3d1215 100%);}

/* paused row styling */
.svc-row-paused .xbtn{opacity:.65;}
.svc-row-paused .svc-bar{opacity:.4;}

/* ok-glow */
.ok-glow{color:var(--green);text-shadow:0 0 24px rgba(59,165,92,.35);}

/* backend blink */
@keyframes be-blink{0%,49%{opacity:1}50%,100%{opacity:0}}
#be-dot{animation:be-blink 1s step-end infinite;}

/* ── Login screen inputs ── */
#login-email::placeholder,
#login-password::placeholder { color: var(--text-dim); }
#login-email:focus,
#login-password:focus { border-color: var(--burple) !important; }