*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0d0d0d;--surface: #1a1a1a;--surface2: #252525;--border: #333;--accent: #39ff14;--accent2: #ffb300;--text: #e8e8e8;--text-muted: #888;--danger: #ff4444;--radius: 8px;--font-mono: "Courier New", Courier, monospace}html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:14px;line-height:1.6}#app{min-height:100vh;padding:0 1rem}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}code{background:var(--surface2);padding:.1em .4em;border-radius:4px;font-size:.9em}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em 1em;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface2);color:var(--text);font-size:.85rem;transition:border-color .15s,background .15s}.btn:hover{border-color:var(--accent);background:#1e2b1e}.btn:active{transform:translateY(1px)}.btn--play{border-color:var(--accent);color:var(--accent);font-weight:700}.btn--play:hover{background:#0a2d0a}.btn--back{border-color:var(--border);font-size:.8rem;margin-bottom:1rem}.btn--secondary{border-color:var(--border);color:var(--text-muted)}.badge{display:inline-block;padding:.15em .6em;border-radius:4px;font-size:.75rem;font-weight:700}.badge--licensed{background:#0a2d0a;color:var(--accent);border:1px solid var(--accent)}.badge--unlicensed{background:#2d1a00;color:var(--accent2);border:1px solid var(--accent2)}.progress-bar{width:100%;height:4px;background:var(--surface2);border-radius:2px;overflow:hidden;margin:.4em 0}.progress-bar__fill{height:100%;background:var(--accent);border-radius:2px;transition:width .3s ease}.progress-area{margin-top:.8rem}.progress-area.hidden{display:none}.progress-label{font-size:.8rem;color:var(--text-muted);margin-bottom:.3rem}.catalog{max-width:1100px;margin:0 auto;padding:2rem 0}.catalog__header{text-align:center;margin-bottom:2.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.catalog__logo-img{display:block;margin:0 auto .4rem;max-width:240px;width:100%;height:auto;filter:drop-shadow(0 0 8px rgba(255,102,0,.4))}.catalog__title{font-size:2rem;letter-spacing:.15em;color:var(--accent)}.catalog__subtitle{color:var(--text-muted);font-size:.85rem;margin-top:.4rem;letter-spacing:.1em}.catalog__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.2rem}.catalog__loading,.catalog__empty{grid-column:1 / -1;text-align:center;color:var(--text-muted);padding:3rem 0}.catalog__empty-hint{font-size:.85rem;margin-top:.6rem;color:var(--text-muted)}.game-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:border-color .15s,transform .1s;display:flex;flex-direction:column}.game-card:hover{border-color:var(--accent);transform:translateY(-2px)}.game-card:focus{outline:2px solid var(--accent);outline-offset:2px}.game-card:active{transform:translateY(0)}.game-card__thumb{width:100%;aspect-ratio:16 / 9;object-fit:cover;background:var(--surface2)}.game-card__thumb--placeholder{display:flex;align-items:center;justify-content:center;font-size:3rem;color:var(--border)}.game-card__info{padding:.9rem;display:flex;flex-direction:column;gap:.5rem;flex:1}.game-card__title{font-size:1rem;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-card__desc{font-size:.8rem;color:var(--text-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.game-card__footer{margin-top:auto;display:flex;flex-direction:column;gap:.4rem}.game-view{max-width:960px;margin:0 auto;padding:1.5rem 0}.game-view--error{padding:2rem 0}.game-view__header{display:flex;align-items:center;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.game-view__title{font-size:1.3rem;color:var(--accent)}.game-view__player{width:100%;aspect-ratio:4 / 3;background:#000;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:1rem}.game-view__status{color:var(--text-muted);font-size:.9rem;text-align:center;padding:1rem}.game-view__meta{font-size:.85rem;color:var(--text-muted)}.game-view__error,.game-view__no-license{text-align:center;padding:2rem;color:var(--text-muted)}.game-view__error code{color:var(--danger)}.game-view__no-license .hint{font-size:.8rem;margin-top:.6rem}
