:is(.fsi-page-shell, .fsi-page-host) {
  --blue: #0b3d91;
  --blue-dark: #06265e;
  --ink: #122033;
  --paper: #fff;
  --paper-deep: #fff;
  --white: #fff;
  --line: rgba(18, 32, 51, .18);
  --line-light: rgba(255, 255, 255, .24);
  --muted: #5f6874;
}

:is(.fsi-page-shell, .fsi-page-host),:is(.fsi-page-shell, .fsi-page-host) * { box-sizing: border-box; }
html:has(> body.fsi-landing) { scroll-behavior: smooth; }
:is(.fsi-page-shell, .fsi-page-host) {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: Inter, Arial, Helvetica, sans-serif;
}
:is(.fsi-page-shell, .fsi-page-host) a { color: inherit; text-decoration: none; }
:is(.fsi-page-shell, .fsi-page-host) img { display: block; max-width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) p { text-wrap: pretty; }

:is(.fsi-page-shell, .fsi-page-host) .skip-link {
  background: var(--white);
  left: 1rem;
  padding: .75rem 1rem;
  position: fixed;
  top: -4rem;
  z-index: 100;
}
:is(.fsi-page-shell, .fsi-page-host) .skip-link:focus { top: 1rem; }

:is(.fsi-page-shell, .fsi-page-host) .site-header {
  align-items: center;
  backdrop-filter: blur(16px);
  background: rgba(255, 255, 255, .92);
  border-bottom: 1px solid var(--line);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  min-height: 82px;
  padding: 0 clamp(1.25rem, 4vw, 4.5rem);
  position: sticky;
  top: 0;
  z-index: 20;
}
:is(.fsi-page-shell, .fsi-page-host) .brand { display: flex; gap: 3px; width: max-content; }
:is(.fsi-page-shell, .fsi-page-host) .brand span {
  align-items: center;
  border: 1px solid var(--blue);
  color: var(--blue);
  display: flex;
  font-family: "Courier New", monospace;
  font-size: .8rem;
  font-weight: 800;
  height: 28px;
  justify-content: center;
  width: 22px;
}
:is(.fsi-page-shell, .fsi-page-host) .brand-icon { display: block; height: 28px; object-fit: contain; width: auto; }
:is(.fsi-page-shell, .fsi-page-host) .desktop-nav { display: flex; font-size: .82rem; gap: clamp(1.25rem, 3vw, 2.8rem); }
:is(.fsi-page-shell, .fsi-page-host) .desktop-nav a { padding: 1rem 0; position: relative; }
:is(.fsi-page-shell, .fsi-page-host) .desktop-nav a::after {
  background: var(--blue);
  bottom: .6rem;
  content: '';
  height: 1px;
  left: 0;
  position: absolute;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform .25s ease;
  width: 100%;
}
:is(.fsi-page-shell, .fsi-page-host) .desktop-nav a:hover::after,:is(.fsi-page-shell, .fsi-page-host) .desktop-nav a:focus-visible::after { transform: scaleX(1); transform-origin: left; }
:is(.fsi-page-shell, .fsi-page-host) .header-actions { align-items: center; display: flex; gap: .7rem; justify-self: end; }
:is(.fsi-page-shell, .fsi-page-host) .mobile-menu { display: none; position: relative; }
:is(.fsi-page-shell, .fsi-page-host) .mobile-menu summary { cursor: pointer; font-size: .78rem; font-weight: 650; list-style: none; padding: .8rem; }
:is(.fsi-page-shell, .fsi-page-host) .mobile-menu summary::-webkit-details-marker { display: none; }
:is(.fsi-page-shell, .fsi-page-host) .mobile-menu nav {
  background: var(--paper);
  border: 1px solid var(--line);
  display: grid;
  min-width: 210px;
  padding: .5rem;
  position: absolute;
  right: 0;
  top: calc(100% + 1rem);
}
:is(.fsi-page-shell, .fsi-page-host) .mobile-menu nav a { border-bottom: 1px solid var(--line); padding: .9rem; }

