/* InfraSpatial Solutions — test2 stylesheet (shared by every page)
   Source Serif 4 for titles, Source Sans 3 for everything else. Self-hosted. */

@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:200 900;font-display:swap;
  src:url("../fonts/source-serif-4-latin.woff2") format("woff2-variations"),url("../fonts/source-serif-4-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:200 900;font-display:swap;
  src:url("../fonts/source-sans-3-latin.woff2") format("woff2-variations"),url("../fonts/source-sans-3-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:200 900;font-display:swap;
  src:url("../fonts/source-sans-3-latin-ext.woff2") format("woff2-variations"),url("../fonts/source-sans-3-latin-ext.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Source Sans 3";font-style:italic;font-weight:200 900;font-display:swap;
  src:url("../fonts/source-sans-3-latin-italic.woff2") format("woff2-variations"),url("../fonts/source-sans-3-latin-italic.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212}

:root{
  --navy:#0f2a47;
  --navy-deep:#0a1e36;
  --navy-soft:#163a63;
  --ink:#172230;
  --ink-2:#4a5664;
  --ink-3:#6f7b89;
  --line:#e2e7ec;
  --line-2:#edf0f3;
  --paper:#ffffff;
  --paper-2:#f5f7fa;
  --blue:#1d63c4;
  --blue-dark:#174f9c;
  --blue-light:#7fb2f0;
  --blue-wash:#e8f0fb;
  --amber:#e0a33b;
  --green:#1e8a5a;
  --red:#c0392b;
  --serif:"Source Serif 4","Iowan Old Style","Palatino Linotype",Georgia,serif;
  --sans:"Source Sans 3","Segoe UI",Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"Cascadia Mono",Consolas,Menlo,monospace;
  --wrap:1180px;
  --pad:clamp(20px,4vw,48px);
  --section:clamp(72px,9vw,128px);
  --r:14px;
  --r-sm:8px;
  --shadow:0 1px 2px rgba(15,42,71,.06),0 18px 44px -18px rgba(15,42,71,.22);
  --shadow-lg:0 2px 4px rgba(15,42,71,.06),0 32px 72px -24px rgba(15,42,71,.3);
  --ease:cubic-bezier(.2,.65,.2,1);
  --header-h:76px;
  color-scheme:light;
}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 16px)}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:18px;line-height:1.6;font-weight:400;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"kern","liga"}
::selection{background:var(--blue);color:#fff}
img,svg,video{display:block;max-width:100%}
img{height:auto}
a{color:var(--blue);text-decoration:none;text-underline-offset:.2em}
a:hover{text-decoration:underline}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:4px}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
h1,h2,h3,h4{margin:0;color:var(--ink);text-wrap:balance}
h1,h2{font-family:var(--serif);font-weight:500;letter-spacing:-.012em;line-height:1.08}
h3,h4{font-weight:600;line-height:1.25;letter-spacing:-.005em}
p,ul,ol,dl,figure{margin:0}
p{text-wrap:pretty}
strong{font-weight:600}
small{font-size:.875em}
code,kbd,pre{font-family:var(--mono);font-size:.88em}
.skip{position:absolute;left:-999px;top:0;z-index:200;background:var(--navy);color:#fff;padding:10px 16px;border-radius:0 0 8px 0}
.skip:focus{left:0}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap{width:min(var(--wrap),100% - 2 * var(--pad));margin-inline:auto}
.narrow{max-width:760px}
.section{padding-block:var(--section)}
.section + .section{padding-top:0}
.lead{font-size:clamp(19px,1.45vw,22px);line-height:1.55;color:var(--ink-2);max-width:62ch}
.lead + .lead{margin-top:1em}
h2{font-size:clamp(34px,3.6vw,50px)}
h2 + .lead{margin-top:20px}
.section-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:24px 64px;align-items:end;margin-bottom:clamp(36px,4.5vw,64px)}
.section-head .lead{margin:0}
.cat{font-size:14px;font-weight:600;letter-spacing:.02em;color:var(--blue-dark);text-transform:none}
.ico{width:1em;height:1em;flex:none}

/* ---------- buttons and links ---------- */
.btn{display:inline-flex;align-items:center;gap:10px;min-height:50px;padding:12px 22px 12px 24px;border-radius:999px;border:1.5px solid var(--navy);
  background:var(--navy);color:#fff;font-weight:600;font-size:16px;line-height:1.2;text-decoration:none;cursor:pointer;
  transition:background .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease)}
