/* Simnet Software — static, dependency-free design. */
@font-face {
  font-family: "IBM Plex Sans";
  src: url("../fonts/ibm-plex-sans-regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Sans";
  src: url("../fonts/ibm-plex-sans-medium.woff2") format("woff2");
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: "Open Sans";
  src: url("../fonts/open-sans-bold-italic.ttf") format("truetype");
  font-style: italic;
  font-weight: 700;
  font-display: swap;
}

:root {
  --navy: #0b1526;
  --ink: #172337;
  --muted: #596575;
  --blue: #195cde;
  --blue-light: #8bacf2;
  --line: #dce2e9;
  --gray: #f4f6f8;
  --font: "IBM Plex Sans", Arial, Helvetica, sans-serif;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 110px; }
body { margin: 0; background: #fff; color: var(--ink); font-family: var(--font); font-size: 1rem; line-height: 1.75; -webkit-font-smoothing: antialiased; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-weight: 400; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--blue); outline-offset: 6px; }
.dark-section a:focus-visible, .site-header a:focus-visible, .menu-toggle:focus-visible { outline-color: var(--blue-light); }
::selection { background: #195cde; color: #fff; }
[hidden] { display: none !important; }
.container { width: min(1248px, calc(100% - 112px)); margin-inline: auto; }
.section { padding-block: 112px; }
.dark-section { background: var(--navy); color: #f5f7fc; }
.surface-gray { background: var(--gray); }
.accent { color: var(--blue); }
.skip-link { position: fixed; top: -90px; left: 20px; z-index: 100; padding: 12px 20px; color: var(--ink); background: #fff; }
.skip-link:focus { top: 14px; }

/* Navigation */
.site-header { position: sticky; top: 0; z-index: 30; background: var(--navy); color: #fff; border-bottom: 1px solid #253044; }
.header-inner { display: flex; align-items: center; justify-content: space-between; gap: 40px; min-height: 90px; }
.wordmark { display: inline-block; padding-right: .1em; font-family: "Open Sans", Arial, Helvetica, sans-serif; font-size: 2.0rem; line-height: 1; letter-spacing: -.055em; font-weight: 700; font-style: italic; }
.main-navigation { display: flex; align-items: center; gap: 34px; }
.main-navigation > a { color: #c1cbd9; font-size: .875rem; transition: color .18s; }
.main-navigation > a:hover { color: #fff; }
.main-navigation > .nav-cta { display: inline-flex; align-items: center; gap: 28px; margin-left: 22px; padding: 12px 18px; color: #fff; border: 1px solid #506078; transition: background .18s, border-color .18s; }
.nav-cta:hover { border-color: #8bacf2; background: #15253e; }
.menu-toggle { display: none; }

/* Small, reusable CSS arrows. */
.arrow { display: inline-block; position: relative; width: 18px; height: 18px; flex: 0 0 18px; }
.arrow::before { content: ""; position: absolute; left: 1px; top: 8px; width: 15px; border-top: 1.5px solid currentColor; }
.arrow::after { content: ""; position: absolute; right: 2px; top: 4px; width: 9px; height: 9px; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; transform: rotate(45deg); }
.arrow.diagonal { transform: rotate(-45deg); }
.arrow.down { transform: rotate(90deg); }
.arrow.up { transform: rotate(-90deg); }

/* Hero — typography and restrained architectural lines. */
.hero { position: relative; overflow: hidden; isolation: isolate; }
.hero-inner { position: relative; padding-block: 72px 70px; }
.eyebrow { display: flex; align-items: center; gap: 12px; color: #c1ccdc; font-size: .75rem; font-weight: 500; letter-spacing: .16em; margin-bottom: 25px; }
.status-square { display: inline-block; width: 6px; height: 6px; background: #6595f6; }
h1 { max-width: 860px; font-size: clamp(3.25rem, 5.6vw, 5rem); line-height: 1.05; letter-spacing: -.045em; }
h1 > span { color: #a6b4cb; }
.hero-description { max-width: 550px; color: #b4c0d1; margin-top: 30px; line-height: 1.8; }
.hero-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 32px; margin-top: 30px; }
.button { display: inline-flex; align-items: center; justify-content: space-between; gap: 35px; min-height: 54px; padding: 15px 23px; font-size: .9375rem; line-height: 1.5; font-weight: 500; transition: background .18s; }
.button-primary { background: var(--blue); color: #fff; }
.button-primary:hover { background: #144ec1; }
.text-link { display: inline-flex; align-items: center; gap: 16px; min-height: 44px; font-size: .9375rem; }
.text-link:hover { color: #a6c4ff; }
.hero-baseline { display: flex; justify-content: space-between; align-items: center; gap: 24px; border-top: 1px solid #ffffff22; padding-block: 23px; color: #aab8cd; font-size: .8125rem; }
.hero-baseline p > span { padding-inline: 15px; color: #62738c; }
.hero-baseline a { display: flex; align-items: center; gap: 20px; color: #d4deed; }
.hero-geometry { --axis-x: 35%; --axis-y: 50%; --orbit-size: clamp(220px, 24vw, 340px); position: absolute; z-index: -1; top: 0; bottom: 0; left: 50%; right: calc((100% - 100vw) / 2); pointer-events: none; }
.hero-geometry > span { position: absolute; }
.hero-axis { background: #284a70; }
.hero-axis-vertical { top: 0; bottom: 0; left: var(--axis-x); width: 1px; -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 18%, #000 82%, transparent 100%); mask-image: linear-gradient(to bottom, transparent 0%, #000 18%, #000 82%, transparent 100%); }
.hero-axis-horizontal { top: var(--axis-y); left: 0; right: 0; height: 1px; -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 18%, #000 82%, transparent 100%); mask-image: linear-gradient(to right, transparent 0%, #000 18%, #000 82%, transparent 100%); }
.hero-orbit { left: calc(var(--axis-x) + var(--orbit-size) * .16); top: calc(var(--axis-y) - var(--orbit-size) * .5); width: var(--orbit-size); aspect-ratio: 1; border: 1px solid #609ce5; border-radius: 50%; mask-image: linear-gradient(to right, #000 10%, transparent 72%); }
.hero-node { left: var(--axis-x); top: var(--axis-y); width: 22px; height: 22px; transform: translate(-50%, -50%); background: #4a8eff; border: 1px solid #609eff; box-shadow: 0 0 12px rgb(33 114 255 / 65%), 0 0 30px rgb(33 114 255 / 30%); }
.hero-concept, .hero-caption { left: calc(var(--axis-x) + var(--orbit-size) * .48); color: #b5c8e2; font-size: .6875rem; line-height: 1.95; letter-spacing: 0; white-space: nowrap; }
.hero-concept { bottom: calc(100% - var(--axis-y) + 1rem); }
.hero-caption { top: calc(100% - var(--axis-y) + 1rem); }


/* Shared editorial grid */
.editorial-grid, .section-heading { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 48px; }
.section-label { font-size: .75rem; letter-spacing: .12em; line-height: 1.5; font-weight: 500; color: var(--muted); padding-top: 11px; }
.section-label > span { margin-right: 16px; color: var(--blue); letter-spacing: .06em; }
h2 { font-size: clamp(2rem, 3.05vw, 2.75rem); letter-spacing: -.035em; line-height: 1.2; }
.company-description { display: grid; grid-template-columns: .9fr 1.1fr; gap: 40px; margin-top: 36px; }
.company-description p { color: var(--muted); }
.company-description .lead { font-size: 1.1875rem; color: #28354a; line-height: 1.7; }

/* Expertise */
.expertise { padding-bottom: 55px; }
.expertise .section-heading { margin-bottom: 54px; }
.expertise-row { display: grid; grid-template-columns: 65px minmax(0, .9fr) minmax(0, 1.1fr); gap: 44px; border-top: 1px solid #cfd7e2; padding-block: 49px; }
.service-number { color: #5b6b81; font-size: .875rem; padding-top: 7px; }
.service-heading h3 { font-size: 2rem; line-height: 1.2; letter-spacing: -.025em; }
.service-category { display: block; font-size: .75rem; letter-spacing: .1em; color: var(--blue); margin-bottom: 17px; font-weight: 500; }
.expertise-primary { border-top: 2px solid var(--blue); }
.expertise-primary .service-number { color: var(--blue); }
.expertise-primary .service-heading h3 { font-size: 2.375rem; }
.service-copy { color: var(--muted); }
.service-lead { color: #25344c; font-size: 1.125rem; line-height: 1.6; margin-bottom: 16px; }
.capabilities { display: flex; flex-wrap: wrap; gap: 7px 0; list-style: none; margin: 25px 0 0; padding: 0; font-size: .8125rem; line-height: 1.6; color: #455c7d; }
.capabilities li:not(:last-child)::after { content: "·"; display: inline-block; margin-inline: 9px; color: #7990af; }

/* Values */
.value-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: 58px; }
.value-grid article { border-top: 1px solid var(--line); padding: 26px 27px 0; border-left: 1px solid var(--line); }
.value-grid article:first-child { padding-left: 0; border-left: 0; }
.value-grid article:last-child { padding-right: 0; }
.value-index { color: var(--blue); font-size: .75rem; }
.value-grid h3 { font-size: 1.25rem; margin-top: 30px; margin-bottom: 13px; line-height: 1.3; font-weight: 500; letter-spacing: -.02em; }
.value-grid p { color: var(--muted); line-height: 1.75; }

/* Approach */
.approach { padding-top: 0; }
.approach > .container { border-top: 1px solid var(--line); padding-top: 86px; }
.process { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); list-style: none; padding: 0; margin: 62px 0 38px; }
.process li { position: relative; border-top: 1px solid #b7c9e8; padding-top: 25px; }
.process li::before { content: ""; position: absolute; width: 7px; height: 7px; top: -4px; left: 0; background: var(--blue); }
.process-number { font-size: .75rem; color: var(--muted); }
.process h3 { font-size: 1.5rem; margin-top: 8px; line-height: 1.3; }
.process .arrow { position: absolute; right: 30px; bottom: 6px; color: #6887b8; }
.process-end { display: none; }
.approach-description { max-width: 730px; margin-left: 288px; color: var(--muted); }

/* Products */
.products { background: #edf2f9; position: relative; }
.product-content { max-width: 720px; }
.product-kicker { display: block; margin-bottom: 23px; font-size: .75rem; font-weight: 500; letter-spacing: .12em; color: #4a6387; }
.products h2 { font-size: clamp(2.625rem, 4.3vw, 4rem); line-height: 1.08; }
.products p:not(.section-label) { max-width: 590px; margin-top: 28px; color: #4d607c; line-height: 1.85; }
.product-link { display: inline-flex; align-items: center; gap: 44px; font-weight: 500; margin-top: 30px; padding-block: 10px; border-bottom: 1px solid #8a9eba; color: #1c4078; }
.product-link:hover { color: var(--blue); border-color: var(--blue); }

/* Brand statement */
.statement { padding-block: 127px; }
.statement h2 { max-width: 850px; font-size: clamp(2.5rem, 4.1vw, 3.75rem); line-height: 1.18; letter-spacing: -.04em; }
.statement p:not(.section-label) { max-width: 650px; margin-top: 32px; color: var(--muted); }

/* Contact and footer */
.contact { padding-block: 105px 96px; }
.dark-section .section-label { color: #a9b8cc; }
.dark-section .section-label > span { color: #8bacf2; }
.contact h2 { font-size: clamp(3rem, 4.7vw, 4.5rem); line-height: 1.1; letter-spacing: -.04em; }
.contact h2 > span { color: #8bacf2; }
.contact-detail { display: grid; grid-template-columns: 1fr; gap: 30px; margin-top: 32px; }
.contact-detail p { max-width: 595px; color: #acbad0; }
.contact-actions { display: flex; align-items: center; gap: 30px; flex-wrap: wrap; }
.email-link { color: #ced9e9; font-size: .9375rem; text-underline-offset: 6px; }
.email-link:hover { text-decoration: underline; }
.contact-office { margin-top: 64px; padding-top: 32px; border-top: 1px solid #2a3548; }
.contact-office h3 { font-size: 1rem; line-height: 1.75; font-weight: 500; }
.office-details { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px 40px; font-size: .9375rem; font-style: normal; line-height: 1.8; color: #acbad0; }
.office-details strong { font-weight: 500; color: #ced9e9; }
.office-phone a { display: inline-block; color: #ced9e9; text-underline-offset: 5px; }
.office-phone a:hover { text-decoration: underline; }
.site-footer { border-top: 1px solid #2a3548; }
.footer-main { display: flex; align-items: center; justify-content: space-between; gap: 40px; padding-block: 42px; }
.footer-main > p { margin-left: auto; font-size: .875rem; color: #a9b8cb; }
.footer-main > p > span { padding-inline: 8px; }
.footer-contact { display: inline-flex; gap: 18px; align-items: center; font-size: .875rem; }
.footer-bottom { border-top: 1px solid #253044; display: flex; justify-content: space-between; gap: 24px; padding-block: 23px; color: #9fadc2; font-size: .75rem; }
.footer-bottom > a { display: inline-flex; align-items: center; gap: 14px; }

/* Tablet */
@media (max-width: 1100px) {
  .container { width: calc(100% - 72px); }
  .main-navigation { gap: 24px; }
  .main-navigation > .nav-cta { margin-left: 4px; gap: 16px; }
  .hero-geometry { --axis-x: 38%; }
  .hero-node { width: 18px; height: 18px; }
  .editorial-grid, .section-heading { grid-template-columns: 180px minmax(0, 1fr); gap: 36px; }
  .company-description { grid-template-columns: 1fr; gap: 20px; }
  .expertise-row { grid-template-columns: 40px minmax(0, .85fr) minmax(0, 1.15fr); gap: 28px; }
  .expertise-primary .service-heading h3 { font-size: 2rem; }
  .service-heading h3 { font-size: 1.75rem; }
  .value-grid article { padding-inline: 20px; }
  .process .arrow { right: 20px; }
  .approach-description { margin-left: 216px; }
  .footer-main { gap: 25px; }
}

@media (max-width: 900px) {
  .hero-geometry { display: none; }
}

/* Mobile navigation is progressively enhanced: links remain usable without JS. */
@media (max-width: 800px) {
  html { scroll-padding-top: 96px; }
  .container { width: calc(100% - 48px); }
  .header-inner { min-height: 80px; flex-wrap: wrap; column-gap: 24px; row-gap: 0; padding-block: 20px; }
  .wordmark { font-size: 1.5rem; }
  .main-navigation { width: 100%; justify-content: space-between; flex-wrap: wrap; padding-top: 25px; gap: 22px; }
  .main-navigation > .nav-cta { display: none; }
  .menu-toggle:not([hidden]) { display: inline-flex; align-items: center; gap: 14px; background: transparent; color: #fff; padding: 9px 2px 9px 12px; border: 0; cursor: pointer; font-size: .875rem; min-height: 44px; }
  .menu-icon { display: block; width: 21px; height: 14px; position: relative; }
  .menu-icon::before, .menu-icon::after { content: ""; position: absolute; left: 0; width: 21px; height: 1px; background: currentColor; transition: transform .18s, top .18s; }
  .menu-icon::before { top: 3px; }
  .menu-icon::after { top: 11px; }
  [aria-expanded="true"] .menu-icon::before { top: 7px; transform: rotate(45deg); }
  [aria-expanded="true"] .menu-icon::after { top: 7px; transform: rotate(-45deg); }
  .menu-ready .main-navigation { padding-block: 19px 5px; display: none; }
  .menu-ready .main-navigation.is-open { display: flex; flex-direction: column; align-items: stretch; gap: 0; max-height: calc(100dvh - 100px); overflow-y: auto; }
  .menu-ready .main-navigation a { padding-block: 13px; border-top: 1px solid #2a3548; font-size: 1rem; }
  .menu-ready .main-navigation .nav-cta { display: flex; margin: 12px 0 0; justify-content: space-between; padding: 14px; }
  .section { padding-block: 76px; }
  .hero-inner { padding-block: 62px 58px; }
  h1 { font-size: clamp(3rem, 8.3vw, 4.5rem); }
  .hero-description { max-width: 500px; }
  .hero-baseline { align-items: flex-start; font-size: .75rem; }
  .hero-baseline p { max-width: 350px; }
  .hero-baseline p > span { padding-inline: 8px; }
  .hero-baseline a { gap: 10px; white-space: nowrap; }
  .editorial-grid, .section-heading { grid-template-columns: 1fr; gap: 26px; }
  .section-label { padding-top: 0; }
  .company-description { grid-template-columns: .9fr 1.1fr; gap: 28px; }
  .expertise .section-heading { margin-bottom: 40px; }
  .expertise-row { grid-template-columns: 40px minmax(0, 1fr); gap: 22px; padding-block: 34px; }
  .service-copy { grid-column: 2; }
  .service-heading h3 br { display: none; }
  .service-category { margin-bottom: 10px; }
  .value-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 35px 0; margin-top: 42px; }
  .value-grid article { padding: 22px 28px 0; }
  .value-grid article:nth-child(odd) { padding-left: 0; border-left: 0; }
  .value-grid article:nth-child(even) { padding-right: 0; }
  .value-grid h3 { margin-top: 22px; }
  .approach { padding-top: 0; }
  .approach > .container { padding-top: 70px; }
  .process { margin-top: 45px; }
  .process h3 { font-size: 1.25rem; }
  .process .arrow { right: 13px; bottom: 7px; transform: scale(.8); }
  .approach-description { margin-left: 0; }
  .statement h2 { max-width: 650px; }
  .contact h2 { font-size: 3.5rem; }
  .footer-main { flex-wrap: wrap; justify-content: space-between; gap: 25px; }
  .footer-main > p { order: 3; width: 100%; margin: 0; }
}

/* Phones */
@media (max-width: 540px) {
  .container { width: calc(100% - 40px); }
  .hero-inner { padding-block: 45px 45px; }
  .eyebrow { font-size: .75rem; margin-bottom: 24px; }
  h1 { font-size: clamp(2.5rem, 10.55vw, 3.5rem); letter-spacing: -.04em; }
  .hero-description { margin-top: 24px; }
  .hero-actions { gap: 15px; margin-top: 28px; }
  .button { gap: 24px; padding-inline: 20px; }
  .hero-baseline { flex-direction: column; gap: 14px; padding-block: 21px; }
  .hero-baseline p { max-width: none; }
  .hero-baseline p > span { padding-inline: 4px; }
  h2 { font-size: 2rem; }
  .company-description { grid-template-columns: 1fr; gap: 22px; margin-top: 27px; }
  .expertise-row { grid-template-columns: 26px minmax(0, 1fr); gap: 16px; }
  .expertise-primary .service-heading h3 { font-size: 1.875rem; }
  .service-heading h3 { font-size: 1.75rem; }
  .service-copy { grid-column: 1 / -1; }
  .capabilities { font-size: .8125rem; }
  .value-grid { grid-template-columns: 1fr; gap: 28px; }
  .value-grid article { border-left: 0; padding: 22px 0 0; }
  .value-grid h3 { margin-top: 14px; }
  .process { display: flex; flex-direction: column; margin-block: 36px; padding-left: 4px; }
  .process li { display: flex; gap: 24px; align-items: center; border-top: 0; border-left: 1px solid #b7c9e8; padding: 20px 0 20px 25px; }
  .process li::before { left: -4px; top: 32px; }
  .process h3 { margin: 0; font-size: 1.375rem; }
  .process .arrow { right: 12px; top: 27px; transform: rotate(90deg); }
  .process li:last-child { padding-bottom: 0; }
  .process li:last-child::before { top: auto; bottom: 10px; }
  .products h2 { font-size: 3rem; }
  .product-link { gap: 20px; font-size: .9375rem; }
  .statement h2 { font-size: 2.5rem; }
  .contact h2 { font-size: clamp(2.5rem, 10.6vw, 3.5rem); }
  .contact-actions { gap: 20px; }
  .contact-office { margin-top: 44px; padding-top: 26px; }
  .office-details { grid-template-columns: 1fr; gap: 20px; }
  .email-link { overflow-wrap: anywhere; }
  .footer-main > p { font-size: .8125rem; }
  .footer-main > p > span { padding-inline: 3px; }
  .footer-bottom { flex-direction: column; gap: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}
