/* NetGuard marketing site.
   Layout, type and neutral surfaces live here.
   Every brand color comes from aso-tokens.css (--brand, --brand-ink,
   --brand-soft, --brand-2, --on-brand). Nothing brand colored is hard coded. */

:root{
  color-scheme: light dark;

  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;
  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;

  --ink:      #0F1520;
  --ink-2:    #414E63;
  --paper:    #F6F8FB;
  --surface:  #FFFFFF;
  --line:     #D5DDE9;
  --line-soft:#E7ECF3;
  --code:     #EEF2F8;

  --accent:   var(--brand-ink);
  --band:     var(--brand-2);
  --band-ink: #FFFFFF;
  --band-ink-2:#C4D0E2;

  --wrap: 68rem;
  --prose: 40rem;
}

@media (prefers-color-scheme: dark){
  :root{
    --ink:      #E9EEF6;
    --ink-2:    #A9B6C9;
    --paper:    #0C111A;
    --surface:  #131B26;
    --line:     #27313F;
    --line-soft:#1C2531;
    --code:     #101825;

    --accent:   var(--brand-soft);
    --band:     #070C13;
    --band-ink: #F2F5FA;
    --band-ink-2:#A9B6C9;
  }
}

*,*::before,*::after{ box-sizing:border-box; }

html{ -webkit-text-size-adjust:100%; }

body{
  margin:0;
  font-family:var(--sans);
  font-size:17px;
  line-height:1.6;
  color:var(--ink);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  overflow-wrap:break-word;
}

img{ max-width:100%; height:auto; }

a{ color:var(--accent); }
a:hover{ text-decoration:none; }

.wrap{ width:100%; max-width:var(--wrap); margin:0 auto; padding:0 20px; }
.prose{ max-width:var(--prose); }

/* ---------- top bar ---------- */

.topbar{ background:var(--band); color:var(--band-ink); }
.topbar .wrap{
  display:flex; flex-wrap:wrap; gap:10px 20px;
  align-items:center; justify-content:space-between;
  padding-top:12px; padding-bottom:12px;
}
.mark{
  display:inline-flex; align-items:center; gap:10px;
  color:var(--band-ink); text-decoration:none;
  font-weight:650; letter-spacing:-.01em;
}
.mark img{ width:28px; height:28px; border-radius:7px; display:block; }
.topnav{ display:flex; flex-wrap:wrap; gap:6px 18px; font-size:14px; }
.topnav a{ color:var(--band-ink-2); text-decoration:none; }
.topnav a:hover,.topnav a:focus{ color:var(--band-ink); text-decoration:underline; }

/* ---------- generic section rhythm ---------- */

main section{ padding:52px 0; border-top:1px solid var(--line-soft); }
main section:first-child{ border-top:0; }
.tint{ background:var(--surface); border-top:1px solid var(--line-soft); border-bottom:1px solid var(--line-soft); }

.kicker{
  font-family:var(--mono);
  font-size:12px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--accent);
  margin:0 0 10px;
}
.kicker::before{
  content:""; display:inline-block; width:18px; height:2px;
  background:var(--brand); vertical-align:middle;
  margin-right:8px; margin-bottom:3px;
}

h1{
  font-size:clamp(30px,5.2vw,46px);
  line-height:1.12; letter-spacing:-.022em; font-weight:750;
  margin:0 0 16px; max-width:19ch;
  max-width:min(19ch,100%);
}
h2{
  font-size:clamp(22px,3.2vw,30px);
  line-height:1.2; letter-spacing:-.018em; font-weight:700;
  margin:0 0 14px; max-width:26ch;
  max-width:min(26ch,100%);
}
h3{ font-size:17px; font-weight:650; letter-spacing:-.005em; margin:0 0 6px; }

p{ margin:0 0 16px; max-width:var(--prose); }
.lede{ font-size:clamp(18px,2.4vw,21px); line-height:1.45; color:var(--ink-2); margin-bottom:24px; }
.sub{ color:var(--ink-2); }

