/* ==========================================================================
   Knect IT — Signal
   Carbon #12151A · Signal lime #C6F24E · Paper #FAFAF7
   Lime is never used for text on light. It carries fills, rules and dots,
   or acts as text on carbon. Both of those pairings clear WCAG AA.
   ========================================================================== */

/* ---- fonts ------------------------------------------------------------- */
@font-face{font-family:"Space Grotesk";src:url(../fonts/spacegrotesk-600.woff2) format("woff2");
  font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Space Grotesk";src:url(../fonts/spacegrotesk-700.woff2) format("woff2");
  font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Plex Sans";src:url(../fonts/plexsans-400.woff2) format("woff2");
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Plex Sans";src:url(../fonts/plexsans-500.woff2) format("woff2");
  font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Plex Mono";src:url(../fonts/plexmono-400.woff2) format("woff2");
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Plex Mono";src:url(../fonts/plexmono-500.woff2) format("woff2");
  font-weight:500;font-style:normal;font-display:swap}

/* ---- tokens ------------------------------------------------------------ */
:root{
  --carbon:#12151A;
  --carbon-2:#1A1F27;
  --carbon-3:#252C36;
  --carbon-4:#39414D;
  --lime:#C6F24E;
  --lime-2:#D6F87C;
  --lime-ink:#5E7A12;
  --paper:#FAFAF7;
  --paper-2:#F2F2EC;
  --rule:#E3E3DA;
  --text:#12151A;
  --muted:#5B6069;
  --muted-dark:#9AA1AC;

  --display:"Space Grotesk",ui-sans-serif,system-ui,sans-serif;
  --body:"Plex Sans",ui-sans-serif,system-ui,-apple-system,sans-serif;
  --mono:"Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  --wrap:1180px;
  --gut:clamp(20px,5vw,44px);
  --band:clamp(64px,9vw,116px);
  --r:14px;
  --ease:cubic-bezier(.2,.7,.3,1);
}

/* ---- reset ------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--text);
  font:400 clamp(1rem,.35vw + .95rem,1.0625rem)/1.65 var(--body);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{max-width:100%;display:block}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4,p,ul,ol,figure{margin:0}
ul{padding:0;list-style:none}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important}
}

/* ---- helpers ----------------------------------------------------------- */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.skip{position:absolute;left:-9999px;top:0;background:var(--carbon);color:var(--lime);
  padding:12px 18px;border-radius:0 0 var(--r) 0;font:500 .85rem var(--mono);z-index:200}
.skip:focus{left:0}
:focus-visible{outline:3px solid var(--lime-ink);outline-offset:3px;border-radius:4px}
.on-dark :focus-visible{outline-color:var(--lime)}

.eyebrow{font:500 .7rem/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;
  color:var(--muted);display:flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:22px;height:2px;background:var(--lime);flex:0 0 auto}
.on-dark .eyebrow{color:var(--muted-dark)}

.h1{font:700 clamp(2.35rem,5.4vw,4.15rem)/1.02 var(--display);letter-spacing:-.035em;
  text-wrap:balance}
.h2{font:700 clamp(1.75rem,3.3vw,2.7rem)/1.1 var(--display);letter-spacing:-.028em;
  text-wrap:balance}
.h3{font:600 1.075rem/1.3 var(--display);letter-spacing:-.012em}
.lead{font-size:clamp(1.06rem,.5vw + 1rem,1.22rem);line-height:1.6;color:var(--muted);
  max-width:62ch}
.on-dark .lead{color:var(--muted-dark)}
.prose p + p{margin-top:1.05em}

/* ---- buttons ----------------------------------------------------------- */
.btn{display:inline-flex;align-items:center;gap:10px;border:1px solid transparent;
  border-radius:999px;padding:13px 24px;font:500 .93rem/1 var(--body);letter-spacing:-.01em;
  text-decoration:none;cursor:pointer;transition:transform .18s var(--ease),
  background-color .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease)}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-primary{background:var(--lime);color:var(--carbon);border-color:var(--lime)}
.btn-primary:hover{background:var(--lime-2);border-color:var(--lime-2)}
.btn-ghost{background:transparent;color:var(--carbon);border-color:var(--rule)}
.btn-ghost:hover{border-color:var(--carbon)}
.on-dark .btn-ghost{color:var(--paper);border-color:var(--carbon-4)}
.on-dark .btn-ghost:hover{border-color:var(--paper)}
.btn .arw{transition:transform .18s var(--ease)}
.btn:hover .arw{transform:translateX(3px)}

