/* estado.css — Página "Estado del servidor".
   Solo la carga estado.html, así que tocarla NO obliga a bumpear widow.css. */

.sv{
  --sv-accent:#4aa3ff;
  --sv-ok:#2fd96b;
  --sv-warn:#ffb545;
  --sv-bad:#e0563b;
  --sv-panel:linear-gradient(180deg,rgba(20,14,18,.72),rgba(11,7,9,.86));
}

/* ---------- Panel en vivo ---------- */
.sv-live{
  display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.9fr);gap:22px;
  max-width:1020px;margin:0 auto;padding:26px;border-radius:20px;
  background:var(--sv-panel);border:1px solid var(--line-soft);
  box-shadow:0 30px 70px -40px #000;position:relative;overflow:hidden;
}
.sv-live::before{
  content:"";position:absolute;inset:-1px auto auto -1px;width:190px;height:190px;pointer-events:none;
  background:radial-gradient(circle at 0 0,color-mix(in srgb,var(--sv-accent) 22%,transparent),transparent 70%);
}
.sv-live.is-on{border-color:color-mix(in srgb,var(--sv-ok) 34%,transparent);}
.sv-live.is-off{border-color:color-mix(in srgb,var(--sv-bad) 34%,transparent);}
.sv-live.is-off::before{background:radial-gradient(circle at 0 0,color-mix(in srgb,var(--sv-bad) 20%,transparent),transparent 70%);}
.sv-live-main{position:relative;min-width:0;}

.sv-pill{
  display:inline-flex;align-items:center;gap:9px;padding:7px 14px;border-radius:999px;
  font-family:var(--font-display);font-weight:600;letter-spacing:.1em;text-transform:uppercase;font-size:11px;
  color:var(--silver);border:1px solid var(--line-soft);background:rgba(8,5,6,.5);
}
.sv-pill-dot{width:9px;height:9px;border-radius:50%;background:var(--muted-2);flex-shrink:0;}
.sv-live.is-on .sv-pill{color:#dff7e6;border-color:color-mix(in srgb,var(--sv-ok) 40%,transparent);background:color-mix(in srgb,var(--sv-ok) 10%,transparent);}
.sv-live.is-on .sv-pill-dot{background:var(--sv-ok);animation:svPulse 2.2s infinite;}
.sv-live.is-off .sv-pill{color:#ffc4b5;border-color:color-mix(in srgb,var(--sv-bad) 40%,transparent);background:color-mix(in srgb,var(--sv-bad) 10%,transparent);}
.sv-live.is-off .sv-pill-dot{background:var(--sv-bad);}
.sv-live.is-load .sv-pill-dot{animation:svBlink 1.1s ease-in-out infinite;}
@keyframes svPulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--sv-ok) 55%,transparent);}70%{box-shadow:0 0 0 9px transparent;}100%{box-shadow:0 0 0 0 transparent;}}
@keyframes svBlink{0%,100%{opacity:.25;}50%{opacity:1;}}

.sv-count{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-top:16px;}
.sv-count b{
  font-family:var(--font-display);font-weight:700;line-height:.9;color:var(--ink);
  font-size:clamp(52px,8vw,76px);font-variant-numeric:tabular-nums;
  text-shadow:0 0 34px color-mix(in srgb,var(--sv-accent) 30%,transparent);
}
.sv-count span{color:var(--muted);font-size:15px;}

.sv-cap{display:flex;align-items:center;gap:12px;margin-top:14px;}
.sv-cap-bar{flex:1;height:7px;border-radius:99px;background:rgba(255,255,255,.07);overflow:hidden;}
.sv-cap-bar span{
  display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,var(--sv-accent),color-mix(in srgb,var(--sv-ok) 80%,var(--sv-accent)));
  transition:width .8s cubic-bezier(.17,.89,.32,1);
}
.sv-cap-txt{font-family:var(--font-mono);font-size:12px;color:var(--muted-2);flex-shrink:0;}

