:root{--bg: #12121c;--bg-raised: #1b1b2b;--bg-card: #20203200;--border: #2e2e46;--text: #e8e8f2;--text-dim: #9494ae;--red: #ee4444;--green: #3ecf6e;--gold: #f2c14e;--shiny: #6ecbff;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px}button{font:inherit;color:inherit;cursor:pointer}input{font:inherit}.center-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:24px}.login h1{margin:0;font-size:2.2rem}.login p{color:var(--text-dim);margin:0 0 16px}.pokeball-logo{width:72px;height:72px;border-radius:50%;background:linear-gradient(to bottom,var(--red) 0 45%,#222 45% 55%,#f4f4f4 55% 100%);position:relative}.pokeball-logo:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:22px;height:22px;border-radius:50%;background:#f4f4f4;border:5px solid #222}.pokeball-logo.small{width:26px;height:26px}.pokeball-logo.small:after{width:7px;height:7px;border-width:2px}.btn-primary{background:var(--red);color:#fff;text-decoration:none;padding:10px 22px;border-radius:8px;font-weight:600;border:none}.btn-primary:hover{filter:brightness(1.1)}.btn-ghost{background:none;border:1px solid var(--border);border-radius:6px;padding:4px 10px;color:var(--text-dim);font-size:.85rem}.btn-ghost:hover{color:var(--text);border-color:var(--text-dim)}.topbar{display:flex;align-items:center;gap:16px;padding:10px 16px;background:var(--bg-raised);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:1.05rem}.topbar-stats{display:flex;gap:14px;color:var(--text-dim);font-variant-numeric:tabular-nums}.topbar-stats .shiny-stat{color:var(--shiny)}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}.login-name{color:var(--text-dim);font-size:.85rem}.sync{width:9px;height:9px;border-radius:50%;display:inline-block}.sync-idle{background:var(--green)}.sync-saving{background:var(--gold);animation:pulse 1s infinite}.sync-error{background:var(--red);animation:pulse .5s infinite}@keyframes pulse{50%{opacity:.4}}.tabs{display:flex;gap:4px;padding:8px 16px 0;background:var(--bg-raised);border-bottom:1px solid var(--border);overflow-x:auto;position:sticky;top:47px;z-index:19}.tab{background:none;border:none;border-bottom:3px solid transparent;padding:8px 14px;color:var(--text-dim);font-weight:600;white-space:nowrap}.tab.active{color:var(--text);border-bottom-color:var(--red)}.tab:hover{color:var(--text)}.content{padding:16px;max-width:1500px;margin:0 auto}.filterbar{display:flex;flex-direction:column;gap:8px;padding:12px;margin-bottom:16px;background:var(--bg-raised);border:1px solid var(--border);border-radius:10px}.filterbar input[type=search]{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px 12px;color:var(--text);width:100%;max-width:380px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{background:var(--bg);border:1px solid var(--border);border-radius:999px;padding:3px 12px;color:var(--text-dim);font-size:.85rem}.chip.active{background:var(--red);border-color:var(--red);color:#fff}.chip.cat.active{background:#3a3a5c;border-color:#52527e;color:var(--text)}.filter-progress{display:flex;align-items:center;gap:10px;color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:.9rem}.bar{flex:1;height:6px;background:var(--bg);border-radius:3px;overflow:hidden;display:inline-block;min-width:60px}.bar-fill{height:100%;background:var(--green);border-radius:3px;transition:width .3s}.shiny-mode .bar-fill{background:var(--shiny)}.gen-section{margin-bottom:24px;content-visibility:auto;contain-intrinsic-size:800px}.gen-section h2{font-size:1.05rem;margin:0 0 10px;display:flex;align-items:baseline;gap:10px}.gen-count{color:var(--text-dim);font-size:.85rem;font-weight:400;font-variant-numeric:tabular-nums}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px}.card{position:relative;display:flex;flex-direction:column;align-items:center;background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;padding:6px 4px 8px;min-height:130px;transition:transform .06s,border-color .15s}.card:hover{transform:translateY(-2px);border-color:#52527e}.card img{width:68px;height:68px;object-fit:contain;image-rendering:auto;filter:grayscale(.9) brightness(.55);transition:filter .15s}.card.caught img{filter:none}.card.caught{border-color:var(--green);background:#1c2b22}.shiny-mode .card.caught{border-color:var(--shiny);background:#1a2733}.card-dex{font-size:.65rem;color:var(--text-dim);align-self:flex-start;padding-left:4px}.card-name{font-size:.78rem;margin-top:2px;text-align:center;line-height:1.15}.card-form{font-size:.68rem;color:var(--text-dim);text-align:center;line-height:1.1;margin-top:1px}.card-check{position:absolute;top:5px;right:7px;color:var(--green);font-weight:700;font-size:.9rem}.shiny-mode .card-check{color:var(--shiny)}.empty{color:var(--text-dim);text-align:center;padding:40px}.grid.box-grid{grid-template-columns:repeat(6,1fr);max-width:860px}.card.dim{opacity:.22}.games{display:flex;flex-direction:column;gap:8px;max-width:860px;margin:0 auto}.game{background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;overflow:hidden}.game.complete{border-color:var(--gold)}.game-head{display:flex;align-items:center;gap:12px;width:100%;background:none;border:none;padding:12px 14px;text-align:left}.game-gen{background:var(--bg);border-radius:6px;padding:2px 8px;font-size:.75rem;color:var(--text-dim);flex-shrink:0}.game-name{font-weight:600;display:flex;flex-direction:column}.game-name small{color:var(--text-dim);font-weight:400}.game-progress{margin-left:auto;display:flex;align-items:center;gap:10px;color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:.9rem;min-width:160px}.game-arrow{color:var(--text-dim)}.game-body{padding:0 14px 14px;border-top:1px solid var(--border)}.game-section h3{font-size:.85rem;color:var(--text-dim);margin:14px 0 6px;text-transform:uppercase;letter-spacing:.05em}.check-item{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:6px;cursor:pointer}.check-item:hover{background:#ffffff0a}.check-item.done>span{color:var(--text-dim)}.check-item.done:not(.counter)>span{text-decoration:line-through}.check-item input[type=checkbox]{accent-color:var(--green);width:16px;height:16px}.check-item.counter{justify-content:space-between;cursor:default}.counter-controls{display:flex;align-items:center;gap:6px}.counter-controls button{width:26px;height:26px;border-radius:6px;background:var(--bg);border:1px solid var(--border)}.counter-controls input{width:70px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:3px 6px;color:var(--text);text-align:right}.counter-target{color:var(--text-dim);font-size:.85rem;min-width:52px}.check-item.counter.done .counter-controls input{border-color:var(--green);color:var(--green)}.hint-text{color:var(--text-dim);font-size:.85rem;text-align:center;margin-top:20px}.hint-text code{background:var(--bg-raised);padding:1px 5px;border-radius:4px}.view-summary{background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;padding:12px 16px;margin-bottom:18px}.hint-inline{color:var(--text-dim);font-size:.85rem;margin-left:6px}.go-section h2,.ribbon-section h2{font-size:1.05rem;margin:20px 0 10px;display:flex;align-items:baseline;gap:10px}.medal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.medal{display:flex;flex-direction:column;align-items:center;gap:4px;background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;padding:12px 8px}.medal:hover{border-color:#52527e}.medal-coin{width:34px;height:34px;border-radius:50%;background:#33334d;border:3px solid #44446a}.medal.tier-bronze .medal-coin{background:#8c5a2b;border-color:#b07a45}.medal.tier-silver .medal-coin{background:#9aa2b1;border-color:#c4ccd9}.medal.tier-gold .medal-coin{background:#d4a017;border-color:#f2c14e}.medal.tier-platinum .medal-coin{background:#7de0e6;border-color:#b8f4f8;box-shadow:0 0 10px #7de0e680}.medal.maxed{border-color:var(--gold)}.medal-name{font-size:.82rem;font-weight:600;text-align:center;line-height:1.15}.medal-tier{font-size:.72rem;color:var(--text-dim)}.medal-input{display:flex;align-items:center;gap:5px;margin-top:4px}.medal-input input{width:84px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:3px 6px;color:var(--text);text-align:right}.medal-input small{color:var(--text-dim);font-size:.68rem}.medal-next{font-size:.7rem;color:var(--text-dim);margin-top:2px;text-align:center}.medal.maxed .medal-next{color:var(--gold)}.picker-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.picker-sprite{width:72px;height:72px;object-fit:contain}.picker-main{flex:1;min-width:240px;display:flex;flex-direction:column;gap:6px}.picker-main input{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px 12px;color:var(--text);max-width:380px}.picker-results{display:flex;flex-direction:column;gap:2px;max-width:380px;background:var(--bg);border:1px solid var(--border);border-radius:8px;overflow:hidden}.picker-results button{display:flex;align-items:center;gap:8px;background:none;border:none;padding:5px 10px;text-align:left}.picker-results button:hover{background:#ffffff0f}.picker-results img{width:32px;height:32px;object-fit:contain}.picker-stats{text-align:center}.picker-stats strong{display:block;font-size:1.3rem}.picker-stats small{color:var(--text-dim)}.picker-note{color:var(--text-dim);font-size:.82rem;margin:10px 0 0}.ribbon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:2px 14px}.ribbon-hint{display:block;color:var(--text-dim);font-size:.72rem}@media(max-width:600px){.content{padding:10px}.grid{grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:6px}.card{min-height:116px}.card img{width:56px;height:56px}.topbar{gap:8px;padding:8px 10px}.login-name{display:none}.game-progress{min-width:90px}.game-progress .bar{display:none}}
