/* ============================================================
   Signal Partners — Shared stylesheet
   All pages link to this file. Page-specific overrides stay
   in an inline <style> block in each HTML file.
   ============================================================ */

/* --- Design tokens --- */
:root {
  --navy:     #0E1A2E;
  --signal:   #3D7AFF;
  --steel:    #5C6B82;
  --line:     #D9DDE4;
  --paper:    #F6F5F1;
  --white:    #FFFFFF;
  --line-dark:rgba(255,255,255,.14);
  --ink-soft: #33415A;
}

/* --- Reset --- */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation:none!important;transition:none!important}
}

/* --- Base --- */
body{
  background:var(--paper);color:var(--navy);
  font-family:'Space Grotesk',system-ui,sans-serif;
  font-weight:400;line-height:1.55;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  padding-bottom:76px;
}
.wrap{max-width:1140px;margin:0 auto;padding:0 22px}
a{color:inherit;text-decoration:none}
.mono{
  font-family:'IBM Plex Mono',monospace;font-size:11.5px;
  font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--steel)
}
.mono .dot-sep{color:var(--signal)}

/* --- Logo --- */
.logo{display:inline-flex;align-items:center;gap:9px}
.logo-svg{display:block;overflow:visible}
.logo-word{font-size:17px;letter-spacing:-.035em;line-height:1}
.logo-word b{font-weight:500}
.logo-word span{font-weight:300;color:var(--steel)}

