*,:after,:before{box-sizing:border-box}:root{font-family:system-ui,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5;color:#111827;background:#f9fafb;-webkit-font-smoothing:antialiased}body{margin:0}h1,h2,h3,h4{margin:0;line-height:1.2}p{margin:0}button{font-family:inherit}code{font-family:ui-monospace,Consolas,monospace}.btn-primary{background:#003087;color:#fff;border:none;padding:.6rem 1.5rem;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s}.btn-primary:hover{background:#002070}.btn-secondary{background:#fff;color:#003087;border:1.5px solid #003087;padding:.5rem 1.25rem;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .15s}.btn-secondary:hover{background:#eff6ff}.btn-ghost{background:none;border:1px solid #d1d5db;padding:.4rem .75rem;border-radius:6px;font-size:.875rem;color:#555;cursor:pointer;transition:background .15s}.btn-ghost:hover{background:#f3f4f6}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.shimmer-base{background:linear-gradient(90deg,#f3f4f6 25%,#e9eaec 50%,#f3f4f6 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:1rem;gap:1rem}.skeleton-card{border-radius:12px;aspect-ratio:4/3}nav{position:-webkit-sticky;position:sticky;top:0;z-index:100;gap:2rem;padding:0 2rem;height:60px;background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 1px 3px rgba(0,0,0,.06)}.nav-brand a,nav{display:flex;align-items:center}.nav-brand a{gap:.5rem;text-decoration:none}.brand-badge{background:#003087;color:#fff;font-weight:700;font-size:.75rem;padding:2px 7px;border-radius:4px;letter-spacing:.05em}.brand-text{font-weight:600;color:#111;font-size:.95rem}.nav-links{display:flex;gap:.25rem;flex:1 1}.nav-links a{padding:.4rem .75rem;border-radius:6px;text-decoration:none;color:#555;font-size:.9rem;font-weight:500;transition:background .15s,color .15s}.nav-links a:hover{background:#f3f4f6;color:#111}.nav-links a.active{background:#eff6ff;color:#003087}.nav-auth{display:flex;align-items:center;gap:.75rem;margin-left:auto}.nav-user{font-size:.875rem;color:#555}.mock-badge{font-size:.7rem;background:#fef9c3;color:#854d0e;border:1px solid #fde68a;padding:2px 6px;border-radius:4px;font-weight:500}.nav-btn-primary{background:#003087;color:#fff;border:none;padding:.4rem 1rem;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s}.nav-btn-primary:hover{background:#002070}.card-tile{background:#fff;border-radius:12px;border:1px solid #e5e7eb;overflow:hidden;cursor:pointer;transition:box-shadow .15s,transform .15s}.card-tile:hover{box-shadow:0 4px 16px rgba(0,0,0,.1);transform:translateY(-2px)}.card-image{position:relative;aspect-ratio:5/3;overflow:hidden;background:#f3f4f6}.card-image img{width:100%;height:100%;object-fit:cover}.card-image.expired img{filter:grayscale(60%) opacity(.75)}.image-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700;color:#9ca3af;background:#f3f4f6}.card-badges{position:absolute;top:8px;left:8px;display:flex;gap:4px}.badge{font-size:.65rem;font-weight:600;padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.03em}.badge-new{background:#dcfce7;color:#166534}.badge-exclusive{background:#ede9fe;color:#6d28d9}.badge-boost{background:#fff7ed;color:#c2410c}.badge-reload{background:#d1fae5;color:#059669}.heart-btn{position:absolute;top:8px;right:8px;background:rgba(255,255,255,.9);border:none;border-radius:50%;width:32px;height:32px;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;transition:background .15s,transform .1s;color:#9ca3af}.heart-btn:hover{background:#fff;transform:scale(1.15)}.heart-btn.liked{color:#ef4444}.card-body{padding:.75rem}.card-company{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.company-logo{width:24px;height:24px;border-radius:4px;object-fit:cover}.company-name-small{font-size:.8rem;color:#6b7280;font-weight:500}.offer-name{font-size:.9rem;font-weight:600;color:#111;margin:0 0 .4rem;line-height:1.3}.card-meta{margin-top:.35rem;display:flex;flex-direction:column;gap:.25rem}.created-at{font-size:.7rem;color:#9ca3af}.category-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:.25rem}.category-chip{font-size:.6rem;padding:2px 6px;border-radius:10px;background:#f3f4f6;color:#6b7280;font-weight:500;text-transform:capitalize;white-space:nowrap}.expired-overlay{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:flex-start;padding:8px;pointer-events:none}.expired-label{font-size:.65rem;font-weight:700;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:.04em;background:rgba(107,114,128,.85);color:#fff}.home-page{max-width:1200px;margin:0 auto;padding:0 1.5rem 3rem}.hero{background:linear-gradient(135deg,#003087,#0050c8);color:#fff;border-radius:16px;padding:3rem 2rem;margin:2rem 0;text-align:center}.hero h1{font-size:2.25rem;font-weight:800;margin:0 0 .5rem}.hero p{font-size:1.1rem;opacity:.85;margin:0 0 1.5rem}.section{margin:2.5rem 0}.section-header{margin-bottom:1rem}.section-header h2{font-size:1.25rem;font-weight:700;margin:0;display:flex;align-items:center;gap:.5rem}.section-sub{font-size:.875rem;color:#6b7280;margin:.25rem 0 0}.count{background:#003087;color:#fff;font-size:.75rem;padding:1px 7px;border-radius:20px;font-weight:600}.cta-section{text-align:center}.cta-box{border:2px dashed #e5e7eb;border-radius:16px;padding:3rem 2rem;display:flex;flex-direction:column;align-items:center;gap:.75rem;color:#6b7280}.cta-icon{font-size:2.5rem;color:#d1d5db}.cta-box h3{margin:0;color:#374151;font-size:1.1rem}.cta-box p{margin:0;font-size:.9rem;max-width:360px}.empty-state{color:#6b7280;font-size:.9rem;padding:1.5rem;background:#f9fafb;border-radius:8px}.expired-section{margin-top:1.5rem}.expired-section-label{font-size:.8rem;font-weight:600;color:#9ca3af;text-transform:uppercase;letter-spacing:.05em;margin:0 0 .75rem}.wallet-cta-inner{background:#f0f9ff;border:1px solid #bae6fd;border-radius:12px;padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.wallet-cta-inner h3{margin:0 0 .25rem;font-size:1rem}.wallet-cta-inner p{margin:0;font-size:.875rem;color:#6b7280}.search-page{max-width:1200px;margin:0 auto;padding:2rem 1.5rem 3rem}.search-header{text-align:center;margin-bottom:2rem}.search-header h1{font-size:2rem;font-weight:800;margin:0 0 .25rem}.search-header p{color:#6b7280;margin:0 0 1.5rem}.search-bar-wrap{position:relative;max-width:560px;margin:0 auto}.search-bar{display:flex;align-items:center;gap:.5rem;background:#fff;border:1.5px solid #d1d5db;border-radius:12px;padding:.6rem 1rem;box-shadow:0 2px 8px rgba(0,0,0,.06);transition:border-color .15s}.search-bar:focus-within{border-color:#003087}.search-icon{font-size:1rem;color:#9ca3af}.search-bar input{flex:1 1;border:none;outline:none;font-size:.95rem;color:#111;background:transparent}.clear-btn{background:none;border:none;color:#9ca3af;cursor:pointer;font-size:.85rem;padding:2px 4px}.filters-row{justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.filter-chips,.filters-row{display:flex;align-items:center;flex-wrap:wrap}.filter-chips{gap:.5rem}.filter-label{font-size:.8rem;color:#6b7280;font-weight:500}.chip{padding:.3rem .75rem;border-radius:20px;border:1.5px solid #e5e7eb;background:#fff;font-size:.8rem;color:#374151;cursor:pointer;transition:all .15s}.chip:hover{border-color:#003087;color:#003087}.chip.active{background:#003087;border-color:#003087;color:#fff}.sort-row{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#6b7280}.sort-row select{border:1px solid #d1d5db;border-radius:6px;padding:.3rem .5rem;font-size:.875rem}.expired-toggle{padding:.3rem .75rem;border-radius:20px;border:1.5px solid #e5e7eb;background:#fff;font-size:.8rem;color:#6b7280;cursor:pointer;transition:all .15s;font-weight:500}.expired-toggle:hover{border-color:#9ca3af;color:#374151}.expired-toggle.active{background:#6b7280;border-color:#6b7280;color:#fff}.results-meta{color:#6b7280}.error-banner,.results-meta{margin-bottom:1rem;font-size:.875rem}.error-banner{background:#fef2f2;border:1px solid #fecaca;color:#dc2626;border-radius:8px;padding:.75rem 1rem;display:flex;align-items:center;justify-content:space-between}.error-banner button{background:none;border:1px solid #dc2626;color:#dc2626;padding:.25rem .75rem;border-radius:6px;cursor:pointer;font-size:.8rem}.no-results{text-align:center;padding:3rem;color:#6b7280}.no-results button{margin-top:.75rem;background:none;border:1px solid #d1d5db;padding:.4rem 1rem;border-radius:6px;cursor:pointer;font-size:.875rem}.wallet-page{max-width:1000px;margin:0 auto;padding:2rem 1.5rem 3rem}.auth-gate{justify-content:center;min-height:60vh}.auth-card,.auth-gate{display:flex;align-items:center}.auth-card{text-align:center;max-width:380px;flex-direction:column;gap:.75rem}.wallet-icon{font-size:3rem}.auth-card h2{margin:0}.auth-card p{color:#6b7280;margin:0;font-size:.9rem}.wallet-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.wallet-header h1{margin:0}.wallet-header p{margin:0;color:#6b7280;font-size:.9rem}.header-actions{display:flex;gap:.25rem}.tab-btn{padding:.4rem .9rem;border-radius:8px;border:1.5px solid #e5e7eb;background:#fff;font-size:.85rem;cursor:pointer;color:#6b7280;transition:all .15s}.tab-btn.active{background:#003087;border-color:#003087;color:#fff}.wallet-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:1rem;gap:1rem}.wallet-skeleton{border-radius:12px;height:140px}.wallet-card{background:#fff;border:1.5px solid #e5e7eb;border-radius:12px;padding:1rem;cursor:pointer;transition:box-shadow .15s,transform .15s}.wallet-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08);transform:translateY(-2px)}.wallet-card-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.wc-logo{width:40px;height:40px;border-radius:8px;object-fit:cover}.wc-info{flex:1 1;min-width:0}.wc-company{font-weight:600;margin:0;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wc-offer{margin:0;font-size:.75rem;color:#6b7280}.wc-balance{text-align:right}.balance-val{display:block;font-size:1.1rem;font-weight:700;color:#003087}.balance-label{font-size:.7rem;color:#9ca3af}.wc-code{background:#f3f4f6;border-radius:6px;padding:.5rem .75rem;margin-bottom:.75rem}.wc-code code{font-size:.8rem;color:#374151;letter-spacing:.05em}.wc-footer{display:flex;align-items:center;gap:.5rem}.wc-expiry{font-size:.75rem;color:#9ca3af}.wc-reload{font-size:.7rem;background:#d1fae5;color:#059669;padding:2px 6px;border-radius:4px;font-weight:500}.empty-wallet{text-align:center;padding:4rem 2rem;color:#6b7280;display:flex;flex-direction:column;align-items:center;gap:.75rem}.empty-icon{font-size:3rem}.empty-wallet h3{margin:0;color:#374151}.empty-wallet p{margin:0;font-size:.9rem}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:200;display:flex;align-items:center;justify-content:center;padding:1rem}.modal{background:#fff;border-radius:16px;padding:1.5rem;width:100%;max-width:400px;position:relative}.modal-close{position:absolute;top:1rem;right:1rem;background:none;border:none;font-size:1rem;cursor:pointer;color:#9ca3af}.modal-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem}.modal-logo{width:48px;height:48px;border-radius:10px;object-fit:cover}.modal-header h2{margin:0;font-size:1.1rem}.modal-header p{margin:0;color:#6b7280;font-size:.85rem}.modal-code-box{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:1rem;margin-bottom:1rem;text-align:center}.code-label{font-size:.75rem;color:#9ca3af;margin:0 0 .5rem;text-transform:uppercase;letter-spacing:.05em}.modal-code{font-size:.95rem;letter-spacing:.08em;color:#111;display:block;margin-bottom:.75rem}.copy-btn{background:#003087;color:#fff;border:none;padding:.35rem 1rem;border-radius:6px;font-size:.8rem;cursor:pointer}.modal-balance{text-align:center;margin-bottom:1rem}.modal-balance-val{font-size:2rem;font-weight:800;color:#003087;display:block}.modal-actions{display:flex;gap:.5rem;margin-bottom:1rem}.modal-meta{border-top:1px solid #f3f4f6;padding-top:.75rem;margin-bottom:.75rem}.meta-row{display:flex;justify-content:space-between;font-size:.8rem;color:#6b7280;margin-bottom:.25rem}.modal-footer-actions{text-align:center}.hide-btn{background:none;border:none;font-size:.8rem;color:#9ca3af;cursor:pointer;text-decoration:underline}.hide-btn:hover{color:#374151}.modal-btn-secondary{flex:1 1;background:#f9fafb;color:#374151;border:1.5px solid #e5e7eb;padding:.6rem 1rem;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer}.modal-btn-secondary:hover:not(:disabled){background:#f3f4f6}.modal-btn-secondary:disabled{opacity:.6;cursor:default}.card-page{max-width:1100px;margin:0 auto;padding:1.5rem 1.5rem 3rem}.back-btn{background:none;border:none;color:#6b7280;font-size:.875rem;cursor:pointer;padding:0;margin-bottom:1.5rem;display:block}.back-btn:hover{color:#111}.detail-layout{display:grid;grid-template-columns:1fr 1fr;grid-gap:2.5rem;gap:2.5rem;align-items:start}@media (max-width:680px){.detail-layout{grid-template-columns:1fr}}.card-hero{width:100%;border-radius:12px;object-fit:cover;aspect-ratio:5/3}.company-row{display:flex;align-items:center;gap:.75rem;margin-top:1rem}.company-logo-lg{width:40px;height:40px;border-radius:8px;object-fit:cover}.company-name-lg{font-weight:600;margin:0;font-size:.95rem}.offer-type-text{margin:0;font-size:.8rem;color:#6b7280;text-transform:capitalize}.detail-heart-btn{margin-left:auto;background:none;border:1.5px solid #e5e7eb;border-radius:8px;padding:.4rem .6rem;font-size:1.2rem;cursor:pointer;color:#9ca3af;transition:all .15s}.detail-heart-btn:hover{border-color:#ef4444}.detail-heart-btn.liked{color:#ef4444;border-color:#fca5a5;background:#fff1f2}.badges-row{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.75rem}.detail-badge{font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:.04em}.detail-h1{font-size:1.75rem;font-weight:800;margin:0 0 .25rem}.company-sub{color:#6b7280;margin:0 0 1.5rem}.stats-row{display:flex;gap:1rem;margin-bottom:1.5rem}.stat{display:flex;flex-direction:column;gap:2px}.stat-val{font-size:1.1rem;font-weight:700;color:#003087}.stat-label{font-size:.75rem;color:#6b7280}.purchase-box{background:#f9fafb;border:1px solid #e5e7eb;border-radius:12px;padding:1.25rem;margin-bottom:1.5rem}.purchase-box h3{margin:0 0 1rem;font-size:1rem}.amount-row{margin-bottom:1rem}.amount-row label{font-size:.8rem;font-weight:500;color:#374151;display:block;margin-bottom:.5rem}.amount-options{display:flex;gap:.5rem;flex-wrap:wrap}.amount-btn{padding:.4rem .9rem;border-radius:8px;border:1.5px solid #e5e7eb;background:#fff;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s}.amount-btn:hover{border-color:#003087}.amount-btn.selected{border-color:#003087;background:#003087;color:#fff}.price-breakdown{border-top:1px solid #e5e7eb;padding-top:.75rem;margin-bottom:1rem}.price-row{display:flex;justify-content:space-between;font-size:.875rem;color:#6b7280;margin-bottom:.25rem}.discount-row{color:#059669}.total-row{font-weight:700;font-size:1rem;color:#111;margin-top:.5rem;padding-top:.5rem;border-top:1px solid #e5e7eb}.btn-purchase{width:100%;background:#003087;color:#fff;border:none;padding:.75rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .15s}.btn-purchase:hover:not(:disabled){background:#002070}.btn-purchase:disabled{opacity:.7;cursor:default}.btn-signin-full{width:100%;background:#f9fafb;color:#374151;border:1.5px solid #d1d5db;padding:.75rem;border-radius:8px;font-size:.9rem;font-weight:500;cursor:pointer}.btn-signin-full:hover{background:#f3f4f6}.info-section{font-size:.875rem;color:#6b7280}.info-section h4{color:#374151;margin:0 0 .5rem}.reload-note{color:#059669;background:#f0fdf4;border-radius:6px;padding:.5rem .75rem;margin-top:.5rem}.not-found{color:#6b7280}.not-found,.success-screen{text-align:center;padding:4rem 2rem}.success-screen{color:#059669;flex-direction:column;gap:1rem}.success-icon,.success-screen{display:flex;align-items:center}.success-icon{font-size:3rem;background:#dcfce7;width:5rem;height:5rem;border-radius:50%;justify-content:center;margin:0 auto;font-weight:700}