/* Статус сети VanishKey — в стиле основного сайта:
   холодный графит + янтарный сигнал + мятный «в строю». */
:root{
  --bg:#070B0F; --bg2:#0A1116; --card:#0E151C; --card2:#121B23; --bd:#1C2A34; --bd2:#25353F;
  --tx:#E6EDF2; --dim:#7A8A97; --dim2:#B9C6D0;
  --sig:#FFB020; --sig2:#FFC65C;
  --ok:#2BD9A8; --fail:#FF6E5E; --warn:#FFD166;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body.status-page{
  background:
    radial-gradient(1100px 500px at 50% -220px, rgba(255,176,32,.09), transparent 65%),
    var(--bg);
  color:var(--tx);
  font:15px/1.6 -apple-system,'Segoe UI',Roboto,sans-serif;
  overflow-x:hidden;
  min-height:100vh;
  display:flex;flex-direction:column;
}
a{color:inherit;text-decoration:none}
::selection{background:rgba(255,176,32,.28)}
:focus-visible{outline:2px solid var(--sig);outline-offset:2px;border-radius:4px}

.status-wrap{width:100%;max-width:1080px;margin:0 auto;padding:22px 22px 8px}

/* ---------- шапка ---------- */
.status-top{
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:14px 0 10px;
}
.status-logo{display:inline-flex;align-items:center;gap:11px;font-weight:700;font-size:16px;letter-spacing:.2px}
.status-logo .lq{
  width:30px;height:30px;border-radius:8px;background:var(--card2);border:1px solid var(--bd2);
  display:inline-flex;align-items:center;justify-content:center;font-size:15px;position:relative;
}
.status-logo .lq::after{content:"";position:absolute;left:6px;right:6px;bottom:-1px;height:2px;background:var(--sig);border-radius:2px}
.status-back{
  font-family:var(--mono);font-size:12px;letter-spacing:.8px;color:var(--dim);
  border:1px solid var(--bd);border-radius:6px;padding:7px 12px;background:var(--card);
  transition:border-color .2s,color .2s;
}
.status-back:hover{border-color:var(--sig);color:var(--sig)}

.hero{text-align:center;padding:26px 0 30px}
.kicker{
  font-family:var(--mono);font-size:11px;letter-spacing:2.6px;text-transform:uppercase;
  color:var(--sig);font-weight:700;margin-bottom:14px;display:inline-flex;align-items:center;gap:10px;
}
.kicker::before,.kicker::after{content:"";width:18px;height:1px;background:var(--sig);opacity:.7}
.hero h1{font-size:clamp(30px,5.6vw,48px);line-height:1.15;letter-spacing:-.5px;margin-bottom:12px}
.hero p.sub{color:var(--dim);font-size:16px;max-width:620px;margin:0 auto}

/* ---------- панели-стекло ---------- */
.glass{
  background:var(--card);border:1px solid var(--bd);border-radius:12px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045), 0 24px 60px -42px #000;
}
.panel{position:relative;padding:24px;margin-bottom:20px;overflow:hidden}
.panel::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--sig);
  opacity:.85;
}
.panel h2{font-size:20px;margin-bottom:12px;letter-spacing:-.2px}
.panel .lead{color:var(--dim);font-size:13.5px;max-width:760px;margin-bottom:16px}

/* итоговая сводка */
.summary{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
#status-summary{font-size:17.5px;font-weight:650;flex:1;min-width:240px}
#status-summary::before{
  content:"";display:inline-block;width:9px;height:9px;border-radius:50%;
  margin-right:10px;vertical-align:1px;background:var(--warn);
}
#summary-panel[data-state="ok"] #status-summary::before{background:var(--ok);box-shadow:0 0 0 4px rgba(43,217,168,.14)}
#summary-panel[data-state="failed"] #status-summary::before{background:var(--fail);box-shadow:0 0 0 4px rgba(255,110,94,.14)}
#summary-panel[data-state="unknown"] #status-summary::before,
#summary-panel[data-state="stale"] #status-summary::before{background:var(--warn);box-shadow:0 0 0 4px rgba(255,209,102,.14)}
#status-updated{font-family:var(--mono);font-size:12px;color:var(--dim2);white-space:nowrap}
#status-error{color:var(--fail);font-size:13.5px;margin-top:8px}
.controls{margin-top:14px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
button#status-refresh{
  font:inherit;font-weight:700;color:#140D02;background:var(--sig);border:1px solid rgba(255,176,32,.9);
  border-radius:7px;padding:10px 20px;min-height:44px;cursor:pointer;transition:background .2s,box-shadow .2s;
}
button#status-refresh:hover{background:#FFC04A;box-shadow:0 0 0 3px rgba(255,176,32,.16)}
button#status-refresh:disabled{opacity:.6;cursor:wait}
.status-muted{color:var(--dim);font-size:12.5px}

/* ---------- сетка узлов ---------- */
section.block{margin-bottom:26px}
.block h2{display:flex;align-items:center;gap:10px;font-size:17px;margin-bottom:6px}
.block h2::before{content:"";width:16px;height:1px;background:var(--sig)}
.block .lead{color:var(--dim);font-size:13px;margin-bottom:14px;max-width:720px}
.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));gap:14px}

.node{
  position:relative;background:var(--card);border:1px solid var(--bd);border-radius:12px;
  padding:18px;transition:border-color .22s,background .22s;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045);
}
.node:hover{border-color:var(--bd2);background:var(--card2)}
.node h3{font-size:16px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:9px}
.node h3 .flag{font-size:18px;line-height:1}