/* ---- header ------------------------------------------------------------ */
.hdr{position:sticky;top:0;z-index:100;background:rgba(250,250,247,.86);
  backdrop-filter:saturate(1.6) blur(12px);border-bottom:1px solid var(--rule)}
.hdr-in{display:flex;align-items:center;gap:20px;height:74px}
.brand{display:flex;align-items:center;text-decoration:none;flex:0 0 auto}
.brand img{height:30px;width:auto}
.nav{margin-left:auto;display:flex;align-items:center;gap:4px}
.nav a{position:relative;text-decoration:none;padding:9px 14px;border-radius:8px;
  font-size:.94rem;color:var(--muted);transition:color .16s var(--ease)}
.nav a:hover{color:var(--text)}
.nav a[aria-current="page"]{color:var(--text);font-weight:500}
.nav a[aria-current="page"]::after{content:"";position:absolute;left:14px;right:14px;bottom:3px;
  height:2px;background:var(--lime);border-radius:2px}
.hdr .btn{margin-left:10px;padding:11px 20px}
.burger{display:none;margin-left:auto;background:none;border:1px solid var(--rule);
  border-radius:9px;width:44px;height:44px;align-items:center;justify-content:center;cursor:pointer}
.burger span{display:block;width:17px;height:1.5px;background:var(--carbon);position:relative}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:17px;
  height:1.5px;background:var(--carbon)}
.burger span::before{top:-5.5px}.burger span::after{top:5.5px}

@media (max-width:900px){
  .burger{display:flex}
  .nav{display:none;position:absolute;top:74px;left:0;right:0;flex-direction:column;
    align-items:stretch;gap:0;background:var(--paper);border-bottom:1px solid var(--rule);
    padding:10px var(--gut) 20px}
  .nav.open{display:flex}
  .nav a{padding:13px 4px;border-radius:0;border-bottom:1px solid var(--rule)}
  .nav a[aria-current="page"]::after{left:4px;right:auto;width:20px;bottom:8px}
  .hdr .btn{margin:14px 4px 0;justify-content:center}
}

/* ---- hero -------------------------------------------------------------- */
.hero{padding:clamp(52px,7vw,96px) 0 var(--band);border-bottom:1px solid var(--rule)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.86fr);
  gap:clamp(34px,5vw,72px);align-items:center}
.hero-copy > * + *{margin-top:22px}
.hero .h1{margin-top:18px}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
@media (max-width:960px){.hero-grid{grid-template-columns:1fr}}

/* ---- coverage board (signature) ---------------------------------------- */
.board{background:var(--carbon);border-radius:var(--r);overflow:hidden;
  box-shadow:0 24px 60px -30px rgba(18,21,26,.5);position:relative}
.board-hd{display:flex;align-items:center;gap:10px;padding:15px 20px;
  border-bottom:1px solid var(--carbon-3)}
.board-hd h2{font:500 .7rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted-dark)}
.board-dots{display:flex;gap:6px;margin-left:auto}
.board-dots i{width:7px;height:7px;border-radius:50%;background:var(--carbon-4)}
.board-dots i:first-child{background:var(--lime)}
.board-rows{position:relative}
.brow{display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:14px;
  padding:14px 20px;border-bottom:1px solid var(--carbon-2)}
.brow:last-child{border-bottom:0}
.brow .code{font:500 .72rem/1 var(--mono);letter-spacing:.06em;color:var(--lime);
  background:rgba(198,242,78,.09);border:1px solid rgba(198,242,78,.22);
  border-radius:5px;padding:6px 0;text-align:center}
.brow .nm{color:var(--paper);font-size:.925rem;letter-spacing:-.01em;min-width:0}
.brow .sc{font:400 .72rem/1 var(--mono);color:var(--muted-dark);white-space:nowrap}
.board-ft{padding:13px 20px;border-top:1px solid var(--carbon-3);
  font:400 .69rem/1.5 var(--mono);color:var(--muted-dark)}
.scan{position:absolute;left:0;right:0;height:46px;pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(198,242,78,.055),transparent);
  animation:scan 7.5s linear infinite}
@keyframes scan{0%{transform:translateY(-46px)}100%{transform:translateY(430px)}}
@media (prefers-reduced-motion:reduce){.scan{display:none}}

