feat: Redesign benefits list page with hero section and modern card design
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions

This commit is contained in:
Maciej Pienczyn 2026-02-03 09:03:01 +01:00
parent 813bb066e8
commit 80f79bd854

View File

@ -4,77 +4,256 @@
{% block extra_css %}
<style>
.benefits-header {
margin-bottom: var(--spacing-xl);
}
.benefits-header h1 {
font-size: var(--font-size-3xl);
color: var(--text-primary);
margin-bottom: var(--spacing-sm);
display: flex;
align-items: center;
gap: var(--spacing-md);
}
.benefits-header p {
color: var(--text-secondary);
font-size: var(--font-size-lg);
}
.test-mode-banner {
background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
border: 1px solid #f59e0b;
border-radius: var(--radius-lg);
padding: var(--spacing-lg);
margin-bottom: var(--spacing-xl);
display: flex;
align-items: flex-start;
gap: var(--spacing-md);
}
.test-mode-banner svg {
width: 24px;
height: 24px;
color: #d97706;
flex-shrink: 0;
margin-top: 2px;
}
.test-mode-banner .info-content {
flex: 1;
}
.test-mode-banner .info-title {
font-weight: 600;
color: #92400e;
margin-bottom: var(--spacing-xs);
}
.test-mode-banner .info-text {
color: #b45309;
font-size: var(--font-size-sm);
}
.benefits-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: var(--spacing-lg);
}
.benefit-card {
background: white;
border-radius: var(--radius-lg);
border: 1px solid var(--border-color);
box-shadow: var(--shadow);
transition: all 0.2s ease;
/* ============================================
HERO SECTION
============================================ */
.benefits-hero {
background: linear-gradient(135deg, #1e3a5f 0%, #2d5a87 50%, #3b7cb8 100%);
color: white;
padding: 3rem 0;
margin: -2rem -1rem 2rem -1rem;
position: relative;
overflow: hidden;
}
.benefits-hero::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
opacity: 0.5;
}
.benefits-hero-content {
max-width: 800px;
margin: 0 auto;
text-align: center;
position: relative;
z-index: 1;
padding: 0 1rem;
}
.benefits-hero-icon {
width: 80px;
height: 80px;
background: rgba(255,255,255,0.15);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 1.5rem;
backdrop-filter: blur(10px);
}
.benefits-hero-icon svg {
width: 40px;
height: 40px;
color: white;
}
.benefits-hero h1 {
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 1rem;
text-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.benefits-hero p {
font-size: 1.2rem;
opacity: 0.9;
max-width: 600px;
margin: 0 auto 1.5rem;
line-height: 1.6;
}
.hero-stats {
display: flex;
justify-content: center;
gap: 3rem;
margin-top: 2rem;
}
.hero-stat {
text-align: center;
}
.hero-stat-value {
font-size: 2rem;
font-weight: 700;
display: block;
}
.hero-stat-label {
font-size: 0.9rem;
opacity: 0.8;
}
/* ============================================
INFO BANNER
============================================ */
.info-banner {
background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
border: 1px solid #f59e0b;
border-radius: 1rem;
padding: 1.25rem 1.5rem;
margin-bottom: 2rem;
display: flex;
align-items: center;
gap: 1rem;
box-shadow: 0 4px 6px -1px rgba(245, 158, 11, 0.1);
}
.info-banner-icon {
width: 48px;
height: 48px;
background: #fbbf24;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.info-banner-icon svg {
width: 24px;
height: 24px;
color: #78350f;
}
.info-banner-content {
flex: 1;
}
.info-banner-title {
font-weight: 700;
color: #92400e;
font-size: 1rem;
margin-bottom: 0.25rem;
}
.info-banner-text {
color: #a16207;
font-size: 0.9rem;
line-height: 1.5;
}
/* ============================================
SECTION HEADER
============================================ */
.section-header {
text-align: center;
margin-bottom: 2rem;
}
.section-header h2 {
font-size: 1.75rem;
font-weight: 700;
color: var(--text-primary);
margin-bottom: 0.5rem;
}
.section-header p {
color: var(--text-secondary);
font-size: 1.1rem;
}
/* ============================================
BENEFITS GRID
============================================ */
.benefits-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
gap: 1.5rem;
}
/* ============================================
BENEFIT CARD - REDESIGNED
============================================ */
.benefit-card {
background: white;
border-radius: 1rem;
border: 1px solid #e2e8f0;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
display: flex;
flex-direction: column;
}
.benefit-card:hover {
transform: translateY(-2px);
box-shadow: var(--shadow-lg);
transform: translateY(-8px);
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
border-color: var(--primary);
}
.benefit-card.featured {
border: 2px solid var(--primary);
}
.benefit-card.featured::before {
content: 'Polecane';
position: absolute;
top: 16px;
right: -32px;
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
color: white;
font-size: 0.75rem;
font-weight: 700;
padding: 6px 40px;
transform: rotate(45deg);
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
z-index: 10;
}
/* Card Header with gradient accent */
.benefit-card-header {
padding: 1.5rem;
background: linear-gradient(180deg, #f8fafc 0%, white 100%);
border-bottom: 1px solid #e2e8f0;
display: flex;
align-items: center;
gap: 1rem;
}
.benefit-logo {
width: 64px;
height: 64px;
border-radius: 12px;
object-fit: contain;
background: white;
padding: 8px;
border: 1px solid #e2e8f0;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}
.benefit-logo-placeholder {
width: 64px;
height: 64px;
border-radius: 12px;
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: 700;
font-size: 1.5rem;
box-shadow: 0 4px 6px rgba(var(--primary-rgb), 0.3);
}
.benefit-title-section {
flex: 1;
}
.benefit-title {
font-size: 1.25rem;
font-weight: 700;
color: var(--text-primary);
margin-bottom: 4px;
line-height: 1.3;
}
.benefit-card-link {
@ -87,14 +266,141 @@
color: var(--primary);
}
.benefit-more-link {
.benefit-category {
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 0.8rem;
color: var(--primary);
font-size: var(--font-size-sm);
background: rgba(var(--primary-rgb), 0.1);
padding: 4px 10px;
border-radius: 20px;
font-weight: 500;
}
/* Card Body */
.benefit-card-body {
padding: 1.5rem;
flex: 1;
display: flex;
flex-direction: column;
}
.benefit-description {
color: var(--text-secondary);
font-size: 0.95rem;
line-height: 1.6;
margin-bottom: 1rem;
flex: 1;
}
/* Highlight features */
.benefit-highlights {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
margin-bottom: 1rem;
}
.benefit-highlight {
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 0.8rem;
color: #059669;
background: #ecfdf5;
padding: 4px 10px;
border-radius: 20px;
font-weight: 500;
}
.benefit-highlight svg {
width: 14px;
height: 14px;
}
/* Pricing section */
.benefit-pricing {
background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%);
border-radius: 12px;
padding: 1rem;
margin-bottom: 1rem;
border: 1px solid #bbf7d0;
}
.pricing-row {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 0.5rem;
}
.pricing-row:last-child {
margin-bottom: 0;
}
.benefit-member-price {
font-size: 1.5rem;
font-weight: 700;
color: #059669;
}
.benefit-regular-price {
font-size: 1rem;
color: #9ca3af;
text-decoration: line-through;
}
.benefit-discount-badge {
background: linear-gradient(135deg, #059669 0%, #047857 100%);
color: white;
font-size: 0.75rem;
font-weight: 700;
padding: 4px 12px;
border-radius: 20px;
box-shadow: 0 2px 4px rgba(5, 150, 105, 0.3);
}
/* Promo code */
.benefit-promo-code {
background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
border: 2px dashed #3b82f6;
border-radius: 12px;
padding: 1rem;
margin-bottom: 1rem;
display: flex;
align-items: center;
justify-content: space-between;
}
.promo-code-label {
font-size: 0.85rem;
color: #1e40af;
font-weight: 500;
}
.promo-code-value {
font-family: 'SF Mono', Monaco, monospace;
font-weight: 700;
color: #1d4ed8;
font-size: 1.1rem;
background: white;
padding: 4px 12px;
border-radius: 6px;
letter-spacing: 1px;
}
/* More link */
.benefit-more-link {
display: inline-flex;
align-items: center;
gap: 6px;
color: var(--primary);
font-size: 0.9rem;
font-weight: 600;
text-decoration: none;
margin-top: var(--spacing-sm);
margin-top: auto;
padding-top: 0.5rem;
}
.benefit-more-link:hover {
@ -102,140 +408,20 @@
}
.benefit-more-link svg {
width: 14px;
height: 14px;
width: 16px;
height: 16px;
transition: transform 0.2s ease;
}
.benefit-card.featured {
border-color: var(--primary);
border-width: 2px;
}
.benefit-card.featured::before {
content: 'Polecane';
position: absolute;
top: 12px;
right: -28px;
background: var(--primary);
color: white;
font-size: var(--font-size-xs);
font-weight: 600;
padding: 4px 36px;
transform: rotate(45deg);
}
.benefit-card-header {
padding: var(--spacing-lg);
display: flex;
align-items: center;
gap: var(--spacing-md);
border-bottom: 1px solid var(--border-color);
}
.benefit-logo {
width: 48px;
height: 48px;
border-radius: var(--radius-md);
object-fit: contain;
background: #f8fafc;
padding: 4px;
}
.benefit-logo-placeholder {
width: 48px;
height: 48px;
border-radius: var(--radius-md);
background: linear-gradient(135deg, var(--primary-light) 0%, var(--primary) 100%);
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: 700;
font-size: var(--font-size-lg);
}
.benefit-title-section {
flex: 1;
}
.benefit-title {
font-size: var(--font-size-lg);
font-weight: 600;
color: var(--text-primary);
margin-bottom: 2px;
}
.benefit-category {
font-size: var(--font-size-sm);
color: var(--text-secondary);
}
.benefit-card-body {
padding: var(--spacing-lg);
}
.benefit-description {
color: var(--text-secondary);
font-size: var(--font-size-sm);
line-height: 1.5;
margin-bottom: var(--spacing-md);
}
.benefit-pricing {
display: flex;
align-items: baseline;
gap: var(--spacing-sm);
margin-bottom: var(--spacing-md);
}
.benefit-member-price {
font-size: var(--font-size-xl);
font-weight: 700;
color: var(--success);
}
.benefit-regular-price {
font-size: var(--font-size-sm);
color: var(--text-secondary);
text-decoration: line-through;
}
.benefit-discount-badge {
background: #dcfce7;
color: #16a34a;
font-size: var(--font-size-xs);
font-weight: 600;
padding: 2px 8px;
border-radius: var(--radius-sm);
}
.benefit-promo-code {
background: #f0f9ff;
border: 1px dashed #0ea5e9;
border-radius: var(--radius-md);
padding: var(--spacing-sm) var(--spacing-md);
margin-bottom: var(--spacing-md);
display: flex;
align-items: center;
justify-content: space-between;
}
.promo-code-label {
font-size: var(--font-size-xs);
color: var(--text-secondary);
}
.promo-code-value {
font-family: monospace;
font-weight: 700;
color: #0284c7;
font-size: var(--font-size-md);
.benefit-more-link:hover svg {
transform: translateX(4px);
}
/* Card Footer */
.benefit-card-footer {
padding: var(--spacing-md) var(--spacing-lg);
background: #f8fafc;
border-top: 1px solid var(--border-color);
padding: 1rem 1.5rem;
background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
border-top: 1px solid #e2e8f0;
}
.benefit-cta {
@ -243,79 +429,162 @@
display: flex;
align-items: center;
justify-content: center;
gap: var(--spacing-sm);
padding: var(--spacing-sm) var(--spacing-md);
background: var(--primary);
gap: 0.5rem;
padding: 0.875rem 1.5rem;
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
color: white;
border: none;
border-radius: var(--radius-md);
border-radius: 10px;
font-weight: 600;
font-size: 1rem;
cursor: pointer;
transition: background 0.2s ease;
transition: all 0.2s ease;
text-decoration: none;
box-shadow: 0 4px 6px rgba(var(--primary-rgb), 0.25);
}
.benefit-cta:hover {
background: var(--primary-dark);
transform: translateY(-2px);
box-shadow: 0 6px 12px rgba(var(--primary-rgb), 0.35);
color: white;
}
.benefit-cta svg {
width: 16px;
height: 16px;
width: 18px;
height: 18px;
}
/* ============================================
EMPTY STATE
============================================ */
.empty-state {
text-align: center;
padding: var(--spacing-3xl);
color: var(--text-secondary);
padding: 4rem 2rem;
background: linear-gradient(180deg, #f8fafc 0%, white 100%);
border-radius: 1rem;
border: 2px dashed #e2e8f0;
}
.empty-state svg {
width: 64px;
height: 64px;
margin-bottom: var(--spacing-md);
opacity: 0.5;
.empty-state-icon {
width: 80px;
height: 80px;
background: #f1f5f9;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 1.5rem;
}
.empty-state-icon svg {
width: 40px;
height: 40px;
color: #94a3b8;
}
.empty-state h3 {
font-size: var(--font-size-xl);
font-size: 1.5rem;
color: var(--text-primary);
margin-bottom: var(--spacing-sm);
margin-bottom: 0.5rem;
}
.empty-state p {
color: var(--text-secondary);
font-size: 1rem;
}
/* ============================================
MOBILE RESPONSIVE
============================================ */
@media (max-width: 768px) {
.benefits-hero {
padding: 2rem 0;
margin: -1rem -1rem 1.5rem -1rem;
}
.benefits-hero h1 {
font-size: 1.75rem;
}
.benefits-hero p {
font-size: 1rem;
}
.hero-stats {
gap: 1.5rem;
}
.hero-stat-value {
font-size: 1.5rem;
}
.benefits-grid {
grid-template-columns: 1fr;
}
.info-banner {
flex-direction: column;
text-align: center;
}
}
</style>
{% endblock %}
{% block content %}
<div class="container">
<div class="benefits-header">
<h1>
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<!-- Hero Section -->
<div class="benefits-hero">
<div class="benefits-hero-content">
<div class="benefits-hero-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2L2 7l10 5 10-5-10-5z"></path>
<path d="M2 17l10 5 10-5"></path>
<path d="M2 12l10 5 10-5"></path>
</svg>
Korzyści Członkowskie
</h1>
<p>Ekskluzywne oferty i zniżki dla członków Izby Przedsiębiorców NORDA</p>
</div>
</div>
<h1>Korzyści Członkowskie</h1>
<p>Ekskluzywne oferty, zniżki i narzędzia dla członków Izby Przedsiębiorców NORDA. Oszczędzaj na subskrypcjach i oprogramowaniu biznesowym.</p>
<div class="hero-stats">
<div class="hero-stat">
<span class="hero-stat-value">{{ benefits|length if benefits else 0 }}</span>
<span class="hero-stat-label">Aktywnych ofert</span>
</div>
<div class="hero-stat">
<span class="hero-stat-value">do 50%</span>
<span class="hero-stat-label">Oszczędności</span>
</div>
<div class="hero-stat">
<span class="hero-stat-value">14 dni</span>
<span class="hero-stat-label">Darmowy trial</span>
</div>
</div>
</div>
</div>
<div class="container">
<!-- Test mode banner -->
<div class="test-mode-banner">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path>
<line x1="12" y1="9" x2="12" y2="13"></line>
<line x1="12" y1="17" x2="12.01" y2="17"></line>
</svg>
<div class="info-content">
<div class="info-title">Tryb testowy</div>
<div class="info-text">
<div class="info-banner">
<div class="info-banner-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path>
<line x1="12" y1="9" x2="12" y2="13"></line>
<line x1="12" y1="17" x2="12.01" y2="17"></line>
</svg>
</div>
<div class="info-banner-content">
<div class="info-banner-title">Tryb testowy</div>
<div class="info-banner-text">
Ta strona jest widoczna tylko dla administratorów. Po zakończeniu testów zostanie udostępniona wszystkim członkom Izby.
</div>
</div>
</div>
{% if benefits %}
<div class="section-header">
<h2>Dostępne oferty</h2>
<p>Wybierz ofertę i zacznij oszczędzać już dziś</p>
</div>
<div class="benefits-grid">
{% for benefit in benefits %}
<div class="benefit-card {% if benefit.is_featured %}featured{% endif %}">
@ -328,7 +597,7 @@
{% endif %}
<div class="benefit-title-section">
<div class="benefit-title">{{ benefit.name }}</div>
<div class="benefit-category">{{ category_choices.get(benefit.category, benefit.category) }}</div>
<span class="benefit-category">{{ category_choices.get(benefit.category, benefit.category) }}</span>
</div>
</div>
</a>
@ -338,23 +607,36 @@
{{ benefit.short_description or benefit.description[:150] + '...' if benefit.description and benefit.description|length > 150 else benefit.description or 'Brak opisu.' }}
</p>
<a href="{{ url_for('benefits.benefit_detail', slug=benefit.slug) }}" class="benefit-more-link">
Zobacz szczegóły
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</a>
<div class="benefit-highlights">
<span class="benefit-highlight">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polyline points="20 6 9 17 4 12"></polyline>
</svg>
14 dni za darmo
</span>
<span class="benefit-highlight">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polyline points="20 6 9 17 4 12"></polyline>
</svg>
Bez zobowiązań
</span>
</div>
{% if benefit.member_price or benefit.discount_description %}
<div class="benefit-pricing">
{% if benefit.member_price %}
<span class="benefit-member-price">{{ benefit.member_price }}</span>
{% endif %}
<div class="pricing-row">
{% if benefit.member_price %}
<span class="benefit-member-price">{{ benefit.member_price }}</span>
{% endif %}
{% if benefit.discount_description %}
<span class="benefit-discount-badge">{{ benefit.discount_description }}</span>
{% endif %}
</div>
{% if benefit.regular_price %}
<span class="benefit-regular-price">{{ benefit.regular_price }}</span>
{% endif %}
{% if benefit.discount_description %}
<span class="benefit-discount-badge">{{ benefit.discount_description }}</span>
<div class="pricing-row">
<span style="font-size: 0.85rem; color: #6b7280;">Cena regularna:</span>
<span class="benefit-regular-price">{{ benefit.regular_price }}</span>
</div>
{% endif %}
</div>
{% endif %}
@ -365,11 +647,18 @@
<span class="promo-code-value">{{ benefit.promo_code }}</span>
</div>
{% endif %}
<a href="{{ url_for('benefits.benefit_detail', slug=benefit.slug) }}" class="benefit-more-link">
Zobacz szczegóły oferty
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</a>
</div>
<div class="benefit-card-footer">
<a href="{{ url_for('benefits.benefit_redirect', slug=benefit.slug) }}" class="benefit-cta" target="_blank" rel="noopener">
Skorzystaj z oferty
Wypróbuj za darmo
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path>
<polyline points="15 3 21 3 21 9"></polyline>
@ -382,11 +671,13 @@
</div>
{% else %}
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2L2 7l10 5 10-5-10-5z"></path>
<path d="M2 17l10 5 10-5"></path>
<path d="M2 12l10 5 10-5"></path>
</svg>
<div class="empty-state-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2L2 7l10 5 10-5-10-5z"></path>
<path d="M2 17l10 5 10-5"></path>
<path d="M2 12l10 5 10-5"></path>
</svg>
</div>
<h3>Brak dostępnych ofert</h3>
<p>Wkrótce pojawią się tutaj ekskluzywne korzyści dla członków Izby.</p>
</div>