:is(.fsi-page-shell, .fsi-page-host) .button {
  align-items: center;
  background: var(--blue);
  border: 1px solid var(--blue);
  color: var(--white);
  display: inline-flex;
  font-size: .86rem;
  font-weight: 650;
  justify-content: center;
  min-height: 52px;
  padding: .9rem 1.35rem;
  transition: background .2s ease, color .2s ease, transform .2s ease;
}
:is(.fsi-page-shell, .fsi-page-host) .button:hover { background: var(--blue-dark); transform: translateY(-2px); }
:is(.fsi-page-shell, .fsi-page-host) .button:focus-visible,:is(.fsi-page-shell, .fsi-page-host) a:focus-visible,:is(.fsi-page-shell, .fsi-page-host) summary:focus-visible { outline: 3px solid #e6ad2e; outline-offset: 3px; }
:is(.fsi-page-shell, .fsi-page-host) .button-small { min-height: 42px; padding: .7rem 1rem; }
:is(.fsi-page-shell, .fsi-page-host) .button-light { background: var(--white); border-color: var(--white); color: var(--blue-dark); }
:is(.fsi-page-shell, .fsi-page-host) .button-light:hover { background: var(--paper); }

:is(.fsi-page-shell, .fsi-page-host) .hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(420px, .86fr);
  grid-template-rows: minmax(0, 1fr) auto;
  height: calc(100svh - 82px);
  max-height: 980px;
  min-height: 680px;
}
:is(.fsi-page-shell, .fsi-page-host) .hero-copy {
  display: flex;
  flex-direction: column;
  grid-column: 1;
  grid-row: 1;
  justify-content: center;
  min-height: 0;
  padding: clamp(4rem, 10svh, 7rem) clamp(1.25rem, 7vw, 8rem) 3rem clamp(1.25rem, 4vw, 4.5rem);
}
:is(.fsi-page-shell, .fsi-page-host) .eyebrow {
  color: var(--blue);
  font-size: .7rem;
  font-weight: 750;
  letter-spacing: .16em;
  margin: 0 0 1.5rem;
  text-transform: uppercase;
}
:is(.fsi-page-shell, .fsi-page-host) .eyebrow-light { color: rgba(255,255,255,.7); }
:is(.fsi-page-shell, .fsi-page-host) h1,:is(.fsi-page-shell, .fsi-page-host) h2,:is(.fsi-page-shell, .fsi-page-host) h3 { text-wrap: balance; }
:is(.fsi-page-shell, .fsi-page-host) h1 { text-wrap: pretty; }
:is(.fsi-page-shell, .fsi-page-host) .heading-accent { color: var(--blue); }
:is(.fsi-page-shell, .fsi-page-host) .section-dark .heading-accent,:is(.fsi-page-shell, .fsi-page-host) .contact .heading-accent { color: #b9d2ff; }
:is(.fsi-page-shell, .fsi-page-host) h1 {
  font-size: clamp(3.2rem, min(6.5vw, 8.5svh), 7rem);
  font-weight: 500;
  letter-spacing: -.065em;
  line-height: .94;
  margin: 0;
  max-width: 15ch;
}
:is(.fsi-page-shell, .fsi-page-host) .hero-summary {
  color: var(--muted);
  font-size: clamp(1rem, 1.35vw, 1.22rem);
  line-height: 1.6;
  margin: 2rem 0;
  max-width: 39rem;
}
:is(.fsi-page-shell, .fsi-page-host) .hero-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 1.4rem; }
:is(.fsi-page-shell, .fsi-page-host) .text-link { border-bottom: 1px solid currentColor; font-size: .9rem; padding: .75rem 0 .35rem; }
:is(.fsi-page-shell, .fsi-page-host) .text-link span { color: var(--blue); margin-left: .4rem; }
:is(.fsi-page-shell, .fsi-page-host) .hero-proof {
  border-top: 1px solid var(--line);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-column: 1;
  grid-row: 2;
  margin: 0 clamp(1.25rem, 7vw, 8rem) 3rem clamp(1.25rem, 4vw, 4.5rem);
  padding-top: 1.2rem;
}
:is(.fsi-page-shell, .fsi-page-host) .hero-proof div + div { border-left: 1px solid var(--line); padding-left: 1.2rem; }
:is(.fsi-page-shell, .fsi-page-host) .hero-proof dt { color: var(--muted); font-size: .64rem; letter-spacing: .12em; text-transform: uppercase; }
:is(.fsi-page-shell, .fsi-page-host) .hero-proof dd { font-size: .9rem; font-weight: 650; margin: .45rem 0 0; }
:is(.fsi-page-shell, .fsi-page-host) .hero-visual {
  background: var(--blue);
  display: grid;
  grid-template-rows: 1fr auto;
  height: 100%;
  grid-column: 2;
  grid-row: 1 / span 2;
  margin: 0;
  min-height: 0;
  overflow: hidden;
}
:is(.fsi-page-shell, .fsi-page-host) .hero-visual img,:is(.fsi-page-shell, .fsi-page-host) .hero-visual video { display: block; height: 100%; min-height: 0; object-fit: cover; object-position: center; transition: transform 1s cubic-bezier(.2,.7,.2,1); width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .hero-visual:hover img,:is(.fsi-page-shell, .fsi-page-host) .hero-visual:hover video { transform: scale(1.025); }
:is(.fsi-page-shell, .fsi-page-host) .hero-visual figcaption { color: var(--white); font-size: .85rem; line-height: 1.45; padding: 1.25rem 1.5rem; }
:is(.fsi-page-shell, .fsi-page-host) .hero-visual figcaption span { border-right: 1px solid var(--line-light); margin-right: 1rem; padding-right: 1rem; }

:is(.fsi-page-shell, .fsi-page-host) .section { padding: clamp(5.5rem, 10vw, 10rem) clamp(1.25rem, 4vw, 4.5rem); }
:is(.fsi-page-shell, .fsi-page-host) .section-dark { background: var(--blue-dark); color: var(--white); }
:is(.fsi-page-shell, .fsi-page-host) .section-index { align-self: start; color: var(--muted); font-family: "Courier New", monospace; font-size: .68rem; letter-spacing: .08em; text-transform: uppercase; }
:is(.fsi-page-shell, .fsi-page-host) .section-dark .section-index { color: rgba(255,255,255,.55); }
:is(.fsi-page-shell, .fsi-page-host) .section-heading { display: grid; gap: 2rem; grid-template-columns: minmax(150px, .8fr) minmax(0, 3fr); margin-bottom: clamp(3.5rem, 8vw, 7rem); }
:is(.fsi-page-shell, .fsi-page-host) .services-heading { align-items: end; grid-template-columns: minmax(130px, .6fr) minmax(0, 1.55fr) minmax(260px, 1.15fr); }
:is(.fsi-page-shell, .fsi-page-host) .services-heading-visual { height: auto; justify-self: start; max-width: 420px; width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .section-heading h2,:is(.fsi-page-shell, .fsi-page-host) .manifesto h2,:is(.fsi-page-shell, .fsi-page-host) .contact h2,:is(.fsi-page-shell, .fsi-page-host) .coverage h2 {
  font-size: clamp(2.7rem, 5.5vw, 6.2rem);
  font-weight: 500;
  letter-spacing: -.055em;
  line-height: .98;
  margin: 0;
  max-width: 18ch;
}

:is(.fsi-page-shell, .fsi-page-host) .manifesto { display: grid; gap: 2rem; grid-template-columns: minmax(150px, .8fr) minmax(0, 3fr); padding: clamp(5rem, 9vw, 9rem) clamp(1.25rem, 4vw, 4.5rem); }
:is(.fsi-page-shell, .fsi-page-host) .manifesto h2 { max-width: 15ch; }
:is(.fsi-page-shell, .fsi-page-host) .manifesto > div:last-child > p:last-child { color: rgba(255,255,255,.72); font-size: 1.05rem; line-height: 1.65; margin: 2rem 0 0; max-width: 48rem; }

:is(.fsi-page-shell, .fsi-page-host) .service-list { border-top: 1px solid var(--line); }
:is(.fsi-page-shell, .fsi-page-host) .service-row {
  align-items: start;
  border-bottom: 1px solid var(--line);
  display: grid;
  gap: clamp(1rem, 3vw, 3rem);
  grid-template-columns: 54px 1.1fr 1.35fr 1fr;
  padding: 2.5rem 0;
}
:is(.fsi-page-shell, .fsi-page-host) .number,:is(.fsi-page-shell, .fsi-page-host) .service-row > span { color: var(--blue); font-family: "Courier New", monospace; font-size: .78rem; }
:is(.fsi-page-shell, .fsi-page-host) .service-row h3 { font-size: clamp(1.45rem, 2.5vw, 2.35rem); font-weight: 520; letter-spacing: -.035em; margin: 0; }
:is(.fsi-page-shell, .fsi-page-host) .service-row p { color: var(--muted); line-height: 1.65; margin: 0; }
:is(.fsi-page-shell, .fsi-page-host) .service-row ul { list-style: none; margin: 0; padding: 0; }
:is(.fsi-page-shell, .fsi-page-host) .service-row li { border-top: 1px solid var(--line); font-size: .83rem; padding: .7rem 0; }
:is(.fsi-page-shell, .fsi-page-host) .service-row li::before { color: var(--blue); content: '↘'; margin-right: .55rem; }

:is(.fsi-page-shell, .fsi-page-host) .sectors {
  background: var(--blue);
  display: grid;
  gap: 1px;
  grid-template-columns: repeat(12, 1fr);
  grid-template-rows: minmax(320px, 48vw) minmax(280px, 34vw);
  overflow: hidden;
}
:is(.fsi-page-shell, .fsi-page-host) .sector-copy { align-self: end; color: var(--white); grid-column: 1 / span 5; grid-row: 1; padding: clamp(2rem, 5vw, 5rem); z-index: 2; }
:is(.fsi-page-shell, .fsi-page-host) .sector-copy h2 { font-size: clamp(2.4rem, 4.2vw, 4.8rem); font-weight: 500; letter-spacing: -.055em; line-height: .98; margin: 0; max-width: 15ch; }
:is(.fsi-page-shell, .fsi-page-host) .sector-card { color: var(--white); margin: 0; min-height: 0; overflow: hidden; position: relative; }
:is(.fsi-page-shell, .fsi-page-host) .sector-card::after { background: linear-gradient(180deg, transparent 35%, rgba(0,0,0,.76)); content: ''; inset: 0; position: absolute; }
:is(.fsi-page-shell, .fsi-page-host) .sector-card img { filter: saturate(.75); height: 100%; object-fit: cover; transition: filter .4s ease, transform .7s ease; width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .sector-card:hover img { filter: saturate(1); transform: scale(1.025); }
:is(.fsi-page-shell, .fsi-page-host) .sector-card > div { bottom: 0; left: 0; padding: clamp(1.4rem, 3vw, 2.5rem); position: absolute; z-index: 2; }
:is(.fsi-page-shell, .fsi-page-host) .sector-card span { font-family: "Courier New", monospace; font-size: .7rem; }
:is(.fsi-page-shell, .fsi-page-host) .sector-card h3 { font-size: clamp(1.8rem, 3.2vw, 3.3rem); font-weight: 520; letter-spacing: -.045em; margin: .6rem 0 .25rem; }
:is(.fsi-page-shell, .fsi-page-host) .sector-card p { color: rgba(255,255,255,.75); margin: 0; }
:is(.fsi-page-shell, .fsi-page-host) .sector-office { grid-column: 6 / 13; grid-row: 1; }
:is(.fsi-page-shell, .fsi-page-host) .sector-hospitality { grid-column: 1 / 8; grid-row: 2; }
:is(.fsi-page-shell, .fsi-page-host) .sector-play { grid-column: 8 / 13; grid-row: 2; }

:is(.fsi-page-shell, .fsi-page-host) .project-list { display: grid; gap: clamp(5rem, 11vw, 11rem); }
:is(.fsi-page-shell, .fsi-page-host) .project { align-items: center; display: grid; gap: clamp(2rem, 6vw, 7rem); grid-template-columns: minmax(0, 1.2fr) minmax(320px, .8fr); }
:is(.fsi-page-shell, .fsi-page-host) .project:nth-child(even) { grid-template-columns: minmax(320px, .8fr) minmax(0, 1.2fr); }
:is(.fsi-page-shell, .fsi-page-host) .project:nth-child(even) figure { order: 2; }
:is(.fsi-page-shell, .fsi-page-host) .project figure { margin: 0; }
:is(.fsi-page-shell, .fsi-page-host) .project figure img { aspect-ratio: 1.18; object-fit: cover; width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .project figure figcaption { color: var(--muted); font-size: .67rem; margin-top: .65rem; }
:is(.fsi-page-shell, .fsi-page-host) .project-kicker { border-bottom: 1px solid var(--line); color: var(--blue); display: flex; font-family: "Courier New", monospace; font-size: .68rem; justify-content: space-between; padding-bottom: .75rem; text-transform: uppercase; }
:is(.fsi-page-shell, .fsi-page-host) .project-copy h3 { font-size: clamp(2.2rem, 4vw, 4.4rem); font-weight: 500; letter-spacing: -.05em; line-height: .98; margin: 1.5rem 0 .8rem; }
:is(.fsi-page-shell, .fsi-page-host) .project-meta { color: var(--muted); font-size: .78rem; letter-spacing: .04em; margin: 0 0 2.2rem; text-transform: uppercase; }
:is(.fsi-page-shell, .fsi-page-host) .project-copy dl { margin: 0; }
:is(.fsi-page-shell, .fsi-page-host) .project-copy dl > div { border-top: 1px solid var(--line); display: grid; gap: 1rem; grid-template-columns: 90px 1fr; padding: 1rem 0; }
:is(.fsi-page-shell, .fsi-page-host) .project-copy dt { color: var(--blue); font-size: .72rem; font-weight: 700; text-transform: uppercase; }
:is(.fsi-page-shell, .fsi-page-host) .project-copy dd { color: var(--muted); font-size: .9rem; line-height: 1.55; margin: 0; }

:is(.fsi-page-shell, .fsi-page-host) .process { background: var(--paper-deep); }
:is(.fsi-page-shell, .fsi-page-host) .process-grid { border-left: 1px solid var(--line); border-top: 1px solid var(--line); display: grid; grid-template-columns: repeat(3, 1fr); list-style: none; margin: 0; padding: 0; }
:is(.fsi-page-shell, .fsi-page-host) .process-grid li { border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); min-height: 260px; padding: clamp(1.5rem, 3vw, 2.8rem); }
:is(.fsi-page-shell, .fsi-page-host) .process-grid span { color: var(--blue); font-family: "Courier New", monospace; font-size: .72rem; }
:is(.fsi-page-shell, .fsi-page-host) .process-grid h3 { font-size: clamp(1.6rem, 2.8vw, 2.7rem); font-weight: 520; letter-spacing: -.04em; margin: 3.4rem 0 .7rem; }
:is(.fsi-page-shell, .fsi-page-host) .process-grid p { color: var(--muted); font-size: .9rem; line-height: 1.6; margin: 0; max-width: 28ch; }

:is(.fsi-page-shell, .fsi-page-host) .why .section-heading { margin-bottom: 5rem; }
:is(.fsi-page-shell, .fsi-page-host) .why-grid { border-left: 1px solid var(--line-light); border-top: 1px solid var(--line-light); display: grid; grid-template-columns: repeat(4, 1fr); }
:is(.fsi-page-shell, .fsi-page-host) .why-grid article { border-bottom: 1px solid var(--line-light); border-right: 1px solid var(--line-light); min-height: 330px; padding: clamp(1.5rem, 3vw, 2.7rem); }
:is(.fsi-page-shell, .fsi-page-host) .why-grid span { color: rgba(255,255,255,.6); font-family: "Courier New", monospace; font-size: .72rem; }
:is(.fsi-page-shell, .fsi-page-host) .why-grid h3 { font-size: clamp(1.45rem, 2.4vw, 2.3rem); font-weight: 520; letter-spacing: -.04em; margin: 4rem 0 1rem; }
:is(.fsi-page-shell, .fsi-page-host) .why-grid p { color: rgba(255,255,255,.68); line-height: 1.6; margin: 0; }

:is(.fsi-page-shell, .fsi-page-host) .coverage { align-items: end; border-bottom: 1px solid var(--line); display: grid; gap: 3rem; grid-template-columns: 1.4fr .6fr; }
:is(.fsi-page-shell, .fsi-page-host) .coverage h2 { max-width: 13ch; }
:is(.fsi-page-shell, .fsi-page-host) .coverage > p { color: var(--muted); line-height: 1.7; margin: 0; }

:is(.fsi-page-shell, .fsi-page-host) .faq-list { border-top: 1px solid var(--line); margin-left: calc((100% + 2rem) * .205); }
:is(.fsi-page-shell, .fsi-page-host) .faq-list details { border-bottom: 1px solid var(--line); }
:is(.fsi-page-shell, .fsi-page-host) .faq-list summary { align-items: center; cursor: pointer; display: grid; font-size: clamp(1rem, 1.7vw, 1.35rem); font-weight: 570; gap: 1rem; grid-template-columns: 50px 1fr; list-style: none; padding: 1.5rem 0; }
:is(.fsi-page-shell, .fsi-page-host) .faq-list summary::-webkit-details-marker { display: none; }
:is(.fsi-page-shell, .fsi-page-host) .faq-list summary::after { color: var(--blue); content: '+'; font-size: 1.5rem; grid-column: 3; transition: transform .2s ease; }
:is(.fsi-page-shell, .fsi-page-host) .faq-list details[open] summary::after { transform: rotate(45deg); }
:is(.fsi-page-shell, .fsi-page-host) .faq-list summary span { color: var(--blue); font-family: "Courier New", monospace; font-size: .7rem; }
:is(.fsi-page-shell, .fsi-page-host) .faq-list details > p { color: var(--muted); line-height: 1.65; margin: 0; max-width: 55rem; padding: 0 4rem 1.8rem; }

:is(.fsi-page-shell, .fsi-page-host) .contact { background: var(--blue); color: var(--white); padding: clamp(5.5rem, 11vw, 11rem) clamp(1.25rem, 4vw, 4.5rem); }
:is(.fsi-page-shell, .fsi-page-host) .contact h2 { font-size: clamp(3.2rem, 8vw, 8.5rem); max-width: 18ch; }
:is(.fsi-page-shell, .fsi-page-host) .contact > p:not(.eyebrow) { color: rgba(255,255,255,.72); font-size: 1.05rem; line-height: 1.65; margin: 2.5rem 0; max-width: 42rem; }
:is(.fsi-page-shell, .fsi-page-host) .contact-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 2rem; }
:is(.fsi-page-shell, .fsi-page-host) .contact-link { border-bottom: 1px solid rgba(255,255,255,.6); padding: .8rem 0 .4rem; }
:is(.fsi-page-shell, .fsi-page-host) .contact-link span { margin-left: .7rem; }

:is(.fsi-page-shell, .fsi-page-host) .section-heading .hero-actions { margin-top: 1.75rem; }


:is(.fsi-page-shell, .fsi-page-host) .reveal { animation: rise .7s cubic-bezier(.2,.7,.2,1) both; }
:is(.fsi-page-shell, .fsi-page-host) .reveal-delay { animation-delay: .14s; }
@keyframes rise { from { opacity: 0; transform: translateY(18px); } }
@supports (animation-timeline: view()) {
  :is(.fsi-page-shell, .fsi-page-host) .scroll-reveal { animation: reveal-on-scroll linear both; animation-range: entry 10% cover 32%; animation-timeline: view(); }
  @keyframes reveal-on-scroll { from { opacity: 0; transform: translateY(24px); } }
}

@media (max-width: 1100px) {
  :is(.fsi-page-shell, .fsi-page-host) .site-header { grid-template-columns: 1fr auto; }
  :is(.fsi-page-shell, .fsi-page-host) .desktop-nav { display: none; }
  :is(.fsi-page-shell, .fsi-page-host) .mobile-menu { display: block; }
  :is(.fsi-page-shell, .fsi-page-host) .hero { grid-template-columns: 1fr; height: auto; max-height: none; min-height: 0; }
  :is(.fsi-page-shell, .fsi-page-host) .hero-copy { grid-column: 1; grid-row: 1; min-height: calc(100svh - 82px); padding-bottom: 7rem; }
  :is(.fsi-page-shell, .fsi-page-host) .hero-visual { grid-column: 1; grid-row: 2; height: clamp(480px, 62svh, 680px); }
  :is(.fsi-page-shell, .fsi-page-host) .hero-proof { align-self: end; grid-column: 1; grid-row: 1; margin-bottom: 2rem; position: relative; z-index: 1; }
  :is(.fsi-page-shell, .fsi-page-host) .service-row { grid-template-columns: 45px 1fr 1.4fr; }
  :is(.fsi-page-shell, .fsi-page-host) .service-row ul { grid-column: 3; }
  :is(.fsi-page-shell, .fsi-page-host) .why-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 820px) {
  :is(.fsi-page-shell, .fsi-page-host) .section-heading,:is(.fsi-page-shell, .fsi-page-host) .manifesto { grid-template-columns: 1fr; }
  :is(.fsi-page-shell, .fsi-page-host) .section-heading { margin-bottom: 3.5rem; }
  :is(.fsi-page-shell, .fsi-page-host) .services-heading-visual { display: block; justify-self: center; max-width: min(70vw, 280px); order: 2; }
  :is(.fsi-page-shell, .fsi-page-host) .services-heading-copy { order: 3; }
  :is(.fsi-page-shell, .fsi-page-host) .service-row { grid-template-columns: 38px 1fr; }
  :is(.fsi-page-shell, .fsi-page-host) .service-row p,:is(.fsi-page-shell, .fsi-page-host) .service-row ul { grid-column: 2; }
  :is(.fsi-page-shell, .fsi-page-host) .sectors { display: block; }
  :is(.fsi-page-shell, .fsi-page-host) .sector-copy { min-height: 440px; padding: 4.5rem 1.25rem; }
  :is(.fsi-page-shell, .fsi-page-host) .sector-card { height: 70svh; }
  :is(.fsi-page-shell, .fsi-page-host) .project,:is(.fsi-page-shell, .fsi-page-host) .project:nth-child(even) { grid-template-columns: 1fr; }
  :is(.fsi-page-shell, .fsi-page-host) .project:nth-child(even) figure { order: 0; }
  :is(.fsi-page-shell, .fsi-page-host) .process-grid { grid-template-columns: repeat(2, 1fr); }
  :is(.fsi-page-shell, .fsi-page-host) .coverage { align-items: start; grid-template-columns: 1fr; }
  :is(.fsi-page-shell, .fsi-page-host) .faq-list { margin-left: 0; }
}

@media (max-width: 560px) {
  :is(.fsi-page-shell, .fsi-page-host) .site-header { min-height: 70px; }
  :is(.fsi-page-shell, .fsi-page-host) .brand span { font-size: .68rem; height: 25px; width: 19px; }
  :is(.fsi-page-shell, .fsi-page-host) .brand-icon { height: 25px; }
  :is(.fsi-page-shell, .fsi-page-host) .header-actions > .button-small { font-size: 0; min-height: 40px; padding: .65rem .8rem; }
  :is(.fsi-page-shell, .fsi-page-host) .header-actions > .button-small::after { content: 'Start project'; font-size: .72rem; }
  :is(.fsi-page-shell, .fsi-page-host) .mobile-menu summary { padding: .7rem .35rem; }
  :is(.fsi-page-shell, .fsi-page-host) h1 { font-size: clamp(2.65rem, 11vw, 3.2rem); }
  :is(.fsi-page-shell, .fsi-page-host) .section-heading h2,:is(.fsi-page-shell, .fsi-page-host) .manifesto h2,:is(.fsi-page-shell, .fsi-page-host) .contact h2,:is(.fsi-page-shell, .fsi-page-host) .coverage h2 { font-size: clamp(2.15rem, 9.5vw, 3rem); }
  :is(.fsi-page-shell, .fsi-page-host) .hero-copy { min-height: calc(100svh - 70px); padding-top: 3.2rem; }
  :is(.fsi-page-shell, .fsi-page-host) .hero-proof { gap: .8rem; }
  :is(.fsi-page-shell, .fsi-page-host) .hero-proof div + div { padding-left: .8rem; }
  :is(.fsi-page-shell, .fsi-page-host) .hero-proof dd { font-size: .76rem; }
  :is(.fsi-page-shell, .fsi-page-host) .hero-visual { height: clamp(360px, 56svh, 520px); }
  :is(.fsi-page-shell, .fsi-page-host) .section { padding-bottom: 5rem; padding-top: 5rem; }
  :is(.fsi-page-shell, .fsi-page-host) .service-row { padding: 2rem 0; }
  :is(.fsi-page-shell, .fsi-page-host) .service-row h3 { font-size: 1.55rem; }
  :is(.fsi-page-shell, .fsi-page-host) .sector-card { height: 64svh; }
  :is(.fsi-page-shell, .fsi-page-host) .project-copy dl > div { grid-template-columns: 1fr; gap: .45rem; }
  :is(.fsi-page-shell, .fsi-page-host) .process-grid,:is(.fsi-page-shell, .fsi-page-host) .why-grid { grid-template-columns: 1fr; }
  :is(.fsi-page-shell, .fsi-page-host) .process-grid li,:is(.fsi-page-shell, .fsi-page-host) .why-grid article { min-height: 240px; }
  :is(.fsi-page-shell, .fsi-page-host) .faq-list details > p { padding-left: 0; padding-right: 0; }
  :is(.fsi-page-shell, .fsi-page-host) .faq-list summary { grid-template-columns: 32px 1fr; }
  :is(.fsi-page-shell, .fsi-page-host) .contact-actions { align-items: stretch; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  html:has(> body.fsi-landing) { scroll-behavior: auto; }
  :is(.fsi-page-shell, .fsi-page-host),:is(.fsi-page-shell, .fsi-page-host) *,:is(.fsi-page-shell, .fsi-page-host) *::before,:is(.fsi-page-shell, .fsi-page-host) *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

@media (max-width: 820px) {
  :is(.fsi-page-shell, .fsi-page-host) .hero { grid-template-rows: auto auto auto; }
  :is(.fsi-page-shell, .fsi-page-host) .hero-copy { grid-row: 1; min-height: 0; padding-bottom: 2rem; }
  :is(.fsi-page-shell, .fsi-page-host) .hero-visual { grid-row: 2; }
  :is(.fsi-page-shell, .fsi-page-host) .hero-proof { align-self: auto; grid-row: 3; margin: 2rem clamp(1.25rem, 7vw, 8rem) 3rem clamp(1.25rem, 4vw, 4.5rem); }
}

:is(.fsi-page-shell, .fsi-page-host).it-page .process-grid { grid-template-columns: repeat(4, 1fr); }
:is(.fsi-page-shell, .fsi-page-host) .process .section-heading { view-timeline-axis: block; view-timeline-name: --process-flow; }
:is(.fsi-page-shell, .fsi-page-host) .process-title-row { display: block; }
:is(.fsi-page-shell, .fsi-page-host) .process-title-flow { align-items: center; display: grid; gap: clamp(1.5rem, 3vw, 3rem); grid-template-columns: max-content minmax(0, 1fr); width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .process-title-timeline { align-self: center; display: block; font-family: "Courier New", monospace; font-size: clamp(.58rem, .8vw, .72rem); height: 3.2rem; justify-self: start; letter-spacing: .08em; max-width: 960px; min-width: 0; position: relative; text-transform: uppercase; top: .35rem; width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .process-title-timeline::before { background: var(--blue); content: ''; height: 2px; left: 0; position: absolute; right: 0; top: 7px; transform-origin: left; }
:is(.fsi-page-shell, .fsi-page-host) .process-checkpoint { color: var(--muted); padding-top: 1.65rem; position: absolute; text-align: center; top: 0; transform: translateX(-50%); width: max-content; }
:is(.fsi-page-shell, .fsi-page-host) .process-checkpoint:nth-child(1) { left: 0; }
:is(.fsi-page-shell, .fsi-page-host) .process-checkpoint:nth-child(2) { left: 33.333%; }
:is(.fsi-page-shell, .fsi-page-host) .process-checkpoint:nth-child(3) { left: 66.667%; }
:is(.fsi-page-shell, .fsi-page-host) .process-checkpoint:nth-child(4) { left: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .process-checkpoint::before { background: var(--white); border: 2px solid var(--blue); border-radius: 50%; content: ''; height: 12px; left: 50%; position: absolute; top: 0; transform: translateX(-50%); transition: background .25s ease, border-color .25s ease, box-shadow .25s ease; width: 12px; }
:is(.fsi-page-shell, .fsi-page-host) .process-checkpoint.is-passed::before { background: #20a867; border-color: #20a867; box-shadow: 0 0 0 4px rgba(32,168,103,.14); }
:is(.fsi-page-shell, .fsi-page-host) .process-checkpoint::after { content: attr(data-label); }
:is(.fsi-page-shell, .fsi-page-host) .process-plane-trail { clip-path: inset(0 100% 0 0); height: 56px; left: 0; overflow: visible; position: absolute; top: -21px; width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .process-plane-trail path { fill: none; opacity: .32; stroke: #8fb8ff; stroke-dasharray: .035 .028; stroke-linecap: round; stroke-width: 1.6; vector-effect: non-scaling-stroke; }
:is(.fsi-page-shell, .fsi-page-host) .process-plane { height: 28px; left: 0; opacity: 0; overflow: visible; position: absolute; rotate: 45deg; top: 0; transition: opacity .18s ease; translate: -50% -50%; width: 28px; z-index: 2; }
:is(.fsi-page-shell, .fsi-page-host) .process-plane.is-flying { opacity: 1; }
:is(.fsi-page-shell, .fsi-page-host) .process-plane path { fill: var(--white); stroke: var(--blue); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; vector-effect: non-scaling-stroke; }
:is(.fsi-page-shell, .fsi-page-host) .process-title-system { opacity: 0; transform: translateY(14px); transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
:is(.fsi-page-shell, .fsi-page-host) .process-title-complete .process-title-system { opacity: 1; transform: none; }
@supports (animation-timeline: view()) {
  :is(.fsi-page-shell, .fsi-page-host) .process-title-timeline::before { animation: draw-process-title linear both; animation-range: entry 5% cover 44%; animation-timeline: --process-flow; transform: scaleX(0); }
  :is(.fsi-page-shell, .fsi-page-host) .process-checkpoint { animation: reveal-process-step linear both; animation-timeline: --process-flow; }
  :is(.fsi-page-shell, .fsi-page-host) .process-checkpoint:nth-child(1) { animation-range: entry 8% cover 17%; }
  :is(.fsi-page-shell, .fsi-page-host) .process-checkpoint:nth-child(2) { animation-range: entry 17% cover 26%; }
  :is(.fsi-page-shell, .fsi-page-host) .process-checkpoint:nth-child(3) { animation-range: entry 26% cover 35%; }
  :is(.fsi-page-shell, .fsi-page-host) .process-checkpoint:nth-child(4) { animation-range: entry 35% cover 44%; }
  @keyframes draw-process-title { to { transform: scaleX(1); } }
  @keyframes reveal-process-step { from { opacity: 0; } }
}
:is(.fsi-page-shell, .fsi-page-host) .smart-solutions .section-heading { align-items: center; grid-template-columns: minmax(130px, .6fr) minmax(0, 1.45fr) minmax(280px, 1.25fr); margin-bottom: clamp(3.5rem, 7vw, 6rem); }
:is(.fsi-page-shell, .fsi-page-host) .smart-solutions .section-heading h2 { font-size: clamp(2.5rem, 4.2vw, 4.8rem); }
:is(.fsi-page-shell, .fsi-page-host) .network-visual { justify-self: start; max-width: 460px; width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .network-diagram { display: block; overflow: visible; width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .network-status { color: #b9d2ff; font-family: "Courier New", monospace; font-size: clamp(.9rem, 1.2vw, 1.05rem); letter-spacing: .22em; margin: .35rem 0 0; opacity: 0; text-align: center; text-transform: uppercase; transition: color .35s ease; }
:is(.fsi-page-shell, .fsi-page-host) .network-visual.is-connected .network-status { animation: connected-status 1.2s steps(1, end) forwards; color: #6ee7a0; }
@keyframes connected-status { 0%, 18%, 38%, 58% { opacity: 0; } 9%, 28%, 48%, 68%, 100% { opacity: 1; } }
:is(.fsi-page-shell, .fsi-page-host) .network-lines path { fill: none; stroke: rgba(185,210,255,.72); stroke-width: 1.5; transition: stroke .35s ease; vector-effect: non-scaling-stroke; }
:is(.fsi-page-shell, .fsi-page-host) .network-visual.is-connected .network-lines path { stroke: #6ee7a0; }
:is(.fsi-page-shell, .fsi-page-host) .network-nodes circle { fill: #b9d2ff; stroke: var(--blue-dark); stroke-width: 4; transform-box: fill-box; transform-origin: center; }
@supports (animation-timeline: view()) {
  :is(.fsi-page-shell, .fsi-page-host) .network-lines path { animation: draw-network linear both; animation-range: entry 20% cover 55%; animation-timeline: view(); stroke-dasharray: 1; stroke-dashoffset: 1; }
  :is(.fsi-page-shell, .fsi-page-host) .network-nodes circle { animation: reveal-network-node linear both; animation-range: entry 35% cover 60%; animation-timeline: view(); }
  @keyframes draw-network { to { stroke-dashoffset: 0; } }
  @keyframes reveal-network-node { from { opacity: 0; transform: scale(.35); } }
}
:is(.fsi-page-shell, .fsi-page-host) .solution-grid { display: grid; gap: 1px; grid-template-columns: repeat(2, 1fr); }
:is(.fsi-page-shell, .fsi-page-host) .solution-card { background: rgba(255,255,255,.06); border: 1px solid var(--line-light); }
:is(.fsi-page-shell, .fsi-page-host) .solution-card figure { align-items: center; background: var(--white); display: flex; margin: 0; min-height: 310px; overflow: hidden; padding: clamp(1.5rem, 4vw, 3.5rem); }
:is(.fsi-page-shell, .fsi-page-host) .solution-card figure img { height: auto; margin: auto; max-height: 300px; object-fit: contain; transform-origin: var(--zoom-x, 50%) var(--zoom-y, 50%); transition: transform .55s cubic-bezier(.2,.7,.2,1), transform-origin .18s ease-out; width: 100%; will-change: transform; }
@media (hover: hover) and (pointer: fine) {
  :is(.fsi-page-shell, .fsi-page-host) .solution-card figure { cursor: zoom-in; }
  :is(.fsi-page-shell, .fsi-page-host) .solution-card figure:hover img { transform: scale(1.22); }
}
:is(.fsi-page-shell, .fsi-page-host) .solution-card > div { padding: clamp(1.5rem, 4vw, 3.5rem); }
:is(.fsi-page-shell, .fsi-page-host) .solution-card span { color: rgba(255,255,255,.58); font-family: "Courier New", monospace; font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; }
:is(.fsi-page-shell, .fsi-page-host) .solution-card h3 { font-size: clamp(2rem, 4vw, 4rem); font-weight: 520; letter-spacing: -.05em; margin: 1.2rem 0 1rem; }
:is(.fsi-page-shell, .fsi-page-host) .solution-card p { color: rgba(255,255,255,.72); line-height: 1.65; margin: 0 0 1.8rem; }
:is(.fsi-page-shell, .fsi-page-host) .solution-card ul { list-style: none; margin: 0; padding: 0; }
:is(.fsi-page-shell, .fsi-page-host) .solution-card li { border-top: 1px solid var(--line-light); color: rgba(255,255,255,.78); font-size: .85rem; padding: .8rem 0; }
:is(.fsi-page-shell, .fsi-page-host) .solution-card li::before { color: #8fb8ff; content: '↘'; margin-right: .55rem; }

@media (max-width: 1100px) {
  :is(.fsi-page-shell, .fsi-page-host).it-page .process-grid { grid-template-columns: repeat(2, 1fr); }
  :is(.fsi-page-shell, .fsi-page-host) .process-title-flow { align-items: stretch; gap: 1.5rem; grid-template-columns: 1fr; }
  :is(.fsi-page-shell, .fsi-page-host) .process-title-timeline { margin-inline: 2rem; width: calc(100% - 4rem); }
}

@media (max-width: 820px) {
  :is(.fsi-page-shell, .fsi-page-host) .smart-solutions .section-heading { grid-template-columns: 1fr; }
  :is(.fsi-page-shell, .fsi-page-host) .network-visual { display: block; justify-self: center; margin: 1rem auto 0; max-width: 420px; }
  :is(.fsi-page-shell, .fsi-page-host) .process-title-timeline { margin-inline: 1.5rem; width: calc(100% - 3rem); }
  :is(.fsi-page-shell, .fsi-page-host) .solution-grid { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  :is(.fsi-page-shell, .fsi-page-host) .network-visual { max-width: 340px; }
  :is(.fsi-page-shell, .fsi-page-host).it-page .process-grid { grid-template-columns: 1fr; }
}
:is(.fsi-page-shell, .fsi-page-host) .section-heading .section-intro { color: rgba(255,255,255,.7); line-height: 1.65; margin: 1.8rem 0 0; max-width: 48rem; }
:is(.fsi-page-shell, .fsi-page-host) .service-evidence { border: 1px solid var(--line); display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(300px, .8fr); margin-top: clamp(3rem, 6vw, 6rem); }
:is(.fsi-page-shell, .fsi-page-host) .service-evidence figure { margin: 0; }
:is(.fsi-page-shell, .fsi-page-host) .service-evidence figure img { aspect-ratio: 1.48; height: 100%; object-fit: cover; width: 100%; }
:is(.fsi-page-shell, .fsi-page-host) .service-evidence figcaption { color: var(--muted); font-size: .67rem; padding: .65rem .85rem; }
:is(.fsi-page-shell, .fsi-page-host) .service-evidence > div { align-content: center; border-left: 1px solid var(--line); display: grid; padding: clamp(2rem, 5vw, 5rem); }
:is(.fsi-page-shell, .fsi-page-host) .service-evidence h3 { font-size: clamp(2rem, 4vw, 4.4rem); font-weight: 500; letter-spacing: -.05em; line-height: .98; margin: 0 0 1.3rem; }
:is(.fsi-page-shell, .fsi-page-host) .service-evidence > div > p:last-child { color: var(--muted); line-height: 1.65; margin: 0; }

@media (max-width: 820px) {
  :is(.fsi-page-shell, .fsi-page-host) .service-evidence { grid-template-columns: 1fr; }
  :is(.fsi-page-shell, .fsi-page-host) .service-evidence > div { border-left: 0; border-top: 1px solid var(--line); }
}

@media (prefers-reduced-motion: reduce) {
  :is(.fsi-page-shell, .fsi-page-host) .process-title-timeline::before { transform: scaleX(1) !important; }
  :is(.fsi-page-shell, .fsi-page-host) .process-checkpoint { opacity: 1 !important; }
  :is(.fsi-page-shell, .fsi-page-host) .process-title-system { opacity: 1 !important; transform: none !important; }
  :is(.fsi-page-shell, .fsi-page-host) .process-plane,:is(.fsi-page-shell, .fsi-page-host) .process-plane-trail { display: none; }
  :is(.fsi-page-shell, .fsi-page-host) .network-lines path { stroke-dashoffset: 0 !important; }
  :is(.fsi-page-shell, .fsi-page-host) .network-nodes circle { opacity: 1 !important; transform: none !important; }
  :is(.fsi-page-shell, .fsi-page-host) .network-status { opacity: 1 !important; }
  :is(.fsi-page-shell, .fsi-page-host) .solution-card figure:hover img { transform: none; }
}