.sv-spark{width:100%;height:46px;display:block;margin-top:16px;opacity:.9;}
.sv-spark-line{stroke:var(--sv-accent);stroke-width:2;vector-effect:non-scaling-stroke;stroke-linecap:round;}

.sv-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;}
.sv-chip{
  display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;
  font-family:var(--font-mono);font-size:11.5px;color:var(--silver);
  border:1px solid var(--line-soft);background:rgba(8,5,6,.45);
}
.sv-chip svg{width:13px;height:13px;opacity:.8;}
.sv-chip-soft{color:var(--muted-2);}
.sv-motd{
  margin:14px 0 0;padding:12px 14px;border-radius:12px;border:1px dashed var(--line-soft);
  background:rgba(8,5,6,.4);color:var(--silver);font-family:var(--font-mono);font-size:12.5px;line-height:1.6;
}
.sv-motd span{display:block;}

/* tarjetas Java / Bedrock */
.sv-conn{display:flex;flex-direction:column;gap:12px;min-width:0;}
.sv-edi{
  border-radius:15px;padding:15px 16px;border:1px solid var(--line-soft);
  background:rgba(8,5,6,.5);transition:border-color .3s ease,transform .3s ease;
}
.sv-edi.is-on{border-color:color-mix(in srgb,var(--sv-ok) 26%,transparent);}
.sv-edi.is-off{border-color:color-mix(in srgb,var(--sv-bad) 26%,transparent);}
.sv-edi-top{display:flex;align-items:center;gap:9px;}
.sv-edi-ico{display:inline-flex;color:var(--sv-accent);}
.sv-edi-ico svg{width:17px;height:17px;}
.sv-edi-lab{
  font-family:var(--font-display);font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  font-size:11.5px;color:var(--silver);flex:1;
}
.sv-edi-state{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10.5px;color:var(--muted-2);}
.sv-edi-state i{width:7px;height:7px;border-radius:50%;background:var(--muted-2);}
.sv-edi.is-on .sv-edi-state{color:#bfeccd;}
.sv-edi.is-on .sv-edi-state i{background:var(--sv-ok);}
.sv-edi.is-off .sv-edi-state{color:#ffc4b5;}
.sv-edi.is-off .sv-edi-state i{background:var(--sv-bad);}
.sv-edi-addr{
  font-family:var(--font-mono);font-weight:700;font-size:16px;color:var(--ink);
  margin:10px 0 12px;overflow-wrap:anywhere;
}
.sv-copy{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;
  padding:9px 12px;border-radius:10px;cursor:pointer;
  font-family:var(--font-display);font-weight:600;letter-spacing:.05em;text-transform:uppercase;font-size:11px;
  color:var(--silver);background:rgba(255,255,255,.04);border:1px solid var(--line-soft);
  transition:border-color .25s ease,color .25s ease,background .25s ease;
}
.sv-copy svg{width:14px;height:14px;}
.sv-copy:hover{color:var(--ink);border-color:color-mix(in srgb,var(--sv-accent) 45%,transparent);background:color-mix(in srgb,var(--sv-accent) 10%,transparent);}
.sv-copy.done{color:#dff7e6;border-color:color-mix(in srgb,var(--sv-ok) 45%,transparent);background:color-mix(in srgb,var(--sv-ok) 12%,transparent);}

/* ---------- Quién está jugando ---------- */
.sv-who{max-width:1020px;margin:16px auto 0;padding:18px 20px;border-radius:16px;
  background:var(--sv-panel);border:1px solid var(--line-soft);}
.sv-who-head{
  display:flex;align-items:center;gap:9px;margin-bottom:14px;
  font-family:var(--font-display);font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  font-size:11px;color:var(--silver-dim);
}
.sv-who-head svg{width:15px;height:15px;}
.sv-who-list{display:flex;flex-wrap:wrap;gap:9px;}
.sv-who-item{
  display:inline-flex;align-items:center;gap:9px;padding:6px 13px 6px 6px;border-radius:999px;
  border:1px solid var(--line-soft);background:rgba(8,5,6,.5);text-decoration:none;
  transition:border-color .25s ease,transform .25s ease,background .25s ease;
}
.sv-who-item:hover{border-color:color-mix(in srgb,var(--sv-accent) 45%,transparent);transform:translateY(-2px);background:color-mix(in srgb,var(--sv-accent) 8%,transparent);}
.sv-who-item span{font-family:var(--font-mono);font-size:12.5px;color:var(--silver);}
.sv-who-item:hover span{color:var(--ink);}
.sv-head{width:26px;height:26px;border-radius:6px;image-rendering:pixelated;display:block;background:#2a1b16;}
.sv-who-more{
  display:inline-flex;align-items:center;padding:8px 14px;border-radius:999px;
  font-family:var(--font-mono);font-size:12.5px;color:var(--muted-2);
  border:1px dashed var(--line-soft);
}

/* ---------- KPIs ---------- */
.sv-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;max-width:1020px;margin:16px auto 0;}
.sv-kpi{
  display:flex;flex-direction:column;gap:6px;align-items:center;text-align:center;
  padding:20px 14px;border-radius:15px;background:var(--sv-panel);border:1px solid var(--line-soft);
  transition:border-color .3s ease,transform .3s ease;
}
.sv-kpi:hover{border-color:color-mix(in srgb,var(--sv-accent) 35%,transparent);transform:translateY(-3px);}
.sv-kpi-v{font-family:var(--font-display);font-weight:700;font-size:32px;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums;}
.sv-kpi-l{font-family:var(--font-display);font-weight:500;letter-spacing:.12em;text-transform:uppercase;font-size:10.5px;color:var(--silver-dim);}

/* ---------- Tarjeta genérica ---------- */
.sv-card{
  max-width:1020px;margin:16px auto 0;padding:22px 24px 20px;border-radius:18px;
  background:var(--sv-panel);border:1px solid var(--line-soft);box-shadow:0 26px 60px -42px #000;
}
.sv-card-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:16px;}
.sv-card-head h3{
  font-family:var(--font-display);font-weight:600;letter-spacing:.05em;text-transform:uppercase;
  font-size:14.5px;color:var(--silver);margin:0;
}
.sv-card-note{font-family:var(--font-mono);font-size:11.5px;color:var(--muted-2);}
.sv-card-tools{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}

.sv-keys{display:inline-flex;gap:14px;}
.sv-keys span{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:11.5px;color:var(--muted-2);}
.sv-k-avg,.sv-k-peak{width:16px;height:3px;border-radius:2px;display:inline-block;}
.sv-k-avg{background:var(--sv-accent);}
.sv-k-peak{background:color-mix(in srgb,var(--sv-accent) 45%,transparent);}

.sv-seg{display:inline-flex;padding:3px;border-radius:10px;background:rgba(8,5,6,.6);border:1px solid var(--line-soft);}
.sv-seg button{
  padding:6px 13px;border:0;border-radius:8px;cursor:pointer;background:transparent;
  font-family:var(--font-display);font-weight:600;letter-spacing:.05em;text-transform:uppercase;font-size:10.5px;
  color:var(--muted-2);transition:color .2s ease,background .2s ease;
}
.sv-seg button:hover{color:var(--silver);}
.sv-seg button.on{color:var(--ink);background:color-mix(in srgb,var(--sv-accent) 18%,transparent);}

/* ---------- Disponibilidad ---------- */
.sv-bars{display:flex;gap:3px;align-items:stretch;height:44px;}
.sv-bar{flex:1;border-radius:3px;background:var(--muted-2);opacity:.75;transition:opacity .2s ease,transform .2s ease;}
.sv-bar:hover{opacity:1;transform:scaleY(1.06);}
.sv-bar.ok{background:var(--sv-ok);}
.sv-bar.warn{background:var(--sv-warn);}
.sv-bar.bad{background:var(--sv-bad);}
.sv-bars-axis{display:flex;justify-content:space-between;margin-top:9px;font-family:var(--font-mono);font-size:11px;color:var(--muted-2);}

/* ---------- Gráfica ---------- */
.sv-chart{position:relative;width:100%;}
.sv-chart-svg{width:100%;height:auto;display:block;overflow:visible;}
.sv-grid{stroke:rgba(255,255,255,.06);stroke-width:1;}
.sv-ylab,.sv-xlab{fill:var(--muted-2);font-family:var(--font-mono);font-size:12px;}
.sv-line{stroke:var(--sv-accent);stroke-width:2.4;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round;}
.sv-peak{stroke:color-mix(in srgb,var(--sv-accent) 50%,transparent);stroke-width:1.4;vector-effect:non-scaling-stroke;stroke-dasharray:5 4;}
.sv-dot{fill:#fff;stroke:var(--sv-accent);stroke-width:2.5;}
.sv-dot-peak{fill:color-mix(in srgb,var(--sv-accent) 60%,transparent);}
.sv-cursor{stroke:rgba(255,255,255,.22);stroke-width:1;stroke-dasharray:4 4;}
.sv-tip{
  position:absolute;top:-4px;transform:translateX(-50%);pointer-events:none;z-index:2;
  background:rgba(8,5,6,.96);border:1px solid var(--line-soft);border-radius:11px;padding:9px 13px;
  white-space:nowrap;box-shadow:0 16px 36px -14px #000;display:flex;flex-direction:column;gap:3px;
}
.sv-tip.flip{transform:translateX(-100%) translateX(-12px);}
.sv-tip-d{font-family:var(--font-mono);font-size:10.5px;color:var(--muted-2);}
.sv-tip-row{display:flex;align-items:center;gap:8px;font-family:var(--font-body);font-size:12.5px;color:var(--muted);}
.sv-tip-row b{font-family:var(--font-display);font-weight:700;font-size:14px;color:var(--ink);margin-left:auto;}

/* ---------- Perfil por hora ---------- */
.sv-hours-grid{display:flex;align-items:flex-end;gap:4px;height:140px;}
.sv-hour{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;position:relative;}
.sv-hour-bar{
  width:100%;border-radius:4px 4px 2px 2px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--sv-accent) 70%,transparent),color-mix(in srgb,var(--sv-accent) 18%,transparent));
  transition:filter .2s ease,transform .2s ease;
}
.sv-hour:hover .sv-hour-bar{filter:brightness(1.35);transform:scaleY(1.03);}
.sv-hour.is-best .sv-hour-bar{background:linear-gradient(180deg,var(--sv-ok),color-mix(in srgb,var(--sv-ok) 25%,transparent));}
.sv-hour-lab{
  position:absolute;bottom:-20px;font-family:var(--font-mono);font-size:10px;color:var(--muted-2);white-space:nowrap;
}
.sv-hours-note{margin:34px 0 0;font-size:13.5px;color:var(--muted);}
.sv-hours-note b{color:var(--ink);}

/* ---------- Adaptable ---------- */
@media(max-width:940px){
  .sv-live{grid-template-columns:1fr;}
  .sv-conn{flex-direction:row;}
  .sv-edi{flex:1;}
}
@media(max-width:680px){
  .sv-live{padding:20px;}
  .sv-kpis{grid-template-columns:repeat(2,1fr);}
  .sv-conn{flex-direction:column;}
  .sv-card{padding:18px 16px 16px;}
  .sv-card-tools{width:100%;justify-content:space-between;}
  .sv-hours-grid{height:110px;}
}
@media(prefers-reduced-motion:reduce){
  .sv-pill-dot,.sv-cap-bar span,.sv-bar,.sv-hour-bar,.sv-kpi,.sv-who-item{animation:none;transition:none;}
}
