<!doctype html>
<html lang="sv">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>TeamTalks – bättre team, bättre resultat</title>
<style>
:root{
--bg:#070A12;
--bg2:#0B1022;
--card: rgba(255,255,255,.06);
--stroke: rgba(255,255,255,.10);
--text: rgba(255,255,255,.92);
--muted: rgba(255,255,255,.68);
--muted2: rgba(255,255,255,.52);
--a1:#7C3AED; /* purple */
--a2:#22D3EE; /* cyan */
--a3:#F97316; /* orange */
--a4:#A3E635; /* lime */
--shadow: 0 22px 70px rgba(0,0,0,.45);
--r: 22px;
--max: 1120px;
--ease: cubic-bezier(.2,.8,.2,1);
}
*{ box-sizing:border-box; }
html,body{ height:100%; }
body{
margin:0;
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";
color:var(--text);
background:
radial-gradient(1200px 800px at 18% 12%, rgba(124,58,237,.30), transparent 60%),
radial-gradient(1100px 700px at 82% 22%, rgba(34,211,238,.24), transparent 62%),
radial-gradient(900px 600px at 72% 88%, rgba(249,115,22,.18), transparent 56%),
linear-gradient(180deg, var(--bg), var(--bg2));
overflow-x:hidden;
}
a{ color:inherit; text-decoration:none; }
.wrap{ max-width:var(--max); margin:0 auto; padding: 0 22px; }
/* Top bar */
.top{
position:sticky; top:0; z-index:20;
backdrop-filter: blur(14px);
background: linear-gradient(180deg, rgba(7,10,18,.75), rgba(7,10,18,.35));
border-bottom: 1px solid rgba(255,255,255,.08);
}
.topin{ display:flex; align-items:center; justify-content:space-between; padding:14px 0; gap:14px; }
.brand{ display:flex; align-items:center; gap:10px; font-weight:700; letter-spacing:.2px; }
.dot{
width:12px;height:12px;border-radius:999px;
background: conic-gradient(from 180deg, var(--a2), var(--a1), var(--a3), var(--a2));
box-shadow: 0 0 0 6px rgba(34,211,238,.10);
}
.nav{ display:flex; gap:16px; color:var(--muted); font-weight:600; font-size:14px; }
.nav a{ opacity:.85; }
.nav a:hover{ opacity:1; }
.ctaRow{ display:flex; gap:10px; align-items:center; }
.btn{
border: 1px solid rgba(255,255,255,.14);
background: rgba(255,255,255,.06);
padding: 10px 14px;
border-radius: 999px;
font-weight:700;
font-size:14px;
transition: transform .2s var(--ease), background .2s var(--ease), border-color .2s var(--ease);
cursor:pointer;
display:inline-flex; align-items:center; gap:10px;
}
.btn:hover{ transform: translateY(-1px); background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.20); }
.btnPrimary{
border-color: rgba(34,211,238,.35);
background: linear-gradient(135deg, rgba(124,58,237,.35), rgba(34,211,238,.26));
box-shadow: 0 12px 40px rgba(34,211,238,.12);
}
.pill{
font-size:12px; font-weight:800;
padding:6px 10px; border-radius:999px;
border:1px solid rgba(255,255,255,.14);
background: rgba(255,255,255,.05);
color: rgba(255,255,255,.78);
}
/* Sections */
section{ padding: 84px 0; }
.kicker{
display:inline-flex; gap:10px; align-items:center;
color: rgba(255,255,255,.78);
font-weight:800;
letter-spacing:.18em;
text-transform: uppercase;
font-size:12px;
}
.kline{
width:34px; height:1px;
background: linear-gradient(90deg, rgba(34,211,238,.9), rgba(124,58,237,.9));
opacity:.85;
}
h1{
font-size: clamp(38px, 4.2vw, 62px);
line-height: 1.02;
letter-spacing: -0.02em;
margin: 16px 0 14px;
}
.sub{
font-size: clamp(16px, 1.35vw, 20px);
line-height: 1.6;
color: var(--muted);
max-width: 64ch;
}
.heroGrid{
display:grid;
grid-template-columns: 1.1fr .9fr;
gap: 28px;
align-items: center;
margin-top: 26px;
}
@media (max-width: 900px){
.heroGrid{ grid-template-columns: 1fr; }
.nav{ display:none; }
}
.glass{
border: 1px solid rgba(255,255,255,.12);
background: linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.04));
border-radius: var(--r);
box-shadow: var(--shadow);
}
.heroCard{ padding: 18px; overflow:hidden; position:relative; }
.heroCard:before{
content:"";
position:absolute; inset:-1px;
background: radial-gradient(600px 220px at 20% 0%, rgba(124,58,237,.25), transparent 55%),
radial-gradient(560px 260px at 90% 10%, rgba(34,211,238,.18), transparent 55%);
pointer-events:none;
opacity:.9;
}
.heroCardInner{ position:relative; }
.mini{
display:flex; gap:10px; flex-wrap:wrap; margin-top: 14px;
color: rgba(255,255,255,.76);
font-weight:700;
font-size:13px;
}
.mini span{
padding: 8px 10px;
border-radius: 999px;
border:1px solid rgba(255,255,255,.12);
background: rgba(255,255,255,.05);
}
/* Metric cards */
.metrics{
display:grid;
grid-template-columns: repeat(2, minmax(0,1fr));
gap: 14px;
margin-top: 16px;
}
.mcard{
padding: 14px;
border-radius: 18px;
border:1px solid rgba(255,255,255,.12);
background: rgba(255,255,255,.04);
}
.mTop{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.mTitle{ font-weight:800; font-size:13px; color: rgba(255,255,255,.78); }
.mVal{ font-weight:900; font-size:22px; letter-spacing:-.01em; }
.mHint{ margin-top:8px; color: var(--muted2); font-size:13px; line-height:1.45; }
.spark{
height:8px; border-radius:999px;
background: rgba(255,255,255,.08);
overflow:hidden;
margin-top: 10px;
}
.spark > i{
display:block; height:100%;
width: 62%;
background: linear-gradient(90deg, rgba(34,211,238,.9), rgba(124,58,237,.9), rgba(249,115,22,.85));
border-radius:999px;
filter: saturate(1.2);
}
/* Split sections */
.split{
display:grid;
grid-template-columns: 1fr 1fr;
gap: 22px;
align-items:start;
}
@media (max-width: 900px){ .split{ grid-template-columns:1fr; } }
.card{ padding: 22px; border-radius: var(--r); }
.card h3{ margin: 0 0 8px; font-size: 18px; }
.card p{ margin: 0; color: var(--muted); line-height:1.65; }
/* Science sticky */
.scienceWrap{ position:relative; }
.sticky{
position: sticky;
top: 92px;
}
.stack{
display:flex; flex-direction:column; gap:12px;
margin-top: 12px;
}
.chip{
padding: 12px 14px;
border-radius: 16px;
border:1px solid rgba(255,255,255,.12);
background: rgba(255,255,255,.04);
color: rgba(255,255,255,.84);
font-weight:800;
font-size: 13px;
display:flex; justify-content:space-between; gap:12px;
}
.chip small{ color: rgba(255,255,255,.55); font-weight:800; }
/* Quotes */
.quotes{
display:grid;
grid-template-columns: repeat(3, minmax(0,1fr));
gap: 14px;
margin-top: 18px;
}
@media (max-width: 900px){ .quotes{ grid-template-columns: 1fr; } }
blockquote{
margin:0;
padding: 18px;
border-radius: var(--r);
border:1px solid rgba(255,255,255,.12);
background: rgba(255,255,255,.04);
position:relative;
overflow:hidden;
}
blockquote:before{
content:"";
position:absolute; inset:-1px;
background: radial-gradient(500px 180px at 20% 0%, rgba(34,211,238,.16), transparent 60%),
radial-gradient(450px 160px at 80% 10%, rgba(124,58,237,.16), transparent 60%);
opacity:.85;
pointer-events:none;
}
blockquote > div{ position:relative; }
blockquote p{ margin:0; color: rgba(255,255,255,.86); line-height:1.65; }
blockquote footer{ margin-top: 12px; color: rgba(255,255,255,.62); font-weight:800; font-size:13px; }
/* Screens */
.screens{
display:grid;
grid-template-columns: 1.2fr .8fr;
gap: 18px;
align-items:stretch;
}
@media (max-width: 900px){ .screens{ grid-template-columns:1fr; } }
.mock{
padding: 18px;
border-radius: var(--r);
border:1px solid rgba(255,255,255,.12);
background: rgba(255,255,255,.03);
position:relative;
overflow:hidden;
min-height: 340px;
}
.mockTop{
display:flex; align-items:center; justify-content:space-between;
color: rgba(255,255,255,.75);
font-weight:800; font-size:13px;
}
.dots{ display:flex; gap:7px; align-items:center; }
.dots i{ width:10px; height:10px; border-radius:999px; display:inline-block; background: rgba(255,255,255,.16); }
.pane{
margin-top: 14px;
border-radius: 16px;
border:1px solid rgba(255,255,255,.10);
background: rgba(255,255,255,.04);
padding: 14px;
}
.row{ display:flex; justify-content:space-between; gap:12px; align-items:center; }
.label{ color: rgba(255,255,255,.70); font-weight:800; font-size:12px; }
.bar{
height:10px; border-radius:999px;
background: rgba(255,255,255,.10);
overflow:hidden;
flex:1;
}
.bar > b{
display:block; height:100%;
width: var(--w, 60%);
background: linear-gradient(90deg, rgba(163,230,53,.95), rgba(34,211,238,.92), rgba(124,58,237,.92));
border-radius:999px;
}
/* CTA */
.ctaBox{
padding: 26px;
border-radius: 28px;
border:1px solid rgba(255,255,255,.14);
background: radial-gradient(900px 420px at 20% 0%, rgba(124,58,237,.22), transparent 60%),
radial-gradient(900px 420px at 85% 30%, rgba(34,211,238,.20), transparent 60%),
rgba(255,255,255,.04);
box-shadow: var(--shadow);
display:flex;
align-items:center;
justify-content:space-between;
gap: 18px;
flex-wrap:wrap;
}
.ctaBox h2{ margin:0; font-size: 26px; letter-spacing:-.01em; }
.ctaBox p{ margin:6px 0 0; color: var(--muted); max-width: 62ch; }
.ctaActions{ display:flex; gap:10px; align-items:center; }
/* Reveal animations */
.reveal{
opacity:0;
transform: translateY(18px);
filter: blur(6px);
transition: opacity .85s var(--ease), transform .85s var(--ease), filter .85s var(--ease);
}
.reveal.in{
opacity:1;
transform: translateY(0);
filter: blur(0);
}
.floaty{
animation: floaty 8s var(--ease) infinite;
}
@keyframes floaty{
0%{ transform: translateY(0); }
50%{ transform: translateY(-10px); }
100%{ transform: translateY(0); }
}
/* Small footer */
footer{ padding: 30px 0 44px; color: rgba(255,255,255,.55); font-weight:700; font-size:13px; }
</style>
</head>
<body>
<div class="top">
<div class="wrap topin">
<div class="brand">
<span class="dot"></span>
<span>TeamTalks</span>
<span class="pill">AI för bättre team</span>
</div>
<nav class="nav">
<a href="#effekt">Effekt</a>
<a href="#science">Science</a>
<a href="#quotes">Citat</a>
<a href="#screens">Nyckeltal</a>
</nav>
<div class="ctaRow">
<a class="btn" href="/loggin">Logga in</a>
<a class="btn btnPrimary" href="#cta">Testa gratis</a>
</div>
</div>
</div>
<!-- HERO -->
<section class="wrap" id="top">
<div class="kicker reveal"><span class="kline"></span> Team performance, without guesswork</div>
<h1 class="reveal">Högre innovation.<br/>Starkare prestation.<br/>Högre engagemang.</h1>
<p class="sub reveal">
TeamTalks analyserar era möten och ger tydliga nyckeltal + konkreta mikroförslag.
Så ni kan bygga psykologisk trygghet, bättre samarbete och bättre beslut – snabbt.
</p>
<div class="heroGrid">
<div class="reveal">
<div class="ctaRow" style="margin-top:18px;">
<a class="btn btnPrimary" href="#cta">Testa direkt</a>
<span class="pill">2 min setup</span>
<span class="pill">Ingen utbildning</span>
<span class="pill">Säkert & spårbart</span>
</div>
<div class="mini" aria-hidden="true">
<span>🧠 Psykologisk trygghet</span>
<span>🎯 Engagemang & balans</span>
<span>📈 Sentiment & energi</span>
<span>🧩 Samarbete & beslut</span>
</div>
</div>
<div class="glass heroCard floaty reveal">
<div class="heroCardInner">
<div style="display:flex; align-items:center; justify-content:space-between; gap:14px;">
<div>
<div style="font-weight:900; font-size:16px;">Meeting Pulse</div>
<div style="color:var(--muted2); font-weight:800; font-size:13px; margin-top:4px;">Senaste 7 dagar</div>
</div>
<span class="pill">Live preview</span>
</div>
<div class="metrics">
<div class="mcard">
<div class="mTop">
<div class="mTitle">Psykologisk trygghet</div>
<div class="mVal">8.2</div>
</div>
<div class="spark"><i style="width:78%"></i></div>
<div class="mHint">Fler öppna frågor, mindre avbrott.</div>
</div>
<div class="mcard">
<div class="mTop">
<div class="mTitle">Balans i deltagande</div>
<div class="mVal">74%</div>
</div>
<div class="spark"><i style="width:74%"></i></div>
<div class="mHint">Bra spridning mellan rösterna.</div>
</div>
<div class="mcard">
<div class="mTop">
<div class="mTitle">Energi & ton</div>
<div class="mVal">+0.9</div>
</div>
<div class="spark"><i style="width:64%"></i></div>
<div class="mHint">Positivt momentum, få spikes.</div>
</div>
<div class="mcard">
<div class="mTop">
<div class="mTitle">Besluts-tydlighet</div>
<div class="mVal">6.7</div>
</div>
<div class="spark"><i style="width:58%"></i></div>
<div class="mHint">Nästa: tydligare ägarskap.</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- EFFEKT -->
<section id="effekt">
<div class="wrap">
<div class="split">
<div class="glass card reveal">
<div class="kicker"><span class="kline"></span> Effekt</div>
<h2 style="margin:12px 0 10px; font-size:32px; letter-spacing:-.01em;">Det här händer när teamet blir bättre på möten</h2>
<p>
Bättre samtal ger bättre kultur. TeamTalks hjälper er att se mönster, justera beteenden
och bygga ett sätt att arbeta som håller även när det blir stressigt.
</p>
</div>
<div class="glass card reveal">
<h3>Fyra effekter vi optimerar för</h3>
<div class="stack" style="margin-top:14px;">
<div class="chip"><span>Högre innovation</span><small>idéer → beslut</small></div>
<div class="chip"><span>Starkare prestation</span><small>fokus → leverans</small></div>
<div class="chip"><span>Högre engagemang</span><small>energi → ansvar</small></div>
<div class="chip"><span>Bättre lärande</span><small>reflektion → förbättring</small></div>
</div>
</div>
</div>
</div>
</section>
<!-- SCIENCE -->
<section id="science">
<div class="wrap">
<div class="split scienceWrap">
<div class="glass card sticky reveal">
<div class="kicker"><span class="kline"></span> Science</div>
<h2 style="margin:12px 0 10px; font-size:32px; letter-spacing:-.01em;">Bygger på LLM + NLP + beteendevetenskap</h2>
<p style="margin-top:0;">
Vi kombinerar språkteknologi (NLP), moderna språkmodeller (LLM) och väl etablerade ramar för
psykologisk trygghet och teamdynamik. Resultatet: mätbara signaler + konkreta nästa steg.
</p>
<div class="stack">
<div class="chip"><span>1) Transkript & speaker signals</span><small>turtagning</small></div>
<div class="chip"><span>2) Sentiment & “spikes”</span><small>energi</small></div>
<div class="chip"><span>3) Psykologisk trygghet</span><small>Edmondson</small></div>
<div class="chip"><span>4) Förslag som går att göra</span><small>mikro-beteenden</small></div>
</div>
</div>
<div class="reveal">
<div class="glass card" style="margin-bottom:14px;">
<h3>Exempel: vad TeamTalks kan säga</h3>
<p style="margin-top:8px;">
“Ni har hög energi men tappade beslut i 2 av 5 punkter. Förtydliga *ägare + nästa steg* i slutet av varje ämne.”
</p>
</div>
<div class="glass card" style="margin-bottom:14px;">
<h3>Det vi mäter (enkelt)</h3>
<p style="margin-top:8px;">
Balans i talutrymme, antal frågor per person, ton/energi, avbrott, beslutstydlighet,
nyckelfraser som signalerar lärande och stöd.
</p>
</div>
<div class="glass card">
<h3>Det du får (direkt)</h3>
<p style="margin-top:8px;">
En tydlig rapport efter varje möte + trend över tid. Du kan följa team, avdelningar
och se vad som faktiskt gör skillnad.
</p>
</div>
</div>
</div>
</div>
</section>
<!-- QUOTES -->
<section id="quotes">
<div class="wrap">
<div class="kicker reveal"><span class="kline"></span> Citat & exempel</div>
<h2 class="reveal" style="margin:12px 0 10px; font-size:36px; letter-spacing:-.01em;">Mänskligt. Tydligt. Användbart.</h2>
<p class="sub reveal">Små justeringar i samtal gör stor skillnad i kultur och resultat.</p>
<div class="quotes">
<blockquote class="reveal"><div>
<p>“För första gången blev det tydligt *varför* våra möten drar iväg – och vad vi ska göra åt det.”</p>
<footer>Team Lead, SaaS</footer>
</div></blockquote>
<blockquote class="reveal"><div>
<p>“Vi såg att två personer bar besluten. Med små förändringar fick vi bättre balans på två veckor.”</p>
<footer>Produktchef, Enterprise</footer>
</div></blockquote>
<blockquote class="reveal"><div>
<p>“Rapporten gör det enkelt att prata beteenden utan att skuldbelägga.”</p>
<footer>HR / People Ops</footer>
</div></blockquote>
</div>
</div>
</section>
<!-- SCREENS -->
<section id="screens">
<div class="wrap">
<div class="kicker reveal"><span class="kline"></span> Skärmdumpar & nyckeltal</div>
<h2 class="reveal" style="margin:12px 0 10px; font-size:36px; letter-spacing:-.01em;">Det du ser: signaler som går att agera på</h2>
<p class="sub reveal">Byt ut mocken mot dina riktiga skärmdumpar senare. Strukturen är klar.</p>
<div class="screens" style="margin-top:18px;">
<div class="mock reveal">
<div class="mockTop">
<div class="dots"><i></i><i></i><i></i></div>
<div>TeamTalks / Report</div>
</div>
<div class="pane">
<div class="row">
<div class="label">Psykologisk trygghet</div>
<div class="bar" style="--w:82%"><b></b></div>
<div class="label">8.2</div>
</div>
</div>
<div class="pane">
<div class="row">
<div class="label">Balans i talutrymme</div>
<div class="bar" style="--w:74%"><b></b></div>
<div class="label">74%</div>
</div>
</div>
<div class="pane">
<div class="row">
<div class="label">Besluts-tydlighet</div>
<div class="bar" style="--w:58%"><b></b></div>
<div class="label">6.7</div>
</div>
</div>
<div class="pane">
<div class="row">
<div class="label">“Spikes” i ton</div>
<div class="bar" style="--w:35%"><b></b></div>
<div class="label">lågt</div>
</div>
</div>
</div>
<div class="glass card reveal">
<h3>Exempel på KPI:er</h3>
<p style="margin-top:8px;">Det här är typiska nyckeltal att visa i en “screens”-sektion.</p>
<div class="stack" style="margin-top:14px;">
<div class="chip"><span>Frågor per person</span><small>nyfikenhet</small></div>
<div class="chip"><span>Andel positiv / neutral / negativ</span><small>ton</small></div>
<div class="chip"><span>Engagemang</span><small>aktivitet</small></div>
<div class="chip"><span>Passiv-aggressivitet</span><small>mismatch</small></div>
<div class="chip"><span>Curious questioning</span><small>lärande</small></div>
</div>
<div style="margin-top:14px; color:var(--muted2); font-weight:800; font-size:12px;">
Byt ut mot riktiga skärmdumpar när du vill – layouten håller.
</div>
</div>
</div>
</div>
</section>
<!-- CTA -->
<section id="cta">
<div class="wrap">
<div class="ctaBox reveal">
<div>
<h2>Testa TeamTalks – direkt</h2>
<p>Få en demo-rapport på ett möte, se era nyckeltal och börja förbättra redan denna vecka.</p>
</div>
<div class="ctaActions">
<a class="btn btnPrimary" href="/loggin">Testa nu</a>
<a class="btn" href="#top">Till toppen</a>
</div>
</div>
</div>
</section>
<footer class="wrap">
© <span id="y"></span> TeamTalks · Made for teams who want better conversations.
</footer>
<script>
// Year
document.getElementById("y").textContent = new Date().getFullYear();
// Reveal on scroll (no libs)
const reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
const els = Array.from(document.querySelectorAll(".reveal"));
if (reduce) {
els.forEach(el => el.classList.add("in"));
} else {
const io = new IntersectionObserver((entries)=>{
entries.forEach(e=>{
if(e.isIntersecting){
e.target.classList.add("in");
io.unobserve(e.target);
}
});
}, { threshold: 0.14, rootMargin: "0px 0px -18% 0px" });
els.forEach((el, i)=>{
// subtle stagger
el.style.transitionDelay = (Math.min(i, 10) * 60) + "ms";
io.observe(el);
});
}
// Smooth anchor scrolling
document.querySelectorAll('a[href^="#"]').forEach(a=>{
a.addEventListener("click", (ev)=>{
const id = a.getAttribute("href");
const t = document.querySelector(id);
if(!t) return;
ev.preventDefault();
t.scrollIntoView({ behavior: "smooth", block: "start" });
});
});
</script>
</body>
</html>