:root{--bg:#0b1220;--card:#0f1b33;--text:#e5e7eb;--muted:#93a4b8;--accent:#22c55e;--danger:#ef4444;--line:#1f2a44}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:linear-gradient(180deg,#050914, #0b1220);color:var(--text)}
a{color:inherit}
.wrap{max-width:980px;margin:0 auto;padding:16px}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.badge{padding:4px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px}
.card{background:rgba(15,27,51,.85);border:1px solid rgba(31,42,68,.9);border-radius:16px;padding:14px;box-shadow:0 12px 40px rgba(0,0,0,.35)}
h1{margin:0;font-size:18px}
h2{margin:0 0 8px 0;font-size:14px;color:var(--muted);font-weight:600}
.row{display:flex;gap:12px;flex-wrap:wrap}
.col{flex:1;min-width:260px}
input,button,select{font:inherit}
input{width:100%;padding:12px;border-radius:12px;border:1px solid var(--line);background:#0a1326;color:var(--text)}
button{padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:#0a1326;color:var(--text);cursor:pointer}
button.primary{background:linear-gradient(180deg,#22c55e,#16a34a);border-color:#16a34a;color:#052012;font-weight:700}
button.danger{background:#1b0f14;border-color:#3a1621;color:#fecdd3}
button:disabled{opacity:.55;cursor:not-allowed}
.grid{display:grid;gap:10px}
.grid.cols2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid.cols5{grid-template-columns:repeat(5,minmax(0,1fr))}
.small{font-size:12px;color:var(--muted)}
.kbd{display:inline-block;padding:2px 8px;border:1px solid var(--line);border-radius:8px;background:#081025;color:var(--muted);font-size:12px}
.pad{display:grid;grid-template-columns:repeat(3,72px);gap:10px;justify-content:center}
.pad button{height:64px}
.pad .ok{background:linear-gradient(180deg,#60a5fa,#3b82f6);border-color:#3b82f6;color:#071224;font-weight:800}
.qrbox{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.qrbox canvas{background:#fff;border-radius:12px;padding:8px}
.log{white-space:pre-wrap;background:#071024;border:1px solid var(--line);border-radius:12px;padding:10px;max-height:180px;overflow:auto;font-size:12px}


select{width:100%;padding:12px;border-radius:12px;border:1px solid var(--line);background:#0a1326;color:var(--text)}
.details{border:1px solid rgba(31,42,68,.9);border-radius:14px;padding:10px;background:rgba(8,16,37,.55)}
.summary{cursor:pointer;user-select:none;color:var(--text);font-weight:700;list-style:none}
.summary::-webkit-details-marker{display:none}
.colors{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.colors button{font-weight:800}
.btn-red{background:#2a0a0a;border-color:#7f1d1d}
.btn-green{background:#0a2a16;border-color:#14532d}
.btn-yellow{background:#2a240a;border-color:#713f12}
.btn-blue{background:#0a162a;border-color:#1e3a8a}
.numbers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.numbers button{padding:14px 0;font-weight:900}
.touchpad{border:1px dashed rgba(148,163,184,.5);border-radius:16px;height:160px;background:rgba(10,19,38,.55);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.touchpad-label{position:absolute;left:10px;top:10px;font-size:12px;color:var(--muted)}
