*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f0f1a;--card-bg:#1a1a2e;--card-border:#ffffff14;--accent:#6c63ff;--text-primary:#f0f0f5;--text-secondary:#9090aa;--badge-active:#00c853;--badge-expired:#e53935;--countdown-bg:#ffffff1a}html,body,#app{background:var(--bg);min-height:100dvh;color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.card-wrapper{justify-content:center;align-items:center;min-height:100dvh;padding:1.5rem;display:flex}.state-center{text-align:center;color:var(--text-secondary);flex-direction:column;align-items:center;gap:1rem;display:flex}.spinner{border:3px solid #ffffff26;border-top-color:var(--accent);border-radius:50%;width:44px;height:44px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.icon-error{width:56px;height:56px;color:var(--badge-expired);background:#e5393533;border-radius:50%;justify-content:center;align-items:center;font-size:1.8rem;display:flex}.card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:24px;flex-direction:column;gap:1.25rem;width:100%;max-width:360px;padding:1.75rem 1.5rem;display:flex;box-shadow:0 8px 40px #00000080}.card--expired{border-color:#e5393540}.card-header{justify-content:space-between;align-items:center;display:flex}.sucursal-identity{flex-direction:column;gap:2px;display:flex}.sucursal-logo{object-fit:contain;max-width:140px;height:36px}.sucursal-nombre{color:var(--text-secondary);letter-spacing:.05em;text-transform:uppercase;font-size:.9rem;font-weight:600}.sucursal-nombre-sub{color:var(--text-secondary);letter-spacing:.04em;text-transform:uppercase;font-size:.7rem}.card-name-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;text-align:center;margin-bottom:2px;font-size:.65rem}.badge-member{background:var(--badge-active);color:#fff;letter-spacing:.1em;border-radius:20px;padding:4px 10px;font-size:.6rem;font-weight:700}.badge-expired{background:var(--badge-expired);color:#fff;letter-spacing:.1em;border-radius:20px;padding:4px 10px;font-size:.6rem;font-weight:700}.card-name h1{letter-spacing:-.01em;text-align:center;font-size:1.35rem;font-weight:700}.qr-section{flex-direction:column;align-items:center;gap:.75rem;display:flex}.qr-canvas{background:#fff;border-radius:12px;padding:10px;display:block}.qr-countdown{flex-direction:column;gap:4px;width:100%;display:flex}.countdown-bar{background:var(--countdown-bg);border-radius:2px;height:4px;overflow:hidden}.countdown-fill{background:var(--accent);border-radius:2px;height:100%;transition:width .5s linear}.countdown-label{color:var(--text-secondary);text-align:center;font-size:.7rem}.card-info{background:#ffffff0a;border-radius:12px;flex-direction:column;gap:.5rem;padding:.75rem 1rem;display:flex}.info-row{justify-content:space-between;align-items:center;font-size:.85rem;display:flex}.info-label{color:var(--text-secondary)}.info-value{font-weight:600}.card-hint{color:var(--text-secondary);text-align:center;font-size:.72rem;line-height:1.4}.expired-icon{text-align:center;font-size:3rem}.expired-msg{text-align:center;font-size:.95rem;line-height:1.5}.expired-hint{color:var(--text-secondary);text-align:center;font-size:.8rem;line-height:1.5}