/* ---- bands ------------------------------------------------------------- */
.band{padding:var(--band) 0}
.band-line{border-bottom:1px solid var(--rule)}
.band-tint{background:var(--paper-2);border-block:1px solid var(--rule)}
.band-dark{background:var(--carbon);color:var(--paper)}
.band-dark .h2,.band-dark .h3{color:var(--paper)}
.band-hd{max-width:66ch}
.band-hd .h2{margin-top:16px}
.band-hd .lead{margin-top:18px}

/* ---- pillars ----------------------------------------------------------- */
.pillars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule);border-radius:var(--r);
  overflow:hidden;margin-top:44px}
.pillar{background:var(--paper);padding:30px 26px 34px}
.pillar .code{font:500 .7rem/1 var(--mono);letter-spacing:.14em;color:var(--lime-ink)}
.pillar p{margin-top:14px;color:var(--muted);font-size:.97rem}
@media (max-width:820px){.pillars{grid-template-columns:1fr}}

/* ---- service cards ----------------------------------------------------- */
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:44px}
@media (max-width:980px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.cards{grid-template-columns:1fr}}
.card{background:var(--paper);border:1px solid var(--rule);border-radius:var(--r);
  padding:26px 24px 28px;transition:border-color .2s var(--ease),transform .2s var(--ease),
  box-shadow .2s var(--ease)}
.card:hover{border-color:var(--carbon);transform:translateY(-2px);
  box-shadow:0 16px 34px -22px rgba(18,21,26,.4)}
.card .code{display:inline-block;font:500 .7rem/1 var(--mono);letter-spacing:.08em;
  color:var(--carbon);background:var(--lime);border-radius:5px;padding:6px 9px}
.card .h3{margin-top:16px}
.card p{margin-top:11px;color:var(--muted);font-size:.955rem}
.band-tint .card{background:var(--paper)}

/* ---- process ----------------------------------------------------------- */
.steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin-top:48px;
  border-top:1px solid var(--carbon-3)}
.step{padding:26px 22px 30px 0;border-right:1px solid var(--carbon-3);position:relative}
.step:last-child{border-right:0}
.step::before{content:"";position:absolute;top:-1px;left:0;width:34px;height:2px;background:var(--lime)}
.step .n{font:500 .7rem/1 var(--mono);letter-spacing:.1em;color:var(--lime)}
.step .h3{margin-top:14px}
.step p{margin-top:10px;color:var(--muted-dark);font-size:.93rem}
@media (max-width:900px){
  .steps{grid-template-columns:1fr;border-top:0}
  .step{border-right:0;border-top:1px solid var(--carbon-3);padding:24px 0 26px}
}

/* ---- split ------------------------------------------------------------- */
.split{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:clamp(30px,5vw,70px);align-items:start}
@media (max-width:900px){.split{grid-template-columns:1fr}}
.deflist{border-top:1px solid var(--rule);margin-top:8px}
.deflist div{display:grid;grid-template-columns:132px minmax(0,1fr);gap:18px;
  padding:16px 0;border-bottom:1px solid var(--rule)}
.deflist dt{font:500 .72rem/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted)}
.deflist dd{margin:0}
@media (max-width:560px){.deflist div{grid-template-columns:1fr;gap:4px}}

/* ---- cta band ---------------------------------------------------------- */
.cta{display:flex;align-items:center;justify-content:space-between;gap:34px;flex-wrap:wrap}
.cta .h2{max-width:20ch}

/* ---- form -------------------------------------------------------------- */
.form{background:var(--paper);border:1px solid var(--rule);border-radius:var(--r);
  padding:clamp(24px,3.4vw,38px)}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media (max-width:640px){.fgrid{grid-template-columns:1fr}}
.field{display:flex;flex-direction:column;gap:7px}
.field.full{grid-column:1/-1}
.field label{font:500 .72rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted)}
.field .req{color:var(--lime-ink)}
.field input,.field select,.field textarea{width:100%;background:var(--paper);
  border:1px solid var(--rule);border-radius:9px;padding:12px 14px;font-size:.97rem;
  transition:border-color .16s var(--ease),box-shadow .16s var(--ease)}
.field textarea{min-height:148px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--carbon);
  outline:none;box-shadow:0 0 0 3px rgba(198,242,78,.32)}
