Redesign services as large alternating image+text sections

Replace small card grid with full-width service rows featuring
large images, feature lists and CTA buttons for each product.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-10 01:00:34 +02:00
parent 26308d676a
commit 6a344445b1
6 changed files with 183 additions and 77 deletions

BIN
images/service-building.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

BIN
images/service-network.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
images/service-office.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -54,50 +54,93 @@
</section>
<!-- Palvelut -->
<section id="palvelut" class="services">
<!-- Palvelut -->
<section id="palvelut" class="services-intro">
<div class="container">
<div class="section-header">
<span class="overline">Palvelut</span>
<h2>Yhteydet joka tarpeeseen</h2>
<p>Toimitamme valokuituyhteydet avaimet käteen periaatteella koko Suomeen. Kaikki yhteystemme ovat symmetrisiä — lataus- ja lähetysnopeus ovat aina samat.</p>
<p>Toimitamme valokuituyhteydet avaimet käteen periaatteella koko Suomeen.</p>
</div>
</div>
</section>
<div class="services-grid">
<div class="service-card">
<div class="service-icon">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/></svg>
<section class="service-row">
<div class="service-row-inner">
<div class="service-row-image">
<img src="images/service-office.jpg" alt="Moderni toimisto">
</div>
<h3>Yritysliittymät</h3>
<p>Luotettavat ja nopeat valokuituyhteydet kaikenkokoisille yrityksille. Kiinteä kaista, SLA-takuu ja tuki kun sitä tarvitset.</p>
<span class="service-speed">1100 Gbps</span>
<div class="service-row-content">
<span class="service-row-number">01</span>
<h2>Yritysliittymät</h2>
<p>Luotettavat ja nopeat valokuituyhteydet kaikenkokoisille yrityksille. Kiinteä kaista ilman jaettua kapasiteettia — nopeus ei tipu ruuhka-aikaan.</p>
<ul class="service-row-features">
<li>Nopeudet 1100 Gbps</li>
<li>SLA-palvelutasotakuu</li>
<li>Kiinteä ja taattu kaista</li>
<li>Henkilökohtainen tuki</li>
</ul>
<a href="#saatavuus" class="btn">Pyydä tarjous</a>
</div>
</div>
</section>
<div class="service-card">
<div class="service-icon">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="18" r="1" fill="currentColor"/></svg>
<section class="service-row service-row-reverse">
<div class="service-row-inner">
<div class="service-row-image">
<img src="images/service-datacenter.jpg" alt="Konesali">
</div>
<h3>Konesaliyhteydet</h3>
<div class="service-row-content">
<span class="service-row-number">02</span>
<h2>Konesaliyhteydet</h2>
<p>Yhteydet omiin laitetiloihin ja kolmansien osapuolien konesaleihin. Skaalautuvat tarpeen mukaan aina 100 gigabittiin asti.</p>
<span class="service-speed">Jopa 100 Gbps</span>
<ul class="service-row-features">
<li>Jopa 100 Gbps</li>
<li>Varmennetut ja kahdennetut reitit</li>
<li>Cross-connect-toimitukset</li>
<li>Joustava skaalautuvuus</li>
</ul>
<a href="#saatavuus" class="btn">Pyydä tarjous</a>
</div>
</div>
</section>
<div class="service-card">
<div class="service-icon">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
<section class="service-row">
<div class="service-row-inner">
<div class="service-row-image">
<img src="images/service-building.jpg" alt="Kerrostalo">
</div>
<h3>Kiinteistöliittymät</h3>
<p>Symmetriset kuituyhteydet taloyhtiöille. Etätyö, suoratoisto ja pelaaminen sujuvat ilman katkoja ja hidastumisia.</p>
<span class="service-speed">Symmetrinen</span>
<div class="service-row-content">
<span class="service-row-number">03</span>
<h2>Kiinteistöliittymät</h2>
<p>Kuituyhteydet taloyhtiöille — etätyö, suoratoisto ja pelaaminen sujuvat ilman katkoja. Asennamme yhteydet avaimet käteen periaatteella.</p>
<ul class="service-row-features">
<li>Symmetrinen nopeus</li>
<li>Koko kiinteistölle kerralla</li>
<li>Avaimet käteen asennus</li>
<li>Kilpailukykyinen hinnoittelu</li>
</ul>
<a href="#saatavuus" class="btn">Tarkista saatavuus</a>
</div>
</div>
</section>
<div class="service-card">
<div class="service-icon">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z"/></svg>
</div>
<h3>IP-transit</h3>
<p>Suora Internet-yhteys omalla AS-numerolla tai jaetulla reitityksellä. BGP-peering ja monipuoliset reititysratkaisut.</p>
<span class="service-speed">Pyydä tarjous</span>
<section class="service-row service-row-reverse">
<div class="service-row-inner">
<div class="service-row-image">
<img src="images/service-network.jpg" alt="Verkko">
</div>
<div class="service-row-content">
<span class="service-row-number">04</span>
<h2>IP-transit</h2>
<p>Suora Internet-yhteys omalla AS-numerolla tai jaetulla reitityksellä. BGP-peering ja monipuoliset reititysratkaisut kaikenkokoisille operaattoreille.</p>
<ul class="service-row-features">
<li>BGP-peering</li>
<li>Oma tai jaettu AS-numero</li>
<li>Monipuoliset reititysvaihtoehdot</li>
<li>Räätälöity kapasiteetti</li>
</ul>
<a href="#saatavuus" class="btn">Pyydä tarjous</a>
</div>
</div>
</section>

