Redesign services as 2x2 card grid with compact images

Cards have small image at top, text + feature list + CTA below.
Much more compact than full-width alternating rows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-10 01:33:13 +02:00
parent 6a344445b1
commit 44bbb80082
2 changed files with 106 additions and 148 deletions

View File

@@ -55,92 +55,82 @@
<!-- Palvelut -->
<!-- Palvelut -->
<section id="palvelut" class="services-intro">
<section id="palvelut" class="services">
<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.</p>
</div>
</div>
</section>
<section class="service-row">
<div class="service-row-inner">
<div class="service-row-image">
<div class="services-grid">
<div class="service-card">
<div class="service-card-img">
<img src="images/service-office.jpg" alt="Moderni toimisto">
</div>
<div class="service-row-content">
<span class="service-row-number">01</span>
<h2>Yritysliittymät</h2>
<div class="service-card-body">
<h3>Yritysliittymät</h3>
<p>Luotettavat ja nopeat valokuituyhteydet kaikenkokoisille yrityksille. Kiinteä kaista ilman jaettua kapasiteettia — nopeus ei tipu ruuhka-aikaan.</p>
<ul class="service-row-features">
<ul class="service-card-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>
<a href="#saatavuus" class="btn btn-sm">Pyydä tarjous</a>
</div>
</div>
</section>
<section class="service-row service-row-reverse">
<div class="service-row-inner">
<div class="service-row-image">
<div class="service-card">
<div class="service-card-img">
<img src="images/service-datacenter.jpg" alt="Konesali">
</div>
<div class="service-row-content">
<span class="service-row-number">02</span>
<h2>Konesaliyhteydet</h2>
<div class="service-card-body">
<h3>Konesaliyhteydet</h3>
<p>Yhteydet omiin laitetiloihin ja kolmansien osapuolien konesaleihin. Skaalautuvat tarpeen mukaan aina 100 gigabittiin asti.</p>
<ul class="service-row-features">
<ul class="service-card-features">
<li>Jopa 100 Gbps</li>
<li>Varmennetut ja kahdennetut reitit</li>
<li>Cross-connect-toimitukset</li>
<li>Varmennetut reitit</li>
<li>Cross-connect</li>
<li>Joustava skaalautuvuus</li>
</ul>
<a href="#saatavuus" class="btn">Pyydä tarjous</a>
<a href="#saatavuus" class="btn btn-sm">Pyydä tarjous</a>
</div>
</div>
</section>
<section class="service-row">
<div class="service-row-inner">
<div class="service-row-image">
<div class="service-card">
<div class="service-card-img">
<img src="images/service-building.jpg" alt="Kerrostalo">
</div>
<div class="service-row-content">
<span class="service-row-number">03</span>
<h2>Kiinteistöliittymät</h2>
<div class="service-card-body">
<h3>Kiinteistöliittymät</h3>
<p>Kuituyhteydet taloyhtiöille — etätyö, suoratoisto ja pelaaminen sujuvat ilman katkoja. Asennamme yhteydet avaimet käteen periaatteella.</p>
<ul class="service-row-features">
<ul class="service-card-features">
<li>Symmetrinen nopeus</li>
<li>Koko kiinteistölle kerralla</li>
<li>Avaimet käteen asennus</li>
<li>Kilpailukykyinen hinnoittelu</li>
<li>Koko kiinteistölle</li>
<li>Avaimet käteen</li>
<li>Kilpailukykyinen hinta</li>
</ul>
<a href="#saatavuus" class="btn">Tarkista saatavuus</a>
<a href="#saatavuus" class="btn btn-sm">Tarkista saatavuus</a>
</div>
</div>
</section>
<section class="service-row service-row-reverse">
<div class="service-row-inner">
<div class="service-row-image">
<div class="service-card">
<div class="service-card-img">
<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">
<div class="service-card-body">
<h3>IP-transit</h3>
<p>Suora Internet-yhteys omalla AS-numerolla tai jaetulla reitityksellä. BGP-peering ja monipuoliset reititysratkaisut.</p>
<ul class="service-card-features">
<li>BGP-peering</li>
<li>Oma tai jaettu AS-numero</li>
<li>Monipuoliset reititysvaihtoehdot</li>
<li>Oma tai jaettu AS</li>
<li>Monipuolinen reititys</li>
<li>Räätälöity kapasiteetti</li>
</ul>
<a href="#saatavuus" class="btn">Pyydä tarjous</a>
<a href="#saatavuus" class="btn btn-sm">Pyydä tarjous</a>
</div>
</div>
</div>
</div>
</section>

112
style.css
View File

@@ -336,41 +336,37 @@ img {
margin-bottom: 28px;
}
/* ---- Services Intro ---- */
.services-intro {
padding: 100px 0 40px;
/* ---- Services ---- */
.services {
padding: 100px 0;
background: var(--bg-alt);
}
/* ---- Service Rows ---- */
.service-row {
padding: 0;
background: var(--bg);
}
.service-row:nth-child(even) {
background: var(--bg-alt);
}
.service-row-inner {
.services-grid {
display: grid;
grid-template-columns: 1fr 1fr;
min-height: 500px;
gap: 24px;
}
.service-row-reverse .service-row-inner {
direction: rtl;
.service-card {
background: var(--bg);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
overflow: hidden;
transition: box-shadow 0.3s, transform 0.2s;
}
.service-row-reverse .service-row-inner > * {
direction: ltr;
.service-card:hover {
box-shadow: 0 12px 40px rgba(0,0,0,0.08);
transform: translateY(-3px);
}
.service-row-image {
.service-card-img {
height: 180px;
overflow: hidden;
}
.service-row-image img {
.service-card-img img {
width: 100%;
height: 100%;
object-fit: cover;
@@ -378,62 +374,51 @@ img {
transition: transform 0.5s ease;
}
.service-row:hover .service-row-image img {
transform: scale(1.03);
.service-card:hover .service-card-img img {
transform: scale(1.05);
}
.service-row-content {
display: flex;
flex-direction: column;
justify-content: center;
padding: 64px 80px;
.service-card-body {
padding: 28px 28px 32px;
}
.service-row-number {
font-size: 0.85rem;
font-weight: 700;
color: var(--orange);
letter-spacing: 0.05em;
margin-bottom: 12px;
}
.service-row-content h2 {
font-size: 2rem;
.service-card-body h3 {
font-size: 1.3rem;
font-weight: 700;
color: var(--dark);
margin-bottom: 16px;
margin-bottom: 10px;
}
.service-row-content p {
font-size: 1.05rem;
.service-card-body p {
font-size: 0.92rem;
color: var(--text-light);
line-height: 1.7;
margin-bottom: 24px;
line-height: 1.65;
margin-bottom: 18px;
}
.service-row-features {
.service-card-features {
list-style: none;
padding: 0;
margin: 0 0 32px;
margin: 0 0 24px;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
gap: 8px;
}
.service-row-features li {
font-size: 0.92rem;
.service-card-features li {
font-size: 0.82rem;
color: var(--text);
padding-left: 24px;
padding-left: 20px;
position: relative;
}
.service-row-features li::before {
.service-card-features li::before {
content: '';
position: absolute;
left: 0;
top: 6px;
width: 14px;
height: 14px;
top: 5px;
width: 12px;
height: 12px;
background: var(--orange-light);
border-radius: 50%;
border: 2px solid var(--orange);
@@ -683,28 +668,11 @@ img {
gap: 24px;
}
.service-row-inner {
.services-grid {
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 {
.service-card-features {
grid-template-columns: 1fr;
}