ul,ol{ max-width:var(--prose); padding-left:20px; margin:0 0 16px; }
li{ margin:0 0 8px; }

/* ---------- call to action ---------- */

.cta-row{
  display:flex; flex-wrap:wrap; align-items:center; gap:14px 20px;
  margin:0 0 18px;
}
.rating{
  font-size:14px; color:var(--ink-2); margin:0;
  display:flex; align-items:center; gap:8px;
}
.stars{ color:var(--accent); letter-spacing:.06em; font-size:15px; }

.cta-block{
  border:1px solid var(--line);
  border-left:3px solid var(--brand);
  background:var(--surface);
  padding:22px;
  max-width:var(--prose);
}
.cta-block p{ margin-bottom:14px; }

/* ---------- fact chips ---------- */

.facts{ list-style:none; padding:0; margin:22px 0 0; display:flex; flex-wrap:wrap; gap:8px; max-width:none; }
.facts li{
  margin:0;
  font-family:var(--mono); font-size:12px; letter-spacing:.04em;
  padding:5px 10px; border:1px solid var(--line); color:var(--ink-2);
  background:var(--surface);
}

/* ---------- screenshots ---------- */

.shots{
  display:flex; gap:16px; margin:0; padding:4px 20px 20px;
  overflow-x:auto; scroll-snap-type:x proximity;
  -webkit-overflow-scrolling:touch;
}
.shots figure{ margin:0; flex:0 0 auto; scroll-snap-align:start; width:200px; }
.shots img{
  display:block; width:200px; height:434px;
  border:1px solid var(--line); background:var(--surface);
}
.shots figcaption{
  font-family:var(--mono); font-size:11.5px; letter-spacing:.05em; text-transform:uppercase;
  color:var(--ink-2); margin-top:8px;
}
.shots-full{ max-width:none; padding-left:0; padding-right:0; }
.shots-full .shots{ padding-left:max(20px,calc((100vw - var(--wrap))/2 + 20px)); }

/* ---------- feature grid ---------- */

