.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem 1.4rem;border-radius:99px;font-family:var(--font-body);font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;border:1.5px solid #fff0;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast),transform var(--transition-fast);white-space:nowrap}.btn:active{transform:scale(.97)}.btn-primary{background:var(--color-accent);color:var(--color-bg);border-color:var(--color-accent)}.btn-primary:hover{background:#d4ff1a;border-color:#d4ff1a}.btn-ghost{background:#fff0;color:var(--color-muted);border-color:var(--color-border)}.btn-ghost:hover{color:var(--color-white);border-color:var(--color-muted-2)}.btn-icon{padding:.6rem;border-radius:50%;width:36px;height:36px;justify-content:center}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:99px;font-size:.65rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.badge-free{background:rgb(51 148 13 / .18);color:#0aff7c;border:1px solid rgb(15 224 133 / .3)}.badge-new{background:rgb(200 255 0 / .12);color:var(--color-accent);border:1px solid rgb(200 255 0 / .25)}.badge-paid{background:rgb(255 255 255 / .06);color:var(--color-muted);border:1px solid var(--color-border)}.badge-pay-any{background:rgb(234 179 8 / .15);color:#fbbf24;border:1px solid rgb(234 179 8 / .35)}.badge-priced{background:rgb(236 72 153 / .15);color:#f472b6;border:1px solid rgb(236 72 153 / .35)}.badge-game{background:rgb(139 92 246 / .15);color:#a78bfa;border:1px solid rgb(139 92 246 / .3)}.badge-app{background:rgb(59 130 246 / .15);color:#60a5fa;border:1px solid rgb(59 130 246 / .3)}.project-card{position:relative;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;transition:border-color var(--transition-normal),transform var(--transition-normal),box-shadow var(--transition-normal);animation:fadeIn 0.4s ease both}.project-card:hover{border-color:var(--color-muted-2);transform:translateY(-4px);box-shadow:0 16px 48px rgb(0 0 0 / .5)}.project-card-thumb{width:100%;aspect-ratio:16 / 10;background:var(--color-surface-2);position:relative;overflow:hidden}.project-card-thumb img{width:100%;height:100%;object-fit:cover;transition:transform 0.5s ease}.project-card:hover .project-card-thumb img{transform:scale(1.04)}.project-card-thumb.no-image{display:flex;align-items:center;justify-content:center}.project-card-thumb.no-image::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%)}.project-card-thumb-icon{position:relative;z-index:1;font-size:2.5rem;opacity:.5}.project-card-body{padding:1.1rem 1.25rem 1.25rem}.project-card-meta{display:flex;align-items:center;gap:.5rem;margin-bottom:.6rem}.project-card-title{font-size:.95rem;font-weight:700;color:var(--color-white);margin-bottom:.3rem;line-height:1.3}.project-card-desc{font-size:.78rem;color:var(--color-muted);line-height:1.55}.project-card-arrow{position:absolute;top:1rem;right:1rem;width:32px;height:32px;border-radius:50%;background:var(--color-surface-2);border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;color:var(--color-muted);transition:background var(--transition-fast),color var(--transition-fast)}.project-card:hover .project-card-arrow{background:var(--color-accent);color:var(--color-bg);border-color:var(--color-accent)}.shop-card{position:relative;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;transition:border-color var(--transition-normal),transform var(--transition-normal),box-shadow var(--transition-normal);animation:fadeIn 0.35s ease both}.shop-card:hover{border-color:var(--color-muted-2);transform:translateY(-3px);box-shadow:0 12px 36px rgb(0 0 0 / .45)}.shop-card-thumb{width:100%;aspect-ratio:1 / 1;background:var(--color-surface-2);overflow:hidden}.shop-card-thumb img{width:100%;height:100%;object-fit:cover;transition:transform 0.4s ease}.shop-card:hover .shop-card-thumb img{transform:scale(1.06)}.shop-card-thumb.no-image{display:flex;align-items:center;justify-content:center;font-size:2rem;color:var(--color-muted-2)}.shop-card-body{padding:.85rem 1rem 1rem}.shop-card-title{font-size:.82rem;font-weight:600;color:var(--color-white);margin-bottom:.3rem;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shop-card-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.4rem}.shop-card-price{font-size:.82rem;font-weight:700;color:var(--color-white)}.shop-card-badge-wrap{position:absolute;top:.6rem;left:.6rem}.shop-controls{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1.75rem}.shop-search{flex:1;min-width:160px;max-width:320px;position:relative}.shop-search input{width:100%;background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:99px;padding:.55rem 1rem .55rem 2.5rem;font-family:var(--font-body);font-size:.8rem;color:var(--color-text);outline:none;transition:border-color var(--transition-fast)}.shop-search input::placeholder{color:var(--color-muted)}.shop-search input:focus{border-color:var(--color-muted-2)}.shop-search-icon{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);color:var(--color-muted);pointer-events:none}.shop-filter-tags{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.filter-tag{padding:.3rem .8rem;border-radius:99px;font-size:.72rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border:1.5px solid var(--color-border);background:#fff0;color:var(--color-muted);cursor:pointer;transition:all var(--transition-fast)}.filter-tag:hover{border-color:var(--color-muted-2);color:var(--color-white)}.filter-tag.active{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg)}.pagination{display:flex;align-items:center;justify-content:center;gap:.4rem;margin-top:2.5rem}.pagination-btn{min-width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:600;background:var(--color-surface);border:1.5px solid var(--color-border);color:var(--color-muted);cursor:pointer;transition:all var(--transition-fast);padding:0 .5rem}.pagination-btn:hover:not(:disabled){border-color:var(--color-muted-2);color:var(--color-white)}.pagination-btn.active{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg)}.pagination-btn:disabled{opacity:.3;cursor:default}.pagination-ellipsis{color:var(--color-muted);font-size:.8rem;padding:0 .25rem}.state-loading,.state-empty{grid-column:1 / -1;padding:4rem 0;text-align:center;color:var(--color-muted)}.state-loading-spinner{width:28px;height:28px;border:2.5px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin 0.8s linear infinite;margin:0 auto 1rem}@keyframes spin{to{transform:rotate(360deg)}}.state-empty-emoji{font-size:2rem;margin-bottom:.75rem}.state-empty h3{font-size:.95rem;color:var(--color-text);margin-bottom:.4rem}.state-empty p{font-size:.8rem}@keyframes overlayFadeIn{from{opacity:0}to{opacity:1}}@keyframes overlayFadeOut{from{opacity:1}to{opacity:0}}@keyframes modalSlideUp{from{opacity:0;transform:translateY(32px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modalSlideDown{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(24px) scale(.97)}}@keyframes qrReveal{from{opacity:0;transform:translateY(-8px) scaleY(.92);max-height:0}to{opacity:1;transform:translateY(0) scaleY(1);max-height:320px}}@keyframes qrHide{from{opacity:1;transform:translateY(0) scaleY(1);max-height:320px}to{opacity:0;transform:translateY(-6px) scaleY(.94);max-height:0}}.modal-overlay{position:fixed;inset:0;background:rgb(0 0 0 / .82);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:200;display:flex;align-items:center;justify-content:center;padding:1.5rem;opacity:0;pointer-events:none}.modal-overlay.open{opacity:1;pointer-events:all;animation:overlayFadeIn 220ms cubic-bezier(.16,1,.3,1) both}.modal-overlay.open .modal{animation:modalSlideUp 340ms cubic-bezier(.16,1,.3,1) both}.modal-overlay.closing{opacity:0;pointer-events:none;animation:overlayFadeOut 200ms cubic-bezier(.4,0,1,1) both}.modal-overlay.closing .modal{animation:modalSlideDown 200ms cubic-bezier(.4,0,1,1) both}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);width:100%;max-width:640px;max-height:88vh;overflow-y:auto;overflow-x:hidden;position:relative;scrollbar-width:thin;scrollbar-color:var(--color-border) #fff0;will-change:transform,opacity}.modal::-webkit-scrollbar{width:4px}.modal::-webkit-scrollbar-track{background:#fff0}.modal::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}@keyframes modalContentFade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.modal-overlay.open .modal-image-wrap{animation:modalContentFade 380ms 60ms cubic-bezier(.16,1,.3,1) both}.modal-overlay.open .modal-body{animation:modalContentFade 380ms 120ms cubic-bezier(.16,1,.3,1) both}@keyframes modalImageReveal{from{transform:scale(1.04);opacity:.7}to{transform:scale(1);opacity:1}}.modal-overlay.open .modal-image-wrap img{animation:modalImageReveal 500ms 80ms cubic-bezier(.16,1,.3,1) both}.modal-close{position:absolute;top:1rem;right:1rem;z-index:10;width:32px;height:32px;border-radius:50%;background:var(--color-surface-2);border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;color:var(--color-muted);cursor:pointer;transition:all var(--transition-fast)}.modal-close:hover{background:var(--color-border);color:var(--color-white)}.modal-image-wrap{position:relative;width:100%;aspect-ratio:4 / 3;background:var(--color-surface-2);border-radius:var(--radius-xl) var(--radius-xl) 0 0;overflow:hidden}.modal-image-wrap img{width:100%;height:100%;object-fit:cover}.modal-image-badge{position:absolute;top:1rem;left:1rem}.modal-body{padding:1.5rem}.modal-label{font-size:.65rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--color-muted);margin-bottom:.3rem}.modal-title{font-size:1.3rem;font-weight:700;color:var(--color-white);margin-bottom:.3rem;line-height:1.25}.modal-id{font-size:.72rem;color:var(--color-muted);margin-bottom:1rem;display:flex;align-items:center;gap:.4rem}.modal-id button{width:22px;height:22px;border-radius:4px;background:var(--color-surface-2);border:1px solid var(--color-border);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-muted);transition:all var(--transition-fast)}.modal-id button:hover{background:var(--color-border);color:var(--color-white)}.modal-divider{height:1px;background:var(--color-border);margin:1.25rem 0}.modal-description{font-size:.82rem;color:var(--color-muted);line-height:1.65;margin-bottom:1.25rem}.modal-price-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.modal-price{font-size:1.5rem;font-weight:700;color:var(--color-white)}.modal-price.free{color:#0aff7c}.modal-price.pay-any{color:#fbbf24}.modal-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.payment-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1.1rem;border-radius:99px;font-size:.73rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;border:1.5px solid #fff0;transition:all var(--transition-fast)}.payment-btn-gcash{background:rgb(29 78 216 / .15);border-color:rgb(29 78 216 / .4);color:#93c5fd}.payment-btn-gcash:hover{background:rgb(29 78 216 / .3)}.payment-btn-maya{background:rgb(21 128 61 / .15);border-color:rgb(21 128 61 / .4);color:#86efac}.payment-btn-maya:hover{background:rgb(21 128 61 / .3)}.payment-btn-bmc{background:rgb(234 179 8 / .12);border-color:rgb(234 179 8 / .3);color:#fde68a}.payment-btn-bmc:hover{background:rgb(234 179 8 / .25)}.payment-btn-gdrive{background:rgb(200 255 0 / .1);border-color:rgb(200 255 0 / .3);color:var(--color-accent)}.payment-btn-gdrive:hover{background:rgb(200 255 0 / .2)}.qr-panel{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1rem;margin-top:.75rem;text-align:center;transform-origin:top center;overflow:hidden;max-height:0;opacity:0;pointer-events:none;padding-top:0;padding-bottom:0;margin-top:0;border-width:0;transition:max-height 320ms cubic-bezier(.16,1,.3,1),opacity 260ms cubic-bezier(.16,1,.3,1),padding 260ms cubic-bezier(.16,1,.3,1),margin 260ms cubic-bezier(.16,1,.3,1),border-width 260ms cubic-bezier(.16,1,.3,1)}.qr-panel.visible{max-height:340px;opacity:1;pointer-events:all;padding:1rem;margin-top:.75rem;border-width:1px}.qr-panel img{width:140px;height:140px;margin:0 auto .75rem;border-radius:8px}.qr-actions{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.modal-share-row{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--color-border)}.modal-share-buttons{display:flex;gap:.5rem;margin-top:.6rem;flex-wrap:wrap}.share-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .9rem;border-radius:99px;font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;border:1.5px solid var(--color-border);background:var(--color-surface-2);color:var(--color-muted);transition:all var(--transition-fast)}.share-btn:hover{border-color:var(--color-muted-2);color:var(--color-white)}.toast{position:fixed;bottom:5rem;left:50%;transform:translateX(-50%) translateY(8px);background:var(--color-white);color:var(--color-bg);padding:.6rem 1.25rem;border-radius:99px;font-size:.78rem;font-weight:700;z-index:999;opacity:0;transition:opacity var(--transition-normal),transform var(--transition-normal);pointer-events:none;white-space:nowrap}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.skeleton{background:linear-gradient(90deg,var(--color-surface-2) 25%,var(--color-border) 50%,var(--color-surface-2) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-md)}