/* Site chrome: the nav and footer shared by every page on the site.
 *
 * Extracted verbatim from metomic.css, which is where this design originated
 * and which still styles the bodies of /, /platform/ and /book-a-demo/. The
 * chrome rules were moved out rather than copied, so there is exactly one
 * definition of the nav and footer; metomic.css now loads alongside this file
 * on those three pages instead of duplicating it.
 *
 * What is deliberately NOT here: metomic.css's four global rules
 * (`*`, `html`, `body`, `h1`). This stylesheet loads on the 102 Webflow-export
 * pages too, and those rules would fight the Webflow bundle -- measured
 * against the homepage, adding the bundle's own resets moved h1 from 72px to
 * 54px and grew the page by 757px. Chrome-only resets are scoped below
 * instead.
 *
 * Tokens are likewise scoped to the chrome rather than :root: metomic.css and
 * the Webflow bundle both define `--black` and `--radius` with different
 * values, so declaring these globally would silently repaint Webflow pages.
 * Custom properties inherit, so descendants of .nav-wrap/.footer still see
 * them. Keep the values below in sync with metomic.css's :root.
 */

/* NOTE ON UNITS -- this file is intentionally in px, not rem.
 *
 * The chrome is shared by two page families that disagree about the root
 * font size. metomic.css (loaded only by /, /platform/ and /book-a-demo/)
 * sets html{font-size:16px} with 18px above 1919px and 15px below 991px;
 * the 102 Webflow-export pages and the Astro pages load no such rule and sit
 * at the browser default. Sizing the chrome in rem therefore rendered it
 * 12.5% larger on those three pages at a 1920px window -- same stylesheet,
 * different nav. px makes the chrome render identically everywhere, which is
 * the entire point of it being shared. Its own breakpoints below still handle
 * responsiveness.
 */

/* Self-hosted so the chrome carries no CDN dependency. The three hand-built
 * pages currently pull this face from api.fontshare.com; these .woff2 files
 * are already in the repo under public/fonts/ and are byte-identical faces.
 * Note the family name has a space -- the Webflow bundle registers the same
 * typeface as `Clashgrotesk`, which is a different family string. */
@font-face {
  font-family: 'Clash Grotesk';
  src: url('/fonts/ClashGrotesk-Regular.woff2') format('woff2');
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: 'Clash Grotesk';
  src: url('/fonts/ClashGrotesk-Medium.woff2') format('woff2');
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: 'Clash Grotesk';
  src: url('/fonts/ClashGrotesk-Variable.woff2') format('woff2');
  font-weight: 200 700;
  font-display: swap;
}

/* Design tokens, scoped -- see note above on why these are not on :root. */
.nav-wrap,
.footer {
  --black: #1a1a1a;
  --cream-light: #f7f7f7;
  --grey-light: #e5e3dd;
  --grey-dark: #5c5c5c;
  --purple: #614ab3;
  --lavender: #e2d7ff;
  --lilac: #c6b0ff;
  --midnight: #181718;
  --orange: #ff7e47;
  --orange-hover: #d5691b;
  --radius: 8px;
  --font-heading: 'Clash Grotesk', 'ClashGrotesk', sans-serif;
  --font-body: 'Inter', sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
}

/* Chrome-scoped reset. metomic.css gets these from its global `*` rule, which
 * this file cannot carry; without them the nav's lists inherit the host page's
 * UA margins and the Webflow bundle's content-box sizing. */
.nav-wrap,
.nav-wrap *,
.footer,
.footer * {
  box-sizing: border-box;
}
.nav-wrap ul,
.nav-wrap li,
.nav-wrap p,
.footer ul,
.footer li,
.footer p {
  margin: 0;
  padding: 0;
}
.nav-wrap ul,
.footer ul {
  list-style: none;
}

/* The footer markup wraps its grid in .container. The Webflow bundle defines
 * its own bare `.container` (3 rules), so this is scoped to the footer to
 * keep the two from colliding in either direction. */
