/* snnaeto.com, version 2: modelled on rauno.me:
   grey canvas, a row of white slides scaled to fit the screen, one bold
   colour per slide, a tick-mark minimap, scroll driving sideways movement
   (scroll.js). Brand: logo green #2FA91D, heavy Archivo for the name and
   numbers, Schibsted Grotesk for the large light display type. */

:root {
  --canvas: #ededed;
  --slide: #ffffff;
  --ink: #111111;
  --muted: #6b6b6b;
  --tick: #a8a8a8;
  --green: #2fa91d;
  --on-green: #0b1a08;
  --dark: #0d0d0d;
  --slide-w: 1200px;
  --slide-h: 720px;
  --gap: 40px;
  --font: "Schibsted Grotesk", "Helvetica Neue", Helvetica, sans-serif;
  --heavy: "Archivo", "Arial Black", sans-serif;
  /* Light only, like rauno.me: the bold colours rely on white slides. */
  color-scheme: light;
}

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; }
body { background: var(--canvas); color: var(--ink); font-family: var(--font); -webkit-font-smoothing: antialiased; }

a { color: inherit; text-decoration: none; }
a:hover { text-decoration: underline; text-decoration-color: var(--green); text-decoration-thickness: 3px; text-underline-offset: 0.14em; }
:focus-visible { outline: 3px solid var(--green); outline-offset: 4px; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Without JavaScript: a plain sideways strip ---------- */
.stage { overflow-x: auto; padding: 72px 24px 40px; }
.row { display: flex; gap: var(--gap); width: max-content; }
.minimap { display: none; }

/* ---------- With JavaScript: fixed stage, scroll drives the row ---------- */
.js .viewport { position: fixed; inset: 0; overflow: hidden; }
.js .stage { position: absolute; left: 50%; top: 50%; width: var(--slide-w); height: var(--slide-h); padding: 0; overflow: visible; transform-origin: 0 0; }
.js .row { will-change: transform; }

.js .minimap { display: block; position: absolute; left: 50%; top: 40px; transform: translateX(-50%); height: 24px; }
.minimap-track { display: flex; height: 100%; }
.minimap-track button { display: flex; gap: 9px; align-items: stretch; height: 100%; padding: 0 4.5px; margin: 0; background: none; border: 0; cursor: pointer; }
.minimap-track button i { display: block; width: 1px; background: var(--tick); }
.minimap-track button:hover i { background: var(--ink); }
.minimap-window { position: absolute; top: 0; left: 0; height: 100%; border: 1px solid var(--muted); pointer-events: none; }

/* ---------- Slides ---------- */
.slide { position: relative; flex: 0 0 auto; width: var(--slide-w); height: var(--slide-h); background: var(--slide); padding: 64px; clip-path: inset(-40px 0 0 0); }
.slide::before { content: attr(data-caption); position: absolute; top: -32px; left: 0; font-size: 18px; color: var(--muted); }
.slide > * { position: relative; }

.footnote { position: absolute; left: 64px; bottom: 56px; max-width: 760px; margin: 0; font-size: 24px; line-height: 1.4; color: var(--muted); }
.footnote strong { color: var(--ink); font-weight: 500; }

/* 1: intro: brand lockup leads, tagline huge, one green circle */
.circle { position: absolute; width: 640px; height: 640px; right: -120px; bottom: -200px; border-radius: 50%; background: var(--green); }
.lockup { display: flex; align-items: center; gap: 18px; }
.lockup img { width: 72px; height: 72px; mix-blend-mode: multiply; }
.lockup-name { font-family: var(--heavy); font-weight: 900; font-size: 40px; letter-spacing: -0.03em; }
.stagger { margin: 56px 0 0; font-weight: 400; font-size: 150px; line-height: 0.95; letter-spacing: -0.05em; }
.stagger span, .motto span, .hook-num > span { display: block; }
.stagger .in { padding-left: 120px; }
.intro-sub { position: absolute; left: 64px; bottom: 56px; margin: 0; font-size: 24px; line-height: 1.4; color: var(--muted); }

/* 2: hook number */
.hook-num { margin: 0; font-family: var(--heavy); font-weight: 900; font-size: 190px; line-height: 0.92; letter-spacing: -0.05em; }
.hook-num .in { padding-left: 120px; }
.hook-num b { color: var(--green); font-weight: 900; margin-right: 0.12em; }

/* 3: pain */
.pain { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--ink); }
.pain li { font-size: 44px; line-height: 1.15; letter-spacing: -0.03em; padding: 18px 0; border-bottom: 1px solid #dcdcdc; }
.pain-turn { position: absolute; left: 64px; bottom: 56px; margin: 0; font-size: 30px; color: var(--muted); }
.pain-turn span { color: var(--ink); background: linear-gradient(transparent 60%, color-mix(in srgb, var(--green) 55%, transparent) 60%); }

/* 4: agents inside your tools */
.statement { margin: 0; max-width: 1000px; font-size: 80px; font-weight: 400; line-height: 1.02; letter-spacing: -0.04em; }
.statement-xl { font-size: 118px; max-width: 1060px; line-height: 0.98; text-wrap: balance; }
.statement-xl::after { content: ""; display: block; width: 120px; height: 16px; margin-top: 36px; background: var(--green); }
.flow { position: absolute; left: 64px; right: 64px; bottom: 64px; display: flex; gap: 14px; list-style: none; margin: 0; padding: 0; }
.flow li { flex: 1; padding: 22px 18px; font-size: 26px; border: 2px solid var(--ink); white-space: nowrap; }
.flow li + li::before { content: "→ "; color: var(--muted); }
.flow .flow-agent { background: var(--green); border-color: var(--green); color: var(--on-green); }
.flow .flow-agent::before { color: var(--on-green); }

/* 5: services */
.services { list-style: none; margin: 0; padding: 0; height: 100%; display: grid; grid-template-columns: 1.3fr 1fr; grid-template-rows: 1fr 1fr; gap: 40px 56px; }
.services h3 { margin: 0 0 12px; font-size: 46px; font-weight: 400; letter-spacing: -0.035em; line-height: 1.04; }
.services p { margin: 0; font-size: 23px; line-height: 1.4; color: var(--muted); }

/* 6: self-hosted (dark slide) */
.slide-dark { background: var(--dark); color: #f2f2f2; }
.slide-dark .center { font-size: 92px; line-height: 0.98; text-align: center; }
.slide-dark em { font-style: normal; color: var(--green); }
.slide-dark .corner { color: #bdbdbd; }

/* 6 & 10: corner grids, like rauno.me's contact slide */
.corner { position: absolute; font-size: 44px; letter-spacing: -0.03em; line-height: 1; }
.corner.tl { left: 40px; top: 40px; }
.corner.tr { right: 40px; top: 40px; }
.corner.bl { left: 40px; bottom: 40px; }
.corner.br { right: 40px; bottom: 40px; }
.center { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); margin: 0; font-weight: 400; letter-spacing: -0.04em; white-space: nowrap; }

/* 7: numbers */
.numbers { margin: 96px 0 0; display: grid; grid-template-columns: 1.15fr 1fr 1fr 1fr; gap: 28px; }
.numbers div { display: flex; flex-direction: column; gap: 12px; border-top: 2px solid var(--ink); padding-top: 18px; }
.numbers dd { margin: 0; font-family: var(--heavy); font-weight: 900; font-size: 104px; line-height: 0.9; letter-spacing: -0.05em; }
.numbers div:first-child dd { color: var(--green); }
.numbers dt { font-size: 23px; line-height: 1.3; color: var(--muted); }

.numbers-3 { grid-template-columns: 1fr 1fr 1.2fr; gap: 40px; }
.numbers-3 dd { font-size: 128px; }

/* services, five items: RAG leads in a tall first column */
.services-5 { grid-template-columns: 1.15fr 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 36px 44px; }
.services-5 .service-lead { grid-row: span 2; border-left: 10px solid var(--green); padding-left: 28px; }
.services-5 .service-lead h3 { font-size: 58px; }
.services-5 .service-lead p { font-size: 26px; color: var(--ink); }
.services-5 h3 { font-size: 38px; }
.services-5 p { font-size: 21px; }

/* under the hood */
.hood { display: grid; grid-template-columns: 1fr 1.15fr 1fr 1.1fr; gap: 32px; height: 100%; align-content: center; }
.hood h3 { margin: 0 0 18px; padding-top: 16px; border-top: 2px solid var(--ink); font-family: var(--heavy); font-weight: 900; font-size: 30px; letter-spacing: -0.02em; }
.hood ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.hood li { font-size: 25px; line-height: 1.2; letter-spacing: -0.02em; }
.hood div:first-child h3 { color: var(--green); border-top-color: var(--green); }

/* agent OS (dark slide centre block) */
.agent-os { text-align: center; white-space: normal; width: 860px; }
.agent-os h2 { margin: 0; font-size: 96px; font-weight: 400; line-height: 0.98; letter-spacing: -0.04em; color: #f2f2f2; }
.agent-os p { margin: 26px auto 0; max-width: 640px; font-size: 26px; line-height: 1.35; color: #bdbdbd; letter-spacing: 0; }

/* picture next quarter */
.after { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.after li { position: relative; padding: 22px 28px 22px 84px; background: #f3f3f1; font-size: 40px; line-height: 1.15; letter-spacing: -0.03em; }
.after li::before { content: ""; position: absolute; left: 28px; top: 40px; width: 34px; height: 10px; background: var(--green); }

/* 8: process */
.process { list-style: none; margin: 120px 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }
.process li { border-top: 2px solid var(--ink); padding-top: 18px; display: flex; flex-direction: column; }
.process span { font-family: var(--heavy); font-weight: 900; font-size: 30px; color: var(--green); }
.process h3 { margin: 14px 0 10px; font-size: 44px; font-weight: 400; letter-spacing: -0.035em; line-height: 1; }
.process p { margin: 0; font-size: 22px; line-height: 1.4; color: var(--muted); }


/* 9: approach */
.motto { margin: 0; font-size: 98px; font-weight: 400; line-height: 1.04; letter-spacing: -0.04em; white-space: nowrap; }
.motto .in { padding-left: 96px; }
.bar { position: absolute; left: 64px; right: 64px; bottom: 64px; height: 48px; background: var(--green); }

/* 10: contact */
.cta-block { text-align: center; }
.cta-block h2 { margin: 0; font-size: 76px; font-weight: 400; line-height: 1; letter-spacing: -0.04em; }
.cta-block p { margin: 18px 0 26px; font-size: 24px; color: var(--muted); letter-spacing: 0; }
.button { display: inline-block; background: var(--green); color: var(--on-green); padding: 18px 30px; border-radius: 8px; font-size: 24px; font-weight: 500; letter-spacing: 0; }
.button:hover { text-decoration: none; filter: brightness(1.07); }
#slide-contact .corner { font-size: 32px; }

/* ---------- Upright phone slides (600x900), set by scroll.js ---------- */
[data-format="portrait"] .slide { padding: 48px; }
[data-format="portrait"] .slide::before { font-size: 22px; top: -34px; }
[data-format="portrait"] .footnote,
[data-format="portrait"] .intro-sub,
[data-format="portrait"] .pain-turn { left: 48px; right: 48px; bottom: 48px; font-size: 26px; }

[data-format="portrait"] .circle { width: 380px; height: 380px; right: -150px; top: 330px; bottom: auto; }
[data-format="portrait"] .intro-sub .sideways { display: none; }
[data-format="portrait"] .lockup img { width: 60px; height: 60px; }
[data-format="portrait"] .lockup-name { font-size: 34px; }
[data-format="portrait"] .stagger { font-size: 112px; margin-top: 60px; }
[data-format="portrait"] .stagger .in { padding-left: 0; }

[data-format="portrait"] .hook-num { font-size: 116px; margin-top: 60px; white-space: nowrap; }
[data-format="portrait"] .hook-num .in { padding-left: 0; }

[data-format="portrait"] .pain li { font-size: 36px; padding: 16px 0; }

[data-format="portrait"] .statement { font-size: 60px; }
[data-format="portrait"] .statement-xl { font-size: 84px; }
[data-format="portrait"] .flow { left: 48px; right: 48px; bottom: 48px; flex-direction: column; gap: 10px; }
[data-format="portrait"] .flow li { font-size: 26px; padding: 14px 18px; }

[data-format="portrait"] .services { grid-template-columns: 1fr; grid-template-rows: repeat(4, auto); gap: 34px; align-content: center; }
[data-format="portrait"] .services h3 { font-size: 40px; margin-bottom: 6px; }
[data-format="portrait"] .services p { font-size: 25px; }

[data-format="portrait"] .corner { font-size: 32px; }
[data-format="portrait"] .corner.bl { bottom: 92px; }
[data-format="portrait"] .slide-dark .center { font-size: 76px; }

[data-format="portrait"] .numbers { grid-template-columns: 1fr 1fr; gap: 36px 28px; margin-top: 0; }
[data-format="portrait"] .numbers dd { font-size: 92px; }
[data-format="portrait"] .numbers dt { font-size: 24px; }
[data-format="portrait"] #slide-proof .footnote { bottom: 48px; }
[data-format="portrait"] .numbers-3 { grid-template-columns: 1fr; gap: 20px; }
[data-format="portrait"] .numbers-3 div { gap: 6px; padding-top: 12px; }
[data-format="portrait"] .numbers-3 dd { font-size: 84px; }
[data-format="portrait"] .services-5 { grid-template-columns: 1fr; grid-template-rows: none; gap: 20px; align-content: center; }
[data-format="portrait"] .services-5 .service-lead { grid-row: auto; border-left-width: 8px; padding-left: 18px; }
[data-format="portrait"] .services-5 .service-lead h3 { font-size: 40px; }
[data-format="portrait"] .services-5 .service-lead p { font-size: 23px; }
[data-format="portrait"] .services-5 h3 { font-size: 32px; margin-bottom: 4px; }
[data-format="portrait"] .services-5 p { font-size: 21px; }
[data-format="portrait"] .hood { grid-template-columns: 1fr 1fr; gap: 26px 24px; align-content: start; }
[data-format="portrait"] .hood h3 { font-size: 26px; margin-bottom: 12px; padding-top: 12px; }
[data-format="portrait"] .hood li { font-size: 22px; }
[data-format="portrait"] .agent-os { width: 100%; padding: 0 28px; }
[data-format="portrait"] .agent-os h2 { font-size: 66px; }
[data-format="portrait"] .agent-os p { font-size: 24px; }
[data-format="portrait"] .after li { font-size: 32px; padding: 18px 20px 18px 66px; }
[data-format="portrait"] .after li::before { left: 20px; top: 33px; width: 28px; height: 8px; }

[data-format="portrait"] .process { grid-template-columns: 1fr; grid-template-rows: repeat(4, auto); gap: 22px; margin-top: 0; }
[data-format="portrait"] .process li { padding-top: 12px; }
[data-format="portrait"] .process span { font-size: 24px; }
[data-format="portrait"] .process h3 { font-size: 38px; margin: 6px 0 6px; }
[data-format="portrait"] .process p { font-size: 23px; }

[data-format="portrait"] .motto { font-size: 84px; white-space: normal; }
[data-format="portrait"] .motto .in { padding-left: 48px; }
[data-format="portrait"] .bar { left: 48px; right: 48px; bottom: 48px; }

[data-format="portrait"] .cta-block { width: 100%; padding: 0 32px; white-space: normal; }
[data-format="portrait"] .cta-block h2 { font-size: 60px; }
[data-format="portrait"] .cta-block p { font-size: 24px; }
[data-format="portrait"] #slide-contact .corner { font-size: 26px; }
