*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Poppins',sans-serif;line-height:1.6}body{background:linear-gradient(135deg, #667eea 0%, #764ba2 100%);min-height:100vh}.container{width:100%;max-width:1280px;margin:0 auto;padding:0 16px}#pokemon-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:24px;padding:20px 0}@media (max-width:768px){#pokemon-grid{grid-template-columns:repeat(auto-fill, minmax(180px, 1fr));gap:16px}}@media (max-width:480px){#pokemon-grid{grid-template-columns:repeat(2, 1fr);gap:12px;padding:12px 0}}@media (max-width:320px){#pokemon-grid{grid-template-columns:1fr}}#pokemon-grid .pokemon-card{width:auto;max-width:none;margin:0}.pokemon-img{transition:opacity .3s ease,filter .3s ease}.pokemon-img.lazy-loading{opacity:.7;filter:blur(2px)}.pokemon-img.lazy-loaded{opacity:1;filter:none}.pokemon-img.lazy-error{opacity:.5;filter:grayscale(1)}.pokemon-card.loading-details .type-loading{background:linear-gradient(45deg, #ff6b6b, #4ecdc4);color:white;animation:pulse 1.5s infinite}.pokemon-card.loading-details .loading-stat{background:linear-gradient(90deg, #ddd 25%, #eee 50%, #ddd 75%);background-size:200% 100%;animation:loading-shimmer 1.5s infinite;color:transparent;border-radius:3px;min-width:20px}@keyframes loading-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.7}}.loading-skeleton .skeleton-line{height:16px;background:linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);background-size:200% 100%;animation:loading-shimmer 1.5s infinite;border-radius:4px;margin-bottom:8px}.loading-skeleton .skeleton-line.short{width:60%}.loading-skeleton .skeleton-grid{display:flex;flex-wrap:wrap;gap:8px}.loading-skeleton .skeleton-grid .skeleton-tag{width:80px;height:24px;background:linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);background-size:200% 100%;animation:loading-shimmer 1.5s infinite;border-radius:12px}.skeleton-card{height:300px;background:linear-gradient(90deg, #f8f9fa 25%, #e9ecef 50%, #f8f9fa 75%);background-size:200% 100%;animation:loading-shimmer 2s infinite;border-radius:12px;margin-bottom:16px}.header{background:rgba(255,255,255,0.95);backdrop-filter:blur(10px);padding:1rem 0;position:sticky;top:0;z-index:100;border-bottom:3px solid #ffcb05}.header .container{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}@media (max-width:600px){.header .container{flex-direction:column;align-items:center;gap:8px}}.logo{font-size:1.6rem;font-weight:700;display:flex;align-items:center;gap:10px;cursor:pointer}@media (max-width:600px){.logo{font-size:1.3rem}}h1 .logo .pokeball-icon{color:#3d7dca}.header-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center}button{background:#3d7dca;color:#fff;margin:0 3px 5px;padding:10px 20px;border-radius:12px;cursor:pointer;transition:all .3s ease}button:hover{background:#2d64a7;transform:translateY(-2px)}.card-header{margin-bottom:8px;padding:10px 0}.card-header .pokemon-id{font-size:.8rem}.card-header .favorite-btn{font-size:1.3rem}.search-section{padding:20px 0 10px}.search-container{display:flex;gap:8px;margin-bottom:12px}.search-container .search-input{flex:1}.filters{display:flex;gap:10px;flex-wrap:wrap}.filters .filter-select{flex:1;min-width:140px}@media (max-width:480px){.filters{flex-direction:column}.filters .filter-select{width:100%}}.filter-select{padding:10px 12px;border-radius:12px;border:1px solid #ccc;background:#fff;cursor:pointer;transition:all .3s ease}.filter-select:hover{border-color:#3d7dca;box-shadow:0 4px 20px rgba(0,0,0,0.1)}.search-input{padding:10px 14px;border-radius:12px;border:1px solid #ccc;background:#fff;cursor:pointer;font-size:1rem;transition:all .3s ease}.search-input:hover,.search-input:focus{border-color:#3d7dca;box-shadow:0 4px 20px rgba(0,0,0,0.1);outline:none}.search-btn{flex-shrink:0;min-width:44px;min-height:44px;padding:10px 16px}#pokemon-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:16px;padding:16px;align-items:stretch}#pokemon-grid .pokemon-card{width:100%;max-width:100%}.pokemon-card{background:#fff;border-radius:12px;padding:14px;box-shadow:0 4px 20px rgba(0,0,0,0.1);transition:all .3s ease;align-items:stretch;display:flex;flex-direction:column}.pokemon-card:hover{transform:translateY(-3px);box-shadow:0 6px 20px rgba(0,0,0,0.15)}.pokemon-image img{width:96px;height:96px}.pokemon-info{display:flex;flex:1;flex-direction:column;gap:12px}.pokemon-card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto}.pokemon-price{color:#0f9d58;font-size:1rem;font-weight:700}.pagination{display:flex;align-items:center;justify-content:center;gap:16px;padding:24px 0;flex-wrap:wrap}@media (max-width:480px){.pagination{gap:10px;padding:16px 0}}.btn-pagination{background:#3d7dca;color:#fff;border:none;padding:12px 24px;border-radius:12px;cursor:pointer;font-size:.95rem;font-weight:600;transition:all .3s ease;min-width:110px;min-height:44px}.btn-pagination:hover:not(:disabled){background:#2d64a7;transform:translateY(-2px)}.btn-pagination:disabled{opacity:.4;cursor:not-allowed;transform:none}@media (max-width:480px){.btn-pagination{flex:1;min-width:0;padding:12px 16px;font-size:.85rem}}.page-info{font-size:.95rem;font-weight:600;color:#fff;white-space:nowrap}.modal-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,0.5);z-index:1000;align-items:center;justify-content:center}.modal-overlay.active{display:flex}#pokemon-modal{background:#fff;border-radius:12px;width:92%;max-width:640px;max-height:90vh;overflow-y:auto;position:relative;padding:24px;box-shadow:0 4px 20px rgba(0,0,0,0.1)}.modal-close{position:absolute;top:16px;right:16px;background:#2c3e50;color:#fff;border:none;font-size:14px;font-weight:600;padding:6px 14px;border-radius:20px;cursor:pointer;z-index:10;transition:all .3s ease}.modal-close:hover{background:#1a242f}.purchase-box{display:grid;gap:12px;margin:16px 0;padding:16px;border-radius:18px;background:linear-gradient(135deg, rgba(15,157,88,0.08) 0%, rgba(255,203,5,0.16) 100%);border:1px solid rgba(15,157,88,0.16)}.purchase-summary{display:flex;align-items:center;justify-content:space-between;gap:12px}.purchase-summary strong{color:#0f9d58;font-size:1.1rem}.purchase-label{font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#2c3e50}.purchase-note{margin:0;font-size:.9rem;line-height:1.4}.purchase-status{min-height:20px;font-size:.92rem;line-height:1.4;color:#5f6368}.purchase-status.success{color:#0f9d58}.purchase-status.error{color:#f44336}.google-pay-container{min-height:40px}.pokemon-detail{display:flex;flex-direction:column;gap:20px}.detail-header{display:flex;gap:20px;align-items:flex-start}@media (max-width:520px){.detail-header{flex-direction:column;align-items:center}}.pokemon-image-large{flex-shrink:0}.pokemon-image-large img{width:160px;height:160px;object-fit:contain}@media (max-width:520px){.pokemon-image-large img{width:120px;height:120px}}.pokemon-basic-info{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}.pokemon-basic-info h2{font-size:1.4rem;font-weight:700;margin:0;text-transform:capitalize}.pokemon-description{font-size:.88rem;color:#5f6368;line-height:1.5;margin:0}.pokemon-description.loading-text{color:#aaa;font-style:italic}.detail-tabs{display:flex;gap:8px;border-bottom:2px solid #e0e0e0;padding-bottom:8px}.tab-btn{padding:7px 16px;border:1px solid #ccc;border-radius:20px;background:#f0f0f0;color:#555;cursor:pointer;font-size:.82rem;font-weight:600;transition:all .2s ease}.tab-btn:disabled{opacity:.4;cursor:not-allowed}.tab-btn.active{background:#4ecdc4;border-color:#4ecdc4;color:white}.tab-btn.loaded:not(.active){border-color:#4ecdc4;color:#2a9d8f}.tab-content{min-height:80px}.tab-panel{display:none}.tab-panel.active{display:block}.stats-grid{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.stat-bar{display:flex;flex-direction:column;gap:4px}.stat-info{display:flex;justify-content:space-between;font-size:.78rem;font-weight:600}.stat-info .stat-name{color:#666;text-transform:uppercase;letter-spacing:.05em}.stat-info .stat-value{color:#333;font-weight:700}.stat-progress{height:8px;background:#e0e0e0;border-radius:4px;overflow:hidden}.stat-fill{height:100%;border-radius:4px;background:linear-gradient(90deg, #4ecdc4, #44a08d);transition:width .5s ease}.pokemon-measurements{display:flex;gap:24px;margin-top:8px}.measurement{display:flex;gap:6px;font-size:.9rem}.measurement .label{color:#666}.measurement .value{font-weight:700}.abilities-list{padding:12px 0;font-size:.93rem;line-height:1.6}.abilities-list strong{color:#2a9d8f}.moves-list{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0}.move-tag{padding:4px 12px;border:1px solid #ddd;border-radius:20px;font-size:.78rem;font-weight:600;background:#f8f9fa;text-transform:capitalize;cursor:default;transition:all .2s ease}.move-tag:hover{background:#e8f5e9;border-color:#4ecdc4}.theme-toggle{background:linear-gradient(45deg, #667eea 0%, #764ba2 100%);color:white;border:none;padding:8px 16px;border-radius:20px;cursor:pointer;font-size:12px;font-weight:600;letter-spacing:1px;transition:all .3s ease;position:relative;overflow:hidden}.theme-toggle:hover{transform:translateY(-2px);box-shadow:0 4px 15px rgba(102,126,234,0.4)}.theme-toggle.dark-active{background:linear-gradient(45deg, #f093fb 0%, #f5576c 100%)}.theme-toggle.dark-active:hover{box-shadow:0 4px 15px rgba(245,87,108,0.4)}.theme-toggle .theme-text{position:relative;z-index:2}.theme-toggle::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);transition:left .5s ease}.theme-toggle:hover::before{left:100%}.favorites-toggle{background:linear-gradient(45deg, #667eea 0%, #764ba2 100%);color:white;border:none;padding:8px 16px;border-radius:20px;cursor:pointer;font-size:12px;font-weight:600;letter-spacing:1px;transition:all .3s ease;position:relative;overflow:hidden}.favorites-toggle:hover{transform:translateY(-2px);box-shadow:0 4px 15px rgba(102,126,234,0.4)}.favorites-toggle.dark-active{background:linear-gradient(45deg, #f093fb 0%, #f5576c 100%)}.favorites-toggle.dark-active:hover{box-shadow:0 4px 15px rgba(245,87,108,0.4)}.favorites-toggle .theme-text{position:relative;z-index:2}.favorites-toggle::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);transition:left .5s ease}.favorites-toggle:hover::before{left:100%}.buy-btn{background:linear-gradient(135deg, #0f9d58 0%, #34a853 100%);color:white;border:none;padding:10px 16px;border-radius:999px;cursor:pointer;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease}.buy-btn:hover{transform:translateY(-1px);box-shadow:0 10px 20px rgba(15,157,88,0.24)}.buy-btn:active{transform:translateY(0)}.purchase-fallback-btn{background:linear-gradient(135deg, #0f9d58 0%, #34a853 100%);color:white;border:none;padding:12px 16px;border-radius:14px;cursor:pointer;font-size:13px;font-weight:700;letter-spacing:.04em;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease;width:100%}.purchase-fallback-btn:hover{transform:translateY(-1px);box-shadow:0 10px 20px rgba(15,157,88,0.24)}.purchase-fallback-btn:active{transform:translateY(0)}.pokemon-card.loading-details .type-loading{background:linear-gradient(45deg, #ff6b6b, #4ecdc4);color:white;animation:pulse 1.5s infinite}.pokemon-card.loading-details .loading-stat{background:linear-gradient(90deg, #ddd 25%, #eee 50%, #ddd 75%);background-size:200% 100%;animation:loading-shimmer 1.5s infinite;color:transparent;border-radius:3px;min-width:20px}.skeleton-card{height:300px;background:linear-gradient(90deg, #f8f9fa 25%, #e9ecef 50%, #f8f9fa 75%);background-size:200% 100%;animation:loading-shimmer 2s infinite;border-radius:12px;margin-bottom:16px}.loading-skeleton .skeleton-line{height:16px;background:linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);background-size:200% 100%;animation:loading-shimmer 1.5s infinite;border-radius:4px;margin-bottom:8px}.loading-skeleton .skeleton-line.short{width:60%}.loading-skeleton .skeleton-grid{display:flex;flex-wrap:wrap;gap:8px}.loading-skeleton .skeleton-grid .skeleton-tag{width:80px;height:24px;background:linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);background-size:200% 100%;animation:loading-shimmer 1.5s infinite;border-radius:12px}.stats-skeleton .stat-bar.skeleton .skeleton-text{height:14px;background:linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);background-size:200% 100%;animation:loading-shimmer 1.5s infinite;border-radius:3px;display:inline-block}.stats-skeleton .stat-bar.skeleton .skeleton-text.short{width:30px}.stats-skeleton .stat-bar.skeleton .skeleton-progress{height:8px;background:linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);background-size:200% 100%;animation:loading-shimmer 1.5s infinite;border-radius:4px}@keyframes loading-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.7}}:root{--bg-color:#ffffff;--text-color:#333333;--card-bg:#ffffff;--card-border:#e0e0e0;--header-bg:#ffffff;--input-bg:#ffffff;--input-border:#ddd;--modal-bg:#ffffff;--skeleton-bg:#f0f0f0;--shadow-light:0 4px 20px rgba(0,0,0,0.1)}body{background-color:var(--bg-color);color:var(--text-color);transition:all .3s ease}body.dark-theme{--bg-color:#1a1a2e;--text-color:#eee;--card-bg:#16213e;--card-border:#333;--header-bg:#0f0f23;--input-bg:#16213e;--input-border:#444;--modal-bg:#16213e;--skeleton-bg:#2a2a3e;--shadow-light:0 4px 20px rgba(0,0,0,0.4);background-color:var(--bg-color);color:var(--text-color)}body.dark-theme .header{background-color:var(--header-bg);border-bottom:1px solid var(--card-border)}body.dark-theme .header .logo{color:var(--text-color)}body.dark-theme .pokemon-card{background-color:var(--card-bg);border-color:var(--card-border);box-shadow:var(--shadow-light)}body.dark-theme .pokemon-card:hover{box-shadow:0 8px 30px rgba(0,0,0,0.6)}body.dark-theme .pokemon-card .pokemon-name{color:var(--text-color)}body.dark-theme .pokemon-card .pokemon-id{color:#999}body.dark-theme .pokemon-card .stat-name{color:#ccc}body.dark-theme .pokemon-card .stat-value{color:var(--text-color)}body.dark-theme .search-input,body.dark-theme .filter-select{background-color:var(--input-bg);color:var(--text-color);border-color:var(--input-border)}body.dark-theme .search-input::placeholder,body.dark-theme .filter-select::placeholder{color:#888}body.dark-theme .search-input:focus,body.dark-theme .filter-select:focus{border-color:#4ecdc4;box-shadow:0 0 0 3px rgba(78,205,196,0.1)}body.dark-theme .search-btn{background-color:var(--input-bg);border-color:var(--input-border);color:var(--text-color)}body.dark-theme .search-btn:hover{background-color:#2a2a3e}body.dark-theme .modal{background-color:var(--modal-bg);color:var(--text-color);border-color:var(--card-border)}body.dark-theme .modal-overlay{background-color:rgba(0,0,0,0.8)}body.dark-theme .modal-close{background-color:var(--card-bg);color:var(--text-color);border-color:var(--input-border)}body.dark-theme .modal-close:hover{background-color:#2a2a3e}body.dark-theme .purchase-box{background:linear-gradient(135deg, rgba(52,168,83,0.18) 0%, rgba(255,203,5,0.12) 100%);border-color:rgba(255,255,255,0.08)}body.dark-theme .purchase-label,body.dark-theme .purchase-note{color:var(--text-color)}body.dark-theme .purchase-status{color:#b0b8c4}body.dark-theme .purchase-status.success{color:#81c995}body.dark-theme .purchase-status.error{color:#f28b82}body.dark-theme .pokemon-price,body.dark-theme .purchase-summary strong{color:#81c995}body.dark-theme .tab-btn{background-color:var(--card-bg);color:var(--text-color);border-color:var(--input-border)}body.dark-theme .tab-btn.active{background-color:#4ecdc4;color:white;border-color:#4ecdc4}body.dark-theme .tab-btn.loaded:not(.active){border-color:#4ecdc4;color:#4ecdc4}body.dark-theme .btn-pagination{background-color:var(--card-bg);color:var(--text-color);border-color:var(--input-border)}body.dark-theme .btn-pagination:hover:not(:disabled){background-color:#2a2a3e}body.dark-theme .page-info{color:var(--text-color)}body.dark-theme .stat-progress{background-color:#2a2a3e}body.dark-theme .stat-progress .stat-fill{background:linear-gradient(90deg, #4ecdc4, #44a08d)}body.dark-theme .pokemon-description{color:var(--text-color)}body.dark-theme .pokemon-description.loading-text{color:#888}body.dark-theme .measurement .label{color:#ccc}body.dark-theme .measurement .value{color:var(--text-color)}body.dark-theme .abilities-list{color:var(--text-color)}body.dark-theme .abilities-list strong{color:#4ecdc4}body.dark-theme .move-tag{background-color:var(--card-bg);color:var(--text-color);border-color:var(--input-border)}body.dark-theme .move-tag:hover{background-color:#2a2a3e}body.dark-theme .favorite-btn{background-color:var(--card-bg);color:var(--text-color);border-color:var(--input-border)}body.dark-theme .favorite-btn.active{background-color:#f06292;border-color:#f06292;color:white}body.dark-theme .favorite-btn:hover{background-color:#2a2a3e}body.dark-theme .favorites-toggle{background-color:var(--card-bg);color:var(--text-color);border-color:var(--input-border)}body.dark-theme .favorites-toggle:hover{background-color:#2a2a3e}body.dark-theme .favorites-toggle.active{background-color:#f06292;color:white;border-color:#f06292}body.dark-theme .loading{color:var(--text-color)}body.dark-theme .error-message{background-color:var(--card-bg);border-color:var(--card-border);color:var(--text-color)}body.dark-theme .error-message .retry-btn{background-color:#f06292;color:white;border:none}body.dark-theme .error-message .retry-btn:hover{background-color:#e91e63}body.dark-theme .loading-stat,body.dark-theme .skeleton-line,body.dark-theme .skeleton-tag,body.dark-theme .skeleton-card{background:linear-gradient(90deg, var(--skeleton-bg) 25%, #3a3a4e 50%, var(--skeleton-bg) 75%);background-size:200% 100%;animation:loading-shimmer-dark 1.5s infinite}body.dark-theme .type.type-fire{background-color:#ff6b6b}body.dark-theme .type.type-water{background-color:#4dabf7}body.dark-theme .type.type-electric{background-color:#ffd43b;color:#333}body.dark-theme .type.type-grass{background-color:#51cf66}body.dark-theme .type.type-ice{background-color:#74c0fc}body.dark-theme .type.type-fighting{background-color:#f06292}body.dark-theme .type.type-poison{background-color:#ba68c8}body.dark-theme .type.type-ground{background-color:#ffab91}body.dark-theme .type.type-flying{background-color:#81c784}body.dark-theme .type.type-psychic{background-color:#f48fb1}body.dark-theme .type.type-bug{background-color:#aed581}body.dark-theme .type.type-rock{background-color:#a1887f}body.dark-theme .type.type-ghost{background-color:#9575cd}body.dark-theme .type.type-dragon{background-color:#7986cb}body.dark-theme .type.type-dark{background-color:#6d4c41}body.dark-theme .type.type-steel{background-color:#90a4ae}body.dark-theme .type.type-fairy{background-color:#f8bbd9;color:#333}body.dark-theme .type.type-normal{background-color:#bcaaa4}body.dark-theme .type.type-loading{background:linear-gradient(45deg, #ff6b6b, #4ecdc4);color:white;animation:pulse 1.5s infinite}@keyframes loading-shimmer-dark{0%{background-position:200% 0}100%{background-position:-200% 0}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.7}}