nordabiz/templates/landing.html
Maciej Pienczyn f86e870ff0 perf+a11y: heading order, image dimensions, static cache headers
- Fix heading hierarchy: H4→H3 in "Dlaczego warto?" section (6 cards)
  to maintain sequential H1→H2→H3 order (accessibility)
- Add explicit width/height to logo images in header/footer (CLS)
- Add Cache-Control: 30 days for /static/ assets (performance)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 18:00:21 +02:00

713 lines
35 KiB
HTML
Executable File

{% extends "base.html" %}
{% block title %}Norda Biznes — Katalog Firm Członkowskich Izby Gospodarczej{% endblock %}
{% block meta_description %}Katalog {{ total_companies }} firm członkowskich Izby Gospodarczej Norda Biznes - Wejherowo, powiat wejherowski i województwo pomorskie. Networking i współpraca biznesowa.{% endblock %}
{% block og_title %}Norda Biznes Partner - Katalog Firm Członkowskich{% endblock %}
{% block og_description %}{{ total_companies }} firm z województwa pomorskiego w jednym miejscu. Izba Gospodarcza Norda Biznes z Wejherowa - networking i współpraca biznesowa.{% endblock %}
{% block head_extra %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Stowarzyszenie Norda Biznes",
"description": "Izba Gospodarcza zrzeszająca firmy z Wejherowa, powiatu wejherowskiego i województwa pomorskiego. Networking, współpraca biznesowa i rozwój przedsiębiorczości.",
"url": "https://nordabiznes.pl",
"image": "{{ url_for('static', filename='img/favicon-512.png', _external=True) }}",
"telephone": "+48 729 716 400",
"email": "biuro@norda-biznes.info",
"priceRange": "Bezpłatne członkostwo",
"address": {
"@type": "PostalAddress",
"streetAddress": "ul. 12 Marca 238/5",
"addressLocality": "Wejherowo",
"postalCode": "84-200",
"addressRegion": "pomorskie",
"addressCountry": "PL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 54.6103,
"longitude": 18.2353
},
"openingHours": "Mo-Fr 08:00-16:00",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "16:00"
}
],
"areaServed": {
"@type": "GeoCircle",
"geoMidpoint": {
"@type": "GeoCoordinates",
"latitude": 54.6059,
"longitude": 18.2356
},
"geoRadius": "50000"
},
"sameAs": [
"https://www.facebook.com/profile.php?id=100057396041901",
"https://norda-biznes.info"
]
}
</script>
{% endblock %}
{% block extra_css %}
<style>
/* Professional, visually rich design */
.hero-landing {
background: linear-gradient(135deg, #1e3050 0%, #2E4872 50%, #4a6999 100%);
color: white;
padding: var(--spacing-2xl) 0;
margin: calc(var(--spacing-xl) * -1) calc(var(--spacing-md) * -1) var(--spacing-xl);
text-align: center;
border-radius: 0 0 var(--radius-xl) var(--radius-xl);
position: relative;
overflow: hidden;
}
.hero-landing::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
radial-gradient(circle at 20% 50%, rgba(255,255,255,0.1) 0%, transparent 50%),
radial-gradient(circle at 80% 80%, rgba(255,255,255,0.1) 0%, transparent 50%);
pointer-events: none;
}
.hero-landing > * {
position: relative;
z-index: 1;
}
.hero-landing h1 {
font-size: clamp(2.5rem, 5vw, 4rem);
font-weight: 800;
margin-bottom: var(--spacing-md);
line-height: 1.1;
text-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.hero-subtitle {
font-size: var(--font-size-xl);
opacity: 0.95;
margin-bottom: var(--spacing-xl);
font-weight: 400;
max-width: 600px;
margin-left: auto;
margin-right: auto;
}
.stats-inline {
display: flex;
gap: var(--spacing-2xl);
justify-content: center;
flex-wrap: wrap;
margin: var(--spacing-xl) 0;
font-size: var(--font-size-lg);
}
.stats-inline span {
white-space: nowrap;
background: rgba(255,255,255,0.2);
padding: var(--spacing-md) var(--spacing-xl);
border-radius: var(--radius-lg);
backdrop-filter: blur(10px);
border: 1px solid rgba(255,255,255,0.3);
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.stats-inline strong {
font-size: var(--font-size-3xl);
font-weight: 800;
display: block;
margin-bottom: var(--spacing-xs);
}
.hero-cta {
display: flex;
gap: var(--spacing-md);
justify-content: center;
flex-wrap: wrap;
margin-top: var(--spacing-xl);
}
.btn-hero {
padding: var(--spacing-md) var(--spacing-xl);
font-size: var(--font-size-lg);
font-weight: 600;
border-radius: var(--radius-lg);
transition: all 0.3s ease;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.btn-white {
background-color: white;
color: var(--primary);
}
.btn-white:hover {
background-color: #f8fafc;
transform: translateY(-2px);
box-shadow: 0 6px 12px rgba(0,0,0,0.15);
}
.hero-cta .btn-outline {
border: 2px solid var(--primary);
color: var(--primary);
background-color: white;
font-weight: 600;
}
.hero-cta .btn-outline:hover {
background-color: var(--primary);
color: white;
transform: translateY(-2px);
box-shadow: 0 6px 12px rgba(0,0,0,0.15);
}
/* Decorative shapes */
.deco-circle {
position: absolute;
border-radius: 50%;
background: rgba(255,255,255,0.08);
pointer-events: none;
z-index: 0;
}
.deco-circle-1 {
width: 400px;
height: 400px;
top: -150px;
left: -150px;
}
.deco-circle-2 {
width: 300px;
height: 300px;
bottom: -100px;
right: -100px;
}
/* Feature cards with animations */
.feature-card {
transition: all 0.3s ease;
position: relative;
}
.feature-card::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, var(--primary), var(--success), var(--warning));
border-radius: var(--radius-lg) var(--radius-lg) 0 0;
opacity: 0;
transition: opacity 0.3s ease;
}
.feature-card:hover {
transform: translateY(-8px);
box-shadow: 0 20px 40px rgba(0,0,0,0.12);
}
.feature-card:hover::after {
opacity: 1;
}
.feature-icon {
transition: transform 0.3s ease;
}
.feature-card:hover .feature-icon {
transform: scale(1.1) rotate(5deg);
}
/* Gradient text */
.gradient-text {
background: linear-gradient(135deg, var(--primary), var(--success));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* Animated underline */
.animated-underline {
position: relative;
display: inline-block;
}
.animated-underline::after {
content: '';
position: absolute;
bottom: -8px;
left: 50%;
transform: translateX(-50%);
width: 60px;
height: 4px;
background: linear-gradient(90deg, var(--primary), var(--success));
border-radius: 2px;
}
/* Bottom CTA with gradient */
.bottom-cta {
text-align: center;
padding: var(--spacing-2xl);
background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
border-radius: var(--radius-xl);
margin-top: var(--spacing-xl);
position: relative;
overflow: hidden;
}
.bottom-cta::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, var(--primary), var(--success), var(--warning), var(--error));
}
.bottom-cta p {
color: var(--text-secondary);
margin-bottom: var(--spacing-md);
}
/* Pulse animation for CTA button */
@keyframes pulse {
0%, 100% {
box-shadow: 0 4px 6px rgba(37, 99, 235, 0.3);
}
50% {
box-shadow: 0 4px 20px rgba(37, 99, 235, 0.5);
}
}
.bottom-cta .btn-primary {
animation: pulse 2s infinite;
}
@media (max-width: 768px) {
.stats-inline {
flex-direction: column;
gap: var(--spacing-sm);
}
}
/* Public company tiles */
.public-tiles-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: var(--spacing-md);
}
.public-tile {
background: white;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: var(--spacing-lg) var(--spacing-md);
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
transition: var(--transition);
}
.public-tile:hover {
border-color: var(--primary);
box-shadow: 0 8px 24px rgba(46, 72, 114, 0.12);
}
.public-tile-logo {
width: 100%;
height: 70px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: var(--spacing-sm);
}
.public-tile-logo.dark-bg {
background: #1a1a2e;
border-radius: var(--radius);
}
.public-tile-logo img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
}
.public-tile-name {
font-size: var(--font-size-sm);
font-weight: 600;
color: var(--text-primary);
margin-bottom: var(--spacing-sm);
line-height: 1.3;
flex: 1;
}
.public-tile-links {
display: flex;
gap: var(--spacing-sm);
flex-wrap: wrap;
justify-content: center;
padding-top: var(--spacing-sm);
border-top: 1px solid var(--border);
width: 100%;
}
.public-tile-links a {
color: #9ca3af;
transition: color 0.2s ease;
display: flex;
align-items: center;
}
.public-tile-links a:hover { color: var(--primary); }
.public-tile-links a.sm-facebook:hover { color: #1877F2; }
.public-tile-links a.sm-linkedin:hover { color: #0A66C2; }
.public-tile-links a.sm-instagram:hover { color: #E4405F; }
.public-tile-links a.sm-youtube:hover { color: #FF0000; }
.public-tile-links a.sm-twitter:hover { color: #1DA1F2; }
.public-tile-links a.sm-tiktok:hover { color: #000000; }
.location-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--spacing-xl);
align-items: start;
}
@media (max-width: 768px) {
.location-grid {
grid-template-columns: 1fr;
}
.public-tiles-grid {
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: var(--spacing-sm);
}
.public-tile {
padding: var(--spacing-md) var(--spacing-sm);
}
.public-tile-logo {
height: 50px;
}
}
</style>
{% endblock %}
{% block content %}
<!-- Hero -->
<div class="hero-landing" data-animate="fadeIn">
<div class="deco-circle deco-circle-1"></div>
<div class="deco-circle deco-circle-2"></div>
<h1 style="font-size: clamp(2rem, 4vw, 3rem); font-weight: 700; margin-bottom: var(--spacing-md); color: var(--text-primary); text-align: center;">
Razem tworzymy <span style="color: #2E4872;">więcej</span>
</h1>
<p class="hero-subtitle" style="text-align: center; font-style: italic;">
Platforma networkingu Stowarzyszenia Norda Biznes.
Firmy z Wejherowa, powiatu wejherowskiego i województwa pomorskiego.
</p>
<div class="stats-inline" data-animate="fadeInUp" data-animate-delay="1">
<span>
<strong>{{ COMPANY_COUNT }}</strong>
<div>podmiotów gospodarczych</div>
</span>
<span>
<strong>{{ total_categories }}</strong>
<div>kategorii biznesowych</div>
</span>
<span>
<strong>AI</strong>
<div>inteligentny search</div>
</span>
</div>
<div class="hero-cta">
<a href="{{ url_for('register') }}" class="btn btn-hero btn-white">
<svg width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" style="margin-right: 8px;">
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
<circle cx="12" cy="7" r="4"/>
</svg>
Załóż konto
</a>
<a href="{{ url_for('login') }}" class="btn btn-hero btn-outline">
Zaloguj się
</a>
</div>
</div>
<!-- Gotowy na networking? CTA (przeniesione wyżej) -->
<div class="bottom-cta" style="margin-top: var(--spacing-2xl);" data-animate="fadeInUp">
<h2 style="font-size: var(--font-size-2xl); margin-bottom: var(--spacing-md); color: var(--text-primary);">
Gotowy na networking?
</h2>
<p style="color: var(--text-secondary); margin-bottom: var(--spacing-lg); font-size: var(--font-size-lg);">
Zarejestruj się i uzyskaj dostęp do pełnej bazy firm członkowskich<br>
<strong>Stowarzyszenia Norda Biznes</strong> - Wejherowo, powiat wejherowski i województwo pomorskie
</p>
<a href="{{ url_for('register') }}" class="btn btn-primary" style="padding: var(--spacing-md) var(--spacing-2xl); font-size: var(--font-size-lg);">
Załóż bezpłatne konto
</a>
</div>
<!-- How it works -->
<div style="background: white; padding: var(--spacing-2xl); border-radius: var(--radius-xl); box-shadow: var(--shadow-lg); margin-top: var(--spacing-2xl); margin-bottom: var(--spacing-2xl); position: relative; overflow: hidden;">
<div style="position: absolute; top: -50px; right: -50px; width: 200px; height: 200px; background: linear-gradient(135deg, rgba(37, 99, 235, 0.05), rgba(16, 185, 129, 0.05)); border-radius: 50%; pointer-events: none;"></div>
<div style="position: absolute; bottom: -50px; left: -50px; width: 200px; height: 200px; background: linear-gradient(135deg, rgba(245, 158, 11, 0.05), rgba(239, 68, 68, 0.05)); border-radius: 50%; pointer-events: none;"></div>
<h2 class="animated-underline" style="text-align: center; font-size: var(--font-size-3xl); margin-bottom: var(--spacing-xl); color: var(--text-primary); position: relative;">
Jak to działa?
</h2>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--spacing-xl);">
<div style="text-align: center; position: relative;">
<div style="width: 80px; height: 80px; background: linear-gradient(135deg, var(--primary), var(--primary-light)); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto var(--spacing-md); font-size: var(--font-size-3xl); font-weight: 700; color: white; box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);">1</div>
<h3 style="margin-bottom: var(--spacing-sm); color: var(--text-primary);">Zarejestruj się</h3>
<p style="color: var(--text-secondary); font-size: var(--font-size-sm);">Wypełnij formularz rejestracyjny. Weryfikacja członkostwa w Norda Biznes.</p>
</div>
<div style="text-align: center; position: relative;">
<div style="width: 80px; height: 80px; background: linear-gradient(135deg, var(--success), #34d399); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto var(--spacing-md); font-size: var(--font-size-3xl); font-weight: 700; color: white; box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);">2</div>
<h3 style="margin-bottom: var(--spacing-sm); color: var(--text-primary);">Przeglądaj firmy</h3>
<p style="color: var(--text-secondary); font-size: var(--font-size-sm);">Dostęp do pełnej bazy z kontaktami, usługami i certyfikatami wszystkich członków.</p>
</div>
<div style="text-align: center; position: relative;">
<div style="width: 80px; height: 80px; background: linear-gradient(135deg, var(--warning), #fbbf24); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto var(--spacing-md); font-size: var(--font-size-3xl); font-weight: 700; color: white; box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3);">3</div>
<h3 style="margin-bottom: var(--spacing-sm); color: var(--text-primary);">Nawiązuj kontakty</h3>
<p style="color: var(--text-secondary); font-size: var(--font-size-sm);">Dzwoń, pisz, współpracuj. Wszystkie dane kontaktowe w jednym miejscu.</p>
</div>
</div>
</div>
<!-- Features Grid -->
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: var(--spacing-xl); margin: var(--spacing-2xl) 0;">
<!-- Feature 1 -->
<div class="feature-card" style="background: white; padding: var(--spacing-2xl); border-radius: var(--radius-xl); box-shadow: var(--shadow-lg); border-top: 5px solid var(--primary);">
<div class="feature-icon" style="width: 70px; height: 70px; background: linear-gradient(135deg, var(--primary), var(--primary-light)); border-radius: var(--radius-xl); display: flex; align-items: center; justify-content: center; margin-bottom: var(--spacing-lg); box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);">
<svg width="32" height="32" fill="none" stroke="white" stroke-width="2">
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
<path d="M9 22V12h6v10"/>
</svg>
</div>
<h3 style="font-size: var(--font-size-2xl); margin-bottom: var(--spacing-md); color: var(--text-primary); font-weight: 700;">Pełny katalog firm</h3>
<p style="color: var(--text-secondary); line-height: 1.7; margin-bottom: var(--spacing-lg); font-size: var(--font-size-base);">
Dostęp do bazy firm z Wejherowa, powiatu wejherowskiego i województwa pomorskiego:
</p>
<ul style="color: var(--text-secondary); font-size: var(--font-size-base); line-height: 2; list-style: none; padding: 0;">
<li style="padding: var(--spacing-xs) 0;">✓ NIP, REGON, KRS</li>
<li style="padding: var(--spacing-xs) 0;">✓ Telefon, email, strona www</li>
<li style="padding: var(--spacing-xs) 0;">✓ Pełny zakres usług</li>
<li style="padding: var(--spacing-xs) 0;">✓ Certyfikaty i kompetencje</li>
</ul>
</div>
<!-- Feature 2 -->
<div class="feature-card" style="background: white; padding: var(--spacing-2xl); border-radius: var(--radius-xl); box-shadow: var(--shadow-lg); border-top: 5px solid var(--success);">
<div class="feature-icon" style="width: 70px; height: 70px; background: linear-gradient(135deg, var(--success), #34d399); border-radius: var(--radius-xl); display: flex; align-items: center; justify-content: center; margin-bottom: var(--spacing-lg); box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);">
<svg width="32" height="32" fill="none" stroke="white" stroke-width="2">
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
<path d="M9 10h6M9 14h3"/>
</svg>
</div>
<h3 style="font-size: var(--font-size-2xl); margin-bottom: var(--spacing-md); color: var(--text-primary); font-weight: 700;">AI Asystent</h3>
<p style="color: var(--text-secondary); line-height: 1.7; margin-bottom: var(--spacing-lg); font-size: var(--font-size-base);">
Inteligentne wyszukiwanie firm przez naturalne pytania:
</p>
<ul style="color: var(--text-secondary); font-size: var(--font-size-base); line-height: 2; list-style: none; padding: 0;">
<li style="padding: var(--spacing-xs) 0;">✓ "Szukam serwis Wejherowo"</li>
<li style="padding: var(--spacing-xs) 0;">✓ "Transport Gdynia lub Rumia"</li>
<li style="padding: var(--spacing-xs) 0;">✓ "Szkolenia Wejherowo dla firm"</li>
<li style="padding: var(--spacing-xs) 0;">✓ Dostaniesz konkretne firmy z kontaktami</li>
</ul>
</div>
<!-- Feature 3 -->
<div class="feature-card" style="background: white; padding: var(--spacing-2xl); border-radius: var(--radius-xl); box-shadow: var(--shadow-lg); border-top: 5px solid var(--warning);">
<div class="feature-icon" style="width: 70px; height: 70px; background: linear-gradient(135deg, var(--warning), #fbbf24); border-radius: var(--radius-xl); display: flex; align-items: center; justify-content: center; margin-bottom: var(--spacing-lg); box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3);">
<svg width="32" height="32" fill="none" stroke="white" stroke-width="2">
<circle cx="11" cy="11" r="8"/>
<path d="M21 21l-4.35-4.35"/>
</svg>
</div>
<h3 style="font-size: var(--font-size-2xl); margin-bottom: var(--spacing-md); color: var(--text-primary); font-weight: 700;">Zaawansowane filtry</h3>
<p style="color: var(--text-secondary); line-height: 1.7; margin-bottom: var(--spacing-lg); font-size: var(--font-size-base);">
Precyzyjne wyszukiwanie według wielu kryteriów:
</p>
<ul style="color: var(--text-secondary); font-size: var(--font-size-base); line-height: 2; list-style: none; padding: 0;">
<li style="padding: var(--spacing-xs) 0;">✓ Kategoria: sklep, gabinet, studio Wejherowo</li>
<li style="padding: var(--spacing-xs) 0;">✓ Usługi: remonty, instalacje, naprawa Reda</li>
<li style="padding: var(--spacing-xs) 0;">✓ Lokalizacja: Wejherowo, Rumia, Reda, Gdynia</li>
<li style="padding: var(--spacing-xs) 0;">✓ Słowa kluczowe w opisie</li>
</ul>
</div>
</div>
<!-- Use cases -->
<div style="background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); padding: var(--spacing-2xl); border-radius: var(--radius-xl); margin-bottom: var(--spacing-2xl); position: relative; overflow: hidden; border: 1px solid rgba(226, 232, 240, 0.8);">
<div style="position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--primary), var(--success), var(--warning), var(--error), var(--primary)); opacity: 0.5;"></div>
<h2 class="animated-underline" style="text-align: center; font-size: var(--font-size-3xl); margin-bottom: var(--spacing-xl); color: var(--text-primary);">
Do czego użyjesz tego portalu?
</h2>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--spacing-lg);">
<div style="background: white; padding: var(--spacing-lg); border-radius: var(--radius-lg); border-left: 4px solid var(--primary); box-shadow: var(--shadow); transition: all 0.3s ease;" onmouseover="this.style.transform='translateY(-4px)'; this.style.boxShadow='0 10px 25px rgba(0,0,0,0.1)'" onmouseout="this.style.transform=''; this.style.boxShadow='0 1px 3px rgba(0,0,0,0.1)'">
<h3 style="font-size: var(--font-size-lg); margin-bottom: var(--spacing-sm); color: var(--text-primary);">🤝 Szukasz podwykonawcy?</h3>
<p style="color: var(--text-secondary); font-size: var(--font-size-sm);">Znajdź firmę z konkretnymi kompetencjami i certyfikatami. Masz od razu telefon i email.</p>
</div>
<div style="background: white; padding: var(--spacing-lg); border-radius: var(--radius-lg); border-left: 4px solid var(--success);">
<h3 style="font-size: var(--font-size-lg); margin-bottom: var(--spacing-sm); color: var(--text-primary);">💼 Potrzebujesz usługi?</h3>
<p style="color: var(--text-secondary); font-size: var(--font-size-sm);">Zapytaj AI "kto robi X?" i dostaniesz listę firm z pełnymi danymi kontaktowymi.</p>
</div>
<div style="background: white; padding: var(--spacing-lg); border-radius: var(--radius-lg); border-left: 4px solid var(--warning);">
<h3 style="font-size: var(--font-size-lg); margin-bottom: var(--spacing-sm); color: var(--text-primary);">📊 Sprawdzasz NIP/REGON?</h3>
<p style="color: var(--text-secondary); font-size: var(--font-size-sm);">Wszystkie dane rejestrowe firm członkowskich w jednym miejscu.</p>
</div>
<div style="background: white; padding: var(--spacing-lg); border-radius: var(--radius-lg); border-left: 4px solid var(--error);">
<h3 style="font-size: var(--font-size-lg); margin-bottom: var(--spacing-sm); color: var(--text-primary);">🎯 Szukasz partnera lokalnie?</h3>
<p style="color: var(--text-secondary); font-size: var(--font-size-sm);">Filtruj po lokalizacji - Wejherowo, Reda, Rumia, powiat wejherowski i województwo pomorskie.</p>
</div>
<div style="background: white; padding: var(--spacing-lg); border-radius: var(--radius-lg); border-left: 4px solid var(--primary);">
<h3 style="font-size: var(--font-size-lg); margin-bottom: var(--spacing-sm); color: var(--text-primary);">🔍 Sprawdzasz certyfikaty?</h3>
<p style="color: var(--text-secondary); font-size: var(--font-size-sm);">Zobacz które firmy mają ISO 9001, ISO 14001 i inne certyfikaty.</p>
</div>
<div style="background: white; padding: var(--spacing-lg); border-radius: var(--radius-lg); border-left: 4px solid var(--success);">
<h3 style="font-size: var(--font-size-lg); margin-bottom: var(--spacing-sm); color: var(--text-primary);">📱 Networking?</h3>
<p style="color: var(--text-secondary); font-size: var(--font-size-sm);">Poznaj wszystkich członków stowarzyszenia, ich profile i zakres działalności.</p>
</div>
</div>
</div>
<!-- Firmy członkowskie - publiczny katalog -->
{% if companies %}
<div style="margin-top: var(--spacing-2xl); margin-bottom: var(--spacing-2xl);">
<h2 class="animated-underline" style="text-align: center; font-size: var(--font-size-3xl); margin-bottom: var(--spacing-xl); color: var(--text-primary);">
Firmy członkowskie Izby NORDA
</h2>
<p style="text-align: center; color: var(--text-secondary); margin-bottom: var(--spacing-xl); font-size: var(--font-size-lg);">
Firmy z Wejherowa, powiatu wejherowskiego i województwa pomorskiego
</p>
<div class="public-tiles-grid">
{% for company in companies %}
<div class="public-tile">
<div class="public-tile-logo {{ 'dark-bg' if company.logo_dark_bg else '' }}">
<img src="{{ url_for('static', filename='img/companies/' ~ company.slug ~ '.webp') }}"
alt="{{ company.name }}"
loading="lazy"
onerror="if(!this.dataset.triedSvg){this.dataset.triedSvg='1';this.src=this.src.replace('.webp','.svg')}else{this.parentElement.style.display='none'}">
</div>
<div class="public-tile-name">{{ company.name }}</div>
<div class="public-tile-links">
{% if company.website %}
<a href="{{ company.website }}" target="_blank" rel="noopener noreferrer" aria-label="Strona WWW {{ company.name }}" title="{{ company.website|replace('https://', '')|replace('http://', '')|replace('www.', '') }}">
<svg width="20" height="20" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<circle cx="12" cy="12" r="10"/>
<path d="M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>
</svg>
</a>
{% endif %}
{% set socials = company_social.get(company.id, []) %}
{% for sm in socials %}
{% if sm.platform == 'facebook' %}
<a href="{{ sm.url }}" target="_blank" rel="noopener noreferrer" class="sm-facebook" aria-label="Facebook {{ company.name }}" title="Facebook">
<svg width="20" height="20" fill="currentColor" viewBox="0 0 24 24"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
</a>
{% elif sm.platform == 'linkedin' %}
<a href="{{ sm.url }}" target="_blank" rel="noopener noreferrer" class="sm-linkedin" aria-label="LinkedIn {{ company.name }}" title="LinkedIn">
<svg width="20" height="20" fill="currentColor" viewBox="0 0 24 24"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
</a>
{% elif sm.platform == 'instagram' %}
<a href="{{ sm.url }}" target="_blank" rel="noopener noreferrer" class="sm-instagram" aria-label="Instagram {{ company.name }}" title="Instagram">
<svg width="20" height="20" fill="currentColor" viewBox="0 0 24 24"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>
</a>
{% elif sm.platform == 'youtube' %}
<a href="{{ sm.url }}" target="_blank" rel="noopener noreferrer" class="sm-youtube" aria-label="YouTube {{ company.name }}" title="YouTube">
<svg width="20" height="20" fill="currentColor" viewBox="0 0 24 24"><path d="M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
</a>
{% elif sm.platform == 'twitter' %}
<a href="{{ sm.url }}" target="_blank" rel="noopener noreferrer" class="sm-twitter" aria-label="X Twitter {{ company.name }}" title="X (Twitter)">
<svg width="20" height="20" fill="currentColor" viewBox="0 0 24 24"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
</a>
{% elif sm.platform == 'tiktok' %}
<a href="{{ sm.url }}" target="_blank" rel="noopener noreferrer" class="sm-tiktok" aria-label="TikTok {{ company.name }}" title="TikTok">
<svg width="20" height="20" fill="currentColor" viewBox="0 0 24 24"><path d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"/></svg>
</a>
{% endif %}
{% endfor %}
</div>
</div>
{% endfor %}
</div>
</div>
{% endif %}
<!-- Gdzie nas znajdziesz -->
<div style="background: white; padding: var(--spacing-2xl); border-radius: var(--radius-xl); box-shadow: var(--shadow-lg); margin: var(--spacing-2xl) 0;">
<h2 style="text-align: center; font-size: var(--font-size-2xl); margin-bottom: var(--spacing-lg); color: var(--text-primary);">
Gdzie nas znajdziesz?
</h2>
<div class="location-grid">
<div>
<p style="color: var(--text-secondary); line-height: 1.8; font-size: var(--font-size-base);">
<strong>Stowarzyszenie Norda Biznes</strong><br>
ul. 12 Marca 238/5<br>
84-200 Wejherowo, pomorskie<br><br>
Tel: <a href="tel:+48729716400" style="color: var(--primary);">+48 729 716 400</a><br>
Email: <a href="mailto:biuro@norda-biznes.info" style="color: var(--primary);">biuro@norda-biznes.info</a><br><br>
Pn-Pt: 8:00 - 16:00
</p>
</div>
<div style="border-radius: var(--radius-lg); overflow: hidden; min-height: 250px;">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2312.5!2d18.2353!3d54.6103!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x46fd0b5c5c5c5c5d%3A0x0!2s12+Marca+238%2C+Wejherowo!5e0!3m2!1spl!2spl!4v1" width="100%" height="250" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade" title="Lokalizacja Stowarzyszenia Norda Biznes w Wejherowie"></iframe>
</div>
</div>
</div>
<!-- Końcowe CTA -->
<div class="bottom-cta" style="margin-bottom: var(--spacing-2xl);">
<h2 style="font-size: var(--font-size-2xl); margin-bottom: var(--spacing-md); color: var(--text-primary);">
Chcesz wiedzieć więcej o tych firmach?
</h2>
<p style="color: var(--text-secondary); margin-bottom: var(--spacing-lg); font-size: var(--font-size-lg);">
Zaloguj się, aby zobaczyć pełne profile z danymi kontaktowymi, opisem usług i rekomendacjami
</p>
<div style="display: flex; gap: var(--spacing-md); justify-content: center; flex-wrap: wrap;">
<a href="{{ url_for('login') }}" class="btn btn-primary" style="padding: var(--spacing-md) var(--spacing-2xl); font-size: var(--font-size-lg);">
Zaloguj się
</a>
<a href="{{ url_for('register') }}" class="btn btn-outline" style="padding: var(--spacing-md) var(--spacing-2xl); font-size: var(--font-size-lg);">
Załóż konto
</a>
</div>
<p style="margin-top: var(--spacing-lg); color: var(--text-secondary); font-size: var(--font-size-sm);">
Śledź nas na <a href="https://www.facebook.com/profile.php?id=100057396041901" target="_blank" rel="noopener" style="color: var(--primary); font-weight: 600;">Facebooku</a>
</p>
</div>
{% endblock %}