:root{
  --bg:#14101c; --panel:#1e1830; --panel2:#262040;
  --ink:#f2ecff; --muted:#a99fd0; --line:#3a3158;
  --acc:#c9a7ff; --acc2:#8f7bff;
  --low:#ff7a7a; --lowmod:#ffab6b; --mod:#ffd76b; --modhigh:#9fe870; --high:#5eead4;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;margin:0;min-height:100vh}
a{color:var(--acc)}
.wrap{max-width:1100px;margin:0 auto;padding:24px 16px 64px}

/* gateway */
.gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.gate-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:36px 32px;max-width:420px;width:100%;text-align:center}
.gate-card h1{margin:0 0 6px;font-size:1.6rem}
.gate-card p{color:var(--muted);margin:0 0 20px}
.gate-card input{width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:var(--panel2);color:var(--ink);font-size:1rem;margin-bottom:12px}
.gate-card button{width:100%;padding:12px;border:0;border-radius:10px;background:var(--acc2);color:#fff;font-size:1rem;font-weight:600;cursor:pointer}
.gate-card button:hover{filter:brightness(1.12)}
.gate-err{color:var(--low);min-height:1.4em;margin:8px 0 0;font-size:.9rem}
.shake{animation:shake .35s}
@keyframes shake{25%{transform:translateX(-6px)}50%{transform:translateX(6px)}75%{transform:translateX(-4px)}}

/* hub */
.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:24px}
.hub-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px;text-decoration:none;color:var(--ink);display:block}
.hub-card:hover{border-color:var(--acc)}
.hub-card h3{margin:0 0 8px}
.hub-card p{margin:0;color:var(--muted);font-size:.92rem}
.hub-card.soon{opacity:.45;pointer-events:none}

/* gallery */
.filters{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px 18px;margin:18px 0 8px}
.f-field label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}
.f-field .val{color:var(--ink);font-weight:600}
.f-row{display:flex;gap:8px;align-items:center}
input[type=range]{flex:1;accent-color:var(--acc2)}
select{background:var(--panel2);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%}
.f-check{display:flex;align-items:center;gap:8px;font-size:.92rem}
.f-check input{width:18px;height:18px;accent-color:var(--acc2)}
.f-actions{display:flex;gap:10px;align-items:end}
.btn{background:var(--panel2);border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:8px 14px;cursor:pointer}
.btn:hover{border-color:var(--acc)}
.count{color:var(--muted);margin:14px 2px;font-size:.92rem}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;flex-direction:column}
.card img{width:100%;display:block;background:#0d0a14;aspect-ratio:16/9;object-fit:contain}
.card-body{padding:16px;display:flex;flex-direction:column;gap:10px;flex:1}
.card-body h3{margin:0;font-size:1.1rem}
.moon{color:var(--acc);font-size:.88rem;font-style:italic}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{background:var(--panel2);border:1px solid var(--line);border-radius:20px;padding:4px 10px;font-size:.8rem}
.chip b{color:var(--acc)}
.conf{display:flex;flex-wrap:wrap;gap:6px;font-size:.78rem}
.conf span{border-radius:6px;padding:3px 8px;background:var(--panel2);border:1px solid var(--line)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}
.d-low{background:var(--low)}.d-lowmod{background:var(--lowmod)}.d-mod{background:var(--mod)}.d-modhigh{background:var(--modhigh)}.d-high{background:var(--high)}
.meta{font-size:.82rem;color:var(--muted);line-height:1.5}
.aug{color:#ffd76b;font-weight:700;font-size:.8rem}
.pdf-link{margin-top:auto;text-align:center;background:var(--acc2);color:#fff;text-decoration:none;border-radius:10px;padding:10px;font-weight:600}
.pdf-link:hover{filter:brightness(1.12)}
.back{display:inline-block;margin-bottom:6px;font-size:.9rem}
.setbadge{font-weight:700}
.set-regret{background:#3a2b20;border-color:#7a4b2a}
.set-mature{background:#1f2f3a;border-color:#3a6a8a}
.set-legend{background:#2f3a1f;border-color:#6a8a3a}
.set-debut{background:#3a1f30;border-color:#8a3a6a}
h1{font-size:1.7rem;margin:0}
.sub{color:var(--muted);margin:6px 0 0}
