:root{
  --bg:#07111f; --bg2:#0f1a2e; --card:#16223a; --line:#1f2c46;
  --text:#e6edf6; --muted:#8aa0bd; --brand:#0b6e4f; --brand2:#16a085;
  --accent:#f5a623; --accent2:#ffd166; --danger:#d33f49;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;user-select:none}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,sans-serif;
  min-height:100%;overscroll-behavior:none}
a{color:inherit;text-decoration:none}

/* Header común */
header.gh{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--bg)}
header.gh .back{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-size:14px;padding:6px 10px;border-radius:8px;background:var(--card);border:1px solid var(--line)}
header.gh .title{font-weight:800;font-size:18px}
header.gh .spacer{flex:1}
header.gh .hud{display:flex;gap:10px;font-size:13px;color:var(--muted);flex-wrap:wrap;justify-content:flex-end}
header.gh .hud b{color:var(--text)}
header.gh .help{background:var(--card);border:1px solid var(--line);color:var(--text);padding:6px 10px;border-radius:8px;font-size:14px;cursor:pointer}

/* Layout juego */
main.gh{display:flex;flex-direction:column;align-items:center;padding:18px 12px 60px;gap:14px}
canvas.gh{background:#0b1525;border:2px solid var(--brand2);border-radius:14px;display:block;touch-action:none;max-width:100%;height:auto}
.hint{color:var(--muted);font-size:13px;margin:0;text-align:center}
.btn{background:var(--brand);color:#fff;border:0;padding:10px 18px;border-radius:10px;font-weight:700;cursor:pointer;font-size:14px}
.btn:hover{background:var(--brand2)}
.btn.alt{background:var(--card);border:1px solid var(--line);color:var(--text)}
.btn.warn{background:var(--accent);color:#000}
.btn.danger{background:var(--danger)}
.row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}

/* Controls táctiles */
.dpad{display:grid;grid-template-columns:repeat(3,52px);grid-template-rows:repeat(3,52px);gap:6px}
.dpad button{background:var(--card);border:1px solid var(--line);color:var(--text);font-size:22px;border-radius:12px;cursor:pointer}
.dpad button:active{background:var(--brand)}
.dpad .up{grid-column:2;grid-row:1}.dpad .down{grid-column:2;grid-row:3}
.dpad .left{grid-column:1;grid-row:2}.dpad .right{grid-column:3;grid-row:2}
.dpad .a{grid-column:1;grid-row:1}.dpad .b{grid-column:3;grid-row:3}

/* Modal */
.modal{position:fixed;inset:0;background:rgba(7,17,31,.9);display:flex;align-items:center;justify-content:center;z-index:50;opacity:0;pointer-events:none;transition:opacity .2s;padding:20px}
.modal.show{opacity:1;pointer-events:auto}
.modal .box{background:var(--card);border:1px solid var(--line);padding:24px;border-radius:18px;max-width:380px;width:100%;text-align:center;box-shadow:0 24px 60px rgba(0,0,0,.5)}
.modal h2{margin:0 0 10px;font-size:22px}
.modal p{margin:0 0 14px;color:var(--muted);line-height:1.5;font-size:14px}
.modal .actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.modal .check{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin-top:14px;justify-content:center;cursor:pointer}
.modal .check input{width:16px;height:16px}

.howto{text-align:left;font-size:14px;color:var(--text);line-height:1.55;background:var(--bg2);padding:14px;border-radius:12px;margin:0 0 14px;max-height:220px;overflow-y:auto}
.howto ul{margin:6px 0;padding-left:18px}
.howto li{margin:3px 0}
.howto kbd{background:#0b1525;border:1px solid var(--line);padding:1px 6px;border-radius:4px;font-size:11px;font-family:ui-monospace,Menlo,monospace}

/* Portal home */
.hero{padding:32px 16px 20px;background:linear-gradient(135deg,var(--brand) 0%,var(--brand2) 50%,#1c3050 100%);position:relative;overflow:hidden}
.hero h1{margin:0;font-size:clamp(28px,5vw,40px);font-weight:900;letter-spacing:-.02em;color:#fff}
.hero .sub{margin:6px 0 0;color:rgba(255,255,255,.85);font-size:14px}
.hero::after{content:'🎮';position:absolute;right:-10px;top:-10px;font-size:140px;opacity:.15;pointer-events:none}

.profile{display:flex;gap:12px;align-items:center;padding:14px 16px;background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap}
.profile .avatar{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand2));display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:900;color:#fff}
.profile .name{font-weight:800;font-size:16px}
.profile .meta{font-size:12px;color:var(--muted)}
.profile .xpbar{flex:1;min-width:120px;height:8px;background:#0b1525;border-radius:99px;overflow:hidden}
.profile .xpbar>div{height:100%;background:linear-gradient(90deg,var(--brand2),var(--accent2))}
.profile .level{background:var(--accent);color:#000;font-weight:900;font-size:12px;padding:3px 9px;border-radius:99px;letter-spacing:.04em}

.cats{display:flex;gap:8px;padding:12px 12px 0;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}
.cats::-webkit-scrollbar{display:none}
.cat{background:var(--card);border:1px solid var(--line);color:var(--muted);padding:6px 14px;border-radius:99px;font-size:13px;font-weight:700;cursor:pointer;flex:0 0 auto}
.cat.on{background:var(--brand);border-color:var(--brand);color:#fff}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;padding:14px 12px 80px;max-width:1200px;margin:0 auto}
.card{position:relative;display:block;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;transition:transform .15s,border-color .15s,background .15s;overflow:hidden}
.card:hover{transform:translateY(-2px);border-color:var(--brand2);background:#1a2742}
.card .ico{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;background:linear-gradient(135deg,var(--bg2),var(--line));font-size:26px;margin-bottom:10px;border:1px solid var(--line)}
.card h3{margin:0 0 4px;font-size:14px;font-weight:800;line-height:1.2}
.card p{margin:0;color:var(--muted);font-size:11px;line-height:1.3}
.card .badge{position:absolute;top:10px;right:10px;font-size:9px;font-weight:800;padding:2px 6px;border-radius:99px;letter-spacing:.05em}
.card .badge.best{background:var(--accent);color:#000}
.card .badge.new{background:var(--brand);color:#fff}
.card .stats{position:absolute;bottom:10px;right:12px;font-size:10px;color:var(--muted);font-weight:600}

footer.gh{text-align:center;color:var(--muted);font-size:12px;padding:20px;border-top:1px solid var(--line)}
footer.gh a{color:var(--accent2)}

@media (max-width:600px){
  .grid{grid-template-columns:repeat(2,1fr);gap:10px;padding:10px 8px 80px}
  .card{padding:12px}
  .card .ico{width:42px;height:42px;font-size:22px;margin-bottom:8px}
  .card h3{font-size:13px}
  .card p{font-size:10px}
  .hero{padding:24px 14px 16px}
}
