@font-face {
  font-family: "DM Sans Variable";
  src: url("/static/fonts/DMSans-VariableFont_opsz,wght.30bbfaf1881a.ttf") format("truetype");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "DM Sans Variable";
  src: url("/static/fonts/DMSans-Italic-VariableFont_opsz,wght.01b16af808a5.ttf") format("truetype");
  font-weight: 100 900;
  font-style: italic;
  font-display: swap;
}

:root {
  --color-primary: #245A55; /* Forest */
  --color-accent: #ADE5D0; /* Teal */
  --color-expressive: #C7362F;
    --accent-peach: #FFAB91;       /* Peach/salmon */
  --color-bg: #ffffff;
  --color-text: #0f1a18;
}

html, body {
  margin: 0;
  padding: 0;
  font-family: "DM Sans Variable", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji";
  color: var(--color-text);
  background: var(--color-bg);
}

/* Paint the canvas (the overscroll/rubber-band area beyond the page) with the
   dark primary-theme colour so scrolling past the boundary shows dark, not white.
   Set on <html> only: the body keeps its own background so light-themed sections
   (mint/light/forest) still render correctly. */
html {
  background-color: #111918;
}

.container {
  width: min(1120px, 92vw);
  margin: 0 auto;
}

.eyebrow {
  letter-spacing: .08em;
  text-transform: uppercase;
  font-size: 12px;
  color: var(--color-primary);
}

.section-title { font-size: 32px; margin: 0 0 12px; }

.btn {
  display: inline-block;
  padding: 12px 18px;
  border-radius: 8px;
  text-decoration: none;
  font-weight: 600;
}
.btn--primary { background: var(--color-primary); color: #fff; }
.btn--secondary { background: var(--color-accent); color: #0b302e; }

/* The .button component (from the Tailwind layer) sets no cursor, so browsers
   fall back to the default arrow on <button> elements. Show the pointer. */
.button { cursor: pointer; }

/* Slogan/partners/call spacing is tuned in the templates for the homepage order
   (slogan directly before the call section). When the partners (logo_strip)
   section sits between the slogan and call, the slogan's homepage overlap drags
   partners up into the about section, and the transparent gap between the two
   dark sections shows the white page background. Keep the card floating in the
   MIDDLE of the boundary (as on the homepage) but make the two sections meet:
   symmetric negative margins ≈ half the card height centre the card on the seam
   with a tiny dark-over-dark overlap, so no white shows through. Also drop the
   call section's now-pointless top margin (it exists to clear the floating card
   on the homepage). Scoped via :has()/sibling selectors; homepage unaffected. */
/* Single source of truth for how far the floating slogan card overlaps its
   neighbours, so the card's pull-up and the partners section's clearance stay
   coupled — tune one value, not several scattered numbers. */
:root {
  --slogan-card-overlap: 6.5rem;
}

/* Centre the card on the about/partners boundary. Symmetric margins ≈ half the
   card height make the two dark sections meet (no white seam) with the card
   straddling the join. */
.slogan-section:has(+ #partners) {
  margin-top: calc(-1 * var(--slogan-card-overlap));
  margin-bottom: calc(-1 * var(--slogan-card-overlap));
}

/* The card dips one overlap into the top of the partners section; reserve that
   space (plus the section's own 4rem top padding) so the centred partners
   heading clears the card at every width — mirroring how the home page's call
   section reserves room for the same floating card. */
.slogan-section + #partners {
  padding-top: calc(4rem + var(--slogan-card-overlap));
}

#partners + .call-section {
  margin-top: 0;
}

.hero { position: relative; padding: 96px 0; overflow: hidden; }
.hero__bg-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .2; }
.hero__content { position: relative; }
.hero__title { font-size: 48px; line-height: 1.05; margin: 8px 0 12px; }
.hero__intro { font-size: 18px; max-width: 720px; }
.hero__actions { margin-top: 20px; display: flex; gap: 12px; }

.features { padding: 64px 0; }
.features__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.feature__icon { width: 48px; height: 48px; }
.feature__title { margin: 8px 0 6px; font-size: 18px; }
.feature__desc { margin: 0; color: #344; }

.text-image { padding: 64px 0; }
.text-image__grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 32px; align-items: center; }
.text-image__grid--reverse { grid-template-columns: 1fr 1.2fr; }
.text-image__img { width: 100%; height: auto; border-radius: 12px; }