.grid{
  list-style:none; padding:0; margin:0;
  display:grid; gap:1px; max-width:none;
  background:var(--line-soft);
  border:1px solid var(--line-soft);
  grid-template-columns:1fr;
}
.grid > li{
  margin:0; padding:20px; background:var(--paper);
}
.grid > li .num{
  font-family:var(--mono); font-size:11.5px; letter-spacing:.12em;
  color:var(--accent); display:block; margin-bottom:8px;
}
.grid > li p{ margin:0; color:var(--ink-2); font-size:15.5px; }
@media (min-width:560px){ .grid{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:900px){ .grid.three{ grid-template-columns:repeat(3,1fr); } }

/* ---------- use case list ---------- */

.cases{ list-style:none; padding:0; margin:0; max-width:var(--prose); }
.cases > li{
  margin:0; padding:18px 0; border-top:1px solid var(--line-soft);
}
.cases > li:first-child{ border-top:0; padding-top:0; }
.cases h3{ margin-bottom:4px; }
.cases p{ margin:0; color:var(--ink-2); font-size:15.5px; }

/* ---------- steps ---------- */

.steps{ counter-reset:step; list-style:none; padding:0; max-width:var(--prose); }
.steps > li{
  counter-increment:step;
  position:relative; padding-left:44px; margin:0 0 20px;
}
.steps > li::before{
  content:counter(step,decimal-leading-zero);
  position:absolute; left:0; top:1px;
  font-family:var(--mono); font-size:12px; letter-spacing:.06em;
  color:var(--on-brand); background:var(--brand);
  width:30px; height:24px; display:flex; align-items:center; justify-content:center;
}
.steps h3{ margin-bottom:4px; }
.steps p{ margin:0; color:var(--ink-2); font-size:15.5px; }

/* ---------- tables ---------- */

.scroller{ overflow-x:auto; max-width:100%; border:1px solid var(--line); background:var(--surface); }
table{ border-collapse:collapse; width:100%; min-width:34rem; font-size:14.5px; }
caption{ text-align:left; padding:12px 14px; color:var(--ink-2); font-size:14px; border-bottom:1px solid var(--line); }
th,td{ text-align:left; padding:10px 14px; border-top:1px solid var(--line-soft); vertical-align:top; }
thead th{
  border-top:0; font-family:var(--mono); font-size:11.5px;
  letter-spacing:.1em; text-transform:uppercase; color:var(--ink-2); font-weight:600;
  background:var(--code);
}
tbody th{ font-weight:600; }
td.mono,th.mono{ font-family:var(--mono); font-size:13.5px; white-space:nowrap; }

code,kbd,samp{
  font-family:var(--mono); font-size:.88em;
  background:var(--code); padding:1px 5px; border-radius:3px;
  overflow-wrap:anywhere;
}

/* ---------- note ---------- */

.note{
  border-left:3px solid var(--brand);
  background:var(--surface);
  padding:16px 18px; margin:0 0 20px; max-width:var(--prose);
  border-top:1px solid var(--line-soft);
  border-right:1px solid var(--line-soft);
  border-bottom:1px solid var(--line-soft);
}
.note p:last-child{ margin-bottom:0; }
.note strong{ display:block; margin-bottom:4px; }

/* ---------- FAQ ---------- */

.faq{ max-width:var(--prose); }
.faq > div{ padding:20px 0; border-top:1px solid var(--line-soft); }
.faq > div:first-child{ border-top:0; padding-top:0; }
.faq h3{ margin-bottom:6px; }
.faq p{ margin:0; color:var(--ink-2); font-size:15.5px; }

/* ---------- related pages ---------- */

.related{ list-style:none; padding:0; margin:0; display:grid; gap:1px; max-width:none;
  background:var(--line-soft); border:1px solid var(--line-soft); grid-template-columns:1fr; }
.related > li{ margin:0; background:var(--paper); }
.related a{
  display:block; padding:18px 20px; text-decoration:none; color:var(--ink);
}
.related a:hover,.related a:focus{ background:var(--surface); }
.related .t{ display:block; font-weight:650; margin-bottom:4px; color:var(--accent); }
.related .d{ display:block; font-size:14.5px; color:var(--ink-2); }
@media (min-width:560px){ .related{ grid-template-columns:repeat(2,1fr); } }

/* ---------- breadcrumb ---------- */

.crumb{
  font-family:var(--mono); font-size:12px; letter-spacing:.06em;
  margin:0 0 18px; color:var(--ink-2);
}
.crumb a{ text-decoration:none; }
.crumb a:hover{ text-decoration:underline; }

/* ---------- footer ---------- */

footer{ background:var(--band); color:var(--band-ink-2); padding:40px 0 48px; font-size:14.5px; }
footer h2{ color:var(--band-ink); font-size:20px; margin-bottom:10px; }
footer p{ color:var(--band-ink-2); }
footer a{ color:var(--band-ink); }
.footlinks{ list-style:none; padding:0; margin:20px 0 0; display:flex; flex-wrap:wrap; gap:8px 22px; max-width:none; }
.footlinks li{ margin:0; }
.footcols{ display:grid; gap:28px; grid-template-columns:1fr; }
@media (min-width:720px){ .footcols{ grid-template-columns:1.2fr 1fr; gap:48px; } }
.legal{ margin-top:28px; padding-top:20px; border-top:1px solid rgba(255,255,255,.14); font-size:13px; }
.legal p{ margin:0 0 4px; }

/* ---------- misc ---------- */

.hero{ padding-top:44px; }
.skip{ position:absolute; left:-9999px; }
.skip:focus{ left:12px; top:12px; z-index:9; background:var(--surface); color:var(--ink); padding:10px 14px; }
