
:root{--bg:#0b0f17;--border:rgba(255,255,255,.12);--text:#e9efff;--muted:rgba(233,239,255,.72);--accent:#4da3ff;--good:#21c38b;--danger:#ff5d5d;--r:18px;--shadow:0 14px 30px rgba(0,0,0,.28);}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:radial-gradient(1200px 600px at 15% 0%, rgba(77,163,255,.18), transparent 55%),radial-gradient(900px 520px at 85% 8%, rgba(33,195,139,.12), transparent 60%),var(--bg);color:var(--text)}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:980px;margin:0 auto;padding:14px 14px}
.topbar{position:sticky;top:0;z-index:5;backdrop-filter:blur(10px);background:rgba(11,15,23,.72);border-bottom:1px solid var(--border)}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.brand{font-weight:800;letter-spacing:.2px}
.badge{font-size:12px;padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.07);border:1px solid var(--border);color:var(--muted)}
.badge.ok{border-color:rgba(33,195,139,.35);color:rgba(33,195,139,.95)}
.badge.off{border-color:rgba(255,93,93,.35);color:rgba(255,93,93,.92)}
.bannerWrap{padding-top:10px;padding-bottom:6px}
.bannerImg{width:100%;height:auto;display:block;border-radius:var(--r);border:1px solid rgba(255,255,255,.08);box-shadow:var(--shadow);background:rgba(255,255,255,.02)}
.grid{display:grid;grid-template-columns:1fr;gap:14px;padding-bottom:24px}
@media(min-width:860px){.grid{grid-template-columns:1fr 1fr}.full{grid-column:1/-1}}
.card{background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.04));border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);padding:14px}
.card h2{margin:0 0 8px 0;font-size:18px}
.card p{margin:8px 0;color:var(--muted);line-height:1.45}
.field{display:flex;flex-direction:column;gap:6px;margin:10px 0}
label{font-size:13px;color:var(--muted)}
input,select,textarea{width:100%;padding:12px 12px;border-radius:14px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.18);color:var(--text);outline:none}
textarea{min-height:92px;resize:vertical}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
button{border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:var(--text);padding:10px 12px;border-radius:14px;cursor:pointer}
button.primary{background:rgba(77,163,255,.18);border-color:rgba(77,163,255,.35)}
button.good{background:rgba(33,195,139,.14);border-color:rgba(33,195,139,.35)}
button.danger{background:rgba(255,93,93,.14);border-color:rgba(255,93,93,.35)}
button:active{transform:translateY(1px)}
#qr{background:#fff;padding:16px;border-radius:16px;border:1px solid rgba(255,255,255,.18);display:inline-block;overflow:visible}
#qr img,#qr canvas{display:block}
#qrWrap{display:flex;justify-content:flex-start}
@media(max-width:520px){#qrWrap{justify-content:center}}
.toast{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.14);color:var(--text);padding:10px 12px;border-radius:14px;backdrop-filter:blur(10px);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}
.toast.show{opacity:1;transform:translateX(-50%) translateY(-2px)}