147
style.css
View File

@@ -336,65 +336,107 @@ img {
margin-bottom: 28px;
}
/* ---- Services ---- */
.services {
padding: 100px 0;
/* ---- Services Intro ---- */
.services-intro {
padding: 100px 0 40px;
background: var(--bg-alt);
}
.services-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20px;
}
.service-card {
/* ---- Service Rows ---- */
.service-row {
padding: 0;
background: var(--bg);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 32px 24px;
transition: box-shadow 0.3s, transform 0.2s;
}
.service-card:hover {
box-shadow: 0 8px 30px rgba(0,0,0,0.06);
transform: translateY(-2px);
.service-row:nth-child(even) {
background: var(--bg-alt);
}
.service-icon {
width: 48px;
height: 48px;
.service-row-inner {
display: grid;
grid-template-columns: 1fr 1fr;
min-height: 500px;
}
.service-row-reverse .service-row-inner {
direction: rtl;
}
.service-row-reverse .service-row-inner > * {
direction: ltr;
}
.service-row-image {
overflow: hidden;
}
.service-row-image img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
transition: transform 0.5s ease;
}
.service-row:hover .service-row-image img {
transform: scale(1.03);
}
.service-row-content {
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
background: var(--orange-light);
padding: 64px 80px;
}
.service-row-number {
font-size: 0.85rem;
font-weight: 700;
color: var(--orange);
border-radius: 12px;
margin-bottom: 20px;
letter-spacing: 0.05em;
margin-bottom: 12px;
}
.service-card h3 {
font-size: 1.15rem;
font-weight: 650;
.service-row-content h2 {
font-size: 2rem;
font-weight: 700;
color: var(--dark);
margin-bottom: 8px;
}
.service-card p {
font-size: 0.92rem;
color: var(--text-light);
line-height: 1.6;
margin-bottom: 16px;
}
.service-speed {
display: inline-block;
font-size: 0.8rem;
font-weight: 600;
color: var(--orange);
padding: 4px 10px;
.service-row-content p {
font-size: 1.05rem;
color: var(--text-light);
line-height: 1.7;
margin-bottom: 24px;
}
.service-row-features {
list-style: none;
padding: 0;
margin: 0 0 32px;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
}
.service-row-features li {
font-size: 0.92rem;
color: var(--text);
padding-left: 24px;
position: relative;
}
.service-row-features li::before {
content: '';
position: absolute;
left: 0;
top: 6px;
width: 14px;
height: 14px;
background: var(--orange-light);
border-radius: 6px;
border-radius: 50%;
border: 2px solid var(--orange);
}
/* ---- Why ---- */
@@ -641,7 +683,28 @@ img {
gap: 24px;
}
.services-grid {
.service-row-inner {
grid-template-columns: 1fr;
min-height: auto;
}
.service-row-reverse .service-row-inner {
direction: ltr;
}
.service-row-image {
height: 280px;
}
.service-row-content {
padding: 40px 24px;
}
.service-row-content h2 {
font-size: 1.6rem;
}
.service-row-features {
grid-template-columns: 1fr;
}