:root{
  --ground:#0B0E12; --card:#151A21; --raised:#1A212A; --hover:#1E2732;
  --border:#232C37; --border-2:#2C3743;
  --text:#E7ECF2; --text-2:#93A0AD; --text-3:#606D7A;
  --accent:#2E8BFF; --accent-soft:rgba(46,139,255,.14); --accent-line:rgba(46,139,255,.35);
  --ok:#2BD07A; --ok-soft:rgba(43,208,122,.14);
  --warn:#F6B23C; --warn-soft:rgba(246,178,60,.14);
  --crit:#FF5C6C; --crit-soft:rgba(255,92,108,.14);
  --font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,sans-serif;
  --font-mono:"SF Mono","Cascadia Code",ui-monospace,"Roboto Mono",Menlo,monospace;
  --radius:14px;
  --shadow:0 1px 0 rgba(255,255,255,.02) inset, 0 8px 24px rgba(0,0,0,.28);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;min-height:100%}
body{background:var(--ground);color:var(--text);font-family:var(--font-sans);
  -webkit-font-smoothing:antialiased;color-scheme:dark;font-size:14px;line-height:1.5;
  -webkit-tap-highlight-color:transparent;
  display:grid;place-items:center;min-height:100vh;min-height:100dvh;padding:24px}
h1,h2,h3,p{margin:0}
a{color:var(--accent);text-decoration:none}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}

.gate-wrap{width:100%;max-width:400px;display:flex;flex-direction:column;gap:18px}
.gate-brand{display:flex;align-items:center;gap:12px;justify-content:center}
.gate-mark{width:38px;height:38px;border-radius:10px;background:var(--accent);
  display:grid;place-items:center;box-shadow:0 0 0 1px rgba(255,255,255,.06),0 4px 14px rgba(46,139,255,.4)}
.gate-mark svg{width:21px;height:21px;color:#fff}
.gate-brand-name{font-weight:600;font-size:17px;letter-spacing:.2px}
.gate-brand-sub{font-size:11.5px;color:var(--text-3);margin-top:1px}

.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:24px}
.card h2{font-size:15px;font-weight:600;margin-bottom:4px}
.card .sub{font-size:12.5px;color:var(--text-2);margin-bottom:18px}

.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field label{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3)}
.field input{background:var(--raised);border:1px solid var(--border-2);border-radius:9px;
  color:var(--text);font:inherit;font-size:16px;padding:10px 12px;outline:none;transition:.14s}
  /* 16px: anything smaller makes iOS Safari zoom the page when the field focuses */
.field input:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}

.btn{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;
  border:none;border-radius:9px;padding:11px 14px;font:inherit;font-weight:600;
  cursor:pointer;transition:.14s}
.btn svg{width:17px;height:17px;flex:none}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{filter:brightness(1.1)}
.btn-primary:disabled{opacity:.55;cursor:default;filter:none}
.btn-ghost{background:var(--raised);color:var(--text-2);border:1px solid var(--border-2)}
.btn-ghost:hover{background:var(--hover);color:var(--text)}
.btn+.btn{margin-top:10px}

.msg{border-radius:9px;padding:10px 13px;font-size:12.5px;margin-bottom:14px;display:none}
.msg.show{display:block}
.msg.err{background:var(--crit-soft);color:var(--crit)}
.msg.ok{background:var(--ok-soft);color:var(--ok)}
.msg.info{background:var(--accent-soft);color:#cfe2ff}

.hint{font-size:11.5px;color:var(--text-3);text-align:center}
.gate-foot{font-size:11px;color:var(--text-3);text-align:center}

.pk-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.pk-row{display:flex;align-items:center;gap:12px;background:var(--raised);
  border:1px solid var(--border);border-radius:10px;padding:10px 13px}
.pk-row svg{width:18px;height:18px;color:var(--accent);flex:none}
.pk-name{font-weight:600;font-size:13px}
.pk-meta{font-size:11px;color:var(--text-3)}
.pk-del{margin-left:auto;background:none;border:none;color:var(--text-3);cursor:pointer;
  font-size:12px;padding:5px 8px;border-radius:7px}
.pk-del:hover{background:var(--crit-soft);color:var(--crit)}
.row-links{display:flex;justify-content:space-between;margin-top:16px;font-size:12.5px}
.row-links a,.row-links button{background:none;border:none;color:var(--text-3);cursor:pointer;font:inherit;font-size:12.5px;padding:0}
.row-links a:hover,.row-links button:hover{color:var(--text)}
.spin{width:15px;height:15px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;
  border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