/* --- Buttons --- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:'Space Grotesk',sans-serif;font-weight:500;font-size:15px;
  padding:13px 20px;border-radius:999px;border:1.5px solid transparent;cursor:pointer;
  transition:transform .15s ease,background .2s ease,border-color .2s ease,color .2s ease;
  white-space:nowrap
}
.btn-primary{background:var(--navy);color:var(--paper)}
.btn-primary:hover{background:var(--signal)}
.btn-signal{background:var(--signal);color:var(--white)}
.btn-signal:hover{background:#2f6cf0}
.btn-ghost{background:transparent;color:var(--navy);border-color:var(--line)}
.btn-ghost:hover{border-color:var(--navy)}
.btn-ghost.on-navy{color:var(--paper);border-color:var(--line-dark)}
.btn-ghost.on-navy:hover{border-color:var(--signal)}
.btn:active{transform:translateY(1px)}
.btn-lg{padding:16px 26px;font-size:16px}
.btn-block{width:100%}

/* --- Preloader (index only, defined globally so keyframes are available) --- */
#preloader{
  position:fixed;inset:0;z-index:200;background:var(--paper);
  display:flex;align-items:center;justify-content:center;transition:opacity .5s ease
}
#preloader.hide{opacity:0;pointer-events:none}
@media (prefers-reduced-motion:reduce){#preloader{display:none!important}}

/* --- Animation helpers --- */
.dot{transform-box:fill-box;transform-origin:center}
.arc{transform-box:fill-box}

/* anim 01 · Tegn-inn */
.a-draw .wipe{
  fill:var(--paper);transform-box:fill-box;transform-origin:left center;transform:scaleX(0)
}
.a-draw.run .wipe{animation:wipeOut 1s cubic-bezier(.76,0,.24,1) .1s backwards}
.a-draw.run .dot{animation:dotPop .5s cubic-bezier(.34,1.56,.64,1) .95s backwards}
@keyframes wipeOut{0%{transform:scaleX(1)}100%{transform:scaleX(0)}}
@keyframes dotPop{0%{opacity:0;transform:scale(0)}100%{opacity:1;transform:scale(1)}}

/* anim 02 · Sett sammen */
.a-assemble.run .arc{animation:slideInL .7s cubic-bezier(.22,1,.36,1) .1s backwards}
.a-assemble.run .dot{animation:dotSettle .8s cubic-bezier(.34,1.4,.5,1) .45s backwards}
@keyframes slideInL{0%{opacity:0;transform:translateX(-30px)}100%{opacity:1;transform:translateX(0)}}
@keyframes dotSettle{0%{opacity:0;transform:translateX(40px) scale(.4)}60%{opacity:1}100%{opacity:1;transform:translateX(0) scale(1)}}

/* anim 03 · Signalpuls */
.a-pulse .ring{
  fill:none;stroke:var(--signal);stroke-width:2;
  transform-box:fill-box;transform-origin:center;opacity:0
}
.a-pulse.run .ring1{animation:pulse 2.2s ease-out infinite}
.a-pulse.run .ring2{animation:pulse 2.2s ease-out infinite .7s}
.a-pulse.run .ring3{animation:pulse 2.2s ease-out infinite 1.4s}
@keyframes pulse{0%{opacity:.6;transform:scale(.5)}100%{opacity:0;transform:scale(2.6)}}
.a-pulse.run .dot{animation:dotBreathe 2.2s ease-in-out infinite}
@keyframes dotBreathe{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}

/* --- Header --- */
header{
  position:sticky;top:0;z-index:90;
  background:rgba(246,245,241,.9);backdrop-filter:blur(12px);
  border-bottom:1px solid transparent;transition:border-color .3s
}
header.scrolled{border-color:var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;gap:10px;height:64px}
.nav-cta{display:flex;gap:8px}
.nav-cta .btn{padding:9px 15px;font-size:13.5px}

/* Top navbar links */
.nav-links{display:none;align-items:center;gap:2px}
.nav-links a{
  font-size:13.5px;font-weight:500;padding:6px 11px;border-radius:8px;
  color:var(--navy);transition:background .15s,color .15s
}
.nav-links a:hover,.nav-links a.active{color:var(--signal);background:rgba(61,122,255,.07)}

/* --- Hero (base — padding/font-size overridden per page) --- */
.hero{position:relative;overflow:hidden}
.hero-grid{
  position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:
    linear-gradient(rgba(14,26,46,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(14,26,46,.045) 1px,transparent 1px);
  background-size:42px 42px;
  -webkit-mask-image:linear-gradient(to bottom,#000,transparent 85%);
  mask-image:linear-gradient(to bottom,#000,transparent 85%)
}
.hero-inner{position:relative;z-index:1}
.hero .mono{display:inline-block;margin-bottom:16px}
.hero h1{font-weight:300;letter-spacing:-.035em;line-height:1.02}
.hero h1 b{font-weight:500}
.hero h1 .accent{color:var(--signal);font-weight:500}
.hero-sub{margin-top:20px;font-size:18px;color:var(--steel);line-height:1.55}
.hero-cta{margin-top:30px;display:flex;gap:12px;flex-wrap:wrap}

/* Signature circle */
.signature{position:relative;aspect-ratio:1;width:100%;max-width:300px;margin:0 auto}
.sig-orbit{position:absolute;inset:-7%;border:1px dashed rgba(14,26,46,.16);border-radius:50%}
.sig-circle{
  position:absolute;inset:0;background:var(--signal);border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 40px 80px -30px rgba(61,122,255,.5);animation:floaty 7s ease-in-out infinite
}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}

/* --- Sections --- */
section.block{padding:60px 0}
section.block.navy{background:var(--navy);color:var(--paper)}
section.block.white{background:var(--white)}
section.block.navy .mono{color:rgba(255,255,255,.5)}
section.block.navy .mono .dot-sep{color:var(--signal)}
.sec-head{max-width:680px;margin-bottom:34px}
.sec-head .mono{display:inline-block;margin-bottom:16px}
.sec-head h2{font-weight:300;font-size:clamp(28px,7vw,44px);line-height:1.08;letter-spacing:-.025em}
.sec-head h2 b{font-weight:500}
.sec-head h2 .accent{color:var(--signal);font-weight:500}
.sec-head p{margin-top:16px;font-size:17px;color:var(--steel)}
section.block.navy .sec-head p{color:rgba(255,255,255,.74)}

/* Steps (shared by index + karriere) */
.steps{display:grid;grid-template-columns:1fr;gap:22px}
.step{display:flex;gap:18px;align-items:flex-start}
.step .n{
  flex:0 0 auto;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--signal);
  color:var(--signal);display:flex;align-items:center;justify-content:center;
  font-family:'IBM Plex Mono',monospace;font-weight:500;font-size:15px
}
.step h3{font-weight:500;font-size:19px;letter-spacing:-.01em;margin-bottom:4px}
.step p{font-size:15.5px;color:var(--steel);line-height:1.55}

/* Benefits grid (shared) */
.benefits{display:grid;grid-template-columns:1fr;gap:14px}
.benefit{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:24px}
.benefit .mono{display:block;margin-bottom:12px}
.benefit h3{font-weight:500;font-size:20px;letter-spacing:-.01em;margin-bottom:7px}
.benefit p{font-size:15.5px;color:var(--steel);line-height:1.6}

/* Momenta / tech section (shared) */
.momenta{position:relative;overflow:hidden}
.momenta .glow{
  position:absolute;top:-10%;right:-25%;width:480px;height:480px;max-width:120%;
  background:radial-gradient(circle,rgba(61,122,255,.28) 0%,transparent 62%);pointer-events:none
}
.momenta-inner{position:relative;z-index:1}
.momenta-badge{
  display:inline-flex;align-items:center;gap:10px;
  border:1px solid var(--line-dark);border-radius:999px;padding:8px 16px 8px 12px;margin-bottom:26px
}
.momenta-badge .name{
  font-family:'IBM Plex Mono',monospace;font-weight:500;letter-spacing:.18em;
  text-transform:uppercase;font-size:12px;color:var(--paper)
}
.momenta h2{font-weight:300;font-size:clamp(28px,7vw,46px);line-height:1.06;letter-spacing:-.03em}
.momenta h2 b{font-weight:500}
.momenta h2 .accent{color:var(--signal);font-weight:500}
.momenta-body{margin-top:22px;font-size:18px;line-height:1.6;color:rgba(255,255,255,.8);max-width:600px}
.momenta-body strong{color:var(--paper);font-weight:500}
.momenta-stats{margin-top:38px;display:grid;grid-template-columns:1fr;gap:1px;background:var(--line-dark);border:1px solid var(--line-dark);border-radius:16px;overflow:hidden}
.mstat{background:var(--navy);padding:24px 22px}
.mstat .num{font-weight:300;font-size:38px;letter-spacing:-.03em;line-height:1;color:var(--paper)}
.mstat .num em{font-style:normal;color:var(--signal)}
.mstat .lab{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.55);margin-top:12px}

/* CTA final section (shared by index + others) */
.cta-final{text-align:center;position:relative;overflow:hidden}
.cta-final .glow{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:620px;height:620px;max-width:120%;
  background:radial-gradient(circle,rgba(61,122,255,.22) 0%,transparent 62%);pointer-events:none
}
.cta-inner{position:relative;z-index:1;max-width:680px;margin:0 auto}
.cta-mark{display:flex;justify-content:center;margin-bottom:26px}
.cta-final h2{font-weight:300;font-size:clamp(30px,8vw,52px);line-height:1.05;letter-spacing:-.03em}
.cta-final h2 b{font-weight:500}
.cta-final p{margin:20px auto 32px;font-size:18px;color:rgba(255,255,255,.74);max-width:480px}

/* Shared form elements */
form{margin-top:26px;display:grid;gap:16px}
.field{display:grid;gap:7px}
.row2{display:grid;grid-template-columns:1fr;gap:16px}
.err{font-size:12.5px;display:none}
.field.invalid .err{display:block}
.field.invalid input,.field.invalid textarea{border-color:#D6452E}
.form-ok{display:none;text-align:center;padding:30px 10px}
.form-ok.show{display:block}
.form-ok .badge{
  width:64px;height:64px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;margin:0 auto 18px
}
.form-ok .badge svg{width:30px;height:30px;stroke:var(--signal);fill:none;stroke-width:2.5}
.form-ok h3{font-weight:500;font-size:24px;letter-spacing:-.01em;margin-bottom:8px}
.form-ok p{font-size:16px;max-width:380px;margin:0 auto;line-height:1.6}

/* --- Footer --- */
footer{
  background:var(--navy);color:rgba(255,255,255,.62);
  padding:50px 0 34px;border-top:1px solid var(--line-dark)
}
.foot-top{
  display:grid;grid-template-columns:1fr;gap:30px;
  padding-bottom:36px;border-bottom:1px solid var(--line-dark)
}
.foot-brand p{margin-top:14px;font-size:14.5px;line-height:1.6;max-width:300px}
.foot-col h4{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.12em;
  text-transform:uppercase;color:rgba(255,255,255,.45);margin-bottom:14px;font-weight:500
}
.foot-col a{display:block;font-size:15px;color:rgba(255,255,255,.78);margin-bottom:10px}
.foot-col a:hover{color:var(--signal)}
.foot-bot{display:flex;flex-direction:column;gap:10px;padding-top:26px}
.foot-bot .mono{color:rgba(255,255,255,.4)}
.foot-bot .nw{white-space:nowrap}
@media (max-width:480px){
  .foot-bot .mono{font-size:10px;letter-spacing:.08em;line-height:2}
}
.foot-bot a{color:rgba(255,255,255,.55);font-size:13px}

/* --- Mobile bar --- */
.mobilebar{
  position:fixed;left:0;right:0;bottom:0;z-index:95;
  background:rgba(246,245,241,.95);backdrop-filter:blur(12px);
  border-top:1px solid var(--line);padding:11px 16px;display:flex;gap:10px
}
.mobilebar .btn{flex:1}
.admin-link{font-size:12px;color:rgba(246,245,241,.25);transition:color .2s}
.admin-link:hover{color:rgba(246,245,241,.65)}

/* --- Scroll reveal --- */
.reveal{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}
:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:4px}

/* --- Cookie banner (flytende kort) --- */
#cookie-banner{
  position:fixed;left:16px;right:16px;bottom:88px;z-index:998;
  transform:translateY(14px);opacity:0;visibility:hidden;
  transition:transform .48s cubic-bezier(.22,1,.36,1),opacity .38s ease,visibility 0s linear .5s
}
#cookie-banner.cb-show{
  transform:none;opacity:1;visibility:visible;
  transition:transform .48s cubic-bezier(.22,1,.36,1),opacity .38s ease
}
.cb-inner{
  background:var(--white);border:1px solid var(--line);border-radius:20px;
  box-shadow:0 18px 60px -12px rgba(14,26,46,.28);
  padding:20px;max-width:420px;margin:0 auto
}
.cb-head{display:flex;align-items:center;gap:11px;margin-bottom:8px}
.cb-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:50%;flex-shrink:0;
  background:rgba(61,122,255,.12);color:var(--signal)
}
.cb-head strong{font-weight:500;font-size:16px;color:var(--navy);letter-spacing:-.01em}
.cb-text{font-size:14px;color:var(--steel);line-height:1.55;margin-bottom:14px}
.cb-text a{color:var(--signal);text-decoration:underline;text-underline-offset:2px}
.cb-text a:hover{color:#2f6cf0}
.cb-btns{display:flex;gap:8px;flex-wrap:wrap}
.cb-btns button{
  font-family:'Space Grotesk',sans-serif;font-weight:500;font-size:14px;
  padding:10px 18px;border-radius:999px;border:1.5px solid transparent;
  cursor:pointer;white-space:nowrap;
  transition:background .18s,border-color .18s,color .18s
}
.cb-accept{background:var(--signal);color:#fff;border-color:var(--signal)}
.cb-accept:hover{background:#2f6cf0;border-color:#2f6cf0}
.cb-decline{background:transparent;color:var(--navy);border-color:var(--line)}
.cb-decline:hover{border-color:var(--navy)}

@media (min-width:780px){
  #cookie-banner{left:32px;right:auto;bottom:24px;width:400px}
  .cb-inner{margin:0}
}

/* --- Desktop scale-up --- */
@media (min-width:780px){
  body{padding-bottom:0}
  .mobilebar{display:none}
  .wrap{padding:0 32px}
  .nav{height:74px}
  .nav-cta .btn{padding:10px 18px;font-size:15px}
  section.block{padding:90px 0}
  .steps{grid-template-columns:repeat(3,1fr);gap:30px}
  .benefits{grid-template-columns:1fr 1fr}
  .momenta-stats{grid-template-columns:repeat(3,1fr)}
  .foot-top{grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px}
  .foot-bot{flex-direction:row;justify-content:space-between;align-items:center}
  .row2{grid-template-columns:1fr 1fr}
}
@media (min-width:900px){.nav-links{display:flex}}