.btn .ico{width:18px;height:18px;transition:transform .3s var(--ease)}
.btn:hover{background:var(--navy-soft);border-color:var(--navy-soft);text-decoration:none;box-shadow:0 10px 24px -12px rgba(15,42,71,.5)}
.btn:hover .ico{transform:translateX(3px)}
.btn:active{transform:translateY(1px)}
.btn-outline{background:transparent;color:var(--navy)}
.btn-outline:hover{background:var(--navy);color:#fff}
.btn-light{background:#fff;border-color:#fff;color:var(--navy)}
.btn-light:hover{background:#eef3fa;border-color:#eef3fa;color:var(--navy)}
.btn-ghost-light{background:transparent;border-color:rgba(255,255,255,.45);color:#fff}
.btn-ghost-light:hover{background:rgba(255,255,255,.1);border-color:#fff}
.btn-nav{min-height:42px;padding:9px 18px 9px 20px;font-size:15px}
.text-link{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--blue-dark);text-decoration:none;border-bottom:1.5px solid transparent;padding-bottom:1px;transition:border-color .25s var(--ease),color .25s var(--ease)}
.text-link .ico{width:16px;height:16px;transition:transform .3s var(--ease)}
.text-link:hover{text-decoration:none;border-color:currentColor}
.text-link:hover .ico{transform:translate(2px,-2px)}
.text-link:hover .ico:not(.ur){transform:translateX(3px)}

/* ---------- header ---------- */
.topbar{background:var(--navy);color:rgba(255,255,255,.82);font-size:13.5px;line-height:1.3}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:38px;padding-block:6px}
.topbar a{color:#fff;text-decoration:none;font-weight:500}
.topbar a:hover{text-decoration:underline}
.topbar-right{display:flex;gap:22px;align-items:center;white-space:nowrap}
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.88);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);
  border-bottom:1px solid rgba(23,34,48,.08);transition:background .35s var(--ease),border-color .35s var(--ease),box-shadow .35s var(--ease)}
.header-inner{width:min(var(--wrap),100% - 2 * var(--pad));margin-inline:auto;height:var(--header-h);display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:inline-flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none;font-weight:600;font-size:22px;line-height:1;letter-spacing:-.01em}
.brand img{width:36px;height:36px;border-radius:8px}
.brand small{display:block;font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:600;color:var(--ink-3);margin-top:4px}
.brand:hover{text-decoration:none}
.site-nav{display:flex;align-items:center;gap:6px}
.site-nav a:not(.btn){position:relative;padding:8px 14px;color:var(--ink-2);font-weight:500;font-size:16px;border-radius:999px;transition:color .25s var(--ease),background .25s var(--ease)}
.site-nav a:not(.btn):hover{color:var(--ink);background:rgba(23,34,48,.05);text-decoration:none}
.site-nav a[aria-current="page"]{color:var(--ink);font-weight:600}
.site-nav a[aria-current="page"]::after{content:"";position:absolute;left:14px;right:14px;bottom:3px;height:2px;border-radius:2px;background:var(--blue)}
.site-nav .btn-nav[aria-current="page"]{color:#fff}
.site-nav .btn-nav[aria-current="page"]::after{display:none}
.site-nav .btn{margin-left:10px}
.menu-toggle{display:none;align-items:center;gap:10px;border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:8px 14px;font-weight:600;font-size:15px;color:var(--ink)}
.menu-icon{position:relative;width:18px;height:12px}
.menu-icon i{position:absolute;left:0;right:0;height:2px;border-radius:2px;background:currentColor;transition:transform .3s var(--ease),top .3s var(--ease)}
.menu-icon i:first-child{top:0}.menu-icon i:last-child{top:10px}
.menu-toggle[aria-expanded="true"] .menu-icon i:first-child{top:5px;transform:rotate(45deg)}
.menu-toggle[aria-expanded="true"] .menu-icon i:last-child{top:5px;transform:rotate(-45deg)}

/* header over the dark cover (home) */
.site-header.is-over{position:fixed;left:0;right:0;background:transparent;border-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}
.site-header.is-over .brand,.site-header.is-over .site-nav a:not(.btn){color:#fff}
.site-header.is-over .brand small{color:rgba(255,255,255,.7)}
.site-header.is-over .site-nav a:not(.btn):hover{background:rgba(255,255,255,.12);color:#fff}
.site-header.is-over .btn-nav{background:#fff;border-color:#fff;color:var(--navy)}
.site-header.is-over .menu-toggle{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.35);color:#fff}
.site-header.is-over.is-solid{background:rgba(255,255,255,.9);border-color:rgba(23,34,48,.08);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);box-shadow:0 6px 24px -18px rgba(15,42,71,.3)}
.site-header.is-over.is-solid .brand,.site-header.is-over.is-solid .site-nav a:not(.btn){color:var(--ink)}
.site-header.is-over.is-solid .brand small{color:var(--ink-3)}
.site-header.is-over.is-solid .site-nav a:not(.btn):hover{background:rgba(23,34,48,.05)}
.site-header.is-over.is-solid .btn-nav{background:var(--navy);border-color:var(--navy);color:#fff}
.site-header.is-over.is-solid .menu-toggle{background:#fff;border-color:var(--line);color:var(--ink)}

/* ---------- page header (inner pages) ---------- */
.page-head{padding:clamp(48px,7vw,104px) 0 clamp(36px,5vw,64px)}
.page-head h1{font-size:clamp(40px,4.8vw,66px);max-width:20ch}
.page-head .lead{margin-top:24px;max-width:66ch}
.kicker{display:block;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--blue-dark);margin:0 0 12px}
.kicker + h1,.kicker + h2{margin-top:0}
.page-head.split{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:32px 72px;align-items:end}
.page-head.split .lead{margin-top:0}
.back-link{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:15px;color:var(--ink-2);margin-bottom:28px}
.back-link .ico{width:16px;height:16px;transform:rotate(180deg)}
.back-link:hover{color:var(--ink);text-decoration:none}

/* ---------- lists ---------- */
.ticks{list-style:none;padding:0;display:grid;gap:10px}
.ticks li{position:relative;padding-left:28px}
.ticks li::before{content:"";position:absolute;left:0;top:.42em;width:16px;height:16px;border-radius:50%;background:var(--blue-wash);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3C/svg%3E");}
.ticks li::after{content:"";position:absolute;left:4px;top:calc(.42em + 4px);width:8px;height:5px;border-left:2px solid var(--blue-dark);border-bottom:2px solid var(--blue-dark);transform:rotate(-45deg)}
.dots{list-style:none;padding:0;display:grid;gap:8px}
.dots li{position:relative;padding-left:20px}
.dots li::before{content:"";position:absolute;left:0;top:.68em;width:7px;height:7px;border-radius:50%;background:var(--blue)}

/* ---------- cards and panels ---------- */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:clamp(22px,2.6vw,32px)}
.panel-soft{background:var(--paper-2);border-radius:var(--r);padding:clamp(22px,2.6vw,32px)}
.closing{margin-top:var(--section);background:var(--navy);color:#fff;border-radius:calc(var(--r) + 6px);padding:clamp(36px,5vw,64px) clamp(28px,4vw,64px);
  display:grid;grid-template-columns:minmax(0,1.2fr) auto;gap:28px 48px;align-items:center;position:relative;overflow:hidden}
.closing::after{content:"";position:absolute;right:-12%;top:-40%;width:52%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(127,178,240,.28),rgba(127,178,240,0) 65%);pointer-events:none}
.closing h2{color:#fff;font-size:clamp(30px,3vw,42px)}
.closing p{color:rgba(255,255,255,.8);margin-top:12px;max-width:56ch;font-size:19px}
.closing .actions{display:flex;flex-wrap:wrap;gap:14px 24px;align-items:center;position:relative}
.closing .text-link{color:#fff}

/* ---------- footer ---------- */
.site-footer{margin-top:var(--section);border-top:1px solid var(--line);background:var(--paper-2);color:var(--ink-2);font-size:15px;line-height:1.55}
.footer-grid{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:40px clamp(28px,4vw,64px);padding:clamp(48px,6vw,72px) 0 40px}
.footer-grid h2{font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:16px}
.footer-grid ul{list-style:none;padding:0;display:grid;gap:9px}
.footer-grid a{color:var(--ink-2)}
.footer-grid a:hover{color:var(--ink)}
.footer-brand p{margin-top:16px;max-width:30ch}
.footer-small{border-top:1px solid var(--line);padding:22px 0 36px;font-size:13.5px;color:var(--ink-3);display:flex;flex-wrap:wrap;gap:6px 32px}

/* ---------- motion ---------- */
.js .reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.js .reveal.in{opacity:1;transform:none}
.js .reveal-group > .reveal:nth-child(2){transition-delay:.1s}
.js .reveal-group > .reveal:nth-child(3){transition-delay:.2s}
.js .reveal-group > .reveal:nth-child(4){transition-delay:.3s}
.js .reveal-group > .reveal:nth-child(5){transition-delay:.4s}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .js .reveal{opacity:1;transform:none}
}

/* ---------- responsive ---------- */
@media (max-width:1000px){
  .section-head,.page-head.split{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr 1fr}
  .footer-brand{grid-column:1/-1}
}
@media (max-width:860px){
  .topbar .wrap > span:first-child{display:none}
  .topbar .wrap{justify-content:flex-end}
  :root{--header-h:66px}
  body{font-size:17px}
  .menu-toggle{display:inline-flex}
  .site-nav{position:fixed;inset:var(--header-h) 0 auto 0;max-height:calc(100dvh - var(--header-h));overflow:auto;flex-direction:column;align-items:stretch;gap:4px;padding:16px var(--pad) 28px;
    background:#fff;border-bottom:1px solid var(--line);box-shadow:0 24px 48px -24px rgba(15,42,71,.35);transform:translateY(-8px);opacity:0;visibility:hidden;transition:opacity .3s var(--ease),transform .3s var(--ease),visibility 0s .3s}
  .site-nav.open{transform:none;opacity:1;visibility:visible;transition:opacity .3s var(--ease),transform .3s var(--ease)}
  .site-nav a:not(.btn){padding:14px 12px;font-size:19px;border-radius:10px;color:var(--ink)}
  .site-nav a[aria-current="page"]::after{left:12px;right:auto;width:26px;bottom:8px}
  .site-nav .btn{margin:14px 0 0;justify-content:center}
  .site-header.is-over .site-nav a:not(.btn){color:var(--ink)}
  .site-header.is-over .site-nav .btn-nav{background:var(--navy);border-color:var(--navy);color:#fff}
  .brand{font-size:19px}.brand img{width:32px;height:32px}
  .closing{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:520px){
  .topbar-right > span{display:none}
  .footer-grid{grid-template-columns:1fr}
}
