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:
142
index.html
142
index.html
@@ -55,92 +55,82 @@
|
|||||||
|
|
||||||
<!-- Palvelut -->
|
<!-- Palvelut -->
|
||||||
<!-- Palvelut -->
|
<!-- Palvelut -->
|
||||||
<section id="palvelut" class="services-intro">
|
<section id="palvelut" class="services">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<span class="overline">Palvelut</span>
|
<span class="overline">Palvelut</span>
|
||||||
<h2>Yhteydet joka tarpeeseen</h2>
|
<h2>Yhteydet joka tarpeeseen</h2>
|
||||||
<p>Toimitamme valokuituyhteydet avaimet käteen ‑periaatteella koko Suomeen.</p>
|
<p>Toimitamme valokuituyhteydet avaimet käteen ‑periaatteella koko Suomeen.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="service-row">
|
<div class="services-grid">
|
||||||
<div class="service-row-inner">
|
<div class="service-card">
|
||||||
<div class="service-row-image">
|
<div class="service-card-img">
|
||||||
<img src="images/service-office.jpg" alt="Moderni toimisto">
|
<img src="images/service-office.jpg" alt="Moderni toimisto">
|
||||||
</div>
|
</div>
|
||||||
<div class="service-row-content">
|
<div class="service-card-body">
|
||||||
<span class="service-row-number">01</span>
|
<h3>Yritysliittymät</h3>
|
||||||
<h2>Yritysliittymät</h2>
|
<p>Luotettavat ja nopeat valokuituyhteydet kaikenkokoisille yrityksille. Kiinteä kaista ilman jaettua kapasiteettia — nopeus ei tipu ruuhka-aikaan.</p>
|
||||||
<p>Luotettavat ja nopeat valokuituyhteydet kaikenkokoisille yrityksille. Kiinteä kaista ilman jaettua kapasiteettia — nopeus ei tipu ruuhka-aikaan.</p>
|
<ul class="service-card-features">
|
||||||
<ul class="service-row-features">
|
<li>Nopeudet 1–100 Gbps</li>
|
||||||
<li>Nopeudet 1–100 Gbps</li>
|
<li>SLA-palvelutasotakuu</li>
|
||||||
<li>SLA-palvelutasotakuu</li>
|
<li>Kiinteä ja taattu kaista</li>
|
||||||
<li>Kiinteä ja taattu kaista</li>
|
<li>Henkilökohtainen tuki</li>
|
||||||
<li>Henkilökohtainen tuki</li>
|
</ul>
|
||||||
</ul>
|
<a href="#saatavuus" class="btn btn-sm">Pyydä tarjous</a>
|
||||||
<a href="#saatavuus" class="btn">Pyydä tarjous</a>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="service-row service-row-reverse">
|
<div class="service-card">
|
||||||
<div class="service-row-inner">
|
<div class="service-card-img">
|
||||||
<div class="service-row-image">
|
<img src="images/service-datacenter.jpg" alt="Konesali">
|
||||||
<img src="images/service-datacenter.jpg" alt="Konesali">
|
</div>
|
||||||
</div>
|
<div class="service-card-body">
|
||||||
<div class="service-row-content">
|
<h3>Konesaliyhteydet</h3>
|
||||||
<span class="service-row-number">02</span>
|
<p>Yhteydet omiin laitetiloihin ja kolmansien osapuolien konesaleihin. Skaalautuvat tarpeen mukaan aina 100 gigabittiin asti.</p>
|
||||||
<h2>Konesaliyhteydet</h2>
|
<ul class="service-card-features">
|
||||||
<p>Yhteydet omiin laitetiloihin ja kolmansien osapuolien konesaleihin. Skaalautuvat tarpeen mukaan aina 100 gigabittiin asti.</p>
|
<li>Jopa 100 Gbps</li>
|
||||||
<ul class="service-row-features">
|
<li>Varmennetut reitit</li>
|
||||||
<li>Jopa 100 Gbps</li>
|
<li>Cross-connect</li>
|
||||||
<li>Varmennetut ja kahdennetut reitit</li>
|
<li>Joustava skaalautuvuus</li>
|
||||||
<li>Cross-connect-toimitukset</li>
|
</ul>
|
||||||
<li>Joustava skaalautuvuus</li>
|
<a href="#saatavuus" class="btn btn-sm">Pyydä tarjous</a>
|
||||||
</ul>
|
</div>
|
||||||
<a href="#saatavuus" class="btn">Pyydä tarjous</a>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="service-row">
|
<div class="service-card">
|
||||||
<div class="service-row-inner">
|
<div class="service-card-img">
|
||||||
<div class="service-row-image">
|
<img src="images/service-building.jpg" alt="Kerrostalo">
|
||||||
<img src="images/service-building.jpg" alt="Kerrostalo">
|
</div>
|
||||||
</div>
|
<div class="service-card-body">
|
||||||
<div class="service-row-content">
|
<h3>Kiinteistöliittymät</h3>
|
||||||
<span class="service-row-number">03</span>
|
<p>Kuituyhteydet taloyhtiöille — etätyö, suoratoisto ja pelaaminen sujuvat ilman katkoja. Asennamme yhteydet avaimet käteen ‑periaatteella.</p>
|
||||||
<h2>Kiinteistöliittymät</h2>
|
<ul class="service-card-features">
|
||||||
<p>Kuituyhteydet taloyhtiöille — etätyö, suoratoisto ja pelaaminen sujuvat ilman katkoja. Asennamme yhteydet avaimet käteen ‑periaatteella.</p>
|
<li>Symmetrinen nopeus</li>
|
||||||
<ul class="service-row-features">
|
<li>Koko kiinteistölle</li>
|
||||||
<li>Symmetrinen nopeus</li>
|
<li>Avaimet käteen</li>
|
||||||
<li>Koko kiinteistölle kerralla</li>
|
<li>Kilpailukykyinen hinta</li>
|
||||||
<li>Avaimet käteen ‑asennus</li>
|
</ul>
|
||||||
<li>Kilpailukykyinen hinnoittelu</li>
|
<a href="#saatavuus" class="btn btn-sm">Tarkista saatavuus</a>
|
||||||
</ul>
|
</div>
|
||||||
<a href="#saatavuus" class="btn">Tarkista saatavuus</a>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="service-row service-row-reverse">
|
<div class="service-card">
|
||||||
<div class="service-row-inner">
|
<div class="service-card-img">
|
||||||
<div class="service-row-image">
|
<img src="images/service-network.jpg" alt="Verkko">
|
||||||
<img src="images/service-network.jpg" alt="Verkko">
|
</div>
|
||||||
</div>
|
<div class="service-card-body">
|
||||||
<div class="service-row-content">
|
<h3>IP-transit</h3>
|
||||||
<span class="service-row-number">04</span>
|
<p>Suora Internet-yhteys omalla AS-numerolla tai jaetulla reitityksellä. BGP-peering ja monipuoliset reititysratkaisut.</p>
|
||||||
<h2>IP-transit</h2>
|
<ul class="service-card-features">
|
||||||
<p>Suora Internet-yhteys omalla AS-numerolla tai jaetulla reitityksellä. BGP-peering ja monipuoliset reititysratkaisut kaikenkokoisille operaattoreille.</p>
|
<li>BGP-peering</li>
|
||||||
<ul class="service-row-features">
|
<li>Oma tai jaettu AS</li>
|
||||||
<li>BGP-peering</li>
|
<li>Monipuolinen reititys</li>
|
||||||
<li>Oma tai jaettu AS-numero</li>
|
<li>Räätälöity kapasiteetti</li>
|
||||||
<li>Monipuoliset reititysvaihtoehdot</li>
|
</ul>
|
||||||
<li>Räätälöity kapasiteetti</li>
|
<a href="#saatavuus" class="btn btn-sm">Pyydä tarjous</a>
|
||||||
</ul>
|
</div>
|
||||||
<a href="#saatavuus" class="btn">Pyydä tarjous</a>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
112
style.css
112
style.css
@@ -336,41 +336,37 @@ img {
|
|||||||
margin-bottom: 28px;
|
margin-bottom: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---- Services Intro ---- */
|
/* ---- Services ---- */
|
||||||
.services-intro {
|
.services {
|
||||||
padding: 100px 0 40px;
|
padding: 100px 0;
|
||||||
background: var(--bg-alt);
|
background: var(--bg-alt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---- Service Rows ---- */
|
.services-grid {
|
||||||
.service-row {
|
|
||||||
padding: 0;
|
|
||||||
background: var(--bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-row:nth-child(even) {
|
|
||||||
background: var(--bg-alt);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-row-inner {
|
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
min-height: 500px;
|
gap: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-reverse .service-row-inner {
|
.service-card {
|
||||||
direction: rtl;
|
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 > * {
|
.service-card:hover {
|
||||||
direction: ltr;
|
box-shadow: 0 12px 40px rgba(0,0,0,0.08);
|
||||||
|
transform: translateY(-3px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-image {
|
.service-card-img {
|
||||||
|
height: 180px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-image img {
|
.service-card-img img {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
@@ -378,62 +374,51 @@ img {
|
|||||||
transition: transform 0.5s ease;
|
transition: transform 0.5s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row:hover .service-row-image img {
|
.service-card:hover .service-card-img img {
|
||||||
transform: scale(1.03);
|
transform: scale(1.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-content {
|
.service-card-body {
|
||||||
display: flex;
|
padding: 28px 28px 32px;
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 64px 80px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-number {
|
.service-card-body h3 {
|
||||||
font-size: 0.85rem;
|
font-size: 1.3rem;
|
||||||
font-weight: 700;
|
|
||||||
color: var(--orange);
|
|
||||||
letter-spacing: 0.05em;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-row-content h2 {
|
|
||||||
font-size: 2rem;
|
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: var(--dark);
|
color: var(--dark);
|
||||||
margin-bottom: 16px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-content p {
|
.service-card-body p {
|
||||||
font-size: 1.05rem;
|
font-size: 0.92rem;
|
||||||
color: var(--text-light);
|
color: var(--text-light);
|
||||||
line-height: 1.7;
|
line-height: 1.65;
|
||||||
margin-bottom: 24px;
|
margin-bottom: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-features {
|
.service-card-features {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0 0 32px;
|
margin: 0 0 24px;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
gap: 10px;
|
gap: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-features li {
|
.service-card-features li {
|
||||||
font-size: 0.92rem;
|
font-size: 0.82rem;
|
||||||
color: var(--text);
|
color: var(--text);
|
||||||
padding-left: 24px;
|
padding-left: 20px;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-features li::before {
|
.service-card-features li::before {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 6px;
|
top: 5px;
|
||||||
width: 14px;
|
width: 12px;
|
||||||
height: 14px;
|
height: 12px;
|
||||||
background: var(--orange-light);
|
background: var(--orange-light);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
border: 2px solid var(--orange);
|
border: 2px solid var(--orange);
|
||||||
@@ -683,28 +668,11 @@ img {
|
|||||||
gap: 24px;
|
gap: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-inner {
|
.services-grid {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
min-height: auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-row-reverse .service-row-inner {
|
.service-card-features {
|
||||||
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;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user