.route{padding-top:12px}
.route+.route{margin-top:12px;border-top:1px solid var(--bd)}
.route .rhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px}
.route .rname{font-family:var(--mono);font-size:11.5px;letter-spacing:1.2px;text-transform:uppercase;color:var(--dim2)}
.route .rdot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--warn)}
.route .rdot.ok{background:var(--ok);box-shadow:0 0 0 4px rgba(43,217,168,.12)}
.route .rdot.failed{background:var(--fail);box-shadow:0 0 0 4px rgba(255,110,94,.12)}
.route .rdot.unknown,.route .rdot.stale{background:var(--warn);box-shadow:0 0 0 4px rgba(255,209,102,.12)}
.route .rstate{font-size:13px;font-weight:700}
.route .rstate.ok{color:var(--ok)}
.route .rstate.failed{color:var(--fail)}
.route .rstate.unknown,.route .rstate.stale{color:var(--warn)}
.route .rdetail{color:var(--dim);font-size:12.5px;line-height:1.55;overflow-wrap:anywhere}
.route .rtime{font-family:var(--mono);font-size:10.5px;color:var(--dim);margin-top:5px;letter-spacing:.3px}

/* статус-бейджи, которые рисует JS в старом формате (запасной вывод) */
.status-badge{font-weight:700}
.status-badge[data-state=ok]{color:var(--ok)}
.status-badge[data-state=failed]{color:var(--fail)}
.status-badge[data-state=unknown],.status-badge[data-state=stale]{color:var(--warn)}
.status-time{color:var(--dim);font-family:var(--mono);font-size:11px}

/* ---------- «как читать» ---------- */
.guide ul{list-style:none;display:grid;gap:8px;margin-bottom:14px}
.guide li{display:flex;gap:11px;align-items:baseline;color:var(--dim2);font-size:13.5px}
.guide li i{width:8px;height:8px;border-radius:50%;flex:none;transform:translateY(-1px)}
.guide li:nth-child(1) i{background:var(--ok)}
.guide li:nth-child(2) i{background:var(--fail)}
.guide li:nth-child(3) i{background:var(--warn)}
.guide li:nth-child(4) i{background:var(--dim)}
.guide p{color:var(--dim);font-size:12.5px;margin-top:6px}

/* ---------- футер ---------- */
footer.status-wrap{
  margin-top:auto;padding:18px 22px 30px;display:flex;gap:18px;flex-wrap:wrap;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.6px;color:var(--dim);
}
footer.status-wrap a:hover{color:var(--sig)}

/* ---------- баннер на главной ---------- */
.vk-status-link{
  display:block;max-width:760px;margin:0 auto 22px;padding:13px 16px;
  border:1px solid var(--bd);border-radius:9px;background:var(--card);color:var(--tx);
  text-align:left;font-size:14px;line-height:1.6;transition:border-color .2s;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045);
}
.vk-status-link:hover{border-color:var(--bd2)}
.vk-status-link strong{color:var(--sig2)}
.vk-status-link small{display:block;color:var(--dim)}
.vk-status-link[data-state=failed]{border-color:rgba(255,110,94,.55)}
.vk-status-link[data-state=stale]{border-color:rgba(255,209,102,.55)}
.vk-status-link[data-state=unknown]{border-color:rgba(255,209,102,.4)}

@media(max-width:640px){
  .status-wrap{padding:16px 16px 6px}
  .panel{padding:18px 16px}
  .summary{flex-direction:column;align-items:flex-start;gap:6px}
  #status-updated{white-space:normal}
  .hero{padding:18px 0 22px}
  footer.status-wrap{padding:14px 16px 26px}
}

/* Isolated layout corrections: no shrinking regions or fixed text widths. */
.status-page{display:block!important}
.status-page .status-top{padding:24px 22px 16px}
.status-page .hero{padding:32px 22px 38px}
.status-page main.status-wrap{padding-top:0}
.status-page .summary{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-items:start}
.status-page #status-summary{min-width:0;overflow-wrap:anywhere;line-height:1.6}
.status-page #status-updated{white-space:normal;overflow-wrap:anywhere;line-height:1.7}
.status-page .controls{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:16px}
.status-page .status-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:18px}
.status-page .node{min-width:0;padding:24px}
.status-page .node h3{font-size:19px;margin-bottom:12px}
.status-page .rhead{min-width:0;gap:16px}
.status-page .rname{min-width:0;overflow-wrap:anywhere;line-height:1.8}
.status-page .rdetail{font-size:13px;line-height:1.75;margin-top:7px;color:#a4b3bf}
.status-page .rstate{line-height:1.7}
.status-page .rtime{line-height:1.8;overflow-wrap:anywhere;margin-top:9px}
.status-page .route+.route{margin-top:20px;padding-top:20px}
.status-page .block{margin-top:32px;margin-bottom:32px}
.status-page .block h2{margin-bottom:12px}
.status-page .block .lead{margin-bottom:20px;line-height:1.8}
.status-page .panel{overflow:visible}
.status-page .panel::before{top:14px;bottom:14px;border-radius:2px}
.status-page .guide p{line-height:1.85}
.status-page footer.status-wrap{margin:0 auto;padding-top:8px;padding-bottom:32px}
@media(max-width:680px){
.status-page .status-grid{grid-template-columns:minmax(0,1fr)}
.status-page .status-top{padding:20px 16px 12px}
.status-page .hero{padding:24px 16px 30px}
.status-page .controls{grid-template-columns:minmax(0,1fr)}
.status-page #status-refresh{justify-self:start}
.status-page .node{padding:20px}
}
