Files
cuitunet.fi/index.html
Jukka Lampikoski a1b8368b65 Fix contact form layout - wrap in grid column div
Header + form wrapped in .availability-right div so they stay
on the right side of the 2-column grid layout.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 02:54:32 +02:00

420 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="fi">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cuitunet Nopeinta kaistaa verkkoon</title>
<meta name="description" content="Cuitunet tarjoaa symmetriset valokuituyhteydet yrityksille ja taloyhtiöille — jopa 100 Gbps. Turkulainen operaattori.">
<link rel="stylesheet" href="style.css">
</head>
<body>
<header class="header">
<div class="container header-inner">
<a href="/" class="logo">
<img src="images/logo_transparent.png" alt="Cuitunet">
</a>
<nav class="nav" id="nav">
<a href="#palvelut">Palvelut</a>
<a href="#miksi">Miksi Cuitunet</a>
<a href="#yhteystiedot">Yhteystiedot</a>
</nav>
<a href="#saatavuus" class="btn btn-sm header-cta">Tee saatavuuskysely</a>
<button class="nav-toggle" aria-label="Avaa valikko" onclick="document.getElementById('nav').classList.toggle('open')">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12h18M3 6h18M3 18h18"/></svg>
</button>
</div>
</header>
<!-- Hero -->
<section class="hero" style="background-image: url('images/hero-fiber.jpg')">
<div class="hero-overlay"></div>
<div class="container hero-container">
<h1>Valokuitua <span class="highlight">koko Suomeen</span><br>— yhteydet jotka vain toimivat</h1>
<p class="hero-sub">Turkulainen operaattori joka rakentaa luotettavimmat valokuituyhteydet yrityksille, taloyhtiöille ja konesaleille — koko Suomeen, avaimet käteen.</p>
<div class="hero-actions">
<a href="#saatavuus" class="btn">Tee saatavuuskysely</a>
<a href="#palvelut" class="btn btn-outline-light">Tutustu palveluihin</a>
</div>
<div class="hero-stats">
<div class="hero-stat">
<strong>100 Gbps</strong>
<span>Nopeudet jopa</span>
</div>
<div class="hero-stat">
<strong>100%</strong>
<span>Valokuitua</span>
</div>
<div class="hero-stat">
<strong>Symmetrinen</strong>
<span>Lataus = lähetys</span>
</div>
</div>
</div>
</section>
<!-- Palvelut -->
<!-- Palvelut -->
<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 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-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-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 btn-sm">Pyydä tarjous</a>
</div>
</div>
<div class="service-card">
<div class="service-card-img">
<img src="images/service-datacenter.jpg" alt="Konesali">
</div>
<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-card-features">
<li>Jopa 100 Gbps</li>
<li>Varmennetut reitit</li>
<li>Cross-connect</li>
<li>Joustava skaalautuvuus</li>
</ul>
<a href="#saatavuus" class="btn btn-sm">Pyydä tarjous</a>
</div>
</div>
<div class="service-card">
<div class="service-card-img">
<img src="images/service-building.jpg" alt="Kerrostalo">
</div>
<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-card-features">
<li>Symmetrinen nopeus</li>
<li>Koko kiinteistölle</li>
<li>Avaimet käteen</li>
<li>Kilpailukykyinen hinta</li>
</ul>
<a href="#saatavuus" class="btn btn-sm">Pyydä tarjous</a>
</div>
</div>
<div class="service-card">
<div class="service-card-img">
<img src="images/service-network.jpg" alt="Verkko">
</div>
<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</li>
<li>Monipuolinen reititys</li>
<li>Räätälöity kapasiteetti</li>
</ul>
<a href="#saatavuus" class="btn btn-sm">Pyydä tarjous</a>
</div>
</div>
</div>
</div>
</section>
<!-- Kuvakaistale -->
<section class="image-break" style="background-image: url('images/fiber-light.jpg')">
<div class="image-break-overlay"></div>
<div class="container image-break-content">
<div class="image-break-stat">
<strong>100 Gbps</strong>
<span>Nopeudet jopa</span>
</div>
<div class="image-break-stat">
<strong>Symmetrinen</strong>
<span>Sama nopeus molempiin suuntiin</span>
</div>
<div class="image-break-stat">
<strong>SLA</strong>
<span>Palvelutasotakuu</span>
</div>
<div class="image-break-stat">
<strong>Turku</strong>
<span>Paikallinen operaattori</span>
</div>
</div>
</section>
<!-- Miksi Cuitunet -->
<section id="miksi" class="why">
<div class="container">
<div class="why-inner">
<div class="why-content">
<span class="overline">Miksi Cuitunet</span>
<h2>Operaattori joka välittää</h2>
<p>Isot operaattorit kohtelevat sinua numerona. Meillä tunnet yhteyshenkilösi nimeltä. Kun ongelma ilmenee, emme piiloudu automaattisen palvelunumeron taakse — me vastaamme ja hoidamme asian.</p>
<p>Rakennamme jokaisen yhteyden huolella ja mitoitamme sen asiakkaan todellisen tarpeen mukaan. Ei ylimyyntiä, ei piilomaksuja — vain yhteys joka toimii.</p>
</div>
<div class="why-features">
<div class="feature">
<div class="feature-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><polyline points="13 17 18 12 13 7"/><polyline points="6 17 11 12 6 7"/></svg>
</div>
<div>
<strong>Jopa 100 Gbps</strong>
<p>Skaalautuva kapasiteetti kasvun mukaan</p>
</div>
</div>
<div class="feature">
<div class="feature-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
</div>
<div>
<strong>Palvelutasotakuu</strong>
<p>SLA-sopimukset ja varmennetut yhteydet</p>
</div>
</div>
<div class="feature">
<div class="feature-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg>
</div>
<div>
<strong>Paikallinen toimija</strong>
<p>Turkulainen operaattori, nopea palvelu</p>
</div>
</div>
<div class="feature">
<div class="feature-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22 6 12 13 2 6"/></svg>
</div>
<div>
<strong>Avaimet käteen</strong>
<p>Hoidamme asennuksen ja konfiguroinnin</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Kaupunki-kuvakaistale -->
<section class="image-break image-break-tall" style="background-image: url('images/city-network.jpg')">
<div class="image-break-overlay image-break-overlay-warm"></div>
<div class="container image-break-cta">
<h2>Kiinnostaako kuituliittymä?</h2>
<p>Selvitä valokuidun saatavuus osoitteessasi — vastaamme 12 arkipäivässä.</p>
<a href="#saatavuus" class="btn">Tee saatavuuskysely</a>
</div>
</section>
<!-- Saatavuuskysely -->
<section id="saatavuus" class="availability">
<div class="container">
<div class="availability-inner">
<div class="availability-text">
<span class="overline">Saatavuuskysely</span>
<h2>Tarkista saatavuus</h2>
<p>Tarkista heti onko kuituliittymä saatavilla osoitteessasi.</p>
<div class="availability-check">
<h3>Pikasaatavuustarkistus</h3>
<div class="availability-check-fields">
<input type="text" id="check-address" placeholder="Osoite (esim. Kauppakatu 5)">
<div class="availability-check-row">
<input type="text" id="check-zip" placeholder="Postinumero" maxlength="5">
<input type="text" id="check-city" placeholder="Kaupunki">
</div>
<button type="button" class="btn btn-sm btn-full" id="check-btn">Tarkista saatavuus</button>
</div>
<div id="check-result" class="check-result" style="display:none;"></div>
</div>
</div>
<div class="availability-right">
<div class="availability-form-header">
<span class="overline">Yhteydenotto</span>
<h2>Ota yhteyttä</h2>
<p>Täytä lomake niin otamme yhteyttä 12 arkipäivässä.</p>
</div>
<form class="form" id="availability-form">
<div style="position:absolute;left:-9999px;top:-9999px;">
<input type="text" name="website" tabindex="-1" autocomplete="off">
</div>
<div class="form-group">
<label for="company">Yrityksen nimi</label>
<input type="text" id="company" name="company" required>
</div>
<div class="form-group">
<label for="email">Sähköposti</label>
<input type="email" id="email" name="email" required>
</div>
<div class="form-row">
<div class="form-group">
<label for="address">Katuosoite</label>
<input type="text" id="address" name="address" required>
</div>
<div class="form-group">
<label for="city">Kaupunki</label>
<input type="text" id="city" name="city" required>
</div>
</div>
<div class="form-group">
<label for="message">Lisätiedot <span class="optional">(valinnainen)</span></label>
<textarea id="message" name="message" rows="3"></textarea>
</div>
<button type="submit" class="btn btn-full">Lähetä viesti</button>
</form>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer id="yhteystiedot" class="footer">
<div class="container">
<div class="footer-top">
<div class="footer-brand">
<img src="images/logo_transparent.png" alt="Cuitunet" class="footer-logo">
<p>Turkulainen valokuituoperaattori. Rakennamme nopeimmat yhteydet yrityksille ja taloyhtiöille.</p>
</div>
<div class="footer-links">
<h4>Palvelut</h4>
<a href="#palvelut">Yritysliittymät</a>
<a href="#palvelut">Konesaliyhteydet</a>
<a href="#palvelut">Kiinteistöliittymät</a>
<a href="#palvelut">IP-transit</a>
</div>
<div class="footer-links">
<h4>Yhteystiedot</h4>
<a href="mailto:asiakaspalvelu@cuitunet.fi">asiakaspalvelu@cuitunet.fi</a>
<a href="tel:0207780731">02 077 80731</a>
</div>
<div class="footer-links">
<h4>Toimisto</h4>
<p>Latokarinkatu 3</p>
<p>20200 Turku</p>
<p>mape 8:0017:00</p>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2026 Cuitunet Oy. Kaikki oikeudet pidätetään.</p>
</div>
</div>
</footer>
<script>
// Mobiilinavigaatio
document.querySelector('.nav-toggle')?.addEventListener('click', function() {
document.querySelector('.nav')?.classList.toggle('open');
});
// Pikasaatavuustarkistus
(function() {
const API_URL = 'https://intra.cuitunet.fi/api.php';
const API_KEY = '560160bf6558260e1734e6ad5933cabe';
const checkAddress = document.getElementById('check-address');
const checkZip = document.getElementById('check-zip');
const checkCity = document.getElementById('check-city');
const checkBtn = document.getElementById('check-btn');
const checkResult = document.getElementById('check-result');
async function checkAvailability() {
const osoite = checkAddress.value.trim();
const postinumero = checkZip.value.trim();
const kaupunki = checkCity.value.trim();
if (!osoite || !postinumero || !kaupunki) {
checkResult.className = 'check-result nok';
checkResult.style.display = 'block';
checkResult.innerHTML = '<p>Täytä kaikki kentät: osoite, postinumero ja kaupunki.</p>';
return;
}
checkResult.className = 'check-result loading';
checkResult.style.display = 'block';
checkResult.innerHTML = '<p>Tarkistetaan saatavuutta...</p>';
try {
const params = 'osoite=' + encodeURIComponent(osoite) + '&postinumero=' + encodeURIComponent(postinumero) + '&kaupunki=' + encodeURIComponent(kaupunki);
const res = await fetch(API_URL + '?action=saatavuus&key=' + encodeURIComponent(API_KEY) + '&' + params);
const data = await res.json();
if (data.error) {
checkResult.className = 'check-result nok';
checkResult.innerHTML = '<h4>Virhe</h4><p>' + data.error + '</p>';
return;
}
if (data.saatavilla) {
checkResult.className = 'check-result ok';
checkResult.innerHTML = '<h4>Kuituliittymä on saatavilla osoitteessasi!</h4><p>Täytä vieressä oleva lomake niin otamme yhteyttä ja kerromme lisää.</p>';
} else if (['20100', '20360'].indexOf(postinumero) !== -1) {
checkResult.className = 'check-result ok';
checkResult.innerHTML = '<h4>Kohteeseen on todennäköisesti saatavuus!</h4><p>Alueellasi on kuituyhteys saatavilla. Täytä lomake niin tarkistamme tarkan saatavuuden ja otamme yhteyttä.</p>';
} else {
checkResult.className = 'check-result nok';
checkResult.innerHTML = '<h4>Ei saatavuutta vielä</h4><p>Kuituliittymää ei löytynyt osoitteellasi, mutta verkkomme laajenee jatkuvasti. Täytä lomake niin kerromme kun kuitu tulee saataville!</p>';
}
} catch (e) {
checkResult.className = 'check-result nok';
checkResult.innerHTML = '<h4>Yhteysvirhe</h4><p>Tarkistusta ei voitu suorittaa. Yritä hetken kuluttua uudelleen.</p>';
}
}
checkBtn?.addEventListener('click', checkAvailability);
[checkAddress, checkZip, checkCity].forEach(function(el) {
el?.addEventListener('keydown', function(e) { if (e.key === 'Enter') checkAvailability(); });
});
})();
// Saatavuuskysely-lomake
document.getElementById('availability-form')?.addEventListener('submit', async function(e) {
e.preventDefault();
const btn = this.querySelector('button[type="submit"]');
const originalText = btn.textContent;
btn.disabled = true;
btn.textContent = 'Lähetetään...';
try {
const formData = new FormData(this);
const response = await fetch('send.php', {
method: 'POST',
body: formData
});
const data = await response.json();
if (data.success) {
btn.textContent = 'Lähetetty!';
btn.style.background = '#27ae60';
this.reset();
setTimeout(() => {
btn.textContent = originalText;
btn.style.background = '';
btn.disabled = false;
}, 4000);
} else {
alert(data.error || 'Jokin meni pieleen. Yritä uudelleen.');
btn.textContent = originalText;
btn.disabled = false;
}
} catch (err) {
alert('Yhteysvirhe. Tarkista verkkoyhteytesi ja yritä uudelleen.');
btn.textContent = originalText;
btn.disabled = false;
}
});
</script>
</body>
</html>