.footer .container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 3%;
}

  /* ── Nav ─────────────────────────────── */
  .nav-wrap{
    position:sticky;top:0;z-index:50;
    background:rgba(247,247,247,.85);
    backdrop-filter:blur(12px);
    border-bottom:1px solid var(--grey-light);
  }
  .nav{
    display:flex;align-items:center;gap:40px;
    height:72px;max-width:1200px;margin:0 auto;padding:0 3%;
  }
  .nav-logo{color:var(--black);display:flex;align-items:center;}
  .nav-logo svg{width:126px;height:auto;display:block;}
  .nav-links{display:flex;gap:28px;list-style:none;flex:1;}
  /* The dropdown parents are <button>, not <a>: they open a menu, they do not
     navigate. They used to be <a href="/">, which meant clicking "Solutions"
     sent you to the homepage. The shared typography lives here so the button
     is visually indistinguishable from a real nav link. */
  .nav-links a,
  .nav-links .nav-drop-toggle{
    color:var(--black);text-decoration:none;font-size:13.5px;font-weight:500;
    display:inline-flex;align-items:center;gap:4.8px;padding:8px 0;
  }
  .nav-links .nav-drop-toggle{
    background:none;border:0;margin:0;font-family:inherit;line-height:inherit;
    cursor:pointer;
  }
  .nav-links a:hover,
  .nav-links .nav-drop-toggle:hover{color:var(--purple);}
  .nav-links .dropdown-chevron{width:12px;height:12px;display:flex;align-items:center;justify-content:center;}
  .nav-links .dropdown-chevron svg{width:100%;height:100%;transition:transform .2s ease;}

  /* ── Nav dropdowns (mirrors metomic.io) ── */
  .nav-links > li{position:relative;}
  .nav-drop{
    position:absolute;top:100%;left:-16px;padding-top:16px;
    opacity:0;visibility:hidden;transform:translateY(6px);
    transition:opacity .18s ease,transform .18s ease,visibility .18s;
    z-index:60;
  }
  .nav-item-drop.pull-right .nav-drop{left:auto;right:-16px;}
  /* Three ways a dropdown opens, in order of who needs them: hover (mouse),
     focus-within (keyboard, and the click-to-focus case when JS is off), and
     an explicit aria-expanded="true" set by nav.js so a click toggles it shut
     again. The first two work with no JavaScript at all. */
  .nav-item-drop:hover .nav-drop,
  .nav-item-drop:focus-within .nav-drop,
  .nav-item-drop .nav-drop-toggle[aria-expanded="true"] + .nav-drop{
    opacity:1;visibility:visible;transform:translateY(0);
  }
  .nav-item-drop:hover > :is(a, .nav-drop-toggle) .dropdown-chevron svg,
  .nav-item-drop:focus-within > :is(a, .nav-drop-toggle) .dropdown-chevron svg,
  .nav-item-drop > .nav-drop-toggle[aria-expanded="true"] .dropdown-chevron svg{
    transform:rotate(180deg);
  }
  .nav-item-drop:hover > :is(a, .nav-drop-toggle),
  .nav-item-drop:focus-within > :is(a, .nav-drop-toggle),
  .nav-item-drop > .nav-drop-toggle[aria-expanded="true"]{color:var(--purple);}

  /* When JS has taken over, a click that closes the menu must actually close
     it — otherwise the button still holds focus and :focus-within would keep
     it open, making the second click look like it did nothing. */
  .nav-js .nav-item-drop:focus-within .nav-drop-toggle[aria-expanded="false"] + .nav-drop{
    opacity:0;visibility:hidden;transform:translateY(6px);
  }
  .nav-drop-panel{
    background:#fff;border-radius:20px;
    box-shadow:0 8px 50px rgba(0,0,0,.09),0 2px 5px rgba(0,0,0,.06);
    padding:32px;
  }
  .nav-grid{display:grid;gap:16px 40px;}
  .nav-grid.solutions{grid-template-columns:max-content max-content;}
  .nav-grid.resources{grid-template-columns:max-content auto;}
  .nav-grid.single{grid-template-columns:max-content;}
  .nav-col{min-width:176px;}
  .nav-col.resource{min-width:352px;}
  .nav-eyebrow{
    display:block;font-size:12px;font-weight:500;letter-spacing:.02em;
    text-transform:uppercase;color:rgba(0,0,0,.5);margin-bottom:12px;
  }
  .nav-links .nav-dl{
    display:flex;align-items:center;gap:9.6px;
    color:rgba(0,0,0,.6);font-size:14px;font-weight:500;text-decoration:none;
    white-space:nowrap;padding:8px 0;transition:color .2s ease;
  }
  .nav-links .nav-dl:hover{color:var(--purple);}
  .nav-dl-ico{width:16px;height:16px;flex:none;display:flex;align-items:center;justify-content:center;color:inherit;}
  .nav-dl-ico svg{width:100%;height:100%;display:block;}
  .nav-divider{height:1px;background:var(--grey-light);margin:8px 0;}

  /* Featured resource cards */
  .nav-featured{display:flex;flex-direction:column;gap:16px;}
  .nav-links .nav-feat-card{
    display:flex;gap:12px;border-radius:10px;overflow:hidden;
    background:rgba(50,46,74,.05);text-decoration:none;transition:background .2s ease;
  }
  .nav-links .nav-feat-card:hover{background:rgba(50,46,74,.09);}
  .nav-feat-img{
    width:34%;max-width:128px;flex:none;display:flex;align-items:center;justify-content:center;
    background:linear-gradient(160deg,var(--purple),var(--lilac));
  }
  /* height:auto is load-bearing, not tidiness. scripts/image-dimensions.mjs
     stamps intrinsic width/height attributes onto every <img> in the built
     output for CLS, and the height attribute is a presentational hint that
     sets a used height — which wins over aspect-ratio, since aspect-ratio only
     derives the height when height is auto. Without this the featured covers
     render 98x628 instead of 98x55: a tall strip that blows the whole dropdown
     panel open. It only shows up in a real `npm run build`, never in dev. */
  .nav-feat-img img{width:82%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:4px;border:1px solid rgba(0,0,0,.08);}
  .nav-feat-body{flex:1;padding:14.4px;display:flex;flex-direction:column;justify-content:space-between;gap:9.6px;}
  .nav-feat-title{font-family:var(--font-heading);font-weight:500;font-size:14px;color:var(--black);line-height:1.3;}
  .nav-feat-more{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--black);}
  .nav-feat-more .arr{
    width:25.6px;height:25.6px;flex:none;border-radius:8px;background:rgba(50,46,74,.1);
    display:flex;align-items:center;justify-content:center;
  }
  .nav-feat-more .arr img{width:11.2px;height:auto;display:block;}

  /* Mobile accordion icons */
  .nav-mobile-group .nav-dl-ico{display:none;}
  .nav-actions{display:flex;align-items:center;gap:24px;}
  .nav-signin{color:var(--black);text-decoration:none;font-size:13.5px;font-weight:500;}
  .nav-signin:hover{color:var(--purple);}
  .btn{
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    font-family:var(--font-body);font-size:16px;font-weight:600;
    padding:14px 28px;border-radius:var(--radius);
    text-decoration:none;cursor:pointer;border:none;
    transition:background .15s ease,color .15s ease,border-color .15s ease;
  }
  .btn-primary{background:var(--orange);color:var(--black);}
  .btn-primary:hover{background:var(--orange-hover);color:#fff;}
  .btn-secondary{background:transparent;color:var(--black);border:1.5px solid var(--black);}
  .btn-secondary:hover{border-color:var(--purple);color:var(--purple);}
  .btn-nav{padding:10px 20px;font-size:15px;}
  .nav-burger{display:none;background:none;border:none;cursor:pointer;padding:8px;margin-left:4px;}
  .nav-burger span{display:block;width:22px;height:2px;background:var(--black);margin:5px 0;transition:transform .2s,opacity .2s;}
  #nav-toggle{display:none;}
  .nav-mobile{display:none;}
  @media (max-width:900px){
    .nav{gap:16px;height:64px;}
    .nav-links,.nav-signin{display:none;}
    .nav-actions{margin-left:auto;gap:12px;}
    .nav-burger{display:block;}
    .nav-logo svg{width:104.4px;}
    #nav-toggle:checked ~ .nav-mobile{display:block;}
    .nav-mobile{
      position:absolute;top:100%;left:0;right:0;
      background:var(--cream-light);border-bottom:1px solid var(--grey-light);
      padding:12px 5% 20px;box-shadow:0 20px 40px -20px rgba(24,23,24,.25);
    }
    .nav-mobile a{
      display:block;padding:14.4px 0;text-decoration:none;color:var(--black);
      font-size:17px;font-weight:500;border-bottom:1px solid var(--grey-light);
    }
    .nav-mobile a:last-child{border-bottom:none;color:var(--purple);}
    .nav-mobile details{border-bottom:1px solid var(--grey-light);}
    .nav-mobile summary{
      display:flex;align-items:center;justify-content:space-between;
      padding:14.4px 0;cursor:pointer;list-style:none;
      font-size:17px;font-weight:500;color:var(--black);
    }
    .nav-mobile summary::-webkit-details-marker{display:none;}
    .nav-mobile summary::after{
      content:"";width:8px;height:8px;
      border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;
      transform:rotate(45deg);transition:transform .15s ease;
    }
    .nav-mobile details[open] summary::after{transform:rotate(225deg);}
    .nav-mobile-group{padding:0 0 12px 12px;}
    .nav-mobile-group a{
      border-bottom:none;padding:8.8px 0;font-size:15px;font-weight:400;
      color:var(--grey-dark);
    }
    .nav-mobile-group a:last-child{color:var(--grey-dark);}
    #nav-toggle:checked ~ .nav .nav-burger span:nth-child(1){transform:translateY(7px) rotate(45deg);}
    #nav-toggle:checked ~ .nav .nav-burger span:nth-child(2){opacity:0;}
    #nav-toggle:checked ~ .nav .nav-burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
  }

  /* ── Footer ──────────────────────────── */
  .footer{
    background:var(--midnight);color:#b9b3c9;
    padding:72px 0 40px;
    border-top:1px solid rgba(198,176,255,.14);
  }
  .footer a{color:#b9b3c9;text-decoration:none;transition:color .15s ease;}
  .footer a:hover{color:#fff;}
  .footer-grid{
    display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr 1.2fr;
    gap:40px 32px;margin-bottom:56px;
  }
  .footer-brand{display:flex;flex-direction:column;align-items:flex-start;gap:20px;padding-right:24px;}
  .footer-logo{color:#fff;display:block;}
  .footer-logo svg{width:132px;height:auto;display:block;}
  .footer-tag{font-size:15px;line-height:1.6;color:#8a8494;}
  .footer-social{display:flex;gap:14.4px;}
  .footer-social a{
    width:32px;height:32px;border-radius:8px;
    display:flex;align-items:center;justify-content:center;
    background:rgba(255,255,255,.06);border:1px solid rgba(198,176,255,.15);
    color:#b9b3c9;
  }
  .footer-social a:hover{color:#fff;border-color:rgba(198,176,255,.4);}
  .footer-social svg{width:16px;height:16px;display:block;}
  .footer-badge{
    display:inline-flex;align-items:center;gap:8px;
    font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;
    color:var(--lavender);border:1px solid rgba(198,176,255,.3);
    border-radius:100px;padding:5.6px 12.8px;
  }
  .footer-badge .dot{width:7.2px;height:7.2px;border-radius:50%;background:#4ade80;}
  .footer-head{
    font-family:var(--font-mono);font-size:11px;font-weight:500;
    letter-spacing:.12em;text-transform:uppercase;color:var(--lilac);
    margin-bottom:17.6px;
  }
  .footer-col ul{list-style:none;display:flex;flex-direction:column;gap:10.4px;}
  .footer-col a{font-size:14px;line-height:1.4;}
  .footer-col ul.two-col{
    display:block;columns:2;column-gap:24px;
  }
  .footer-col ul.two-col li{margin-bottom:10.4px;break-inside:avoid;}
  .footer-bottom{
    display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;
    border-top:1px solid rgba(198,176,255,.12);padding-top:32px;
    font-size:13px;color:#8a8494;
  }
  .footer-legal{display:flex;gap:28px;}
  .footer-legal a{color:#8a8494;}
  @media (max-width:991px){
    .footer-grid{grid-template-columns:1fr 1fr;}
    .footer-brand{grid-column:1 / -1;padding-right:0;}
  }
  @media (max-width:600px){
    .footer{padding:56px 0 32px;}
    .footer-grid{grid-template-columns:1fr;gap:32px;}
    .footer-bottom{flex-direction:column;align-items:flex-start;}
  }

  /* ── Interior pages: active nav link ── */
  .nav-links a[aria-current="page"],
  .nav-mobile > a[aria-current="page"]{color:var(--purple);}

/* ── Logo-strip images stretched by a stale-CSS mismatch ──
 *
 * Nine solution/security pages carry a "trusted by" and an "integrations"
 * logo strip whose <img> tags rely on Webflow's auto-generated per-element
 * classes (image-10, image-11, image-16 through image-19) or, on several
 * logos, no class at all. Those classes have exactly one rule anywhere in
 * the site CSS bundle — a max-width:479px media query — so at every wider
 * viewport nothing constrains them.
 *
 * Without a CSS height, the browser falls back to the raw HTML height
 * attribute (e.g. height="240" on a logo whose CSS width gets capped to
 * ~128px by the generic `img{max-width:100%}` reset) — width and height end
 * up sized independently, and with object-fit's default of "fill" the logo
 * is stretched to exactly fill that mismatched box rather than scaled
 * proportionally. Confirmed by measuring the live DOM: a 934x240 logo
 * rendered at 128x240, aspect ratio 3.89 collapsed to 0.53.
 *
 * These nine pages were scraped at a different time than the current CSS
 * bundle. Live's own current markup for this section uses different classes
 * that ARE defined — checked directly against www.metomic.io — so this is
 * page content lagging behind a site redesign, not a Webflow bug live
 * happens to dodge.
 *
 * Fixed at the CONTAINER rather than by naming every stale class, because
 * one of the nine logos (modernhealth, on data-discovery at least) carries
 * no class at all and would otherwise be missed entirely — confirmed
 * distorted (1136x147 native, rendered 128x204) until this rule was widened
 * to catch it. `.bullet-card.logo-strip-full-width-card` and
 * `.bullet-card.integrations-full-width-card` are the two container classes
 * common to all nine pages; both are dedicated to exactly one purpose each
 * (a client-logo strip, a product-integration grid), so scoping to `img`
 * inside them cannot catch an unrelated image.
 *
 * Verified against the live DOM: all 36 logo images across both sections on
 * /solution/data-discovery/ render at their native aspect ratio after this
 * rule, versus 0 before it.
 */
.bullet-card.logo-strip-full-width-card img,
.bullet-card.integrations-full-width-card img {
  height: auto;
  object-fit: contain;
}

/* ── The same stretching bug as the logo strip above, but far wider ──
 *
 * Reported against /solution/data-discovery/'s hero product screenshot:
 * blurry, vertically stretched, matching a reference of the same page that
 * renders correctly. Measured live: a 940x592 (density-adjusted) image
 * rendered at 526x920 — aspect ratio 1.59 collapsed to 0.57.
 *
 * Root cause, confirmed by injecting each candidate rule into the live DOM
 * and re-measuring before writing anything here: any class that sets a CSS
 * `width` (fixed or %) without ALSO setting `height` or `aspect-ratio`. With
 * no CSS height, the browser does not fall back to auto-scaling by the
 * image's intrinsic ratio — it uses the raw HTML `height` ATTRIBUTE as a
 * hard pixel value, sized completely independently of the CSS-computed
 * width. Two unrelated numbers end up describing one box.
 *
 * This is NOT limited to one page or one component family. Scanned every
 * public/** page's <img class> against every base (non-media-query) rule in
 * the CSS bundle for exactly this width-without-height combination:
 *
 *   27 distinct classes, 629 <img> tags, 78 of 108 pages
 *
 * Spanning hero product screenshots (_2-graph-cards, _3-graph-cards,
 * top-section-2-imgs), the G2 review badge (on 69 pages), industry-page
 * graphics, integration logos, and a couple of profile photos.
 *
 * `height: auto` is enough on its own, and unconditionally safe here:
 * every class in this list has NO competing height rule anywhere in the
 * bundle (that is the scan's selection criterion), so this can only replace
 * "wrong, raw-attribute-driven height" with "correct, ratio-preserving
 * height" -- there is no case among these 27 where the current behaviour is
 * intentional. Confirmed on the one likely exception, a broken (0x0,
 * failed-to-load) event host photo: box went from an absurd 80x500 to a
 * sane 80x80 square, not worse.
 *
 * Element-scoped (`img.foo`, not bare `.foo`) because a few of these names
 * are generic enough (`width-100`, `feature__icon`) to plausibly be reused
 * on non-image elements elsewhere, where this rule has no business applying.
 */
img._2-graph-cards---card-left,
img._2-graph-cards---card-right,
img._3-graph-cards---card-bottom,
img._3-graph-cards---card-middle,
img.compact-logos_logo,
img.customer-logo-container,
img.ds2-hero-aws_planet,
img.ds2-industry-header_graphic-image,
img.event-host-profile-image,
img.feature__icon,
img.features-icon-top-card---bg-banner,
img.for-badge,
img.hero-image,
img.hero-img-2,
img.hero_g2-badge,
img.home_floating-img,
img.image-28,
img.img-right_bottom,
img.integration-img-bottom,
img.integration-img-bottom-2,
img.integration-img_right-bottom,
img.integration-logo,
img.integrations-hero_logo,
img.metomic-ms,
img.testimonial-card_square_logo-metomic,
img.top-section-2-imgs---img-large,
img.width-100 {
  height: auto;
}
