This commit is contained in:
parent
2c876cef42
commit
06e943d478
2 changed files with 303 additions and 134 deletions
|
|
@ -45,14 +45,6 @@
|
||||||
font-weight:600;
|
font-weight:600;
|
||||||
box-shadow:0 4px 12px rgba(37,99,235,.12);
|
box-shadow:0 4px 12px rgba(37,99,235,.12);
|
||||||
}
|
}
|
||||||
a.secondary{
|
|
||||||
background:transparent;
|
|
||||||
color:var(--muted);
|
|
||||||
border:1px solid rgba(15,23,42,.06);
|
|
||||||
padding:.5rem .9rem;
|
|
||||||
border-radius:8px;
|
|
||||||
text-decoration:none;
|
|
||||||
}
|
|
||||||
@media (max-width:420px){ .code{font-size:2.5rem} }
|
@media (max-width:420px){ .code{font-size:2.5rem} }
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
@ -63,7 +55,6 @@
|
||||||
<p>We couldn't find the page you're looking for. It may have been moved or removed.</p>
|
<p>We couldn't find the page you're looking for. It may have been moved or removed.</p>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<a class="button" href="/">Go to homepage</a>
|
<a class="button" href="/">Go to homepage</a>
|
||||||
<a class="secondary" href="javascript:history.back()">Go back</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
|
|
@ -5,59 +5,249 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>SVS {{.Occupation}}</title>
|
<title>SVS {{.Occupation}}</title>
|
||||||
<!-- Bootstrap CSS -->
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
:root {
|
||||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
--ink: #0f172a;
|
||||||
background: #f8f9fa;
|
--muted: #5c677d;
|
||||||
|
--bg: #f5f7fb;
|
||||||
|
--panel: #ffffff;
|
||||||
|
--accent: #1d4ed8;
|
||||||
|
--accent-2: #9333ea;
|
||||||
|
--radius: 14px;
|
||||||
|
--shadow: 0 15px 50px rgba(15, 23, 42, 0.07);
|
||||||
|
--max-width: 1080px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#what-we-do {
|
* {
|
||||||
background: #e6e6e6;
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
|
||||||
|
background: var(--bg);
|
||||||
|
color: var(--ink);
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--accent);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: 100%;
|
||||||
|
max-width: var(--max-width);
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
header {
|
||||||
background: linear-gradient(135deg, #0d6efd, #6610f2);
|
background: linear-gradient(135deg, var(--accent), var(--accent-2));
|
||||||
color: white;
|
color: #fff;
|
||||||
padding: 80px 0;
|
padding: 90px 0 80px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
header h1 {
|
header h1 {
|
||||||
font-size: 3rem;
|
margin: 0 0 10px;
|
||||||
font-weight: bold;
|
font-size: clamp(2.2rem, 3vw, 3.4rem);
|
||||||
|
letter-spacing: 0.5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.about-section img {
|
header h2 {
|
||||||
border-radius: 50%;
|
margin: 0 0 10px;
|
||||||
width: 150px;
|
|
||||||
height: 150px;
|
|
||||||
object-fit: cover;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
background: #212529;
|
|
||||||
color: white;
|
|
||||||
margin-top: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-fun {
|
|
||||||
background: linear-gradient(135deg, #0d6efd, #6610f2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.sans {
|
|
||||||
font-family: "Comic Neue", cursive;
|
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-style: normal;
|
}
|
||||||
|
|
||||||
|
header p {
|
||||||
|
max-width: 680px;
|
||||||
|
margin: 0 auto;
|
||||||
|
color: rgba(255, 255, 255, 0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pill-button {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 14px 20px;
|
||||||
|
margin-top: 24px;
|
||||||
|
background: #fff;
|
||||||
|
color: var(--accent);
|
||||||
|
border-radius: 999px;
|
||||||
|
border: none;
|
||||||
|
font-weight: 600;
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
cursor: pointer;
|
||||||
|
transition: transform 150ms ease, box-shadow 150ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pill-button:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 18px 55px rgba(15, 23, 42, 0.14);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
padding: 70px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
section h2 {
|
||||||
|
text-align: center;
|
||||||
|
margin: 0 0 20px;
|
||||||
|
font-size: 1.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.muted {
|
||||||
|
color: var(--muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
#what-we-do {
|
||||||
|
background: #eef2ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#what-we-do .content {
|
||||||
|
background: var(--panel);
|
||||||
|
padding: 28px;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.about-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
||||||
|
gap: 26px;
|
||||||
|
margin-top: 34px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-card {
|
||||||
|
background: var(--panel);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 24px;
|
||||||
|
text-align: center;
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-card img {
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 140px;
|
||||||
|
height: 140px;
|
||||||
|
object-fit: cover;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-card h4 {
|
||||||
|
margin: 6px 0 0;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-card .cta {
|
||||||
|
margin-top: auto;
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
padding: 12px 16px;
|
||||||
|
background: linear-gradient(135deg, var(--accent), var(--accent-2));
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 10px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-card .cta:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
filter: brightness(1.03);
|
||||||
|
}
|
||||||
|
|
||||||
|
#testimonials {
|
||||||
|
background: var(--panel);
|
||||||
|
}
|
||||||
|
|
||||||
|
.testimonial-shell {
|
||||||
|
max-width: 760px;
|
||||||
|
margin: 0 auto;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slides {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
min-height: 180px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(20px);
|
||||||
|
transition: opacity 250ms ease, transform 250ms ease;
|
||||||
|
text-align: center;
|
||||||
|
padding: 10px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide.active {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateX(0);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide p {
|
||||||
|
font-size: 1.05rem;
|
||||||
|
font-style: italic;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.controls {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 12px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-btn {
|
||||||
|
width: 42px;
|
||||||
|
height: 42px;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 1px solid #d5d9e2;
|
||||||
|
background: #fff;
|
||||||
|
color: var(--ink);
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-btn:hover {
|
||||||
|
background: #eef2ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
background: #0b1224;
|
||||||
|
color: #f1f5f9;
|
||||||
|
padding: 40px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer .footer-inner {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
footer .footer-inner {
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: flex-end;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
||||||
<link
|
|
||||||
href="https://fonts.googleapis.com/css2?family=Comic+Neue:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap"
|
|
||||||
rel="stylesheet">
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
@ -66,124 +256,112 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>SVS Industries</h1>
|
<h1>SVS Industries</h1>
|
||||||
<h2 class="sans">{{.Occupation}}</h2>
|
<h2>{{.Occupation}}</h2>
|
||||||
<p class="lead">{{.Tagline}}</p>
|
<p>{{.Tagline}}</p>
|
||||||
<a href="#about" class="btn btn-light btn-lg mt-3">Meet Our Team</a>
|
<a href="#about" class="pill-button">Meet Our Team</a>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
<section id="what-we-do">
|
||||||
<section id="what-we-do" class="py-5">
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2 class="text-center mb-4">What We Do</h2>
|
<h2>What We Do</h2>
|
||||||
<div class="row justify-content-center">
|
<div class="content">
|
||||||
<div class="col-lg-10">
|
{{.WhatWeDo}}
|
||||||
{{.WhatWeDo}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- About Us -->
|
<section id="about">
|
||||||
<section id="about" class="py-5">
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2 class="text-center mb-5">About Us</h2>
|
<h2>About Us</h2>
|
||||||
<div class="row g-4">
|
<p class="muted" style="text-align:center; margin:0 auto; max-width:700px;">Three builders, one vision: ship reliable, human-centered software and services.</p>
|
||||||
|
<div class="about-grid">
|
||||||
<div class="col-md-4 text-center d-flex flex-column align-items-center about-section">
|
<div class="profile-card">
|
||||||
<img src="headshots/chandlerswift.jpg"
|
<img src="headshots/chandlerswift.jpg"
|
||||||
alt="Chandler Swift">
|
alt="Chandler Swift">
|
||||||
<h4 class="mt-3">Chandler <b>Swift</b></h4>
|
<h4>Chandler <b>Swift</b></h4>
|
||||||
<div class="flex-grow-1 d-flex flex-column justify-content-evenly">
|
<div class="muted">{{.ChandlerBio}}</div>
|
||||||
{{.ChandlerBio}}
|
<a class="cta" href="https://chandlerswift.com/">chandlerswift.com</a>
|
||||||
</div>
|
|
||||||
<a href="https://chandlerswift.com/" class="btn btn-dark btn-fun btn-lg mt-3">chandlerswift.com</a>
|
|
||||||
</div>
|
</div>
|
||||||
<hr class="d-xl-none d-xxl-none d-lg-none d-md-none">
|
<div class="profile-card">
|
||||||
<div class="col-md-4 text-center d-flex flex-column align-items-center about-section">
|
|
||||||
<img src="headshots/ericvillnow.jpg"
|
<img src="headshots/ericvillnow.jpg"
|
||||||
alt="Developer 2">
|
alt="Eric Villnow">
|
||||||
<h4 class="mt-3">Eric <b>Villnow</b></h4>
|
<h4>Eric <b>Villnow</b></h4>
|
||||||
<div class="flex-grow-1 d-flex flex-column justify-content-evenly">
|
<div class="muted">{{.EricBio}}</div>
|
||||||
{{.EricBio}}
|
<a class="cta" href="https://vill.now/">vill.now</a>
|
||||||
</div>
|
|
||||||
<a href="https://vill.now/" class="btn btn-dark btn-fun btn-lg mt-3">vill.now</a>
|
|
||||||
</div>
|
</div>
|
||||||
<hr class="d-xl-none d-xxl-none d-lg-none d-md-none">
|
<div class="profile-card">
|
||||||
<div class="col-md-4 text-center d-flex flex-column align-items-center about-section">
|
|
||||||
<img src="headshots/isaacswift.jpg" alt="Isaac Swift">
|
<img src="headshots/isaacswift.jpg" alt="Isaac Swift">
|
||||||
<h4 class="mt-3">Isaac <b>Swift</b></h4>
|
<h4>Isaac <b>Swift</b></h4>
|
||||||
<div class="flex-grow-1 d-flex flex-column justify-content-evenly">
|
<div class="muted">{{.IsaacBio}}</div>
|
||||||
{{.IsaacBio}}
|
<a class="cta" href="https://isaacswift.com/">isaacswift.com</a>
|
||||||
</div>
|
|
||||||
<a href="https://isaacswift.com/" class="btn btn-dark btn-fun btn-lg mt-3">isaacswift.com</a>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="testimonials" class="py-5">
|
<section id="testimonials">
|
||||||
<div class="container-fluid">
|
<div class="container">
|
||||||
<h2 class="text-center mb-5">What Our Clients Say</h2>
|
<h2>What Our Clients Say</h2>
|
||||||
<div id="testimonialCarousel" class="carousel carousel-dark slide" data-bs-ride="carousel">
|
<div class="testimonial-shell" data-slider>
|
||||||
<div class="carousel-inner">
|
<div class="slides">
|
||||||
{{range $index, $testimonial := .Testimonials}}
|
{{range $index, $testimonial := .Testimonials}}
|
||||||
<div class="carousel-item text-center {{if eq $index 0}}active{{end}}">
|
<div class="slide {{if eq $index 0}}active{{end}}">
|
||||||
<p class="fs-5 fst-italic">"{{$testimonial.Quote}}"</p>
|
<p>"{{$testimonial.Quote}}"</p>
|
||||||
<h5 class="mt-3">— {{$testimonial.Name}}, {{$testimonial.Position}}</h5>
|
<strong>— {{$testimonial.Name}}, {{$testimonial.Position}}</strong>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="controls">
|
||||||
<!-- Carousel controls -->
|
<button class="control-btn" data-prev aria-label="Previous testimonial">←</button>
|
||||||
<button class="carousel-control-prev" type="button" data-bs-target="#testimonialCarousel"
|
<button class="control-btn" data-next aria-label="Next testimonial">→</button>
|
||||||
data-bs-slide="prev">
|
</div>
|
||||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
|
||||||
<span class="visually-hidden">Previous</span>
|
|
||||||
</button>
|
|
||||||
<button class="carousel-control-next" type="button" data-bs-target="#testimonialCarousel"
|
|
||||||
data-bs-slide="next">
|
|
||||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
|
||||||
<span class="visually-hidden">Next</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<style>
|
<footer>
|
||||||
#clients {
|
<div class="container footer-inner">
|
||||||
position: relative;
|
<p>
|
||||||
}
|
<b>Swift, Villnow & Swift Industries</b><br>
|
||||||
|
{{.Occupation}} Division<br>
|
||||||
|
<a href="tel:2182105180" style="color:#cbd5e1;">(218) 210-5180</a><br>
|
||||||
|
<a href="mailto:sales@svsindustries.org" style="color:#cbd5e1;">sales@svsindustries.org</a>
|
||||||
|
</p>
|
||||||
|
<p>© {{.CurrentYear}} Swift, Villnow & Swift Industries. All rights reserved.</p>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
.client-logo {
|
<script>
|
||||||
max-height: 100px;
|
(function () {
|
||||||
filter: grayscale(100%);
|
const slider = document.querySelector('[data-slider]');
|
||||||
opacity: 0.6;
|
if (!slider) return;
|
||||||
transition: opacity 0.3s ease;
|
const slides = Array.from(slider.querySelectorAll('.slide'));
|
||||||
margin-left: 50px;
|
const prev = slider.querySelector('[data-prev]');
|
||||||
}
|
const next = slider.querySelector('[data-next]');
|
||||||
|
let index = slides.findIndex(s => s.classList.contains('active'));
|
||||||
|
|
||||||
.client-logo:hover {
|
function show(i) {
|
||||||
opacity: 1;
|
slides.forEach((s, idx) => {
|
||||||
}
|
s.classList.toggle('active', idx === i);
|
||||||
</style>
|
});
|
||||||
<!-- Footer -->
|
}
|
||||||
<div class="footer d-flex justify-content-between align-items-md-end p-5 flex-column flex-md-row">
|
|
||||||
<p>
|
|
||||||
<b>Swift, Villnow & Swift Industries</b><br>
|
|
||||||
{{.Occupation}} Division<br>
|
|
||||||
<a href="tel:2182105180">(218) 210-5180</a><br>
|
|
||||||
<a href="mailto:sales@svsindustries.org">sales@svsindustries.org</a>
|
|
||||||
|
|
||||||
</p>
|
function go(delta) {
|
||||||
<p>© {{.CurrentYear}} Swift, Villnow & Swift Industries. All rights reserved.</p>
|
index = (index + delta + slides.length) % slides.length;
|
||||||
</div>
|
show(index);
|
||||||
<!-- Bootstrap JS -->
|
}
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
|
||||||
|
prev?.addEventListener('click', () => go(-1));
|
||||||
|
next?.addEventListener('click', () => go(1));
|
||||||
|
|
||||||
|
let timer = setInterval(() => go(1), 6500);
|
||||||
|
slider.addEventListener('mouseenter', () => clearInterval(timer));
|
||||||
|
slider.addEventListener('mouseleave', () => {
|
||||||
|
timer = setInterval(() => go(1), 6500);
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue