:root{
  --bg:#10101c; --panel:#1b1b2e; --ink:#e8e8f0; --dim:#8a8aa3;
  --yellow:#ffd23f; --pink:#ff5d8f; --green:#4ade80; --blue:#5db9ff; --red:#ff6b6b;
}
*{box-sizing:border-box}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:"Press Start 2P",ui-monospace,Menlo,Consolas,monospace;
  min-height:100vh;
  background-image:
    linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);
  background-size:24px 24px;
}
.wrap{max-width:760px;margin:0 auto;padding:48px 16px 32px}
header{text-align:center;margin-bottom:28px}
h1{font-size:24px;letter-spacing:2px;color:var(--yellow);text-shadow:4px 4px 0 #000;margin:0 0 14px;line-height:1.4}
.sub{font-size:10px;color:var(--dim)}
#search{display:flex;margin:0 auto 28px;max-width:560px}
#search input{
  flex:1;background:var(--panel);border:4px solid var(--ink);color:var(--ink);
  font-family:inherit;font-size:12px;padding:14px 12px;outline:none;min-width:0;
}
#search input:focus{border-color:var(--yellow)}
#search button{
  background:var(--yellow);border:4px solid var(--ink);border-left:none;
  font-family:inherit;font-size:14px;padding:0 18px;cursor:pointer;color:#10101c;
}
#grid{display:grid;gap:16px}
.tile{
  background:var(--panel);border:4px solid var(--ink);box-shadow:6px 6px 0 #000;
  padding:18px 8px 14px;text-align:center;text-decoration:none;color:var(--ink);display:block;
}
.tile:hover{border-color:var(--yellow);transform:translate(-2px,-2px);box-shadow:8px 8px 0 #000}
.tile img{width:40px;height:40px;image-rendering:pixelated;display:block;margin:0 auto 12px}
.tile .letter{
  width:40px;height:40px;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;
  font-size:20px;background:var(--blue);color:#10101c;
}
.tile .nm{font-size:10px;line-height:1.6;word-break:break-all}
footer{text-align:center;margin-top:36px}
footer a{color:var(--dim);font-size:10px;text-decoration:none}
footer a:hover{color:var(--yellow)}
/* admin */
.box{background:var(--panel);border:4px solid var(--ink);box-shadow:6px 6px 0 #000;padding:20px;margin-bottom:24px}
.box h2{font-size:14px;color:var(--yellow);margin:0 0 16px;text-shadow:3px 3px 0 #000}
label{display:block;font-size:10px;color:var(--dim);margin:12px 0 6px}
input[type=text],input[type=password],input[type=url],input[type=number]{
  width:100%;background:var(--bg);border:4px solid var(--ink);color:var(--ink);
  font-family:inherit;font-size:12px;padding:10px;outline:none;
}
input:focus{border-color:var(--yellow)}
button.btn{
  background:var(--yellow);border:4px solid var(--ink);font-family:inherit;font-size:11px;
  padding:10px 16px;cursor:pointer;color:#10101c;margin-top:14px;
}
button.btn.ghost{background:var(--panel);color:var(--ink)}
button.btn.danger{background:var(--red);color:#fff}
.row{display:flex;gap:8px;align-items:flex-end;margin-bottom:12px}
.row .f1{flex:1;min-width:0}
.row .f2{flex:2;min-width:0}
.row button{flex-shrink:0;margin-top:0;padding:8px 10px;font-size:11px}
.msg{font-size:10px;color:var(--green);margin-top:10px;min-height:14px}
.msg.err{color:var(--red)}
.check{display:flex;align-items:center;gap:10px;font-size:11px;margin-top:12px}
.check input{width:20px;height:20px;accent-color:var(--yellow)}