.cta { padding: 72px 0; background: var(--color-accent); }
.cta__inner { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.cta__title { margin: 0; font-size: 28px; }
.cta__sub { margin: 6px 0 0; }

@media (max-width: 900px) {
  .features__grid { grid-template-columns: 1fr; }
  .text-image__grid { grid-template-columns: 1fr; }
  .cta__inner { flex-direction: column; align-items: start; }
}

/* Hero CTA Button Design */
.hero-cta {
  /* Dimensions */
  padding: 14px 32px 14px 48px;
  min-width: 160px;
  
  /* Typography */
  font-family: 'DM Sans', sans-serif;
  font-size: 15px;
  font-weight: 400;
  letter-spacing: 0.02em;
  text-transform: none;
  
  /* Colors */
  background: transparent;
  border: 1px solid #ADE5D0;
  color: #ADE5D0;
  
  /* Shape */
  border-radius: 24px;
  
  /* Layout */
  display: inline-flex;
  align-items: center;
  position: relative;
  
  /* Animation */
  transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
  
  /* Remove default button styles */
  outline: none;
}

/* Arrow icon */
.hero-cta::before {
  content: '↘';
  font-size: 18px;
  transition: transform 200ms ease;
  display: inline-block;
  position: absolute;
  left: 20px;
  top: 50%;
  transform: translateY(-50%);
}

/* Hover state */
.hero-cta:hover {
  background: rgba(173, 229, 208, 0.08);
  border-color: #C7E5DA;
  transform: translateY(-1px);
}

.hero-cta:hover::before {
  transform: translate(-2px, 2px);
}

/* Active/pressed state */
.hero-cta:active {
  transform: translateY(0);
  background: rgba(173, 229, 208, 0.12);
}

/* Focus state for accessibility */
.hero-cta:focus-visible {
  outline: 2px solid #ADE5D0;
  outline-offset: 2px;
}

/* Mobile styles */
@media (max-width: 768px) {
  .hero-cta {
    width: 100%;
    max-width: 280px;
    justify-content: center;
    margin: 0 auto;
    display: flex;
  }
}

/* Color Theme System */

/* Primary Theme - Dark Green */
.theme-primary {
  background-color: #111918;
  color: #ADE5D0;
}

.theme-primary .text-heading,
.theme-primary h1,
.theme-primary h2,
.theme-primary h3,
.theme-primary h4 {
  color: #ADE5D0;
}

.theme-primary .text-body,
.theme-primary p,
.theme-primary .text-secondary {
  color: #7FB5A6;
}

.theme-primary .accent-element {
  color: #245A55;
}

.theme-primary .card-bg {
  background: #0F1615;
  border-color: #1A2422;
}

/* Secondary Theme - Darker (background is now darker than Primary, as the name implies) */
.theme-secondary {
  background-color: #0D1413;
  color: #E8EFEE;
}

.theme-secondary .text-heading,
.theme-secondary h1,
.theme-secondary h2,
.theme-secondary h3,
.theme-secondary h4 {
  color: #E8EFEE;
}

.theme-secondary .text-body,
.theme-secondary p,
.theme-secondary .text-secondary {
  color: #9BB5B0;
}

.theme-secondary .accent-element {
  color: #ADE5D0;
}

.theme-secondary .card-bg {
  background: #0A0F0E;
  border-color: #1F2B29;
}

.theme-secondary .metric-value {
  color: #ADE5D0;
}

/* Emphasized metric uses the brand accent token so it stands out on-palette
   (teal) instead of the forest-green default that clashes with the peach theme. */
.metric-emphasis {
  color: var(--color-accent);
}

/* Keep the hero copy clear of the orb depending on its position:
   left orb  -> copy pushed right (mirrors the right-orb layout)
   center orb -> copy centered, with the orb dimmed to a glow behind it. */
.hero--orb-center {
  justify-content: center;
}
.hero--orb-center .hero-copy {
  text-align: center;
}
.hero--orb-center .hero-actions {
  justify-content: center;
}

@media (min-width: 768px) {
  .hero--orb-left {
    justify-content: flex-end;
  }
  .hero--orb-center .hero-orb-image {
    opacity: 0.4;
  }
}

/* Accent Theme - Peach/Orange */
.theme-accent {
  background: linear-gradient(135deg, #0F0A08 0%, #1A0F0B 50%, #0D0908 100%);
  color: #F4E6D7;
}

.theme-accent .text-heading,
.theme-accent h1,
.theme-accent h2,
.theme-accent h3,
.theme-accent h4 {
  color: #FFAB91;
}

.theme-accent .text-body,
.theme-accent p {
  color: #E8D4C4;
}

.theme-accent .text-secondary {
  color: #D4C0B0;
}

.theme-accent .text-text-primary {
  color: #FFAB91;
}

.theme-accent .text-text-secondary {
  color: #D4C0B0;
}

.theme-accent .accent-element,
.theme-accent .highlight {
  color: #FFAB91;
}

.theme-accent .card-bg {
  background: rgba(255, 171, 145, 0.08);
  border-color: rgba(255, 171, 145, 0.15);
}

.theme-accent .button-primary {
  background: #FFAB91;
  color: #1A0F0B;
  border-color: #FFAB91;
}

.theme-accent .button-primary:hover {
  background: #FF9E80;
  border-color: #FF9E80;
  color: #1A0F0B;
}

/* Service tiles in different themes */
.theme-primary .service-tile {
  background: #0F1615;
  border-color: #1A2422;
}

.theme-secondary .service-tile {
  background: #0A0F0E;
  border-color: #1F2B29;
}

.theme-accent .service-tile {
  background: rgba(255, 171, 145, 0.05);
  border-color: rgba(255, 171, 145, 0.15);
}

.theme-accent .service-tile:hover {
  background: rgba(255, 171, 145, 0.1);
  border-color: rgba(255, 171, 145, 0.25);
}

/* Comparison cards in accent theme */
.theme-accent .comparison-traditional {
  background: rgba(15, 10, 8, 0.8);
  border-color: rgba(255, 171, 145, 0.2);
  color: #D4C0B0;
}

.theme-accent .comparison-techco {
  background: linear-gradient(135deg, #FFAB91 0%, #FF8A65 100%);
  color: #1A0F0B;
}

.theme-accent .comparison-techco svg {
  color: #1A0F0B;
}

/* The Techco title sits on the filled card, so force it dark too (otherwise the
   theme's heading color would render it nearly invisible on the bright fill). */
.theme-accent .comparison-techco h3 {
  color: #1A0F0B;
}

/* Comparison cards — primary & secondary themes.
   Emphasis belongs to the Techco card: it gets the bright filled background with
   dark text (high contrast), while Traditional is muted with a quiet border so
   its `border-2` no longer reads as the highlighted option. */
.theme-primary .comparison-traditional,
.theme-secondary .comparison-traditional {
  background: #0F1615;
  border-color: #1F2B29;
  color: #7FB5A6;
}
.theme-primary .comparison-traditional h3,
.theme-secondary .comparison-traditional h3 {
  color: #9BB5B0;
}

.theme-primary .comparison-techco,
.theme-secondary .comparison-techco {
  background: linear-gradient(135deg, #ADE5D0 0%, #7FCBB5 100%);
  color: #0D1413;
}
.theme-primary .comparison-techco h3,
.theme-secondary .comparison-techco h3,
.theme-primary .comparison-techco svg,
.theme-secondary .comparison-techco svg {
  color: #0D1413;
}

/* Mobile Navigation Hamburger Button */
.hamburger-lines {
  width: 20px;
  height: 16px;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.hamburger-line {
  width: 100%;
  height: 2px;
  background-color: #9BB5B0;
  transition: all 0.3s ease;
  transform-origin: center;
  border-radius: 1px;
}

.hamburger-line:nth-child(1) {
  transform-origin: top left;
}

.hamburger-line:nth-child(3) {
  transform-origin: bottom left;
}

/* Mobile Menu Styles */
.mobile-menu {
  position: fixed;
  top: 0;
  right: -100%;
  width: 280px;
  height: 100vh;
  background: #0D1413;
  transition: right 0.3s ease;
  z-index: 40;
}

.mobile-menu.open {
  right: 0;
}

