*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0f1114;--surface: #1a1d23;--surface2: #22262e;--border: #2e3340;--text: #e8eaed;--text-dim: #8b8f98;--red: #e60012;--red-light: #ff4455;--blue: #4a9eff;--green: #34c759;--yellow: #ffd60a;--radius: 10px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh}.app{max-width:1400px;margin:0 auto;padding:1.5rem}.header{text-align:center;padding:2rem 0 1rem}.header h1{font-size:2rem;font-weight:700;letter-spacing:-.02em}.subtitle{color:var(--text-dim);margin-top:.25rem;font-size:.95rem}.filters{display:flex;flex-wrap:wrap;gap:.625rem;align-items:center;padding:1rem 1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.5rem}.search-input{flex:1 1 220px;padding:.55rem .85rem;border:1px solid var(--border);border-radius:6px;background:var(--surface2);color:var(--text);font-size:.9rem;outline:none;transition:border-color .2s}.search-input:focus{border-color:var(--red)}.search-input::placeholder{color:var(--text-dim)}.filters select{padding:.55rem .7rem;border:1px solid var(--border);border-radius:6px;background:var(--surface2);color:var(--text);font-size:.85rem;cursor:pointer;outline:none}.filters select:focus{border-color:var(--red)}.toggle{display:flex;align-items:center;gap:.35rem;font-size:.85rem;color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.toggle input[type=checkbox]{accent-color:var(--red);width:16px;height:16px}.filter-group{display:flex;align-items:center;gap:.3rem}.filter-label{font-size:.78rem;color:var(--text-dim);white-space:nowrap}.filter-sep{font-size:.75rem;color:var(--text-dim)}.filter-count{font-size:.72rem;color:var(--text-dim);white-space:nowrap}.filter-group select{min-width:56px}.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;transition:opacity .2s}.game-grid.loading{opacity:.5;pointer-events:none}.empty{grid-column:1 / -1;text-align:center;padding:4rem 1rem;color:var(--text-dim);font-size:1.1rem}.game-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;text-decoration:none;color:var(--text);transition:transform .15s,border-color .15s;display:flex;flex-direction:column}.game-card:hover{transform:translateY(-3px);border-color:var(--red)}.card-image{position:relative;aspect-ratio:16 / 9;background:var(--surface2);overflow:hidden}.card-image img{width:100%;height:100%;object-fit:cover}.no-image{display:flex;align-items:center;justify-content:center;height:100%;font-size:2.5rem;opacity:.3}.badge{position:absolute;top:8px;right:8px;padding:2px 8px;border-radius:4px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.badge.sale{background:var(--red);color:#fff}.badge.free{background:var(--green);color:#000}.card-body{padding:.75rem;display:flex;flex-direction:column;gap:.35rem;flex:1}.card-title{font-size:.9rem;font-weight:600;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-publisher{font-size:.78rem;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-meta{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.15rem}.tag{padding:1px 6px;border-radius:4px;font-size:.68rem;font-weight:500;white-space:nowrap}.tag.esrb{background:#2a2d35;color:var(--yellow)}.tag.genre{background:#1c2533;color:var(--blue)}.tag.nso{background:#1a2e1a;color:var(--green)}.tag.system{background:#2a2030;color:#d89cf5}.tag.demo{background:#1a2a2e;color:#5fc8d8}.tag.dlc{background:#2e2a1a;color:#f5c842}.tag.players{background:#2d1a2e;color:#d89cf5}.card-players{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.1rem}.player-tag{display:inline-flex;align-items:center;gap:.2rem;padding:1px 6px;border-radius:4px;font-size:.68rem;font-weight:500;white-space:nowrap}.player-tag.online{background:#1a2e2e;color:#42d4c8}.player-tag.local{background:#2d1a2e;color:#d89cf5}.player-tag.solo{background:#2a2a2a;color:#999}.player-tag.tv{background:#1c2533;color:var(--blue)}.player-tag.handheld{background:#2e2a1a;color:#f5c842}.player-tag.tabletop{background:#1a2e1a;color:var(--green)}.card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:.35rem}.card-price{display:flex;align-items:baseline;gap:.4rem}.price-current{font-size:1rem;font-weight:700;color:var(--text)}.price-current.sale{color:var(--red-light)}.price-old{font-size:.8rem;color:var(--text-dim);text-decoration:line-through}.card-info{font-size:.75rem;color:var(--text-dim)}.card-date{font-size:.72rem;color:var(--text-dim)}.pagination{display:flex;align-items:center;justify-content:center;gap:1rem;padding:1.5rem 0}.pagination button{padding:.5rem 1.2rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font-size:.85rem;cursor:pointer;transition:background .15s,border-color .15s}.pagination button:hover:not(:disabled){background:var(--surface2);border-color:var(--red)}.pagination button:disabled{opacity:.35;cursor:not-allowed}.pagination span{font-size:.85rem;color:var(--text-dim)}.loading-screen{display:flex;align-items:center;justify-content:center;min-height:60vh;font-size:1.2rem;color:var(--text-dim)}.loading-screen.error{color:var(--red-light);flex-direction:column;gap:.5rem}.loading-screen code{background:var(--surface2);padding:2px 8px;border-radius:4px;font-size:.9rem}@media(max-width:600px){.app{padding:.75rem}.header h1{font-size:1.4rem}.filters{padding:.75rem}.game-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.65rem}}