.field .err{font:400 .82rem/1.4 var(--body);color:#A8321E}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-note{margin-top:16px;font-size:.87rem;color:var(--muted)}
.form-actions{margin-top:22px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.alert{border-radius:10px;padding:14px 18px;font-size:.95rem;margin-bottom:22px;
  border:1px solid var(--rule)}
.alert-ok{background:rgba(198,242,78,.14);border-color:rgba(94,122,18,.35);color:#3F5410}
.alert-bad{background:#FDF1EF;border-color:#E7C2BA;color:#8C2A19}

/* ---- contact rail ------------------------------------------------------ */
.rail{border:1px solid var(--rule);border-radius:var(--r);overflow:hidden}
.rail div{padding:20px 22px;border-bottom:1px solid var(--rule)}
.rail div:last-child{border-bottom:0}
.rail dt{font:500 .7rem/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted)}
.rail dd{margin:9px 0 0;font-size:1.02rem}
.rail a{text-decoration:none;border-bottom:2px solid var(--lime);padding-bottom:1px}
.rail a:hover{border-bottom-color:var(--carbon)}

/* ---- legal prose ------------------------------------------------------- */
.legal{max-width:74ch}
.legal .h3{margin-top:38px}
.legal p{margin-top:13px;color:var(--muted)}
.legal .stamp{display:inline-block;margin-top:20px;font:500 .72rem/1 var(--mono);
  letter-spacing:.08em;color:var(--muted);border:1px solid var(--rule);
  border-radius:999px;padding:8px 14px}

/* ---- footer ------------------------------------------------------------ */
.ftr{background:var(--carbon);color:var(--paper);padding:var(--band) 0 40px}
.ftr-grid{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));
  gap:clamp(28px,4vw,56px)}
@media (max-width:900px){.ftr-grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.ftr-grid{grid-template-columns:1fr}}
.ftr img{height:29px;width:auto}
.ftr p{margin-top:20px;color:var(--muted-dark);font-size:.95rem;max-width:42ch}
.ftr h3{font:500 .7rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted-dark)}
.ftr ul{margin-top:18px;display:flex;flex-direction:column;gap:11px}
.ftr a{color:var(--paper);text-decoration:none;font-size:.95rem}
.ftr a:hover{color:var(--lime)}
.ftr .addr{color:var(--muted-dark);font-size:.92rem;line-height:1.75;margin-top:18px}
.ftr-btm{margin-top:clamp(44px,6vw,72px);padding-top:26px;border-top:1px solid var(--carbon-3);
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;
  color:var(--muted-dark);font-size:.85rem}

/* ---- reveal ------------------------------------------------------------ */
.rv{opacity:0;transform:translateY(14px)}
.rv.in{opacity:1;transform:none;transition:opacity .55s var(--ease),transform .55s var(--ease)}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none}}

/* ---- 24/7 line --------------------------------------------------------- */
.live{display:flex;align-items:center;gap:9px;margin-top:24px;
  font:500 .78rem/1 var(--mono);letter-spacing:.05em;color:var(--muted)}
.live a{color:var(--text);text-decoration:none;border-bottom:2px solid var(--lime);
  padding-bottom:2px}
.live a:hover{border-bottom-color:var(--carbon)}
.pip{width:8px;height:8px;border-radius:50%;background:var(--lime);flex:0 0 auto;
  box-shadow:0 0 0 4px rgba(198,242,78,.25);animation:pip 2.6s ease-in-out infinite}
@keyframes pip{0%,100%{box-shadow:0 0 0 4px rgba(198,242,78,.25)}
  50%{box-shadow:0 0 0 7px rgba(198,242,78,.06)}}
@media (prefers-reduced-motion:reduce){.pip{animation:none}}
.cta-note{flex-basis:100%;margin-top:4px;font:400 .84rem/1.5 var(--mono);
  color:var(--muted-dark)}
.ftr .lit{color:var(--muted-dark);font-size:.95rem}
.legal .statutory{margin-top:44px;padding-top:22px;border-top:1px solid var(--rule);
  font-size:.85rem;color:var(--muted)}

/* ---- North East / home-grown line -------------------------------------- */
.based{margin-top:12px;max-width:44ch;font-size:.9rem;line-height:1.55;color:var(--muted)}

/* ---- domestic card grids ---------------------------------------------- */
.cards-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.cards-2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:980px){.cards-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.cards-4,.cards-2{grid-template-columns:1fr}}
