Skip to content

Instantly share code, notes, and snippets.

@akaihola
Created February 10, 2026 13:56
Show Gist options
  • Select an option

  • Save akaihola/165cf0e568fffe97cf7743fad041a530 to your computer and use it in GitHub Desktop.

Select an option

Save akaihola/165cf0e568fffe97cf7743fad041a530 to your computer and use it in GitHub Desktop.
Coleaders Community landing page v2 — updated to match brand style guides
<!DOCTYPE html>
<html lang="fi">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Coleaders — Työelämä voi olla parempi</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Caveat:wght@400..700&family=EB+Garamond:ital,wght@0,400..800;1,400..800&family=Work+Sans:ital,wght@0,300..900;1,300..900&display=swap" rel="stylesheet">
<style>
/* ============ RESET & VARIABLES ============ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
/* Brand palette */
--charcoal: #3d3d3d;
--plum: #704149;
--dusk: #545066;
--indigo: #313c72;
--burnt-orange: #f08361;
--terracotta: #c44747;
--lime: #c3d219;
--steel-blue: #556781;
--mauve: #ceafbf;
--off-white: #f4efe6;
--peach: #e7d7ce;
--teal: #52a4a6;
--ochre: #fab314;
--white: #ffffff;
--black: #000000;
/* Semantic tokens */
--bg: var(--off-white);
--bg-warm: var(--peach);
--text: var(--charcoal);
--text-muted: var(--steel-blue);
--accent-primary: var(--burnt-orange);
--accent-primary-hover: #d8704e;
--accent-secondary: var(--teal);
--accent-secondary-hover: #478e90;
--accent-dark: var(--dusk);
/* Typography */
--font-display: 'EB Garamond', Georgia, serif;
--font-body: 'Work Sans', Helvetica, Arial, sans-serif;
--font-accent: 'Caveat', cursive;
/* Spacing */
--space-xs: 0.5rem;
--space-sm: 1rem;
--space-md: 1.5rem;
--space-lg: 3rem;
--space-xl: 5rem;
--space-2xl: 8rem;
/* Layout */
--max-w: 1080px;
--radius: 12px;
--radius-lg: 20px;
}
html { scroll-behavior: smooth; font-size: 16px; }
body {
font-family: var(--font-body);
color: var(--text);
background: var(--bg);
line-height: 1.65;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; }
.container { max-width: var(--max-w); margin: 0 auto; padding: 0 var(--space-md); }
h1, h2, h3, h4 { font-family: var(--font-display); line-height: 1.2; font-weight: 800; }
h1 { font-size: clamp(2.2rem, 5vw, 3.4rem); }
h2 { font-size: clamp(1.8rem, 3.5vw, 2.6rem); }
h3 { font-size: clamp(1.2rem, 2vw, 1.5rem); }
h4 { font-size: 1.1rem; }
p { max-width: 65ch; }
/* Accent label style (Caveat) */
.section-label {
font-family: var(--font-accent);
font-size: 1.3rem;
color: var(--terracotta);
margin-bottom: var(--space-xs);
display: block;
}
/* ============ NAVIGATION ============ */
.nav {
position: fixed;
top: 0; left: 0; right: 0;
z-index: 100;
background: rgba(244,239,230,0.92);
backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(0,0,0,0.06);
transition: box-shadow 0.3s;
}
.nav.scrolled { box-shadow: 0 2px 20px rgba(0,0,0,0.08); }
.nav-inner {
max-width: var(--max-w);
margin: 0 auto;
padding: 0 var(--space-md);
display: flex;
align-items: center;
justify-content: space-between;
height: 68px;
}
.nav-logo {
display: flex;
align-items: center;
gap: 10px;
}
.nav-logo svg { height: 36px; width: auto; }
.nav-logo-text {
font-family: var(--font-display);
font-size: 1.35rem;
font-weight: 800;
color: var(--charcoal);
letter-spacing: -0.3px;
line-height: 1;
}
.nav-logo-text small {
display: block;
font-family: var(--font-body);
font-size: 0.55rem;
font-weight: 600;
letter-spacing: 3px;
text-transform: uppercase;
color: var(--steel-blue);
margin-top: 2px;
}
.nav-links { display: flex; align-items: center; gap: var(--space-md); }
.nav-links a {
font-size: 0.95rem;
font-weight: 500;
color: var(--text);
transition: color 0.2s;
position: relative;
}
.nav-links a:hover { color: var(--teal); }
.nav-links a::after {
content: '';
position: absolute;
bottom: -4px; left: 0;
width: 0; height: 2px;
background: var(--burnt-orange);
transition: width 0.3s;
border-radius: 2px;
}
.nav-links a:hover::after { width: 100%; }
.nav-lang {
font-size: 0.85rem;
padding: 4px 10px;
border: 1px solid var(--text-muted);
border-radius: 6px;
cursor: pointer;
transition: all 0.2s;
}
.nav-lang:hover { background: var(--charcoal); color: var(--white); }
.btn-cta {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 10px 24px;
background: var(--accent-primary);
color: var(--white);
font-family: var(--font-body);
font-weight: 600;
font-size: 0.95rem;
border: none;
border-radius: 50px;
cursor: pointer;
transition: all 0.3s;
text-decoration: none;
}
.btn-cta:hover { background: var(--accent-primary-hover); transform: translateY(-1px); box-shadow: 0 4px 16px rgba(240,131,97,0.35); }
.btn-teal {
padding: 10px 24px;
background: var(--accent-secondary);
color: var(--white);
font-family: var(--font-body);
font-weight: 600;
font-size: 0.95rem;
border: none;
border-radius: 50px;
cursor: pointer;
transition: all 0.3s;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 8px;
}
.btn-teal:hover { background: var(--accent-secondary-hover); transform: translateY(-1px); box-shadow: 0 4px 16px rgba(82,164,166,0.3); }
.btn-outline {
padding: 10px 24px;
background: transparent;
color: var(--accent-secondary);
font-family: var(--font-body);
font-weight: 600;
font-size: 0.95rem;
border: 2px solid var(--accent-secondary);
border-radius: 50px;
cursor: pointer;
transition: all 0.3s;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 8px;
}
.btn-outline:hover { background: var(--accent-secondary); color: var(--white); }
/* Mobile menu */
.nav-toggle { display: none; background: none; border: none; cursor: pointer; padding: 8px; }
.nav-toggle svg { width: 26px; height: 26px; stroke: var(--text); }
@media (max-width: 860px) {
.nav-links { display: none; }
.nav-links.open {
display: flex;
flex-direction: column;
position: absolute;
top: 68px; left: 0; right: 0;
background: var(--bg);
padding: var(--space-md);
gap: var(--space-sm);
border-bottom: 1px solid rgba(0,0,0,0.1);
box-shadow: 0 8px 24px rgba(0,0,0,0.08);
}
.nav-toggle { display: block; }
}
/* ============ HERO ============ */
.hero {
padding-top: 120px;
padding-bottom: var(--space-xl);
background: var(--bg-warm);
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: -80px; right: -120px;
width: 500px; height: 500px;
background: radial-gradient(circle, rgba(240,131,97,0.1) 0%, transparent 70%);
border-radius: 50%;
}
.hero::after {
content: '';
position: absolute;
bottom: -60px; left: -80px;
width: 350px; height: 350px;
background: radial-gradient(circle, rgba(82,164,166,0.08) 0%, transparent 70%);
border-radius: 50%;
}
.hero-inner {
display: grid;
grid-template-columns: 1.1fr 0.9fr;
gap: var(--space-lg);
align-items: center;
position: relative;
z-index: 1;
}
.hero-text h1 {
margin-bottom: var(--space-md);
color: var(--charcoal);
}
.hero-text h1 em {
font-style: normal;
color: var(--terracotta);
}
.hero-text .subtitle {
font-size: 1.15rem;
color: var(--text-muted);
margin-bottom: var(--space-sm);
max-width: 48ch;
line-height: 1.7;
}
.hero-text .subtitle-small {
font-size: 0.95rem;
color: var(--text-muted);
opacity: 0.8;
}
.hero-visual {
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.hero-illustration { width: 100%; max-width: 400px; }
@media (max-width: 768px) {
.hero-inner { grid-template-columns: 1fr; text-align: center; }
.hero-text .subtitle { margin-left: auto; margin-right: auto; }
.hero-visual { order: -1; }
.hero-illustration { max-width: 260px; }
}
/* ============ SECTION 2: "MITÄ TÄÄLLÄ OIKEASTI TAPAHTUU" ============ */
.what-is {
padding: var(--space-xl) 0;
background: var(--bg);
}
.what-is-inner {
text-align: center;
max-width: 700px;
margin: 0 auto;
}
.what-is h2 {
margin-bottom: var(--space-lg);
}
.what-is-points {
display: flex;
flex-direction: column;
gap: var(--space-md);
text-align: left;
max-width: 580px;
margin: 0 auto;
}
.what-is-point {
display: flex;
gap: var(--space-sm);
align-items: flex-start;
}
.what-is-point .bullet {
width: 36px; height: 36px;
min-width: 36px;
border-radius: 50%;
display: flex; align-items: center; justify-content: center;
font-size: 1.1rem;
margin-top: 2px;
}
.what-is-point:nth-child(1) .bullet { background: rgba(82,164,166,0.15); }
.what-is-point:nth-child(2) .bullet { background: rgba(206,175,191,0.3); }
.what-is-point:nth-child(3) .bullet { background: rgba(240,131,97,0.15); }
.what-is-point p {
font-size: 1.05rem;
color: var(--text);
}
.what-is-point p strong {
color: var(--charcoal);
}
/* ============ SECTION 3: HAARUKOINTI ============ */
.paths {
padding: var(--space-2xl) 0 var(--space-xl);
background: var(--bg);
}
.paths-header {
text-align: center;
margin-bottom: var(--space-xl);
}
.paths-header h2 { margin-bottom: var(--space-xs); }
.paths-header p { color: var(--text-muted); font-size: 1.05rem; max-width: 50ch; margin: 0 auto; }
.paths-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--space-md);
}
.path-card {
background: var(--white);
border-radius: var(--radius-lg);
padding: var(--space-lg) var(--space-md);
border: 1px solid rgba(0,0,0,0.05);
transition: all 0.4s;
position: relative;
overflow: hidden;
display: flex;
flex-direction: column;
}
.path-card::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0;
height: 4px;
transition: transform 0.3s;
transform: scaleX(0);
}
.path-card:hover::before { transform: scaleX(1); }
.path-card:hover { transform: translateY(-6px); box-shadow: 0 12px 40px rgba(0,0,0,0.08); }
.path-card:nth-child(1)::before { background: var(--teal); }
.path-card:nth-child(2)::before { background: var(--burnt-orange); }
.path-card:nth-child(3)::before { background: var(--dusk); }
.path-card:nth-child(4)::before { background: var(--plum); }
.path-icon {
width: 56px; height: 56px;
border-radius: 50%;
display: flex; align-items: center; justify-content: center;
font-size: 1.6rem;
margin-bottom: var(--space-md);
}
.path-card:nth-child(1) .path-icon { background: rgba(82,164,166,0.12); }
.path-card:nth-child(2) .path-icon { background: rgba(240,131,97,0.12); }
.path-card:nth-child(3) .path-icon { background: rgba(84,80,102,0.1); }
.path-card:nth-child(4) .path-icon { background: rgba(112,65,73,0.1); }
.path-card .feeling {
font-family: var(--font-display);
font-style: italic;
font-size: 1.1rem;
color: var(--charcoal);
margin-bottom: var(--space-sm);
line-height: 1.4;
}
.path-card .description {
font-size: 0.95rem;
color: var(--text-muted);
margin-bottom: var(--space-md);
flex: 1;
}
.path-card .path-link {
font-weight: 600;
font-size: 0.95rem;
transition: color 0.2s;
display: inline-flex;
align-items: center;
gap: 6px;
}
.path-card:nth-child(1) .path-link { color: var(--teal); }
.path-card:nth-child(2) .path-link { color: var(--burnt-orange); }
.path-card:nth-child(3) .path-link { color: var(--dusk); }
.path-card:nth-child(4) .path-link { color: var(--plum); }
.path-card .path-link:hover { gap: 10px; }
.path-card .path-link .arrow {
transition: transform 0.2s;
display: inline-block;
}
.path-card .path-link:hover .arrow { transform: translateX(3px); }
@media (max-width: 700px) {
.paths-grid { grid-template-columns: 1fr; }
}
/* ============ SECTION 4: SOSIAALINEN TODISTE ============ */
.proof {
padding: var(--space-xl) 0;
background: rgba(82,164,166,0.08);
position: relative;
}
.proof::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0;
height: 4px;
background: linear-gradient(90deg, var(--teal), var(--steel-blue), var(--mauve), var(--burnt-orange));
}
.proof-inner {
text-align: center;
max-width: 750px;
margin: 0 auto;
}
.proof-inner > p {
font-size: 1.1rem;
color: var(--text);
margin: 0 auto var(--space-lg);
max-width: 60ch;
}
.proof-quote {
background: var(--white);
border-radius: var(--radius-lg);
padding: var(--space-lg);
position: relative;
border: 1px solid rgba(0,0,0,0.04);
box-shadow: 0 2px 12px rgba(0,0,0,0.04);
margin-bottom: var(--space-lg);
text-align: left;
}
.proof-quote::before {
content: '\201C';
font-family: var(--font-display);
font-size: 4rem;
color: var(--mauve);
opacity: 0.6;
position: absolute;
top: 8px; left: 20px;
line-height: 1;
}
.proof-quote p {
font-family: var(--font-display);
font-style: italic;
font-size: 1.15rem;
margin-bottom: var(--space-sm);
position: relative;
z-index: 1;
max-width: none;
line-height: 1.7;
}
.proof-quote .author {
display: flex;
align-items: center;
gap: var(--space-sm);
}
.proof-quote .avatar {
width: 48px; height: 48px;
border-radius: 50%;
background: var(--bg-warm);
border: 2px solid var(--mauve);
display: flex; align-items: center; justify-content: center;
font-family: var(--font-display);
font-weight: 700;
color: var(--plum);
font-size: 1.1rem;
flex-shrink: 0;
}
.proof-quote .name { font-weight: 600; font-size: 0.95rem; }
.proof-quote .role { font-size: 0.85rem; color: var(--text-muted); }
.proof-people {
display: flex;
justify-content: center;
gap: var(--space-sm);
flex-wrap: wrap;
margin-bottom: var(--space-xs);
}
.proof-person {
text-align: center;
width: 100px;
}
.proof-person .circle {
width: 56px; height: 56px;
border-radius: 50%;
border: 3px solid var(--white);
display: flex; align-items: center; justify-content: center;
font-family: var(--font-display);
font-weight: 700;
font-size: 0.85rem;
color: var(--white);
margin: 0 auto 6px;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
transition: transform 0.3s;
}
.proof-person .circle:hover { transform: scale(1.1); }
.proof-person:nth-child(1) .circle { background: var(--burnt-orange); }
.proof-person:nth-child(2) .circle { background: var(--teal); }
.proof-person:nth-child(3) .circle { background: var(--plum); }
.proof-person:nth-child(4) .circle { background: var(--steel-blue); }
.proof-person:nth-child(5) .circle { background: var(--dusk); }
.proof-person .p-name { font-size: 0.78rem; font-weight: 600; }
.proof-person .p-org { font-size: 0.72rem; color: var(--text-muted); }
/* ============ SECTION 5: WHAT YOU GET ============ */
.benefits {
padding: var(--space-xl) 0;
background: var(--bg);
}
.benefits-inner {
max-width: 680px;
margin: 0 auto;
text-align: center;
}
.benefits-inner h2 { margin-bottom: var(--space-lg); }
.benefit-list {
display: flex;
flex-direction: column;
gap: var(--space-md);
text-align: left;
}
.benefit-item {
display: flex;
gap: var(--space-sm);
align-items: flex-start;
}
.benefit-item .check {
width: 32px; height: 32px;
min-width: 32px;
border-radius: 50%;
display: flex; align-items: center; justify-content: center;
font-weight: 700;
font-size: 1rem;
margin-top: 2px;
}
.benefit-item:nth-child(1) .check { background: rgba(240,131,97,0.12); color: var(--burnt-orange); }
.benefit-item:nth-child(2) .check { background: rgba(82,164,166,0.12); color: var(--teal); }
.benefit-item:nth-child(3) .check { background: rgba(84,80,102,0.12); color: var(--dusk); }
.benefit-item:nth-child(4) .check { background: rgba(112,65,73,0.12); color: var(--plum); }
.benefit-item p {
font-size: 1.05rem;
}
.benefit-item p strong {
color: var(--charcoal);
}
/* ============ SECTION 6: SOFT CTA ============ */
.soft-cta {
padding: var(--space-xl) 0;
background: var(--charcoal);
color: var(--white);
text-align: center;
position: relative;
overflow: hidden;
}
.soft-cta::before {
content: '';
position: absolute;
top: -100px; right: -100px;
width: 400px; height: 400px;
background: radial-gradient(circle, rgba(240,131,97,0.12) 0%, transparent 70%);
border-radius: 50%;
}
.soft-cta::after {
content: '';
position: absolute;
bottom: -80px; left: -80px;
width: 300px; height: 300px;
background: radial-gradient(circle, rgba(82,164,166,0.1) 0%, transparent 70%);
border-radius: 50%;
}
.soft-cta-inner {
position: relative;
z-index: 1;
max-width: 600px;
margin: 0 auto;
}
.soft-cta h2 { color: var(--white); margin-bottom: var(--space-md); }
.soft-cta p {
color: rgba(255,255,255,0.6);
margin: 0 auto var(--space-lg);
font-size: 1rem;
}
/* Newsletter */
.newsletter-inline {
margin-top: var(--space-lg);
padding-top: var(--space-md);
border-top: 1px solid rgba(255,255,255,0.1);
}
.newsletter-inline .nl-label {
font-family: var(--font-accent);
font-size: 1.1rem;
color: rgba(255,255,255,0.5);
margin-bottom: var(--space-sm);
}
.newsletter-form {
display: flex;
gap: var(--space-xs);
justify-content: center;
}
.newsletter-form input {
padding: 10px 16px;
border: 2px solid rgba(255,255,255,0.15);
border-radius: 50px;
font-family: var(--font-body);
font-size: 0.95rem;
outline: none;
width: 260px;
background: rgba(255,255,255,0.08);
color: var(--white);
transition: border-color 0.2s;
}
.newsletter-form input::placeholder { color: rgba(255,255,255,0.35); }
.newsletter-form input:focus { border-color: var(--burnt-orange); }
.newsletter-form button {
padding: 10px 24px;
background: var(--accent-primary);
color: var(--white);
border: none;
border-radius: 50px;
font-family: var(--font-body);
font-weight: 600;
cursor: pointer;
transition: background 0.2s;
}
.newsletter-form button:hover { background: var(--accent-primary-hover); }
@media (max-width: 500px) {
.newsletter-form { flex-direction: column; align-items: center; }
.newsletter-form input { width: 100%; }
}
/* ============ FOOTER ============ */
.footer {
background: var(--charcoal);
color: rgba(255,255,255,0.5);
padding: var(--space-lg) 0 var(--space-md);
border-top: 1px solid rgba(255,255,255,0.06);
}
.footer-inner {
display: flex;
justify-content: space-between;
align-items: flex-start;
flex-wrap: wrap;
gap: var(--space-lg);
}
.footer-brand .nav-logo { margin-bottom: var(--space-xs); }
.footer-brand p { font-size: 0.85rem; max-width: 28ch; }
.footer-links {
display: flex;
gap: var(--space-xl);
}
.footer-links h4 {
color: var(--white);
font-family: var(--font-body);
font-weight: 600;
font-size: 0.82rem;
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: var(--space-xs);
}
.footer-links ul li { margin-bottom: 6px; }
.footer-links a {
font-size: 0.85rem;
transition: color 0.2s;
}
.footer-links a:hover { color: var(--white); }
.footer-bottom {
margin-top: var(--space-lg);
padding-top: var(--space-sm);
border-top: 1px solid rgba(255,255,255,0.06);
display: flex;
justify-content: space-between;
font-size: 0.78rem;
}
@media (max-width: 600px) {
.footer-inner { flex-direction: column; }
.footer-links { gap: var(--space-lg); }
}
/* ============ ANIMATIONS ============ */
.fade-up {
opacity: 0;
transform: translateY(30px);
transition: opacity 0.7s ease, transform 0.7s ease;
}
.fade-up.visible {
opacity: 1;
transform: translateY(0);
}
.stagger > * { transition-delay: calc(var(--i, 0) * 0.12s); }
@keyframes float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-12px); }
}
.float { animation: float 5s ease-in-out infinite; }
/* Subtle grain */
body::after {
content: '';
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
pointer-events: none;
z-index: 9999;
opacity: 0.025;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
background-repeat: repeat;
background-size: 256px;
}
</style>
</head>
<body>
<!-- Inline SVG defs for Suiseki logo -->
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
<symbol id="suiseki-color" viewBox="0 0 120 110">
<!-- Organic pebble cluster — Suiseki logo -->
<ellipse cx="48" cy="22" rx="22" ry="16" transform="rotate(-15 48 22)" fill="#f08361"/>
<ellipse cx="82" cy="26" rx="18" ry="14" transform="rotate(10 82 26)" fill="#e7d7ce"/>
<ellipse cx="24" cy="52" rx="20" ry="18" transform="rotate(-8 24 52)" fill="#3d3d3d"/>
<ellipse cx="56" cy="50" rx="16" ry="14" transform="rotate(5 56 50)" fill="#ceafbf"/>
<ellipse cx="88" cy="52" rx="18" ry="16" transform="rotate(-5 88 52)" fill="#556781"/>
<ellipse cx="44" cy="78" rx="17" ry="14" transform="rotate(12 44 78)" fill="#545066"/>
<ellipse cx="72" cy="82" rx="16" ry="13" transform="rotate(-10 72 82)" fill="#704149"/>
</symbol>
<symbol id="suiseki-white" viewBox="0 0 120 110">
<ellipse cx="48" cy="22" rx="22" ry="16" transform="rotate(-15 48 22)" fill="#fff"/>
<ellipse cx="82" cy="26" rx="18" ry="14" transform="rotate(10 82 26)" fill="#fff" opacity="0.85"/>
<ellipse cx="24" cy="52" rx="20" ry="18" transform="rotate(-8 24 52)" fill="#fff"/>
<ellipse cx="56" cy="50" rx="16" ry="14" transform="rotate(5 56 50)" fill="#fff" opacity="0.7"/>
<ellipse cx="88" cy="52" rx="18" ry="16" transform="rotate(-5 88 52)" fill="#fff" opacity="0.85"/>
<ellipse cx="44" cy="78" rx="17" ry="14" transform="rotate(12 44 78)" fill="#fff" opacity="0.9"/>
<ellipse cx="72" cy="82" rx="16" ry="13" transform="rotate(-10 72 82)" fill="#fff"/>
</symbol>
</svg>
<!-- ======== 0. NAVIGATION ======== -->
<nav class="nav" id="nav">
<div class="nav-inner">
<a href="#" class="nav-logo">
<svg width="36" height="34"><use href="#suiseki-color"/></svg>
<span class="nav-logo-text">coleaders<small>community</small></span>
</a>
<div class="nav-links" id="navLinks">
<a href="#paths">Aloita tästä</a>
<a href="#community">Yhteisö</a>
<a href="#content">Sisällöt</a>
<a href="#about">Tietoja</a>
<span class="nav-lang">EN</span>
<a href="#community" class="btn-teal">Tutustu yhteisöön</a>
</div>
<button class="nav-toggle" id="navToggle" aria-label="Menu">
<svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round">
<line x1="3" y1="6" x2="21" y2="6"/>
<line x1="3" y1="12" x2="21" y2="12"/>
<line x1="3" y1="18" x2="21" y2="18"/>
</svg>
</button>
</div>
</nav>
<!-- ======== 1. HERO: TUNNISTAMINEN ======== -->
<section class="hero" id="home">
<div class="container hero-inner">
<div class="hero-text fade-up">
<h1>Työelämä voi olla parempi.<br><em>Mutta se ei muutu yksin.</em></h1>
<p class="subtitle">Moni johtaja haluaa jakaa vastuuta, keventää hierarkiaa ja tehdä työstä inhimillisempää — mutta jää helposti yksin kokeilujensa kanssa.</p>
<p class="subtitle-small">Coleaders kokoaa yhteen ihmiset, jotka haluavat viedä muutosta eteenpäin käytännössä — kukin omasta lähtökohdastaan.</p>
</div>
<div class="hero-visual fade-up">
<svg class="hero-illustration float" viewBox="0 0 400 380" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Person 1 — dressed in dusk -->
<ellipse cx="140" cy="340" rx="90" ry="14" fill="#545066" opacity="0.1"/>
<path d="M115 280 C115 240, 125 200, 140 180 C155 200, 165 240, 165 280 Z" fill="#52a4a6" stroke="#478e90" stroke-width="2" stroke-linecap="round"/>
<circle cx="140" cy="160" r="30" fill="#f4efe6" stroke="#f08361" stroke-width="2.5"/>
<path d="M128 155 Q140 170 152 155" stroke="#f08361" stroke-width="2" fill="none" stroke-linecap="round"/>
<circle cx="132" cy="152" r="2.5" fill="#3d3d3d"/>
<circle cx="148" cy="152" r="2.5" fill="#3d3d3d"/>
<path d="M122 140 Q140 128 158 140" stroke="#3d3d3d" stroke-width="3" fill="none" stroke-linecap="round"/>
<path d="M165 220 Q190 200 220 195" stroke="#f4efe6" stroke-width="8" stroke-linecap="round"/>
<circle cx="222" cy="195" r="6" fill="#f4efe6" stroke="#f08361" stroke-width="1.5"/>
<path d="M130 280 L122 340" stroke="#3d3d3d" stroke-width="4" stroke-linecap="round"/>
<path d="M150 280 L158 340" stroke="#3d3d3d" stroke-width="4" stroke-linecap="round"/>
<!-- Person 2 — dressed in burnt orange -->
<ellipse cx="270" cy="340" rx="90" ry="14" fill="#52a4a6" opacity="0.1"/>
<path d="M245 285 C245 245, 255 205, 270 185 C285 205, 295 245, 295 285 Z" fill="#f08361" stroke="#d8704e" stroke-width="2" stroke-linecap="round"/>
<circle cx="270" cy="165" r="30" fill="#f4efe6" stroke="#f08361" stroke-width="2.5"/>
<path d="M258 160 Q270 175 282 160" stroke="#f08361" stroke-width="2" fill="none" stroke-linecap="round"/>
<circle cx="262" cy="157" r="2.5" fill="#3d3d3d"/>
<circle cx="278" cy="157" r="2.5" fill="#3d3d3d"/>
<path d="M255 148 Q270 136 285 148" stroke="#3d3d3d" stroke-width="3" fill="none" stroke-linecap="round"/>
<path d="M245 225 Q225 205 220 195" stroke="#f4efe6" stroke-width="8" stroke-linecap="round"/>
<path d="M260 285 L252 340" stroke="#3d3d3d" stroke-width="4" stroke-linecap="round"/>
<path d="M280 285 L288 340" stroke="#3d3d3d" stroke-width="4" stroke-linecap="round"/>
<!-- Sparks in brand colors -->
<circle cx="221" cy="185" r="4" fill="#f08361" opacity="0.6"/>
<circle cx="215" cy="178" r="2.5" fill="#52a4a6" opacity="0.5"/>
<circle cx="228" cy="179" r="3" fill="#ceafbf" opacity="0.5"/>
<!-- Deco elements -->
<path d="M60 120 Q70 100 80 120" stroke="#f08361" stroke-width="2" fill="none" opacity="0.4" stroke-linecap="round"/>
<path d="M320 100 L330 90 L340 100" stroke="#52a4a6" stroke-width="2" fill="none" opacity="0.4" stroke-linecap="round"/>
<circle cx="350" cy="140" r="5" fill="#704149" opacity="0.2"/>
<circle cx="55" cy="200" r="4" fill="#556781" opacity="0.2"/>
</svg>
</div>
</div>
</section>
<!-- ======== 2. MITÄ TÄÄLLÄ OIKEASTI TAPAHTUU ======== -->
<section class="what-is">
<div class="container">
<div class="what-is-inner fade-up">
<span class="section-label">Mistä on kyse?</span>
<h2>Mitä täällä oikeasti tapahtuu?</h2>
<div class="what-is-points">
<div class="what-is-point">
<div class="bullet">🤝</div>
<p><strong>Vertaisyhteisö</strong> ihmisille, jotka vievät johtamisen muutosta käytäntöön — eivät vain puhu siitä.</p>
</div>
<div class="what-is-point">
<div class="bullet">💬</div>
<p><strong>Paikka jakaa</strong> kokemuksia, epäonnistumisia ja oivalluksia ilman pönötystä.</p>
</div>
<div class="what-is-point">
<div class="bullet">🧭</div>
<p><strong>Tuki</strong>, joka auttaa ottamaan seuraavan pienen mutta merkityksellisen askeleen — et jää yksin kokeilujesi kanssa.</p>
</div>
</div>
</div>
</div>
</section>
<!-- ======== 3. HAARUKOINTI: "MIKÄ SINUA TOI TÄNNE?" ======== -->
<section class="paths" id="paths">
<div class="container">
<div class="paths-header fade-up">
<span class="section-label">Valitse polkusi</span>
<h2>Mikä sinua toi tänne?</h2>
<p>Valitse se, mikä resonoi — ja löydä sinulle luontevin seuraava askel.</p>
</div>
<div class="paths-grid fade-up stagger">
<!-- Path 1: Yksinäisyys -->
<div class="path-card" style="--i:0">
<div class="path-icon">🧭</div>
<div class="feeling">"Koen olevani yksin muutoksen kanssa"</div>
<div class="description">Haluat viedä johtamista ja toimintatapoja eteenpäin, mutta kaipaat vertaisia ja muiden kokemuksia tueksesi.</div>
<a href="#community" class="path-link">Tutustu yhteisöön <span class="arrow"></span></a>
</div>
<!-- Path 2: Sisällöt -->
<div class="path-card" style="--i:1">
<div class="path-icon">💡</div>
<div class="feeling">"Haluan ajateltavaa ja esimerkkejä"</div>
<div class="description">Etsit näkökulmia, tutkimusta ja tarinoita siitä, miten työelämää uudistetaan käytännössä.</div>
<a href="#content" class="path-link">Lue ja kuuntele <span class="arrow"></span></a>
</div>
<!-- Path 3: Organisaatiotuki -->
<div class="path-card" style="--i:2">
<div class="path-icon">🛠</div>
<div class="feeling">"Tarvitsen tukea organisaatiolleni"</div>
<div class="description">Etsit koulutusta, valmennusta tai sparria työyhteisön tai johtoryhmän kehittämiseen.</div>
<a href="#about" class="path-link">Tutustu koulutuksiin ja palveluihin <span class="arrow"></span></a>
</div>
<!-- Path 4: Ei vielä varma -->
<div class="path-card" style="--i:3">
<div class="path-icon">🌱</div>
<div class="feeling">"En ole vielä varma"</div>
<div class="description">Jokin tässä herättää uteliaisuutesi, mutta haluat ensin ymmärtää mistä on kyse.</div>
<a href="#subscribe" class="path-link">Tilaa opas tai liity postituslistalle <span class="arrow"></span></a>
</div>
</div>
</div>
</section>
<!-- ======== 4. SOSIAALINEN TODISTE ======== -->
<section class="proof" id="community">
<div class="container">
<div class="proof-inner fade-up">
<span class="section-label">Yhteisö</span>
<p>Coleaders on yhteisö, jossa eri taustoista tulevat ihmiset oppivat toisiltaan ja vievät muutosta eteenpäin omissa organisaatioissaan. Sisällöt, koulutukset ja palvelut syntyvät yhteisön kokemuksesta.</p>
<div class="proof-quote">
<p>Tajusin, etten ole ainoa, joka kamppailee näiden kysymysten kanssa. Täällä saa jakaa keskeneräisiäkin ajatuksia ilman, että pitää esittää valmiimpaa kuin on.</p>
<div class="author">
<div class="avatar">SK</div>
<div>
<div class="name">Sami-Pekka Kalliokoski</div>
<div class="role">Kouvolan kaupunki</div>
</div>
</div>
</div>
<div class="proof-people">
<div class="proof-person">
<div class="circle">MM</div>
<div class="p-name">Mikko Malila</div>
<div class="p-org">Vantti Oy</div>
</div>
<div class="proof-person">
<div class="circle">LN</div>
<div class="p-name">Laura Norris</div>
<div class="p-org">Helsinki</div>
</div>
<div class="proof-person">
<div class="circle">VK</div>
<div class="p-name">Veera Kinnunen</div>
<div class="p-org">Bängeri</div>
</div>
<div class="proof-person">
<div class="circle">JK</div>
<div class="p-name">Jussi Korhonen</div>
<div class="p-org">Taitopilvi</div>
</div>
<div class="proof-person">
<div class="circle">JB</div>
<div class="p-name">Juha Borenius</div>
<div class="p-org">Thinger</div>
</div>
</div>
</div>
</div>
</section>
<!-- ======== 5. MITÄ MINÄ SAAN TÄSTÄ ======== -->
<section class="benefits">
<div class="container">
<div class="benefits-inner fade-up">
<span class="section-label">Jäsenille</span>
<h2>Mitä jäsenenä saat?</h2>
<div class="benefit-list">
<div class="benefit-item">
<div class="check"></div>
<p><strong>Vertaisia</strong>, joiden kanssa voit peilata omaa tilannettasi — rehellisesti ja luottamuksellisesti.</p>
</div>
<div class="benefit-item">
<div class="check"></div>
<p><strong>Konkreettisia esimerkkejä</strong> siitä, mitä muut ovat kokeilleet ja miten se on toiminut.</p>
</div>
<div class="benefit-item">
<div class="check"></div>
<p><strong>Selkeyden siihen, mitä seuraavaksi kokeilla</strong> omassa organisaatiossasi — ilman painetta tietää kaikki valmiiksi.</p>
</div>
<div class="benefit-item">
<div class="check"></div>
<p><strong>Tukea silloin, kun muutos tuntuu hitaalta</strong> tai yksinäiseltä — et jää yksin kokeilujesi kanssa.</p>
</div>
</div>
</div>
</div>
</section>
<!-- ======== 6. PEHMEÄ CTA + UUTISKIRJE ======== -->
<section class="soft-cta" id="subscribe">
<div class="container">
<div class="soft-cta-inner fade-up">
<h2>Jos koet, että et halua tehdä muutosta yksin — yhteisö on hyvä paikka aloittaa.</h2>
<p>Et sitoudu mihinkään. Saat rauhassa katsoa, onko tämä sinua varten.</p>
<a href="#community" class="btn-cta">Tutustu yhteisöön →</a>
<div class="newsletter-inline">
<p class="nl-label">Tai aloita kevyesti — tilaa opas ja uutiskirje:</p>
<form class="newsletter-form" onsubmit="event.preventDefault(); this.querySelector('button').textContent='Kiitos! ✓'">
<input type="email" placeholder="Sähköpostiosoitteesi" required>
<button type="submit">Tilaa</button>
</form>
</div>
</div>
</div>
</section>
<!-- ======== FOOTER ======== -->
<footer class="footer">
<div class="container">
<div class="footer-inner">
<div class="footer-brand">
<a href="#" class="nav-logo">
<svg width="32" height="30"><use href="#suiseki-white"/></svg>
<span class="nav-logo-text" style="color:#fff">coleaders<small style="color:rgba(255,255,255,0.5)">community</small></span>
</a>
<p>Muutos tapahtuu työpaikka kerrallaan.</p>
</div>
<div class="footer-links">
<div>
<h4>Tutustu</h4>
<ul>
<li><a href="#community">Yhteisö</a></li>
<li><a href="#content">Sisällöt</a></li>
<li><a href="#about">Koulutukset</a></li>
</ul>
</div>
<div>
<h4>Tietoja</h4>
<ul>
<li><a href="#about">Ota yhteyttä</a></li>
<li><a href="#">Medialle</a></li>
<li><a href="#">Yritys</a></li>
</ul>
</div>
</div>
</div>
<div class="footer-bottom">
<span>&copy; 2026 Coleadership Community Oy — yhteiskunnallinen yritys</span>
</div>
</div>
</footer>
<!-- ======== JS ======== -->
<script>
// Nav scroll
const nav = document.getElementById('nav');
window.addEventListener('scroll', () => {
nav.classList.toggle('scrolled', window.scrollY > 20);
});
// Mobile menu
const navToggle = document.getElementById('navToggle');
const navLinks = document.getElementById('navLinks');
navToggle.addEventListener('click', () => navLinks.classList.toggle('open'));
navLinks.querySelectorAll('a').forEach(a => {
a.addEventListener('click', () => navLinks.classList.remove('open'));
});
// Scroll reveal
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) entry.target.classList.add('visible');
});
}, { threshold: 0.15, rootMargin: '0px 0px -40px 0px' });
document.querySelectorAll('.fade-up').forEach(el => observer.observe(el));
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment