/* ==========================================================================
   19. Services page — wheel section + alternating detail rows
   ========================================================================== */
/* +50px under hero title (“from first sketch…”) before the wheel infographic */
.srv-wheel-sec { padding-block: 1.5rem !important; position: relative; margin-top: -300px; }
.srv-wheel-sec .swheel { margin-top: 0; }
.srv-rows-sec { padding-top: 0; padding-bottom: var(--sp-12); }
@media (max-width: 47.99rem) { .srv-wheel-sec { margin-top: 100px; padding-top: 0 !important; } }
@media (min-width: 48rem) and (max-width: 63.99rem) { .srv-wheel-sec { margin-top: -130px; } }
@media (min-width: 64rem) { .srv-wheel-sec { margin-top: -400px; } }

/* Technology page — orbit under hero (same rhythm as services wheel) */
.tech-orbit-sec { padding-block: 1.5rem !important; position: relative; margin-top: -350px; z-index: 2; }
.tech-orbit-sec .techorbit { margin-top: 0; }
.tech-rows-sec { padding-top: var(--sp-4); }
@media (max-width: 47.99rem) { .tech-orbit-sec { margin-top: 50px; padding-top: 0 !important; } }
@media (min-width: 48rem) and (max-width: 63.99rem) { .tech-orbit-sec { margin-top: -180px; } }
@media (min-width: 64rem) { .tech-orbit-sec { margin-top: -450px; } }
.srv-rows-sec .container { display: flex; flex-direction: column; gap: var(--sp-8); }

.srv-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-5);
  align-items: center;
  padding: var(--sp-6) 0;
  border-top: 1px solid var(--border-soft);
}
.srv-row:first-child { border-top: 0; }
.srv-row__media {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--sp-3);
  min-height: 220px;
  padding: var(--sp-6);
  border-radius: var(--radius-xl);
  background: linear-gradient(160deg, color-mix(in srgb, var(--acc-c, var(--elyon-blue)) 16%, #fff), #fff 78%);
  border: 1px solid var(--border-soft);
  overflow: hidden;
}
.srv-row__num {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(3.5rem, 9vw, 5.5rem); line-height: 0.8;
  color: color-mix(in srgb, var(--acc-c, var(--elyon-blue)) 40%, transparent);
}
.srv-row__ic {
  display: inline-flex; align-items: center; justify-content: center;
  width: 64px; height: 64px; border-radius: 50%;
  background: #fff; border: 3px solid var(--acc-c, var(--elyon-blue));
  color: var(--acc-c, var(--elyon-blue));
  box-shadow: 0 8px 20px -8px color-mix(in srgb, var(--acc-c) 60%, transparent);
}
.srv-row__ic svg { width: 28px; height: 28px; }
.srv-row__tag {
  align-self: flex-start;
  font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--acc-c, var(--elyon-blue));
  padding: 5px 12px; border-radius: 999px;
  background: color-mix(in srgb, var(--acc-c) 12%, #fff);
  border: 1px solid color-mix(in srgb, var(--acc-c) 30%, transparent);
}
.srv-row__body { display: flex; flex-direction: column; gap: var(--sp-3); }
.srv-row__title {
  font-family: var(--font-display); font-weight: 400; text-transform: uppercase;
  font-size: clamp(1.75rem, 4vw, 2.5rem); line-height: 0.96; color: var(--elyon-ink);
}
.srv-row__text { font-size: 1rem; line-height: 1.6; color: var(--text-muted); max-width: 54ch; }
.srv-row__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.srv-chip {
  font-family: var(--font-body); font-size: 0.8rem; color: var(--text-strong);
  padding: 5px 12px; border-radius: 999px;
  background: var(--surface-sunken); border: 1px solid var(--border-soft);
}
.srv-row__tools {
  font-family: var(--font-mono); font-size: 0.75rem; letter-spacing: 0.08em;
  color: var(--text-faint); text-transform: uppercase;
}

@media (min-width: 48rem) {
  .srv-row { grid-template-columns: 1fr 1fr; gap: var(--sp-8); }
  .srv-row--rev .srv-row__media { order: 2; }
  .srv-row--rev .srv-row__body { order: 1; }
  .srv-row__media { min-height: 260px; }
}

/* ==========================================================================
   Elyon IoT — Shared stylesheet
   Mobile-first · design-system tokens · BEM naming · min-width media queries
   Sections:  1 Fonts  2 Tokens  3 Reset  4 Layout  5 Buttons  6 Header
              7 Off-canvas menu  8 Hero  9 Sections 10 Bento 11 Products
             12 Technology 13 Why 14 CTA 15 Footer 16 Motion/reveal 17 Utilities
   ========================================================================== */

/* ---- 1. Fonts ----------------------------------------------------------- */
@font-face {
  font-family: "Bebas Neue";
  src: url("../fonts/BebasNeue-Regular.ttf") format("truetype");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Fira Sans";
  src: url("../fonts/FiraSans-Light.ttf") format("truetype");
  font-weight: 300; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Fira Sans";
  src: url("../fonts/FiraSans-Regular.ttf") format("truetype");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Fira Sans";
  src: url("../fonts/FiraSans-Italic.ttf") format("truetype");
  font-weight: 400; font-style: italic; font-display: swap;
}
@font-face {
  font-family: "Fira Mono";
  src: url("../fonts/FiraMono-Medium.ttf") format("truetype");
  font-weight: 500; font-style: normal; font-display: swap;
}

/* ---- 2. Tokens ---------------------------------------------------------- */
:root {
  /* Brand core */
  --elyon-ink: #121723;
  --elyon-neutral: #F5F7FF;
  --elyon-copper: #8A5E4C;
  --elyon-blue: #6C97FF;
  --elyon-copper-lt: #E2BCB1;
  --elyon-copper-dk: #8A5D4B;
  --elyon-blue-lt: #8DAEFF;

  /* Surfaces */
  --surface-page: var(--elyon-neutral);
  --surface-card: #FFFFFF;
  --surface-sunken: #ECEFFA;
  --surface-ink: var(--elyon-ink);
  --surface-ink-2: #1B2233;

  /* Text */
  --text-strong: var(--elyon-ink);
  --text-body: #283047;
  --text-muted: #5A647F;
  --text-faint: #8A93AB;
  --text-on-ink: var(--elyon-neutral);
  --text-on-ink-muted: #A7B0C9;

  /* Lines */
  --border-soft: #DDE3F2;
  --border-strong: #C2CAE0;
  --border-on-ink: rgba(245, 247, 255, 0.12);

  /* Semantic */
  --positive: #2E9E6B;

  /* Gradients */
  --gradient-button: linear-gradient(251deg, #8DAEFF 0%, #E2BCB1 100%);
  --gradient-copper: linear-gradient(180deg, #E2BCB1 0%, #8A5D4B 100%);

  /* Fonts */
  --font-display: "Bebas Neue", "Arial Narrow", sans-serif;
  --font-body: "Fira Sans", system-ui, -apple-system, sans-serif;
  --font-mono: "Fira Mono", "SF Mono", ui-monospace, monospace;

  /* Fluid type scale */
  --fs-display-xl: clamp(2.5rem, 7.2vw, 4.563rem);   /* hero H1 ~40→73 */
  --fs-display-lg: clamp(2.25rem, 5.5vw, 3.625rem);  /* section H2 ~36→58 */
  --fs-display-md: clamp(1.875rem, 4vw, 2.5rem);     /* ~30→40 */
  --fs-menu:       clamp(1.9rem, 4.6vw, 3.15rem);   /* off-canvas links, -10% */
  --fs-lead:       clamp(1rem, 1.6vw, 1.125rem);     /* lead paragraphs */

  /* Spacing scale */
  --sp-1: 0.25rem; --sp-2: 0.5rem; --sp-3: 0.75rem; --sp-4: 1rem;
  --sp-5: 1.5rem;  --sp-6: 2rem;   --sp-8: 3rem;     --sp-10: 4rem;
  --sp-12: 6rem;

  /* Shape */
  --radius-sm: 12px; --radius-md: 16px; --radius-lg: 22px; --radius-xl: 24px;
  --radius-pill: 999px;

  /* Shadows (navy-tinted) */
  --shadow-sm: 0 6px 18px rgba(18, 23, 35, 0.08);
  --shadow-md: 0 10px 24px rgba(18, 23, 35, 0.08);
  --shadow-lg: 0 18px 44px rgba(18, 23, 35, 0.10);

  /* Motion */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --container: 1200px;
  --header-h: 76px;

  /* Consistent gap on each side of a section-divider hairline (whole site). */
  --divider-gap: 80px;

  /* Tech orbit: how far NFC & LoRaWAN tiles pull toward the centre EL logo.
     Tweak this one value to taste (e.g. 20px, 40px). */
  --tech-top-pull: 30px;

  /* Reusable accent palette (icon fg + soft bg) */
  --acc-id-c: #5795BC;   --acc-id-bg: linear-gradient(135deg, #EDF8FD, #D6EEF9);
  --acc-event-c: #C08A5E; --acc-event-bg: linear-gradient(135deg, #FDF2E9, #F8E1CE);
  --acc-menu-c: #B3953F;  --acc-menu-bg: linear-gradient(135deg, #FEF9EC, #F8EDCF);
  --acc-auth-c: #63A467;  --acc-auth-bg: linear-gradient(135deg, #F0FBEF, #DBF3DA);
  --acc-checkin-c: #C46B96; --acc-checkin-bg: linear-gradient(135deg, #FDEFF6, #F7DCEA);
  --acc-assets-c: #5E6BC8;  --acc-assets-bg: linear-gradient(135deg, #EEF0FF, #DCE1FB);
}

/* ---- 3. Reset ----------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
html, body { overflow-x: hidden; max-width: 100%; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-weight: 400;
  color: var(--text-body);
  background: var(--surface-page);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, p, figure, ul, ol { margin: 0; }
ul, ol { padding: 0; list-style: none; }
img, svg { display: block; max-width: 100%; }
a { color: var(--elyon-blue); text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
:focus-visible { outline: 2px solid var(--elyon-blue); outline-offset: 2px; }

/* ---- 4. Layout ---------------------------------------------------------- */
.container {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--sp-5);
}
.section { padding-block: var(--sp-10); }
.section--flush-top { padding-top: 0; }
.section__head {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--sp-4);
  margin-bottom: var(--sp-8);
}
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  font-family: var(--font-mono);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.eyebrow::before {
  content: "";
  width: 7px; height: 7px;
  border-radius: var(--radius-pill);
  background: var(--elyon-blue);
}
.eyebrow--copper::before { background: var(--elyon-copper); }
.badge {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.375rem 0.875rem;
  border-radius: var(--radius-pill);
}
.badge--blue { color: var(--elyon-blue); background: rgba(108, 151, 255, 0.12); }
.badge--copper { color: var(--elyon-copper); background: rgba(138, 94, 76, 0.10); }
.h2 {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: var(--fs-display-lg);
  line-height: 0.94;
  letter-spacing: 0.01em;
  color: var(--elyon-ink);
}
.h2__link { color: inherit; text-decoration: none; }
.h2__link:hover .u-soft { color: var(--elyon-blue); }
.h2 .u-blue { color: var(--elyon-blue); }
.h2 .u-ink { color: var(--elyon-ink); }
.h2 .u-soft { color: #55618A; }
.h2 .u-copper { color: var(--elyon-copper); }
.lead {
  font-weight: 300;
  font-size: var(--fs-lead);
  line-height: 1.6;
  color: var(--text-muted);
  max-width: 46ch;
}

/* ---- 5. Buttons --------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-2);
  font-family: var(--font-mono);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.75rem 1.375rem;
  border-radius: var(--radius-pill);
  border: 1px solid transparent;
  transition: transform 0.24s var(--ease-out), box-shadow 0.24s var(--ease-out), opacity 0.24s var(--ease-out);
}
.btn--primary { color: var(--elyon-ink); background: var(--gradient-button); }
.btn--primary:hover { transform: translateY(-1px); box-shadow: 0 8px 24px rgba(108, 151, 255, 0.35); }
.btn--inverse { color: var(--text-on-ink); background: transparent; border-color: var(--border-on-ink); }
.btn--inverse:hover { background: rgba(245, 247, 255, 0.08); }
.btn:active { transform: scale(0.98); }

/* ---- 6. Header ---------------------------------------------------------- */
.site-header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 80;
  background: transparent;
  border-bottom: 1px solid transparent;
  transition: background 0.35s ease, border-color 0.35s ease;
}
.site-header.is-scrolled {
  background: rgba(245, 247, 255, 0.4);
  backdrop-filter: blur(18px) saturate(1.5);
  -webkit-backdrop-filter: blur(18px) saturate(1.5);
  border-bottom-color: rgba(18, 23, 35, 0.06);
}
.site-header__inner {
  position: relative;
  max-width: var(--container);
  margin-inline: auto;
  min-height: var(--header-h);
  padding: 0.75rem var(--sp-5);
  display: flex;
  align-items: center;
  gap: var(--sp-4);
}
.brand {
  position: absolute;
  left: var(--sp-5);
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
}
.brand__logo {
  height: 24px; width: auto;
  opacity: 0;
  transition: opacity 0.45s ease;
}
.site-header.is-scrolled .brand__logo { opacity: 1; }
.header-actions {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.875rem;
}
.header-actions__chat { transition: opacity 0.3s ease; }
.burger {
  position: relative;
  z-index: 81;
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 46px; height: 46px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--border-strong);
  background: rgba(255, 255, 255, 0.65);
  transition: background-color 0.3s ease, border-color 0.3s ease;
}
.burger__line {
  display: block;
  width: 18px; height: 2px;
  background: var(--elyon-ink);
  border-radius: 2px;
  transition: transform 0.35s var(--ease-out), background-color 0.35s ease;
}
/* open state (menu active) */
.is-menu-open .burger { background: transparent; border-color: rgba(245, 247, 255, 0.4); }
.is-menu-open .burger__line { background: var(--elyon-neutral); }
.is-menu-open .burger__line--1 { transform: translateY(3.5px) rotate(45deg); }
.is-menu-open .burger__line--2 { transform: translateY(-3.5px) rotate(-45deg); }
.is-menu-open .header-actions__chat { animation: chat-in 0.5s ease 0.7s both; }
@keyframes chat-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }

/* ---- 7. Off-canvas menu ------------------------------------------------- */
.menu {
  position: fixed;
  inset: 0;
  z-index: 70;
  pointer-events: none;
}
.menu.is-open { pointer-events: auto; }
.menu__bg {
  position: absolute;
  inset: 0;
  background: #FFFFFF;
  clip-path: circle(0% at var(--ox, calc(100% - 47px)) var(--oy, 44px));
  transition: clip-path 0.6s cubic-bezier(0.86, 0, 0.07, 1), background-color 0.5s ease 0.34s;
}
.menu.is-open .menu__bg {
  clip-path: circle(150% at var(--ox, calc(100% - 47px)) var(--oy, 44px));
  background-color: var(--elyon-ink);
}
/* pattern painted INTO the bg so the same clip-path reveals/hides it in sync
   with the circle — no separate fade that lags on close (the "patch") */
.menu__bg::after {
  content: "";
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: 40%;
  background: url("../img/pattern-circuit.jpg") right bottom / auto 80% no-repeat;
  opacity: 0;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 55%);
  mask-image: linear-gradient(90deg, transparent 0%, #000 55%);
  pointer-events: none;
  transition: opacity 0.01s;
}
.menu.is-open .menu__bg::after { opacity: 0.5; transition: opacity 0.8s ease 1.4s; }
.menu__inner {
  position: relative;
  height: 100%;
  display: flex;
  flex-direction: column;
  padding: calc(var(--header-h) + var(--sp-5)) var(--sp-6) 32px;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0s linear 0.3s;
}
.menu.is-open .menu__inner {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.3s ease 0.34s, visibility 0s;
}
.menu__logo-link {
  /* Same centered EL mark as the page hero — sits above the menu links */
  position: relative;
  z-index: 5;
  display: flex;
  justify-content: center;
  align-items: center;
  align-self: center;
  flex: none;
  width: 100%;
  margin: 0 auto var(--sp-5);
  opacity: 0;
  transform: translateY(12px);
  will-change: opacity, transform;
}
.menu.is-open .menu__logo-link {
  pointer-events: auto;
}
.menu__logo {
  height: 110px;
  width: auto;
  display: block;
  filter: drop-shadow(0 6px 14px rgba(18, 23, 35, 0.10));
}
.menu__mid {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: var(--sp-4);
  min-height: 0;
  overflow-y: auto;
}
.menu__links {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  /* Mobile: push nav links down toward the bottom */
  flex: 1;
  justify-content: flex-end;
  padding-bottom: 0.25rem;
}
.menu__link {
  font-family: var(--font-display);
  font-size: clamp(1.65rem, 7.5vw, 2.15rem);
  line-height: 1.08;
  text-transform: uppercase;
  color: var(--text-on-ink);
  display: inline-flex;
  align-items: flex-start;
  transition: color 0.35s ease;
}
.menu__link:hover { color: var(--elyon-copper-lt); }
.menu__arrow {
  display: inline-block;
  font-family: var(--font-body);
  font-size: 0.3em;
  line-height: 1;
  margin-left: 0.3em;
  margin-top: 0.28em;
  color: var(--elyon-copper-lt);
  transition: transform 0.3s ease;
}
.menu__link:hover .menu__arrow { transform: translateX(5px); }

/* accordion inside the menu */
.acc { display: flex; flex-direction: column; }
.acc__panel {
  overflow: hidden;
  height: 0;
}
.acc.is-open .menu__arrow { transform: rotate(90deg); }
.acc__chips {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.4rem;
  padding: 0.5rem 0 0.65rem;
}
.chip {
  position: relative;
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: 0.45rem;
  padding: 0.7rem 0.85rem;
  min-width: 0;
  min-height: 44px;
  border-radius: 12px;
  overflow: hidden;
  background: rgba(245, 247, 255, 0.03);
  border: 1px solid rgba(245, 247, 255, 0.08);
  color: var(--text-on-ink);
  font-size: 0.8125rem;
  line-height: 1.2;
  transition: background 0.24s ease, transform 0.24s var(--ease-out);
}
/* cursor-following line glow on the border (copper highlighter) */
.chip::before {
  content: "";
  position: absolute; inset: 0;
  border-radius: inherit;
  padding: 1.5px;
  background: radial-gradient(90px circle at var(--mx, 50%) var(--my, 50%),
    rgba(255, 246, 240, 1), rgba(226, 188, 177, 0.9) 26%, rgba(138, 94, 76, 0.35) 52%, transparent 72%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.3s var(--ease-out);
  pointer-events: none;
}
.chip:hover::before { opacity: 1; }
.chip > * { position: relative; z-index: 1; }
.chip:hover {
  transform: translateY(-2px);
  background: rgba(245, 247, 255, 0.06);
}
.chip__icon {
  display: inline-flex;
  flex: none;
  color: #FFFFFF;
}
.chip__icon svg { width: 16px; height: 16px; }
.chip__label { min-width: 0; }
.chip__label .u-caps { text-transform: uppercase; }

/* Off-canvas footer: copyright only, centered (all breakpoints) */
.menu__foot {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0;
  flex: none;
  border-top: 1px solid rgba(245, 247, 255, 0.14);
  padding-top: 1.1rem;
  margin-top: var(--sp-4);
  opacity: 0;
  text-align: center;
}
.menu__foot .social { display: none !important; }
.menu__tagline {
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-on-ink-muted);
  text-align: center;
  width: 100%;
}
.menu__tagline-rest { display: none; }
.social { display: flex; gap: var(--sp-3); }
.social__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px; height: 38px;
  border-radius: var(--radius-pill);
  border: 1px solid rgba(245, 247, 255, 0.18);
  color: var(--elyon-neutral);
  transition: color 0.24s ease, border-color 0.24s ease;
}
.social__link:hover { color: var(--elyon-blue); border-color: var(--elyon-blue); }

/* menu reveal choreography (added when open) */
.menu__links > *,
.menu__logo-link,
.menu__foot { will-change: opacity, transform; }
.menu.is-open .menu__links > * {
  animation: menu-in 0.5s var(--ease-out) forwards;
  opacity: 0; transform: translateY(18px);
}
.menu.is-open .menu__links > :nth-child(1) { animation-delay: 0.68s; }
.menu.is-open .menu__links > :nth-child(2) { animation-delay: 0.77s; }
.menu.is-open .menu__links > :nth-child(3) { animation-delay: 0.86s; }
.menu.is-open .menu__links > :nth-child(4) { animation-delay: 0.95s; }
.menu.is-open .menu__links > :nth-child(5) { animation-delay: 1.04s; }
.menu.is-open .menu__links > :nth-child(6) { animation-delay: 1.13s; }
.menu.is-open .menu__logo-link { animation: menu-in 0.55s ease 0.5s forwards; }
.menu.is-open .menu__foot { animation: menu-in 0.5s ease 1.18s forwards; }
@keyframes menu-in { to { opacity: 1; transform: none; } }

/* ---- 8. Hero ------------------------------------------------------------ */
.hero {
  position: relative;
  overflow: hidden;
  min-height: 100vh;
  padding-top: var(--header-h);
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
}
.hero__bg {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(880px 620px at 10% 18%, rgba(249, 214, 231, 0.60), transparent 65%),
    radial-gradient(800px 560px at 88% 14%, rgba(250, 229, 209, 0.55), transparent 64%),
    radial-gradient(900px 620px at 50% 56%, rgba(250, 240, 208, 0.42), transparent 66%),
    radial-gradient(760px 540px at 14% 88%, rgba(217, 244, 215, 0.55), transparent 64%),
    radial-gradient(820px 580px at 84% 86%, rgba(211, 238, 250, 0.60), transparent 65%),
    linear-gradient(180deg, #FFFDFE 0%, #FBFDFE 62%, #EAF4FB 100%);
  filter: blur(2px);
}
.hero__head { position: relative; padding: var(--sp-5) var(--sp-5) 0; }
.hero__logo {
  height: 110px; width: auto;
  margin: 0 auto var(--sp-6);
  filter: drop-shadow(0 6px 14px rgba(18, 23, 35, 0.10));
  transition: opacity 0.45s ease;
  will-change: transform;
}
.hero.is-logo-hidden .hero__logo { opacity: 0; }
.hero__title {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: var(--fs-display-xl);
  line-height: 0.92;
  letter-spacing: 0.01em;
  color: var(--elyon-ink);
  margin-top: var(--sp-5);
}
.hero__title-blue {
  color: var(--elyon-ink);
  -webkit-text-fill-color: var(--elyon-ink);
}
.hero__title-soft {
  color: #55618A;
  -webkit-text-fill-color: #55618A;
}
.hero .eyebrow::before { background: var(--elyon-ink); }
.hero__tagline {
  position: relative;
  margin: var(--sp-8) auto 0;
  max-width: 40ch;
  padding: 0 var(--sp-5);
  font-weight: 300;
  font-size: 1.0625rem;
  color: var(--text-muted);
}

/* glass marquee card */
.glass-wrap {
  position: relative;
  width: 100%;
  max-width: 374px;
  margin: var(--sp-8) auto 0;
  padding-inline: var(--sp-5);
}
.glass {
  position: relative;
  padding: 1.125rem 1rem 1rem;
  border-radius: var(--radius-lg);
  border: 1px solid rgba(255, 255, 255, 0.85);
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.52), rgba(255, 255, 255, 0.20));
  backdrop-filter: blur(22px) saturate(1.7);
  -webkit-backdrop-filter: blur(22px) saturate(1.7);
  box-shadow: 0 18px 44px rgba(18, 23, 35, 0.10), inset 0 1px 0 rgba(255, 255, 255, 0.9);
}
.glass::before, .glass::after {
  content: "";
  position: absolute;
  border-radius: var(--radius-pill);
  z-index: -1;
}
.glass::before {
  left: -52px; top: -34px; width: 160px; height: 160px;
  background: radial-gradient(circle, rgba(108, 151, 255, 0.38), transparent 70%);
}
.glass::after {
  right: -44px; bottom: -38px; width: 180px; height: 180px;
  background: radial-gradient(circle, rgba(226, 188, 177, 0.55), transparent 70%);
}
.glass__title {
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--text-muted);
  text-align: center;
  margin-bottom: 0.625rem;
}
.marquee {
  height: 174px;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0 0.875rem;
  scroll-snap-type: y mandatory;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  touch-action: pan-y;
  -webkit-mask-image: linear-gradient(transparent, #000 16%, #000 84%, transparent);
  mask-image: linear-gradient(transparent, #000 16%, #000 84%, transparent);
  scrollbar-width: none;
}
.marquee::-webkit-scrollbar { display: none; }
.marquee__track {
  display: flex;
  flex-direction: column;
  padding-block: 62px;
}
.marquee__item {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  height: 50px;
  margin-bottom: 8px;
  padding: 0 1.375rem 0 1.0625rem;
  border-radius: var(--radius-pill);
  scroll-snap-align: center;
  align-self: center;
  width: 85%;
  background: rgba(255, 255, 255, 0.30);
  border: 1px solid rgba(255, 255, 255, 0.55);
  opacity: 0.72;
  transition: all 0.45s var(--ease-out);
}
.marquee__item--active {
  width: 100%;
  background: #FFFFFF;
  border-color: #FFFFFF;
  box-shadow: 0 10px 26px rgba(18, 23, 35, 0.14);
  opacity: 1;
}
.marquee__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border-radius: var(--radius-pill);
  flex: none;
  background: var(--acc-bg, var(--acc-id-bg));
  color: var(--acc-c, var(--acc-id-c));
}
.marquee__name {
  flex: 1;
  font-size: 0.9375rem;
  font-weight: 400;
  color: rgba(18, 23, 35, 0.55);
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: color 0.45s var(--ease-out), font-weight 0.45s var(--ease-out);
}
.marquee__item--active .marquee__name { color: var(--elyon-ink); font-weight: 500; }
.marquee__tag {
  font-family: var(--font-mono);
  font-size: 0.5625rem;
  letter-spacing: 0.14em;
  color: rgba(18, 23, 35, 0.35);
  flex: none;
}
.marquee__go { font-size: 1.125rem; line-height: 1; flex: none; color: var(--acc-c, var(--acc-id-c)); }

/* accent palette bindings */
.acc-id { --acc-c: var(--acc-id-c); --acc-bg: var(--acc-id-bg); --chip-c: var(--acc-id-c); }
.acc-event { --acc-c: var(--acc-event-c); --acc-bg: var(--acc-event-bg); --chip-c: var(--acc-event-c); }
.acc-menu { --acc-c: var(--acc-menu-c); --acc-bg: var(--acc-menu-bg); --chip-c: var(--acc-menu-c); }
.acc-auth { --acc-c: var(--acc-auth-c); --acc-bg: var(--acc-auth-bg); --chip-c: var(--acc-auth-c); }
.acc-checkin { --acc-c: var(--acc-checkin-c); --acc-bg: var(--acc-checkin-bg); --chip-c: var(--acc-checkin-c); }
.acc-assets { --acc-c: var(--acc-assets-c); --acc-bg: var(--acc-assets-bg); --chip-c: var(--acc-assets-c); }

/* ---- 9. Sections shared ------------------------------------------------- */
.section--solutions {
  padding-block: var(--sp-12) var(--sp-6);
  /* continues the hero's BOTTOM blooms (green-left, blue-right) across the seam,
     then fades to page — hero→solutions reads as one continuous ground */
  background:
    radial-gradient(780px 440px at 14% -9%, rgba(217, 244, 215, 0.55), transparent 60%),
    radial-gradient(840px 460px at 84% -11%, rgba(211, 238, 250, 0.60), transparent 60%),
    linear-gradient(180deg, #EAF4FB 0%, var(--surface-page) 42%);
}
.section--products { padding-block: var(--sp-6) var(--divider-gap); }
.section--products .section__head { margin-bottom: var(--sp-8); }
.section--products .products { margin-bottom: 10px; }
/* technology: tighter top + hairline divider (inside container width) from products above.
   Bottom carries Services' TOP blooms (pink-left, copper-right) so tech->services is seamless. */
.section--tech {
  padding-top: var(--sp-5);
  padding-bottom: 0;
  background: var(--surface-page);
}
.section--tech > .container { border-top: 1px solid var(--border-soft); border-bottom: 1px solid var(--border-soft); padding-top: var(--divider-gap); padding-bottom: var(--divider-gap); }
.section--tech .section__head { margin-bottom: calc(var(--sp-8) * 0.6); }
.section--solutions .section__head { margin-bottom: calc(var(--sp-8) * 0.8); }

/* ---- 10. Bento ---------------------------------------------------------- */
.bento {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.125rem;
  margin-top: var(--sp-8);
}
.bento__card {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  min-height: 300px;
  padding: 1.625rem;
  border-radius: var(--radius-xl);
  border: 1px solid rgba(221, 227, 242, 0.45);
  color: var(--text-body);
  position: relative;
  transition: box-shadow 0.3s var(--ease-out), transform 0.3s var(--ease-out);
}
/* cursor-following copper border glow (mask shows the gradient only on the border) */
.bento__card::before {
  content: "";
  position: absolute; inset: 0;
  border-radius: inherit;
  padding: 1.5px;
  background: radial-gradient(240px circle at var(--mx, 50%) var(--my, 50%),
    var(--glow, rgba(138, 94, 76, 0.95)), transparent 70%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.35s var(--ease-out);
  pointer-events: none;
  z-index: 2;
}
.bento__card:hover::before { opacity: 1; }
.bento__card:hover { transform: translateY(-4px); }
.bento__card--id { background: linear-gradient(160deg, rgba(237, 248, 253, 0.9), rgba(214, 238, 249, 0.55) 60%, rgba(214, 238, 249, 0)); --glow: rgba(42, 100, 140, 0.95); }
.bento__card--event { background: linear-gradient(160deg, rgba(253, 242, 233, 0.9), rgba(248, 225, 206, 0.55) 60%, rgba(248, 225, 206, 0)); --glow: rgba(140, 88, 46, 0.95); }
.bento__card--menu { background: linear-gradient(160deg, rgba(254, 249, 236, 0.9), rgba(248, 237, 207, 0.55) 60%, rgba(248, 237, 207, 0)); --glow: rgba(128, 102, 30, 0.95); }
.bento__card--auth { background: linear-gradient(160deg, rgba(240, 251, 239, 0.9), rgba(219, 243, 218, 0.55) 60%, rgba(219, 243, 218, 0)); --glow: rgba(52, 112, 60, 0.95); }
.bento__card--checkin { background: linear-gradient(160deg, rgba(253, 239, 246, 0.9), rgba(247, 220, 234, 0.55) 60%, rgba(247, 220, 234, 0)); --glow: rgba(150, 54, 100, 0.95); }
.bento__card--assets { background: linear-gradient(160deg, rgba(238, 240, 255, 0.9), rgba(220, 225, 251, 0.55) 60%, rgba(220, 225, 251, 0)); --glow: rgba(52, 62, 150, 0.95); }
.bento__card--id:hover { box-shadow: 0 14px 52px rgba(87, 149, 188, 0.2); }
.bento__card--event:hover { box-shadow: 0 14px 52px rgba(192, 138, 94, 0.2); }
.bento__card--menu:hover { box-shadow: 0 14px 52px rgba(179, 149, 63, 0.2); }
.bento__card--auth:hover { box-shadow: 0 14px 52px rgba(99, 164, 103, 0.2); }
.bento__card--checkin:hover { box-shadow: 0 14px 52px rgba(196, 107, 150, 0.2); }
.bento__card--assets:hover { box-shadow: 0 14px 52px rgba(94, 107, 200, 0.2); }
.card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px; height: 40px;
  border-radius: var(--radius-sm);
  background: var(--acc-bg);
  color: var(--acc-c);
}
.card-icon--foot { margin-top: 0.625rem; }
.bento__mockrow { display: grid; grid-template-columns: 1fr 1fr; gap: 0.625rem; }
.bento__card h3 {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 1.1875rem;
  color: var(--text-strong);
}
.bento__card--id h3, .bento__card--assets h3 { font-size: 1.3125rem; }
.bento__card p {
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--text-muted);
  max-width: 44ch;
}

/* mock dashboards inside cards */
.mini {
  border-radius: var(--radius-md);
  background: var(--surface-card);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-md);
  padding: 1rem;
}
.mini--grow { flex: 1; }
.mini__row { display: flex; justify-content: space-between; align-items: center; }
.mini__mono { font-family: var(--font-mono); font-size: 0.625rem; letter-spacing: 0.14em; color: var(--text-faint); }
.mini__name { font-family: var(--font-body); font-weight: 500; font-size: 0.9375rem; color: var(--text-strong); margin-top: 0.5rem; }
.mini__meta { font-family: var(--font-mono); font-size: 0.625rem; letter-spacing: 0.12em; color: var(--elyon-copper); margin-top: 0.125rem; }
.mini__stat { font-family: var(--font-display); font-size: 2.125rem; line-height: 1; color: var(--text-strong); margin-top: 0.375rem; }
.mini__delta { font-family: var(--font-mono); font-size: 0.625rem; letter-spacing: 0.12em; color: var(--positive); margin-top: 0.25rem; }
.dot-live {
  width: 9px; height: 9px; border-radius: var(--radius-pill);
  background: var(--elyon-blue);
  box-shadow: 0 0 10px rgba(108, 151, 255, 0.8);
  animation: pulse 2.4s ease-in-out infinite;
}
.pill-ok {
  font-family: var(--font-mono); font-size: 0.5625rem; letter-spacing: 0.12em;
  color: var(--positive);
  border: 1px solid rgba(46, 158, 107, 0.35);
  border-radius: var(--radius-pill);
  padding: 0.125rem 0.5rem;
}
.mock-row { display: flex; flex-direction: column; gap: 0.5625rem; }
.price-row { display: flex; justify-content: space-between; align-items: baseline; gap: 0.5rem; }
.price-row span:first-child { font-size: 0.84375rem; color: var(--text-strong); }
.price-row .dots { flex: 1; border-bottom: 1px dotted var(--border-strong); }
.price-row .price { font-family: var(--font-mono); font-size: 0.6875rem; color: var(--text-muted); }
.price-row .price--hi { color: var(--elyon-blue); }
.verify {
  flex: 1;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 0.625rem;
  border-radius: var(--radius-md);
  background: var(--surface-card);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-md);
  padding: 0.875rem;
}
.verify__badge {
  display: inline-flex; align-items: center; justify-content: center;
  width: 46px; height: 46px; border-radius: var(--radius-pill);
  background: rgba(108, 151, 255, 0.12); color: var(--elyon-blue);
}
.verify__ok { font-family: var(--font-mono); font-size: 0.625rem; letter-spacing: 0.18em; color: var(--positive); }
.verify__tag { font-family: var(--font-mono); font-size: 0.625rem; letter-spacing: 0.12em; color: var(--text-faint); }
.checkin-row { display: flex; align-items: center; gap: 0.625rem; }
.checkin-row__tick {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: var(--radius-pill);
  background: rgba(46, 158, 107, 0.12); color: var(--positive);
}
.checkin-row__tick--wait { background: var(--surface-sunken); color: var(--text-faint); }
.checkin-row__name { font-size: 0.84375rem; color: var(--text-strong); flex: 1; }
.checkin-row__name--muted { color: var(--text-muted); }
.checkin-row__time { font-family: var(--font-mono); font-size: 0.625rem; color: var(--text-faint); }
.assets-table { display: flex; flex-direction: column; }
.assets-table__row {
  display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 0.5rem;
  padding: 0.5rem 0; align-items: center;
}
.assets-table__row + .assets-table__row, .assets-table__body { border-top: 1px solid var(--border-soft); }
.assets-table__head span { font-family: var(--font-mono); font-size: 0.59375rem; letter-spacing: 0.16em; color: var(--text-faint); }
.assets-table__row .a { font-family: var(--font-mono); font-size: 0.6875rem; color: var(--text-strong); }
.assets-table__row .z { font-size: 0.78125rem; color: var(--text-muted); }
.assets-table__row .s { font-family: var(--font-mono); font-size: 0.59375rem; letter-spacing: 0.1em; text-align: right; }
.s--transit { color: var(--elyon-blue); }
.s--stored { color: var(--positive); }
.s--moving { color: var(--elyon-copper); }
.u-right { text-align: right; }
.u-mt-auto { margin-top: auto; }
.u-flex-fill { flex: 1; }

/* medallion (desktop-only overlap) */
.medallion { display: none; }

/* ---- 11. Products ------------------------------------------------------- */
.products {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.125rem;
}
.product-card {
  display: flex;
  position: relative;
  justify-content: space-between;
  align-items: center;
  gap: 1.25rem;
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.55), rgba(255, 255, 255, 0.28));
  backdrop-filter: blur(20px) saturate(1.5);
  -webkit-backdrop-filter: blur(20px) saturate(1.5);
  border: 1px solid rgba(255, 255, 255, 0.7);
  border-radius: 20px;
  padding: 1.875rem;
  box-shadow: 0 18px 44px rgba(18, 23, 35, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.85);
  color: var(--text-body);
  transition: box-shadow 0.3s var(--ease-out), transform 0.3s var(--ease-out);
}
.product-card:hover { box-shadow: 0 10px 26px rgba(18, 23, 35, 0.14); transform: translateY(-4px); }
/* inset white line, 5px inside the card edge */
.product-card::before {
  content: "";
  position: absolute;
  inset: 5px;
  border-radius: 15px;
  border: 1.5px solid rgba(255, 255, 255, 0.6);
  pointer-events: none;
  z-index: 2;
}
/* cyan spotlight shine that tracks the cursor along the inset line */
.product-card::after {
  content: "";
  position: absolute;
  inset: 5px;
  border-radius: 15px;
  padding: 1.5px;
  background: radial-gradient(90px circle at var(--mx, 50%) var(--my, 50%),
    rgba(255, 255, 255, 1), rgba(34, 196, 245, 0.95) 26%, rgba(3, 180, 255, 0.4) 52%, transparent 72%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.3s var(--ease-out);
  pointer-events: none;
  z-index: 3;
}
.product-card:hover::after { opacity: 1; }
.product-card h3 {
  font-family: var(--font-body);
  font-weight: 500;
  text-transform: none;
  font-size: 1.1875rem;
  letter-spacing: normal;
  color: var(--text-strong);
  margin-bottom: 0.375rem;
}
.product-card p { font-size: 0.9375rem; color: var(--text-muted); }
.product-card__sub {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 1.1875rem;
  letter-spacing: normal;
  text-transform: capitalize;
  color: var(--text-strong);
  margin-left: 0;
  vertical-align: baseline;
}
.product-card__icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 52px; height: 52px; border-radius: var(--radius-pill);
  flex: none;
}
.product-card__icon--biz { background: transparent; color: var(--elyon-ink); overflow: visible; width: auto; height: auto; }
.product-card__icon--faith { background: transparent; color: #fff; overflow: visible; width: auto; height: auto; }
.product-card__logo { width: 64px; height: 64px; display: block; margin: 0; }
.product-card__logo--biz { width: 60px; height: 60px; margin: 0; }

/* ---- 12. Technology — isometric orbit ---------------------------------- */
.techorbit {
  position: relative;
  margin-top: calc(var(--sp-6) * 0.6);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-4);
}
.techorbit__ring { display: none; }
.techorbit__center {
  grid-column: 1 / -1;
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  z-index: 2;
  margin-bottom: var(--sp-2);
}
.techorbit__center .techorbit__tile {
  position: relative;
  width: 120px;
  height: 114px;
  z-index: 2;
}
.techorbit__ellogo {
  position: absolute;
  left: 50%;
  top: 41%;
  width: 42px;
  height: auto;
  transform: translate(-50%, -50%) rotateX(58deg) rotateZ(-45deg);
  display: block;
  /* dark rim + copper glow so logo reads on the solid ink top */
  filter:
    drop-shadow(0 0 1px rgba(18, 23, 35, 0.9))
    drop-shadow(0 2px 4px rgba(0, 0, 0, 0.45))
    drop-shadow(0 4px 10px rgba(138, 93, 75, 0.4));
}
.techorbit__beam { display: none; }
.floor-ripple { display: none; }

/* --- CSS floor ripple (values per spec, do not modify) --- */
.floor-ripple {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 440px;
  height: 440px;
  transform: translate(-50%, -50%) scaleY(0.5);
  pointer-events: none;
  z-index: 0;
}
.floor-ripple span {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 440px;
  height: 440px;
  margin: -220px 0 0 -220px;
  border: 1.5px solid rgba(0, 54, 255, 0.35);
  border-radius: 50%;
  opacity: 0;
  transform: scale(0);
  animation: floor-ripple 4s ease-out infinite;
}
.floor-ripple span:nth-child(2) { animation-delay: 1s; }
.floor-ripple span:nth-child(3) { animation-delay: 2s; }
.floor-ripple span:nth-child(4) { animation-delay: 3s; }
@keyframes floor-ripple {
  0%   { transform: scale(0);   opacity: 0.5; }
  80%  { opacity: 0.15; }
  100% { transform: scale(1);   opacity: 0; }
}
.technode {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.375rem;
  text-align: center;
  color: var(--text-body);
}
.technode:hover .technode__icon { transform: translate(-50%, -62%) rotateX(58deg) rotateZ(-45deg); }
.technode__base {
  position: relative;
  flex: none;
  width: 96px; height: 92px;
}
.technode__slab { position: absolute; inset: 0; width: 100%; height: 100%; }
.technode__icon {
  position: absolute;
  left: 50%; top: 41%;
  transform: translate(-50%, -50%) rotateX(58deg) rotateZ(-45deg);
  color: var(--elyon-blue);
  transition: transform 0.3s var(--ease-out);
}
.technode__icon svg { width: 30px; height: 30px; stroke-width: 2.25; transform: scaleX(-1); }
/* flip NFC (top-left) and BLE (bottom-left) back to face the other way */
.technode--tl .technode__icon svg,
.technode--bl .technode__icon svg { transform: scaleX(1); }
.technode__label { display: flex; flex-direction: column; margin-top: -10px; }
.technode__name {
  font-family: var(--font-display); font-weight: 400; text-transform: uppercase;
  font-size: 1.5rem; line-height: 1; letter-spacing: 0.02em; color: var(--elyon-ink);
}
.technode__desc { font-size: 0.8125rem; color: var(--text-muted); margin-top: 2px; }

/* ---- 13. Why ------------------------------------------------------------ */
.why {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.125rem;
}
.why__card { border-radius: 20px; padding: 1.75rem; background: var(--surface-sunken); }
.why__num { font-family: var(--font-mono); font-size: 0.75rem; letter-spacing: 0.16em; color: var(--elyon-blue); }
.why__card h3 { font-family: var(--font-body); font-weight: 500; font-size: 1.25rem; color: var(--text-strong); margin: 0.75rem 0 0.5rem; }
.why__card p { font-size: 0.9375rem; color: var(--text-muted); }

/* ---- 14. CTA ------------------------------------------------------------ */
.cta {
  position: relative;
  background: var(--elyon-ink);
  overflow: hidden;
}
.cta__pattern {
  position: absolute;
  inset: 0 0 0 auto;
  width: 60%;
  background: url("../img/pattern-circuit.jpg") right bottom / cover no-repeat;
  opacity: 0.55;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 45%);
  mask-image: linear-gradient(90deg, transparent, #000 45%);
}
.cta__inner {
  position: relative;
  max-width: 760px;
  margin-inline: auto;
  text-align: center;
  padding: var(--sp-12) var(--sp-5);
}
.cta h2 {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: var(--fs-display-lg);
  line-height: 0.94;
  color: var(--text-on-ink);
}
.cta h2 .u-blue { color: var(--elyon-blue); }
.cta h2 .u-copper { color: var(--elyon-copper-lt); }
.cta p { font-weight: 300; font-size: 1.0625rem; color: var(--text-on-ink-muted); margin-top: 1.125rem; }
.cta__actions { display: flex; gap: 0.875rem; justify-content: center; margin-top: var(--sp-6); flex-wrap: wrap; }

/* ---- 15. Footer --------------------------------------------------------- */
.footer { position: relative; background: var(--surface-page); border-top: 1px solid var(--border-soft); }
.footer::before {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 100%;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(520px 60% at 12% 100%, rgba(249,214,231,0.5), transparent 70%),
    radial-gradient(480px 58% at 38% 100%, rgba(250,229,209,0.45), transparent 70%),
    radial-gradient(520px 60% at 64% 100%, rgba(217,244,215,0.45), transparent 70%),
    radial-gradient(520px 62% at 88% 100%, rgba(211,238,250,0.5), transparent 70%);
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 100%);
  mask-image: linear-gradient(180deg, transparent 0, #000 100%);
}
.footer > * { position: relative; z-index: 1; }
.footer__top {
  max-width: var(--container);
  margin-inline: auto;
  padding: var(--sp-10) var(--sp-5) 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-8);
}
.footer__brand { display: flex; flex-direction: column; gap: 1.375rem; justify-content: center; }
.footer__about { font-weight: 300; font-size: 0.90625rem; line-height: 1.7; color: var(--text-muted); }
.footer__about strong { font-weight: 500; color: var(--text-strong); }
.footer__about .u-name { font-weight: 700; color: var(--elyon-ink); }
.footer__social { display: flex; gap: 0.875rem; }
.footer__social a {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 10px;
  transition: opacity 0.24s ease;
}
.footer__social a:hover { opacity: 0.7; }
.s-fb { color: #1877F2; } .s-in { color: #0A66C2; } .s-tw { color: #1DA1F2; } .s-ig { color: #D6249F; }
.footer__logo { display: none; }
.footer__links { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-6); align-self: start; }
.footer__col { display: flex; flex-direction: column; gap: 0.625rem; }
.footer__coltitle {
  display: flex; align-items: center; gap: 0.5rem;
  font-family: var(--font-mono); font-size: 0.75rem; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--text-strong);
}
.footer__coltitle i, .footer__coltitle svg { color: var(--elyon-blue); width: 16px; height: 16px; }
.footer__coltitle--mt { margin-top: 1.125rem; }
.footer__link { font-size: 0.875rem; color: var(--text-muted); transition: color 0.24s ease; }
.footer__link:hover { color: var(--elyon-ink); }
.footer__wordmark {
  max-width: var(--container);
  margin-inline: auto;
  padding: var(--sp-8) var(--sp-5) 0;
}
.footer__wordmark-inner {
  display: grid;
  grid-template-columns: 1fr;
  align-items: end;
  border-top: 1px solid var(--border-soft);
  padding: var(--sp-8) 0 var(--sp-6);
}
.footer__wordmark img { width: 100%; max-width: 520px; height: auto; }
.footer__slogan {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(2.75rem, 5.6vw, 4.875rem); line-height: 0.88;
  color: var(--elyon-blue); text-transform: uppercase;
}
.footer__slogan--brand { color: var(--text-muted); opacity: 0.5; align-self: center; letter-spacing: 0.02em; white-space: normal; font-size: clamp(1.35rem, 7vw, 4.875rem); }
.footer__slogan--talk {
  display: block;
  text-align: right;
  color: var(--elyon-ink);
  white-space: normal;
  font-family: var(--font-display);
  text-transform: uppercase;
  font-weight: 400;
  font-size: clamp(2rem, 8vw, 104px);
  line-height: 0.86;
  letter-spacing: 0.01em;
  transition: color 0.28s var(--ease-out), transform 0.28s var(--ease-out);
}
.footer__slogan--talk:hover { color: var(--elyon-copper); transform: translateY(-2px); }
.footer__slogan-arrow {
  vertical-align: top;
  line-height: 1;
  margin-left: 0.06em;
  display: inline-block;
  transition: transform 0.28s var(--ease-out);
}
.footer__slogan-arrow svg { width: 0.36em; height: 0.36em; display: block; }
.footer__slogan--talk:hover .footer__slogan-arrow { transform: translate(4px, -4px); }
.footer__legal {
  max-width: var(--container);
  border-top: 1px solid var(--border-soft);
  margin-inline: auto;
  padding: 1.375rem var(--sp-5) 1.625rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  flex-wrap: wrap;
}
.footer__copy { font-family: var(--font-mono); font-size: 0.75rem; letter-spacing: 0.12em; color: var(--text-faint); }
.footer__legal-links { display: flex; gap: 1.75rem; flex-wrap: wrap; }
.footer__legal-links a { font-size: 0.875rem; color: var(--text-muted); }
.footer__legal-links a:hover { color: var(--elyon-ink); }

/* Mobile: copyright centered across the page */
@media (max-width: 47.99rem) {
  .footer__legal {
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
  }
  .footer__copy {
    width: 100%;
    text-align: center;
  }
  .footer__legal-links {
    justify-content: center;
  }
}

/* ---- 16. Motion / reveal ------------------------------------------------ */
/* .reveal start states are set in JS (index/all pages). CSS never hides them.
   Intro loader + page veil cover navigation — they do not hide page content. */

/* Page-to-page veil — matches intro loader ink + EL, fades in before navigate */
.page-veil {
  position: fixed;
  inset: 0;
  z-index: 10001;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--elyon-ink);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.4s cubic-bezier(0.22, 1, 0.36, 1),
              visibility 0.4s step-end;
}
.page-veil.is-active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity 0.4s cubic-bezier(0.22, 1, 0.36, 1),
              visibility 0s step-start;
}
.page-veil__mark {
  position: relative;
  width: min(120px, 28vw);
  height: auto;
  opacity: 0;
  transform: scale(0.92);
  transition: opacity 0.35s ease, transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.page-veil.is-active .page-veil__mark {
  opacity: 1;
  transform: scale(1);
}
.page-veil__logo {
  width: 100%;
  height: auto;
  display: block;
  filter: drop-shadow(0 8px 28px rgba(226, 188, 177, 0.28));
}
html.is-page-leaving,
html.is-page-leaving body {
  overflow: hidden !important;
}

/* Intro loader — ink ground + copper EL shine, then fades to page */
.intro-loader {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--elyon-ink);
  transition: opacity 0.75s cubic-bezier(0.22, 1, 0.36, 1),
              visibility 0.75s step-end,
              background 0.75s cubic-bezier(0.22, 1, 0.36, 1);
}
.intro-loader.is-fading {
  background: var(--surface-page);
}
.intro-loader.is-done {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.75s cubic-bezier(0.22, 1, 0.36, 1),
              visibility 0.75s step-end;
}
.intro-loader__mark {
  position: relative;
  width: min(120px, 28vw);
  height: auto;
}
.intro-loader__logo {
  width: 100%;
  height: auto;
  display: block;
  filter: drop-shadow(0 8px 28px rgba(226, 188, 177, 0.28));
}
.intro-loader__shine {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    115deg,
    transparent 35%,
    rgba(255, 255, 255, 0.55) 48%,
    rgba(226, 188, 177, 0.35) 52%,
    transparent 65%
  );
  background-size: 220% 100%;
  -webkit-mask-image: url("../img/El-iconlogo.svg");
  mask-image: url("../img/El-iconlogo.svg");
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  animation: intro-shine 1.6s ease-in-out infinite;
  mix-blend-mode: screen;
  opacity: 0.85;
}
@keyframes intro-shine {
  0%   { background-position: 120% 0; }
  100% { background-position: -120% 0; }
}
html.is-loading,
html.is-loading body {
  overflow: hidden !important;
  height: 100%;
}
@media (prefers-reduced-motion: reduce) {
  .intro-loader__shine { animation: none; opacity: 0.35; }
  .intro-loader,
  .intro-loader.is-done,
  .page-veil,
  .page-veil.is-active,
  .page-veil__mark {
    transition-duration: 0.15s;
  }
}

@keyframes pulse { 0%, 100% { opacity: 0.25; } 50% { opacity: 0.9; } }
/* keep hover lift working (cards may carry inline transform from GSAP) */
.js .bento__card:hover,
.js .product-card:hover { transform: translateY(-4px); }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .dot-live, .marquee__item { animation: none; }
  .floor-ripple span {
    animation: none;
    opacity: 0.12;
    transform: scale(1);
  }
  * { transition-duration: 0.001ms !important; }
}

/* ---- Scroll progress rail (index, tablet+) ------------------------------ */
.scrollrail {
  display: none;
}
@media (min-width: 48rem) {
  .scrollrail {
    display: block;
    position: fixed;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    z-index: 45;
    height: min(58vh, 380px);
    width: 28px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.28s ease, visibility 0.28s ease;
  }
  .scrollrail.is-visible {
    opacity: 0.25;
    visibility: visible;
  }
  .scrollrail__inner {
    position: relative;
    height: 100%;
    width: 100%;
  }
  .scrollrail__track {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 14px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-end;
  }
  .scrollrail__tick {
    display: block;
    width: 7px;
    height: 1.5px;
    background: #121723;
    border-radius: 1px;
    flex: none;
  }
  .scrollrail__tick--mark {
    width: 12px;
    height: 2px;
  }
  .scrollrail__arrow {
    position: absolute;
    left: 0;
    top: 0;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 4px 0 4px 7px;
    border-color: transparent transparent transparent #121723;
    transform: translateY(-50%);
    will-change: top;
  }
}

/* ==========================================================================
   17. Responsive — THREE tiers only (mobile-first, min-width)
       - Mobile  = base (no media query)      ~320-767px
       - Tablet  = @media (min-width: 48rem)   768px
       - Laptop  = @media (min-width: 64rem)   1024px
   Do not add other breakpoints; every page uses exactly these three.
   ========================================================================== */

/* ---- Tablet — 48rem / 768px -------------------------------------------- */
@media (min-width: 48rem) {
  .container { padding-inline: var(--sp-8); }
  .section { padding-block: var(--sp-12); }
  .section--solutions { padding-block: var(--sp-12) var(--sp-8); }
  .section--products { padding-block: var(--sp-8) var(--divider-gap); }
  .section__head { margin-bottom: var(--sp-10); }
  .section--products .section__head { margin-bottom: var(--sp-10); }
  .section--flush-top { padding-top: var(--sp-10); }
  .section--tech { padding-top: var(--sp-5); padding-bottom: 0; }

  .hero__logo { height: 130px; }
  .hero__tagline { font-size: 1.125rem; }

  .products { grid-template-columns: 1fr 1fr; }
  .bento { grid-template-columns: 1fr 1fr; grid-auto-rows: minmax(300px, auto); }
  .bento__card { min-height: 0; }
  .bento__card--id, .bento__card--assets { grid-column: span 2; }
  .why { grid-template-columns: repeat(2, 1fr); }
  .footer__top { grid-template-columns: 4fr 4fr; gap: var(--sp-6); }

  /* --- isometric orbit takes over from the stacked grid --- */
  .techorbit {
    display: block;
    position: relative;
    aspect-ratio: 1000 / 620;
    max-width: 900px;
    margin: calc(var(--sp-6) * 0.6) auto 0;
  }
  .techorbit__ring { display: block; position: absolute; inset: 0; width: 100%; height: 100%; }
  .floor-ripple { display: block; }
  .techorbit__center { z-index: 2; }
  .technode { z-index: 3; }
  .techorbit__center {
    display: grid; place-items: center;
    position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    grid-column: auto;
    margin-bottom: 0;
  }
  .techorbit__center .techorbit__tile { position: relative; width: 182px; height: 174px; }
  .techorbit__ellogo {
    position: absolute;
    left: 50%;
    top: 41%;
    width: 52px;
    height: auto;
    margin: 0;
    transform: translate(-50%, -50%) rotateX(58deg) rotateZ(-45deg);
    background: none;
    -webkit-mask: none;
    mask: none;
    filter:
      drop-shadow(0 0 1px rgba(18, 23, 35, 0.9))
      drop-shadow(0 2px 5px rgba(0, 0, 0, 0.5))
      drop-shadow(0 6px 14px rgba(138, 93, 75, 0.45));
  }
  .techorbit__beam {
    display: block;
    position: absolute; left: 50%; bottom: 8%;
    width: 100px; height: 70px; transform: translateX(-50%);
    background: linear-gradient(to top, rgba(108, 151, 255, 0.22), transparent);
    filter: blur(8px);
    border-radius: 50%;
    animation: pulse 3.6s ease-in-out infinite;
    z-index: 0;
    pointer-events: none;
  }
  .technode {
    position: absolute;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    padding: 0;
    background: none;
    border: 0;
    box-shadow: none;
    text-align: center;
    transform: translate(-50%, -50%);
  }
  .technode:hover { transform: translate(-50%, -50%); }
  .technode:hover .technode__base { transform: translateY(-6px); }
  .technode:hover .technode__icon { transform: translate(-50%, -50%) rotateX(58deg) rotateZ(-45deg); }
  .technode__base { width: 122px; height: 116px; transition: transform 0.3s var(--ease-out); }
  .technode__icon svg { width: 36px; height: 36px; }
  .technode__label { align-items: center; margin-top: -15px; }
  .technode__name { font-size: clamp(0.95rem, 2.4vw, 1.25rem); }
  .technode__desc { font-size: 0.75rem; }
  /* settle each tile exactly on its dotted-line endpoint */
  .technode--tl { left: calc(20.5% + var(--tech-top-pull)); top: calc(16.9% + 20px + var(--tech-top-pull) * 0.5); }
  .technode--ml { left: 12%;  top: calc(50% + 10px); }
  .technode--bl { left: calc(20.5% + 14px); top: 83.1%; }
  .technode--tr { left: calc(79.5% - var(--tech-top-pull)); top: calc(16.9% + 20px + var(--tech-top-pull) * 0.5); }
  .technode--mr { left: 88%; top: calc(50% + 10px); }
  .technode--br { left: calc(79.5% - 14px); top: 83.1%; }
}

/* ---- Laptop / Desktop — 64rem / 1024px --------------------------------- */
@media (min-width: 64rem) {
  .container { padding-inline: var(--sp-10); }
  .section { padding-block: 7.5rem; }
  .section--solutions { padding-block: 7.5rem var(--sp-10); }
  .section--products { padding-block: calc(var(--sp-10) - 30px) var(--divider-gap); }
  .section--flush-top { padding-top: var(--sp-10); }
  .section--tech { padding-top: var(--sp-5); padding-bottom: 0; }
  .cta__inner { padding-block: 7.5rem; }

  .hero__logo { height: 149px; }
  .menu__logo { height: 149px; }
  .technode__name { font-size: 1.5rem; }
  .technode__desc { font-size: 0.8125rem; }
  .technode--ml { left: 9.5%; }
  .technode--mr { left: 90.5%; }
  .hero .eyebrow { margin-top: var(--sp-4); }
  .hero__tagline { max-width: 60rem; }
  .glass-wrap { max-width: 480px; }

  /* bento → 4-col with featured spans + centre medallion */
  .bento { grid-template-columns: repeat(4, 1fr); grid-auto-rows: minmax(320px, auto); gap: var(--sp-6); }
  .bento__card--id, .bento__card--assets { grid-column: span 2; }
  .bento__card p { max-width: 60ch; }
  .medallion {
    display: grid; place-items: center;
    position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    z-index: 5;
    width: 134px; height: 134px;
    border-radius: var(--radius-pill);
    background: var(--elyon-ink);
  }
  .medallion__ring {
    position: absolute; inset: 7px; border-radius: var(--radius-pill);
    background: linear-gradient(135deg, #293349, #121723);
    border: 1px solid #C8A093;
  }
  .medallion__mark { position: relative; width: 61px; height: 87px; }
  .medallion__mark img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
  .medallion__shine { filter: brightness(0) invert(1); opacity: 0.85; mix-blend-mode: screen; animation: sweep 4.5s ease-in-out infinite; }

  .products { gap: var(--sp-6); }
  .why { grid-template-columns: repeat(3, 1fr); gap: var(--sp-6); }
  .lead { max-width: 68ch; }

  /* footer: 3-column top row with divided monogram */
  .footer__top { grid-template-columns: 4fr 2fr 4fr; gap: 0; padding-top: var(--sp-12); }
  .footer__brand { padding-right: var(--sp-6); }
  .footer__logo {
    display: flex; justify-content: center; align-items: center;
    border-left: 1px solid var(--border-soft);
    border-right: 1px solid var(--border-soft);
  }
  .footer__logo img { height: 143px; width: auto; }
  .footer__links { padding-left: var(--sp-6); }
  .footer__wordmark-inner { grid-template-columns: 60% 40%; }
  .footer__slogan--brand { font-size: clamp(2.3rem, 5.75vw, 4.3125rem); letter-spacing: 0.04em; }
  .footer__slogan--talk { border-left: 1px solid var(--border-soft); padding-left: var(--sp-6); }

  /* off-canvas: hero-sized logo on top, menu below, copyright footer */
  .menu__inner { padding: calc(var(--header-h) + var(--sp-8)) var(--sp-10) 40px; }
  .menu__logo-link { margin-bottom: var(--sp-8); }
  .menu__logo { height: 130px; }
  .menu__mid {
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-end;
    gap: var(--sp-10);
    max-width: var(--container); width: 100%; margin-inline: auto; margin-bottom: 48px;
  }
  .menu__links {
    flex: none;
    justify-content: flex-start;
    gap: var(--sp-2);
    padding-bottom: 0;
  }
  .menu__link { font-size: var(--fs-menu); line-height: 1.06; }
  .menu__foot {
    max-width: var(--container);
    width: 100%;
    margin-inline: auto;
    margin-top: 0;
    padding-top: 1.375rem;
  }
  .acc__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.625rem;
    padding: 0.75rem 0 1rem;
  }
  .chip {
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 0.55rem;
    padding: 0.95rem 1.05rem;
    min-width: 120px;
    border-radius: 16px;
    font-size: 0.9375rem;
    line-height: inherit;
  }
  .chip__icon svg { width: 22px; height: 22px; }
  .social__link { width: 40px; height: 40px; }
  .social__link svg { width: 17px; height: 17px; }
}
@keyframes sweep {
  0% { clip-path: polygon(-45% 0, -15% 0, -30% 100%, -60% 100%); }
  30% { clip-path: polygon(115% 0, 145% 0, 130% 100%, 100% 100%); }
  100% { clip-path: polygon(115% 0, 145% 0, 130% 100%, 100% 100%); }
}

/* ==========================================================================
   18. Services — scroll-jack section (uploaded module)
   Tokens remapped onto the site's existing brand tokens for consistency;
   structure, class names, card values kept as authored.
   ========================================================================== */
:root {
  --svc-accent: var(--elyon-blue);
  --svc-ink: var(--elyon-ink);
  --svc-body: var(--text-body);
  --svc-muted: var(--text-faint);
  --svc-surface: var(--surface-card);
  --svc-surface-2: var(--surface-sunken);
  --svc-border: var(--border-soft);
  --svc-accent-soft: rgba(108, 151, 255, 0.08);

  --svc-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --tab-w: 25%;
}

/* ---------- Section shell ---------- */
.svc { position: relative; background: transparent; overflow: hidden; padding-bottom: calc(var(--divider-gap) + 50px); }
/* breathing space above the pinned Services area */
.pin-spacer { padding-top: 60px; }
/* multi-colour pastel blur ground, blends down from the Technology section */
.svc::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(880px 620px at 10% 18%, rgba(249, 214, 231, 0.60), transparent 65%),
    radial-gradient(800px 560px at 88% 14%, rgba(250, 229, 209, 0.55), transparent 64%),
    radial-gradient(900px 620px at 50% 56%, rgba(250, 240, 208, 0.42), transparent 66%),
    radial-gradient(760px 540px at 14% 88%, rgba(217, 244, 215, 0.55), transparent 64%),
    radial-gradient(820px 580px at 84% 86%, rgba(211, 238, 250, 0.60), transparent 65%),
    linear-gradient(180deg, #FFFDFE 0%, #FBFDFE 62%, #EAF4FB 100%);
  filter: blur(2px);
  z-index: 0;
  /* fade the wash in from the top so it blends seamlessly out of the Technology section */
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 160px);
  mask-image: linear-gradient(180deg, transparent 0, #000 160px);
}
.svc__inner, .svc__pin { position: relative; z-index: 1; }

/* align to the site container width + add a section title */
.svc__inner {
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--sp-5);
}
.svc__head {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--sp-3);
  padding-top: calc(var(--sp-6) + 20px);
}

/* ---------- Mobile / tablet default: stacked cards ---------- */
.svc__pin {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  min-height: auto;
  padding: 1.25rem 0 1.5rem;
  box-sizing: border-box;
  align-items: stretch;
}

.svc__menu {
  flex: none;
  display: flex;
  flex-direction: row;
  gap: 0.25rem;
  align-self: stretch;
  z-index: 6;
  padding: 0.5rem;
  scroll-padding-inline: 0.5rem;
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.35);
  border: 1px solid rgba(255, 255, 255, 0.7);
  backdrop-filter: blur(20px) saturate(1.6);
  -webkit-backdrop-filter: blur(20px) saturate(1.6);
  box-shadow: 0 18px 44px rgba(18, 23, 35, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.9);
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  scroll-snap-type: x proximity;
}
.svc__menu::-webkit-scrollbar { display: none; }

.svc__tab {
  display: flex;
  align-items: baseline;
  gap: 0.6rem;
  text-align: left;
  padding: 0.85rem 1rem;
  border: none;
  border-radius: var(--radius-md);
  border-bottom: 3px solid transparent;
  background: transparent;
  font: inherit;
  font-size: 1rem;
  color: var(--svc-body);
  cursor: pointer;
  transition: color 0.25s, background 0.25s, border-color 0.25s;
  flex: 0 0 auto;
  white-space: nowrap;
  scroll-snap-align: start;
}
.svc__tab span { font-size: 0.7rem; color: var(--svc-muted); font-variant-numeric: tabular-nums; }
.svc__tab:hover { color: var(--svc-ink); }
.svc__tab.is-active {
  color: var(--svc-ink);
  border-bottom-color: var(--svc-accent);
  background: var(--svc-accent-soft);
  font-weight: 500;
}
.svc__indicator { display: none; }

.svc__stage {
  flex: 1 1 auto;
  position: relative;
  min-width: 0;
  min-height: auto;
  overflow: visible;
}

.panel {
  position: static;
  display: none;
  width: auto;
  height: auto;
  transform: none;
}
.panel.is-active {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  z-index: 2;
}
.panel.is-leaving { display: none; }

.card {
  position: static;
  box-sizing: border-box;
  border-radius: 18px;
  width: 100%;
  height: auto;
}

.panel[data-service="0"] { --svc-accent: #D9922B; --svc-accent-lt: #F0C060; --svc-img: image-set(url("../img/Ux-Ui-2x.avif") type("image/avif"), url("../img/Ux-Ui-2x.jpg") type("image/jpeg")); }
.panel[data-service="1"] { --svc-accent: #E24AA6; --svc-accent-lt: #F19AD0; --svc-img: image-set(url("../img/IoT-2x.avif") type("image/avif"), url("../img/IoT-2x.jpg") type("image/jpeg")); }
.panel[data-service="2"] { --svc-accent: #E0A542; --svc-accent-lt: #F2CC7E; --svc-img: image-set(url("../img/embeded.avif") type("image/avif"), url("../img/embeded.jpg") type("image/jpeg")); }
.panel[data-service="3"] { --svc-accent: #3B7DE0; --svc-accent-lt: #8FB6F2; --svc-img: image-set(url("../img/mobile.avif") type("image/avif"), url("../img/mobile.jpg") type("image/jpeg")); }
.panel[data-service="4"] { --svc-accent: #2FA8C7; --svc-accent-lt: #86D4E6; --svc-img: image-set(url("../img/web.avif") type("image/avif"), url("../img/web.jpg") type("image/jpeg")); }
.panel[data-service="5"] { --svc-accent: #3DA35D; --svc-accent-lt: #86D19A; --svc-img: image-set(url("../img/cloud-2x.avif") type("image/avif"), url("../img/cloud-2x.jpg") type("image/jpeg")); }

.card--base {
  position: relative;
  height: 260px;
  border-radius: 22px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.5);
  box-shadow: 0 30px 66px -26px rgba(18, 23, 35, 0.55);
}
.card__media {
  position: absolute; inset: 0;
  background-color: var(--elyon-ink);
  overflow: hidden;
}
.card__media picture {
  position: absolute; inset: 0;
  display: block; width: 100%; height: 100%;
}
.card__img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  opacity: 1;
  transition: opacity 0.8s var(--ease-out), filter 0.8s var(--ease-out);
}
.js .card__img { opacity: 0; filter: blur(14px); }
.js .card__img.is-ready { opacity: 1; filter: blur(0); }
.card__media::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10, 14, 23, 0.85) 0%, rgba(10, 14, 23, 0) 46%);
}
.card__num {
  position: absolute; top: 20px; left: 24px; z-index: 2;
  font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.2em;
  color: rgba(255, 255, 255, 0.7);
}
.card__word {
  position: absolute; left: 24px; right: 22px; bottom: 24px; z-index: 2;
  font-family: var(--font-mono); font-weight: 500; text-transform: uppercase;
  font-size: calc(0.72rem + 2px); line-height: 1.1; letter-spacing: 0.14em;
  color: #fff;
  text-shadow: 0 1px 8px rgba(10, 14, 23, 0.8);
}

.card--glass {
  position: relative;
  width: 72px; height: 72px;
  overflow: visible;
  display: flex; align-items: center; justify-content: center;
  background: transparent;
  align-self: flex-end;
  margin-top: -48px;
  margin-right: 12px;
  z-index: 5;
}
.card--glass::before {
  content: ""; position: absolute; inset: 0;
  transform: translate(10px, -10px);
  border-radius: 20px;
  background: var(--svc-accent);
  box-shadow: 0 22px 44px -16px color-mix(in srgb, var(--svc-accent) 70%, transparent);
  z-index: 0;
}
.card--glass::after {
  content: ""; position: absolute; inset: 0;
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.22);
  border: 1px solid rgba(255, 255, 255, 0.6);
  backdrop-filter: blur(7px) saturate(1.5);
  -webkit-backdrop-filter: blur(7px) saturate(1.5);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75);
  z-index: 1;
}
.card--glass i, .card--glass svg { position: relative; z-index: 2; width: 28px; height: 28px; color: #fff; }

.card--msg {
  z-index: 3;
  background: #fff; border-radius: 18px; padding: 22px 22px 24px;
  border: 1px solid var(--border-soft);
  box-shadow: 0 24px 50px -22px rgba(18, 23, 35, 0.4);
}
.card--msg .card__title { margin: 0 0 8px; font-family: var(--font-body); font-weight: 600; font-size: 1.12rem; line-height: 1.2; color: var(--elyon-ink); }
.card--msg .card__text { margin: 0; font-size: 0.82rem; line-height: 1.62; color: var(--text-muted); }

.card--tags {
  z-index: 3; padding: 14px;
  border-radius: 18px;
  display: flex; flex-wrap: wrap; gap: 8px; align-content: flex-start;
  background: rgba(255, 255, 255, 0.5);
  border: 1px solid rgba(255, 255, 255, 0.75);
  backdrop-filter: blur(18px) saturate(1.5);
  -webkit-backdrop-filter: blur(18px) saturate(1.5);
  box-shadow: 0 20px 44px -22px rgba(18, 23, 35, 0.32);
}
.card--tags .tag {
  font-family: var(--font-mono); font-size: 0.64rem; letter-spacing: 0.08em; text-transform: uppercase;
  padding: 6px 11px; border-radius: 999px;
  color: var(--svc-accent);
  background: color-mix(in srgb, var(--svc-accent) 14%, #fff);
  border: 1px solid color-mix(in srgb, var(--svc-accent) 32%, transparent);
}

.panel[data-service="0"] .card__num { color: rgba(255, 255, 255, 0.9); }

@media (min-width: 48rem) and (max-width: 63.99rem) {
  .svc__inner { padding-inline: var(--sp-8); }
  .card--base { height: 300px; }
}

/* ---------- Desktop (≥ 64rem): absolute collage + side menu + scroll-jack ---------- */
@media (min-width: 64rem) {
  /* Collage cards use negative offsets — don't clip them */
  .svc { overflow: visible; }
  .svc__pin {
    flex-direction: row;
    gap: 1.5rem;
    min-height: calc(100vh - 17rem);
    padding: 1rem 0 1.5rem;
    align-items: center;
    overflow: visible;
  }
  .svc__menu {
    flex: 0 0 var(--tab-w);
    flex-direction: column;
    overflow: visible;
    align-self: center;
    scroll-snap-type: none;
    position: relative;
  }
  .svc__tab {
    flex: none;
    border-bottom: none;
    border-left: 3px solid transparent;
    white-space: normal;
    position: relative;
    z-index: 1;
  }
  .svc__tab.is-active {
    background: transparent;
    border-bottom: none;
    border-left-color: transparent;
  }
  .svc__indicator {
    display: block;
    position: absolute;
    top: 0; left: 0.5rem; right: 0.5rem;
    height: 48px;
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--svc-accent) 12%, transparent);
    border-left: 3px solid var(--svc-accent);
    z-index: 0;
    pointer-events: none;
    will-change: transform;
  }

  .svc__stage { min-height: 500px; flex: 1 1 75%; overflow: visible; }

  .panel {
    position: absolute;
    left: 50%;
    top: 0;
    width: 480px;
    height: 100%;
    transform: translateX(-50%);
    display: none;
    overflow: visible;
  }
  .panel.is-active { display: block; z-index: 2; }
  .panel.is-leaving { display: block; z-index: 1; }

  .card { position: absolute; width: auto; height: auto; }

  .card--base {
    width: 350px; height: 440px;
    left: 74px; top: 10px; z-index: 1;
    margin: 0;
  }
  .card--glass {
    width: 104px; height: 104px;
    left: 372px; top: 42px;
    margin: 0;
    align-self: auto;
  }
  .card--glass::before {
    transform: translate(16px, -16px);
    border-radius: 24px;
  }
  .card--glass::after { border-radius: 24px; }
  .card--glass i, .card--glass svg { width: 42px; height: 42px; }

  .card--msg { width: 264px; }
  .card--tags { width: 330px; }

  .panel[data-service="0"] .card--msg  { left: -74px; top: 70px; }
  .panel[data-service="0"] .card--tags { left: 270px; top: 372px; width: 310px; }
  .panel[data-service="1"] .card--msg  { left: 286px; top: 300px; }
  .panel[data-service="1"] .card--tags { left: -39px; top: 146px; width: 270px; }
  .panel[data-service="2"] .card--msg  { left: 260px; top: 325px; }
  .panel[data-service="2"] .card--tags { left: -94px; top: 236px; width: 300px; }
  .panel[data-service="3"] .card--msg  { left: -36px; top: 306px; }
  .panel[data-service="3"] .card--tags { left: 292px; top: 362px; width: 305px; }
  .panel[data-service="4"] .card--msg  { left: -69px; top: 70px; }
  .panel[data-service="4"] .card--tags { left: 250px; top: 380px; width: 320px; }
  .panel[data-service="5"] .card--msg  { left: -64px; top: 80px; }
  .panel[data-service="5"] .card--tags { left: 360px; top: 250px; width: 275px; }
}

/* Soften collage on mid laptops so floating cards stay in frame */
@media (min-width: 64rem) and (max-width: 79.99rem) {
  .svc__stage {
    transform: scale(0.88);
    transform-origin: center center;
  }
  .svc__pin { min-height: calc(100vh - 14rem); }
}

@media (prefers-reduced-motion: reduce) {
  .card { transition: none !important; }
}


/* ==========================================================================
   18. About page — hero, bento, tagline, SEO blocks, FAQ
   Uses only existing tokens; breakpoints: base / 48rem / 64rem (site standard)
   ========================================================================== */

/* ---- About hero ---- */
.ahero {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  min-height: 100vh;
  padding: calc(var(--header-h) + var(--sp-8)) var(--sp-5) 0;
  text-align: center;
}
.ahero__inner { position: relative; z-index: 3; max-width: 900px; margin-inline: auto; }
.ahero__watermark {
  position: absolute;
  right: -1vw; top: 50%;
  --lag-y: 0px;
  transform: translateY(calc(-50% + var(--lag-y))) rotate(180deg);
  writing-mode: vertical-rl;
  z-index: 1;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: clamp(4rem, 13vw, 13rem);
  line-height: 0.8;
  letter-spacing: 0.04em;
  white-space: nowrap;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(141,174,255,0.16) 0%, rgba(226,188,177,0.22) 100%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
  will-change: transform;
}

/* Mobile: watermark flush right; fixed title→content gaps */
@media (max-width: 47.99rem) {
  .ahero {
    padding-top: calc(var(--header-h) + var(--sp-5));
    overflow: hidden;
  }
  /* Let vertical titles extend fully — they were clipping with min-height:auto */
  .ahero:not(.ahero--contact) {
    min-height: auto;
    padding-bottom: 0;
    overflow: visible;
  }
  .ahero__logo { height: 80px; margin-bottom: var(--sp-3); }
  .ahero__title { margin-top: var(--sp-2); }
  .ahero__inner {
    z-index: 3;
    max-width: min(900px, calc(100% - 3rem));
    padding-inline: var(--sp-2);
    margin-bottom: 0;
  }
  .ahero__watermark {
    top: 100px;
    /* Pull past glyph side-bearing so ink sits on the mobile edge */
    right: -18px;
    left: auto;
    margin: 0;
    padding: 0;
    transform: translateY(var(--lag-y, 0px)) rotate(180deg);
    font-size: clamp(5.25rem, 20vw, 8rem);
    letter-spacing: 0.06em;
    line-height: 0.88;
    z-index: 0;
  }
  /* Exact title → content gaps on mobile */
  .abento-2-sec,
  .solmap-sec,
  .solcat-sec,
  .tech-orbit-sec {
    margin-top: 50px !important;
    padding-top: 0 !important;
    padding-right: 0.75rem;
    position: relative;
    z-index: 2;
  }
  .srv-wheel-sec {
    margin-top: 100px !important;
    padding-top: 0 !important;
    padding-bottom: 1.5rem !important;
    padding-right: 0.75rem;
    position: relative;
    z-index: 2;
  }
  .ahero--contact {
    overflow: hidden;
    padding-bottom: var(--sp-8);
  }
  .ahero--contact .ahero__inner { margin-bottom: var(--sp-3); max-width: min(900px, calc(100% - 3rem)); }
  .ahero--contact .offices-under { z-index: 3; }
  .ahero--contact .offices {
    padding: var(--sp-3) var(--sp-4);
  }
  .ahero--contact .office {
    padding: var(--sp-4) 0;
  }
}
.ahero__logo {
  height: 110px; width: auto;
  margin: 0 auto var(--sp-5);
  filter: drop-shadow(0 6px 14px rgba(18, 23, 35, 0.10));
  will-change: transform;
}
.ahero__title {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: var(--fs-display-lg);
  line-height: 0.94;
  letter-spacing: 0.01em;
  margin-top: var(--sp-4);
}
.ahero__title .u-ink { color: var(--elyon-ink); }
.ahero__title .u-soft { color: #55618A; }

/* ---- About bento — pastel glass tiles on a soft multicolour blur ground ---- */
.abento-sec { padding-top: 0; }
/* bento sits on the normal page ground (no separate coloured board) */
.abento-board { position: relative; padding: 0; }
/* bento sits on the normal page ground (no separate coloured board) */
.abento-board { position: relative; padding: 0; }
/* hero multicolour fills the viewport, then dissolves into the page ground */
.ahero .hero__bg {
  -webkit-mask-image: linear-gradient(180deg, #000 62%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 62%, transparent 100%);
}
.abento {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.875rem;
}
.abento__cell {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1.5rem;
  border-radius: 18px;
  background: linear-gradient(160deg, rgba(255, 255, 255, 0.62), rgba(255, 255, 255, 0.32) 70%);
  backdrop-filter: blur(20px) saturate(1.5);
  -webkit-backdrop-filter: blur(20px) saturate(1.5);
  border: 1px solid rgba(255, 255, 255, 0.7);
  box-shadow: 0 14px 34px rgba(18, 23, 35, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.85);
  transition: background 0.3s var(--ease-out), transform 0.4s var(--ease-out), box-shadow 0.4s var(--ease-out);
}
.abento__cell:hover { transform: translateY(-4px); box-shadow: 0 22px 48px rgba(18, 23, 35, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.9); }
/* soft pastel tint per cell, blended over the white glass */
.abento__cell--v { background: linear-gradient(160deg, rgba(226, 209, 250, 0.7), rgba(255, 255, 255, 0.4) 72%); }
.abento__cell--p { background: linear-gradient(160deg, rgba(249, 214, 231, 0.7), rgba(255, 255, 255, 0.4) 72%); }
.abento__cell--b { background: linear-gradient(160deg, rgba(211, 238, 250, 0.72), rgba(255, 255, 255, 0.4) 72%); }
.abento__cell--g { background: linear-gradient(160deg, rgba(217, 244, 215, 0.72), rgba(255, 255, 255, 0.4) 72%); }
.abento__cell--a { background: linear-gradient(160deg, rgba(250, 229, 209, 0.72), rgba(255, 255, 255, 0.4) 72%); }
.abento__cell--intro { background: var(--elyon-ink); border-color: rgba(245, 247, 255, 0.12); overflow: hidden; }
.abento__cell--intro::after {
  content: ""; position: absolute; inset: 0;
  background: url("../img/pattern-circuit.jpg") right center / cover no-repeat;
  opacity: 0.22;
  -webkit-mask-image: linear-gradient(90deg, transparent 28%, #000 100%);
  mask-image: linear-gradient(90deg, transparent 28%, #000 100%);
  pointer-events: none;
}
.abento__cell--chain { background: linear-gradient(160deg, rgba(255, 255, 255, 0.66), rgba(255, 255, 255, 0.38) 70%); }
.abento__introtext {
  position: relative;
  z-index: 1;
  font-weight: 300;
  font-size: clamp(1.25rem, 2.6vw, 1.75rem);
  line-height: 1.35;
  color: var(--text-on-ink-muted);
  max-width: 34ch;
}
.abento__introtext strong { font-weight: 600; color: var(--text-on-ink); }
.abento__introtext strong { font-weight: 600; color: var(--text-on-ink); }
/* (ink intro tile — strong stays light) */
.abento__num {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(3rem, 5.4vw, 4rem);
  line-height: 0.9;
  color: var(--elyon-ink);
}
/* numeral scale follows the magnitude of the stat — wide spread so 150+ dominates */
.abento__num--xl { font-size: clamp(5rem, 10vw, 7.5rem); }
.abento__num--lg { font-size: clamp(3.25rem, 5.6vw, 4.25rem); }
.abento__num--sm { font-size: clamp(2.25rem, 3.6vw, 2.75rem); }
.abento__num em { font-style: normal; font-size: 0.45em; color: var(--text-muted); margin-left: 0.1em; }
.abento__label {
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.abento__note { font-size: 0.875rem; line-height: 1.5; color: var(--text-muted); }
.abento__tags { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.25rem; }
.abento .tag {
  color: var(--elyon-ink);
  background: rgba(255, 255, 255, 0.6);
  border: 1px solid rgba(255, 255, 255, 0.85);
}

/* chain diagram (bento anchor) */
.chain {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  padding: 1rem 0 0.25rem;
}
.chain__line { display: none; }
.chain__node, .seo__node {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.375rem;
  transition: transform 0.3s var(--ease-out);
}
.chain__node:hover, .seo__node:hover { transform: translateY(-4px); }
.chain__nodeicon, .seo__nodeicon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px; height: 46px;
  border-radius: var(--radius-sm);
  background: var(--surface-card);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-sm);
  color: var(--acc-c, var(--elyon-blue));
}
.chain__nodeicon svg, .seo__nodeicon svg { width: 21px; height: 21px; }
.chain__nodename {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.84375rem;
  color: var(--text-strong);
}
.seo__nodename {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.84375rem;
  color: var(--text-strong);
}
.chain__nodesub {
  font-family: var(--font-mono);
  font-size: 0.59375rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.seo__nodesub {
  font-family: var(--font-mono);
  font-size: 0.59375rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* ---- Tagline ---- */
.atag { padding: var(--sp-8) 0; text-align: center; border-top: 1px solid var(--border-soft); }
.atag__text {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: var(--fs-display-md);
  line-height: 1.05;
  max-width: 860px;
  margin-inline: auto;
}
.atag__text .u-ink { color: var(--elyon-ink); }
.atag__text .u-soft { color: #55618A; }

/* ---- SEO blocks ---- */
.seo { padding-bottom: var(--sp-8); }
.seo__block {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-6);
  align-items: center;
  padding-block: var(--sp-8);
}
.seo__block:first-child { padding-top: 0; }
.seo__block--rev { border-bottom: 1px solid var(--border-soft); }
.seo__panel {
  border-radius: var(--radius-lg);
  padding: var(--sp-6);
  will-change: transform;
}
.seo__panel--chain { background: none; padding: 0; }
.chain-chart { display: block; width: 100%; height: auto; }
.ctr { display: block; width: 100%; height: auto; }
.seo__panel--radial { background: none; padding: 0; }
/* ---- End-to-end infographic (circular ringed nodes, zigzag spine) ---- */
.infog {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 8px 4px;
}
.infog__spine {
  position: absolute;
  left: 50%; top: 18px; bottom: 18px;
  width: 0; transform: translateX(-50%);
  border-left: 1.5px dashed var(--border-strong);
}
.infog__node {
  position: relative;
  display: flex;
  align-items: center;
  gap: 16px;
  width: 64%;
  transition: transform 0.3s var(--ease-out);
}
.infog__node::before {
  content: "";
  position: absolute;
  top: 50%;
  width: 22px;
  border-top: 1.5px dashed var(--acc-c, var(--elyon-blue));
  opacity: 0.7;
}
.infog__node:nth-child(even) { align-self: flex-start; flex-direction: row; }
.infog__node:nth-child(even)::before { right: -22px; }
.infog__node:nth-child(odd)  { align-self: flex-end; flex-direction: row-reverse; text-align: right; }
.infog__node:nth-child(odd)::before { left: -22px; }
.infog__node:hover { transform: scale(1.02); }
.infog__ring {
  flex: none;
  display: grid;
  place-items: center;
  width: 68px; height: 68px;
  border-radius: 50%;
  border: 2px dashed var(--acc-c, var(--elyon-blue));
  background: var(--surface-page);
}
.infog__disc {
  display: grid;
  place-items: center;
  width: 52px; height: 52px;
  border-radius: 50%;
  background: #fff;
  border: 3px solid var(--acc-c, var(--elyon-blue));
  box-shadow: 0 6px 16px -6px color-mix(in srgb, var(--acc-c) 60%, transparent);
}
.infog__disc svg { width: 22px; height: 22px; color: var(--acc-c, var(--elyon-blue)); }
.infog__lbl { display: flex; flex-direction: column; gap: 2px; }
.infog__lbl b {
  font-family: var(--font-body); font-weight: 600; font-size: 0.95rem; color: var(--text-strong);
}
.infog__lbl em {
  font-family: var(--font-mono); font-style: normal; font-size: 0.62rem;
  letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-faint);
}
.seo__diagram {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.25rem;
}
.seo__connline { display: none; }
.seo__h { margin-block: var(--sp-4); font-size: var(--fs-display-md); }
.seo__p { font-size: 0.9375rem; line-height: 1.7; color: var(--text-muted); }
.seo__p + .seo__p { margin-top: var(--sp-4); }

/* radial industries diagram */
.radial { position: relative; aspect-ratio: 1; max-width: 420px; margin-inline: auto; }
.radial__lines { position: absolute; inset: 0; width: 100%; height: 100%; }
.radial__hub {
  position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  display: grid; place-items: center;
  width: 84px; height: 84px;
  border-radius: var(--radius-pill);
  background: radial-gradient(circle at 40% 32%, #29344b, var(--elyon-ink) 70%);
  border: 1px solid #C8A093;
  box-shadow: 0 14px 30px rgba(18, 23, 35, 0.3);
}
.radial__hub img { width: 30px; height: 46px; object-fit: contain; filter: brightness(0) invert(1); }
.radial__node {
  position: absolute;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.71875rem;
  color: var(--text-strong);
  transition: transform 0.3s var(--ease-out);
}
.radial__node:hover { transform: translate(-50%, -56%); }
.radial__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px; height: 44px;
  border-radius: var(--radius-sm);
  background: var(--surface-card);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-sm);
  color: var(--acc-c, var(--elyon-blue));
}
.radial__icon svg { width: 20px; height: 20px; }
.radial__node--1 { left: 20%; top: 17.5%; }
.radial__node--2 { left: 80%; top: 17.5%; }
.radial__node--3 { left: 10%; top: 50%; }
.radial__node--4 { left: 90%; top: 50%; }
.radial__node--5 { left: 20%; top: 82.5%; }
.radial__node--6 { left: 80%; top: 82.5%; }

/* ---- FAQ ---- */
.faq-sec { padding-block: var(--sp-8) calc(var(--divider-gap) + 20px); }
.container--narrow { max-width: 820px; }
.faq { display: flex; flex-direction: column; gap: 0.875rem; }
.faq__item {
  background: var(--surface-card);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  transition: box-shadow 0.3s var(--ease-out);
}
.faq__item:hover { box-shadow: var(--shadow-md); }
.faq__q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  width: 100%;
  text-align: left;
  padding: 1.125rem 1.375rem;
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 1rem;
  color: var(--text-strong);
}
.faq__chev { display: inline-flex; color: var(--elyon-copper); transition: transform 0.35s var(--ease-out); flex: none; }
.faq__chev svg { width: 19px; height: 19px; }
.faq__item.is-open .faq__chev { transform: rotate(180deg); }
.faq__a {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.45s var(--ease-out);
}
.faq__a p {
  padding: 0 1.375rem 1.25rem;
  font-size: 0.9375rem;
  line-height: 1.7;
  color: var(--text-muted);
}
.faq__item.is-open .faq__a { max-height: 48rem; }

/* ---- About page: tablet (48rem) ---- */
@media (min-width: 48rem) {
  .ahero { padding-bottom: 0; }
  .ahero__logo { height: 130px; }
  .abento { grid-template-columns: 1fr 1fr; gap: 1rem; grid-auto-flow: dense; }
  .abento .abento__cell:last-child,
  .abento .abento__cell:nth-last-child(2) { grid-column: span 2; }
  .abento-board { padding: 1.5rem; }
  .abento__cell--intro, .abento__cell--chain { grid-column: span 2; }
  .chain { grid-template-columns: repeat(3, 1fr); }
  .seo__block { grid-template-columns: 1fr 1fr; gap: var(--sp-8); }
  .seo__block--rev .seo__text { order: 1; }
  .seo__block--rev .seo__panel { order: 2; }
  .seo__diagram { grid-template-columns: repeat(2, 1fr); }
}

/* ---- About page: laptop (64rem) ---- */
@media (min-width: 64rem) {
  .ahero { padding-top: calc(var(--header-h) + var(--sp-10)); }
  .ahero__logo { height: 149px; }
  .abento { grid-template-columns: repeat(6, 1fr); gap: 1.125rem; }
  .abento-board { padding: 1.75rem; }
  .abento__cell--intro { grid-column: span 6; }
  .abento__cell--chain { grid-column: span 6; }
  .abento__cell--v, .abento__cell--p, .abento__cell--b { grid-column: span 2; }
  .abento__cell--g, .abento__cell--a { grid-column: span 3; }
  .chain { display: flex; justify-content: space-between; padding: 1.5rem 0.5rem 0.5rem; }
  .chain__line { display: block; position: absolute; left: 0; right: 0; top: 44%; height: 10px; width: 100%; }
  .chain__node { position: relative; flex: 1; }
  .seo__block { gap: var(--sp-10); }
  .seo__panel { padding: var(--sp-8); }
  .seo__diagram { grid-template-columns: repeat(2, 1fr); gap: 1.75rem; }
  .seo__connline { display: none; }
}


/* ==========================================================================
   19. About bento — data-viz micro-charts (rings, bars, donut, eq, swatches)
   ========================================================================== */
.abento__cell { justify-content: flex-start; }
.abento__cell--v, .abento__cell--b, .abento__cell--a { align-items: flex-start; }

/* delta chip (green up) */
.delta {
  display: inline-flex; align-items: center; gap: 0.35rem;
  font-family: var(--font-mono); font-size: 0.6875rem; font-weight: 500;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--positive); margin-top: 0.25rem;
}
.delta svg { width: 14px; height: 14px; }

/* radial ring (9 yrs) */
.viz-ringwrap { position: relative; width: 108px; height: 108px; }
.viz-ring { width: 108px; height: 108px; display: block; }
.viz-ring__val {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  font-family: var(--font-display); font-size: 2.5rem; line-height: 0.8; color: var(--elyon-ink);
}
.viz-ring__val em { font-style: normal; font-size: 0.32em; letter-spacing: 0.12em; color: var(--text-muted); margin-top: 0.25em; font-family: var(--font-mono); }

/* mini bar chart (150+) */
.viz-bars { width: 100%; max-width: 132px; height: 52px; margin-top: 0.25rem; }

/* dot ticks (15 builds) */
.viz-dots { display: flex; flex-wrap: wrap; gap: 5px; max-width: 150px; margin-top: 0.15rem; }
.viz-dots span { width: 12px; height: 12px; border-radius: 4px; background: linear-gradient(160deg, #8DAEFF, #6C97FF); }

/* product donut (13+) */
.viz-split { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.viz-donut { width: 108px; height: 108px; flex: none; }
.viz-donut__num { text-anchor: middle; font-family: var(--font-display); font-size: 27px; fill: var(--elyon-ink); }
.viz-donut__cap { text-anchor: middle; font-family: var(--font-mono); font-size: 8px; letter-spacing: 0.16em; fill: var(--text-muted); }
.viz-legend { display: flex; flex-direction: row; flex-wrap: wrap; gap: 0.4rem 1rem; }
.viz-legend { margin-top: 0.4rem; }
.viz-leg { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8125rem; color: var(--text-body); }
.viz-dot { width: 10px; height: 10px; border-radius: 50%; flex: none; }

/* industry icon circles (6+) */
.viz-inds { display: flex; flex-wrap: wrap; gap: 0.55rem; margin-top: 0.4rem; }
.viz-ind {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 12px;
  background: var(--surface-card);
  border: 1px solid var(--border-soft);
  box-shadow: var(--shadow-sm);
  color: var(--acc-c, var(--elyon-blue));
  transition: transform 0.24s var(--ease-out);
}
.viz-ind:hover { transform: translateY(-3px); }
.viz-ind svg { width: 19px; height: 19px; }

/* team avatar cluster (40) */
.viz-avatars { display: flex; margin-bottom: 0.35rem; }
.viz-av {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 50%;
  margin-left: -12px;
  border: 2px solid var(--surface-card);
  color: #fff; font-family: var(--font-mono); font-size: 0.625rem; font-weight: 500; letter-spacing: 0.04em;
}
.viz-av:first-child { margin-left: 0; }
.viz-av--more { background: var(--elyon-ink) !important; }

/* protocol equalizer (10) */
.viz-eq { width: 100%; max-width: 150px; height: 46px; margin-top: 0.25rem; }

/* stack swatches (9) */
.viz-swatches { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 0.3rem; }
.viz-sw { width: 26px; height: 26px; border-radius: 7px; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.5); }

.abento__tags--mini { margin-top: 0.5rem; }
.abento__tags--mini .tag { font-size: 0.625rem; padding: 0.25rem 0.6rem; }

/* stat cards as a row — text left, graphic right, vertically centred */
/* row cards: numeral row (left) and graphic (right) share the same top baseline */
.abento__cell--row { flex-direction: row; align-items: center; justify-content: space-between; gap: 1rem; }
.abento__rowmain { display: flex; flex-direction: column; gap: 0.3rem; min-width: 0; }
.abento__rowside { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.4rem; flex: none; }
.abento__note--nowrap { white-space: nowrap; }
.since { display: flex; align-items: flex-end; gap: 0.2rem; }
.since__v { writing-mode: vertical-rl; transform: rotate(180deg); font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-faint); }
.since__big { font-family: var(--font-display); font-size: 3.25rem; line-height: 0.78; text-transform: uppercase; color: var(--elyon-ink); }
.since__io { font-family: var(--font-body); font-size: 0.8rem; color: var(--text-muted); margin-bottom: 0.5rem; }
.abento__label--nowrap { white-space: nowrap; }
.abento__note--2l { max-width: 30ch; white-space: normal; }
.viz-net { width: 100%; max-width: 104px; height: 72px; }
/* industry icons wrap to 2 rows so text keeps its space */
.viz-inds { max-width: 148px; }
.abento__cell--a .abento__rowside { min-width: 0; }
/* keep the donut fully inside the card */
.abento__cell--g .abento__rowside { padding-right: 0.25rem; }
.viz-ring__val { font-weight: 400; }
.abento__rowside .viz-bars { margin-top: 0; }
.abento__rowside .viz-line { margin-top: 0; }
.abento__rowside .viz-eq { margin-top: 0; }
.abento__rowmain .abento__tags { margin-top: 0.5rem; }
.abento__rowmain .viz-legend { margin-top: 0.4rem; }

/* line sparkline (15 flagship builds) */
.viz-line { width: 100%; max-width: 148px; height: 50px; margin-top: 0.35rem; }


/* ==========================================================================
   20. About bento — "one tree" converging chain diagram
   ========================================================================== */
.tree {
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem 0.75rem;
  margin-top: 0.25rem;
}
.tree__lines, .tree__hub { display: none; }
.tree__node {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.35rem;
}
.tree__icon {
  display: grid; place-items: center;
  width: 60px; height: 60px;
  border-radius: 18px;
  background: var(--surface-card);
  border: 1px solid var(--border-soft);
  box-shadow: 0 10px 24px rgba(18, 23, 35, 0.10);
  color: var(--acc-c, var(--elyon-blue));
  transition: transform 0.3s var(--ease-out), box-shadow 0.3s var(--ease-out);
}
.tree__node:hover .tree__icon { transform: translateY(-4px); box-shadow: 0 16px 32px rgba(18, 23, 35, 0.16); }
.tree__icon svg { width: 25px; height: 25px; }
.tree__name { font-family: var(--font-body); font-weight: 600; font-size: 0.9375rem; color: var(--elyon-ink); }
.tree__sub { font-family: var(--font-mono); font-size: 0.59375rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-faint); }
.tree__cap {
  grid-column: 1 / -1;
  text-align: center;
  font-family: var(--font-mono);
  font-size: 0.6875rem; font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: #8A6EDC;
  margin-top: 0.5rem;
}

/* fan / tree layout on laptop */
@media (min-width: 64rem) {
  .tree {
    display: block;
    position: relative;
    width: 100%;
    aspect-ratio: 1200 / 600;
    margin-top: 0;
  }
  .tree__lines { display: block; position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; }
  .tree__node { position: absolute; width: 140px; transform: translateX(-50%); z-index: 2; }
  .tree__node--1 { left: 17.9%; top: 20%; }
  .tree__node--2 { left: 34.2%; top: 12%; }
  .tree__node--3 { left: 49.3%; top: 5%; }
  .tree__node--4 { left: 64.6%; top: 12%; }
  .tree__node--5 { left: 80.4%; top: 20%; }
  .tree__node--6 { left: 49.3%; top: 77%; }
  .tree__hub {
    display: grid; place-items: center;
    position: absolute; left: 50%; top: 93%;
    transform: translate(-50%, -50%);
    width: 48px; height: 48px;
    border-radius: 50%;
    background: var(--surface-card);
    border: 1px solid var(--border-soft);
    box-shadow: var(--shadow-md);
    color: var(--text-muted);
    z-index: 3;
  }
  .tree__hub svg { width: 20px; height: 20px; }
  .tree__cap { position: absolute; left: 0; right: 0; bottom: -0.5rem; margin-top: 0; }
}


/* ==========================================================================
   About bento (ported from user upload) — scoped under .abento-2 via CSS nesting
   Fonts mapped to brand tokens; all generic class names isolated to this block.
   ========================================================================== */
.abento-2 {

  --bg:#FAFAFC;
  --border:rgba(255,255,255,.7);
  --ink:#1B1B22;
  --muted:#63626F;
  --faint:#9C9AAB;
  --purple:#7367F0;
  --purple-lt:#A79EF6;
  --blue:#5A8BFF;
  --green:#4CAF50;
  --amber:#E0A87E;
  --pink:#D69AB0;
  --radius:24px;
  --shadow:0 10px 40px rgba(70,60,120,.07);
  --shadow-lift:0 20px 54px rgba(70,60,120,.14);
  --shadow-node:0 8px 22px rgba(70,60,120,.14);
  --ease:cubic-bezier(.22,1,.36,1);
  --font:var(--font-body);
  --numeral:var(--font-display);

  /* pastel shades */
  --p-lav:linear-gradient(140deg,#EDE9FB 0%,#FFFFFF 100%);
  --p-mint:linear-gradient(140deg,#E8F3EC 0%,#FFFFFF 100%);
  --p-ice:linear-gradient(140deg,#E4EFF7 0%,#FFFFFF 100%);
  --p-peach:linear-gradient(140deg,#FBEEE2 0%,#FFFFFF 100%);
  --p-rose:linear-gradient(140deg,#F7E7ED 0%,#FFFFFF 100%);
  --p-lilac:linear-gradient(140deg,#EBE6F8 0%,#FFFFFF 100%);
  --p-sky:linear-gradient(140deg,#E6EEFA 0%,#FFFFFF 100%);
  --p-chain:linear-gradient(150deg,#F1EDFC 0%,#F6F1FC 45%,#FFFFFF 100%);

  --bg: transparent;
}
.abento-2-sec { padding-top: 20px; position: relative; z-index: 1; margin-top: -350px; }
@media (max-width: 47.99rem) { .abento-2-sec { margin-top: 50px; padding-top: 0; } }
@media (min-width: 48rem) and (max-width: 63.99rem) { .abento-2-sec { margin-top: -180px; } }
@media (min-width: 64rem) { .abento-2-sec { margin-top: -450px; } }
/* cursor-following copper spotlight border (matches index bento) */
.abento-2 .cell { position: relative; }
.abento-2 .cell::after {
  content: "";
  position: absolute; inset: 0;
  border-radius: inherit;
  padding: 1.5px;
  background: radial-gradient(240px circle at var(--mx, 50%) var(--my, 50%),
    var(--glow, rgba(138, 94, 76, 0.95)), transparent 70%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.35s ease;
  pointer-events: none;
  z-index: 3;
}
.abento-2 .cell:hover::after { opacity: 1; }
.abento-2 {
.bento{
  display:grid;
  grid-template-columns:repeat(6,1fr);
  grid-auto-rows:150px;          /* row unit; cells span 1–3 of these */
  gap:16px;
}

.cell{
  border-radius:var(--radius);
  border:1px solid var(--border);
  box-shadow:var(--shadow);
  padding:24px 26px;
  overflow:hidden;
  position:relative;
  display:flex;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease);
  opacity:0;
  transform:translateY(20px);
}
.cell.in{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .7s var(--ease),box-shadow .4s var(--ease);}
.cell.in:hover{transform:translateY(-5px);box-shadow:var(--shadow-lift);}

/* pastel shades */
.sh-lav{background:linear-gradient(140deg,#F0DBE3 0%,#FBF1F4 100%);--glow:rgba(214,154,176,0.98);}
.sh-mint{background:linear-gradient(140deg,#DBEBE0 0%,#F1F8F3 100%);--glow:rgba(76,175,80,0.9);}
.sh-ice{background:linear-gradient(140deg,#E0EBF4 0%,#F5F9FC 100%);--glow:rgba(90,139,255,0.95);}
.sh-peach{background:var(--p-peach);--glow:rgba(224,168,126,0.98);}
.sh-rose{background:var(--p-rose);--glow:rgba(214,154,176,0.98);}
.sh-lilac{background:linear-gradient(140deg,#E7E1F6 0%,#F6F2FC 100%);--glow:rgba(167,158,246,0.95);}
.sh-sky{background:var(--p-sky);--glow:rgba(90,139,255,0.9);position:relative;}
.sh-sky::before{content:"";position:absolute;right:-259px;top:-259px;width:518px;height:518px;background:url("../img/radar-rings.svg") center/contain no-repeat;opacity:0.16;pointer-events:none;z-index:0;}
.sh-sky > *{position:relative;z-index:1;}
.sh-chain{background:linear-gradient(150deg,#E4DCF6 0%,#ECE4F8 45%,#F5F0FB 100%);--glow:rgba(115,103,240,0.9);}

/* SPANS */
.c2{grid-column:span 2;} .c3{grid-column:span 3;}
.c4{grid-column:span 4;} .c6{grid-column:span 6;}
.r1{grid-row:span 1;} .r2{grid-row:span 2;} .r3{grid-row:span 3;}

/* inner layouts */
.split{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;}
.stack{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;}
.body{flex:1 1 auto;min-width:0;}
.viz{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:10px;}

/* type */
.num{font-family:var(--numeral);font-size:54px;line-height:.8;color:var(--ink);margin:0;}
.num sup{font-size:22px;font-weight:400;color:var(--faint);top:-.55em;margin-left:2px;}
.label{font-size:10.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;}
.cap{font-size:12.5px;color:var(--muted);margin-top:12px;line-height:1.55;}

/* since 2017 */
.since{display:flex;align-items:flex-end;gap:7px;}
.since__v{
  writing-mode:vertical-rl;transform:rotate(180deg);
  font-family:var(--numeral);font-size:30px;letter-spacing:.12em;
  line-height:1;color:#FFFFFF;margin-bottom:4px;
}
.since__y{font-family:var(--numeral);font-size:58px;line-height:.78;white-space:nowrap;}
.since__in{display:block;font-family:var(--font);font-size:10.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--faint);margin-top:8px;}

/* pills */
.pill{display:inline-flex;font-size:11.5px;font-weight:500;padding:4px 11px;border-radius:9px;background:rgba(255,255,255,.85);color:#4A4857;margin:0 5px 5px 0;}

/* ---------- charts ---------- */
.ring .fill{stroke:url(#gRing);stroke-linecap:round;stroke-dasharray:182.2;stroke-dashoffset:182.2;transition:stroke-dashoffset 1.5s var(--ease) .25s;}
.on .ring .fill{stroke-dashoffset:100;}

.bars rect{transform-origin:bottom;transform:scaleY(0);transition:transform .8s var(--ease);}
.on .bars rect{transform:scaleY(1);}
.on .bars rect:nth-child(1){transition-delay:.1s;} .on .bars rect:nth-child(2){transition-delay:.18s;}
.on .bars rect:nth-child(3){transition-delay:.26s;} .on .bars rect:nth-child(4){transition-delay:.34s;}
.on .bars rect:nth-child(5){transition-delay:.42s;}

.trend{display:flex;align-items:center;gap:7px;font-family:var(--numeral);font-size:19px;letter-spacing:.06em;color:var(--green);}
.trend .amp{color:#C9C7D6;}

.line .stroke{stroke:var(--blue);stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:140;stroke-dashoffset:140;transition:stroke-dashoffset 1.3s var(--ease) .3s;}
.on .line .stroke{stroke-dashoffset:0;}
.line .area{opacity:0;transition:opacity .7s ease 1s;}
.on .line .area{opacity:1;}
.line .dot{opacity:0;transition:opacity .4s ease 1.3s;}
.on .line .dot{opacity:1;}

.donut .b2b{stroke-dasharray:226;stroke-dashoffset:226;transition:stroke-dashoffset 1.4s var(--ease) .3s;}
.on .donut .b2b{stroke-dashoffset:122;}

.legend{display:flex;flex-direction:column;gap:6px;margin-top:14px;}
.legend div{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);}
.legend i{width:9px;height:9px;border-radius:50%;flex:none;}
.legend b{color:var(--ink);font-weight:600;}

/* sector icons */
.sectors{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;}
.sector{
  width:46px;height:46px;border-radius:13px;background:#fff;
  box-shadow:var(--shadow-node);display:flex;align-items:center;justify-content:center;
  opacity:0;transform:translateY(10px) scale(.9);
  transition:opacity .5s var(--ease),transform .5s var(--ease);
}
.on .sectors .sector{opacity:1;transform:none;}
.on .sectors .sector:nth-child(1){transition-delay:.08s;} .on .sectors .sector:nth-child(2){transition-delay:.16s;}
.on .sectors .sector:nth-child(3){transition-delay:.24s;} .on .sectors .sector:nth-child(4){transition-delay:.32s;}
.on .sectors .sector:nth-child(5){transition-delay:.40s;} .on .sectors .sector:nth-child(6){transition-delay:.48s;}
.sector:hover{transform:translateY(-4px) scale(1.06)!important;}
.sector svg{width:20px;height:20px;stroke-width:1.7;}

/* avatars */
.avatars{display:flex;}
.avatars span{
  width:36px;height:36px;border-radius:50%;margin-left:-10px;border:2.5px solid #fff;
  display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:600;color:#fff;
  opacity:0;transform:scale(.6);transition:opacity .45s var(--ease),transform .5s var(--ease);
}
.avatars span:first-child{margin-left:0;}
.on .avatars span{opacity:1;transform:none;}
.on .avatars span:nth-child(1){transition-delay:.08s;} .on .avatars span:nth-child(2){transition-delay:.15s;}
.on .avatars span:nth-child(3){transition-delay:.22s;} .on .avatars span:nth-child(4){transition-delay:.29s;}
.on .avatars span:nth-child(5){transition-delay:.36s;} .on .avatars span:nth-child(6){transition-delay:.43s;}

/* signal arcs */
.signal path{stroke:var(--purple-lt);fill:none;stroke-linecap:round;opacity:0;transition:opacity .5s var(--ease);}
.on .signal path{opacity:1;}
.on .signal path:nth-of-type(1){transition-delay:.35s;opacity:.35;}
.on .signal path:nth-of-type(2){transition-delay:.22s;opacity:.6;}
.on .signal path:nth-of-type(3){transition-delay:.1s;opacity:1;}

/* stack layers */
.layers path{opacity:0;transform:translateY(8px);transition:opacity .5s var(--ease),transform .55s var(--ease);}
.on .layers path{opacity:1;transform:none;}
.on .layers path:nth-of-type(1){transition-delay:.3s;}
.on .layers path:nth-of-type(2){transition-delay:.2s;}
.on .layers path:nth-of-type(3){transition-delay:.1s;}

/* timeline */
.tl .track{stroke:#fff;stroke-width:5;stroke-linecap:round;}
.tl .dash{stroke:var(--pink);stroke-width:2.5;stroke-dasharray:2 5;stroke-linecap:round;stroke-dashoffset:80;transition:stroke-dashoffset 1.2s var(--ease) .3s;}
.on .tl .dash{stroke-dashoffset:0;}

/* ---------- chain (tall cell) ---------- */
.chain__scroll{width:100%;display:flex;flex-direction:column;min-width:0;}
.chain{position:relative;width:100%;height:calc(100% - 30px);min-height:250px;}
.chain svg.links{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.links--mob{display:none;}
.links path{stroke:#C9C1E6;stroke-width:1.5;fill:none;stroke-dasharray:420;stroke-dashoffset:420;transition:stroke-dashoffset 1.3s var(--ease);}
.on .links path{stroke-dashoffset:0;}
.on .links path:nth-of-type(1){transition-delay:.2s;} .on .links path:nth-of-type(2){transition-delay:.32s;}
.on .links path:nth-of-type(3){transition-delay:.44s;} .on .links path:nth-of-type(4){transition-delay:.56s;}
.on .links path:nth-of-type(5){transition-delay:.68s;}

.node{
  position:absolute;transform:translate(-50%,-50%) translateY(14px);
  width:120px;text-align:center;opacity:0;
  transition:opacity .55s var(--ease),transform .6s var(--ease);
}
.on .node{opacity:1;transform:translate(-50%,-50%);}
.on .node--hw{transition-delay:.15s;} .on .node--fw{transition-delay:.26s;}
.on .node--proto{transition-delay:.37s;} .on .node--gw{transition-delay:.48s;}
.on .node--cloud{transition-delay:.59s;} .on .node--app{transition-delay:.72s;}

.node__ic{
  width:54px;height:54px;margin:0 auto 11px;border-radius:16px;background:#fff;
  box-shadow:var(--shadow-node);display:flex;align-items:center;justify-content:center;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease);
}
.node:hover .node__ic{transform:translateY(-5px) scale(1.07);box-shadow:0 16px 32px rgba(70,60,120,.22);}
.node__ic svg{width:23px;height:23px;stroke-width:1.6;}
/* Your app — two-layer frozen glass tile (violet block behind + frosted front) */
.node__ic--app{position:relative;overflow:visible;background:transparent;box-shadow:none;}
.node__ic--app::before{content:"";position:absolute;inset:0;transform:translate(9px,-9px);border-radius:16px;background:linear-gradient(150deg,#9F8BF5,#7367F0);box-shadow:0 16px 30px -12px rgba(115,103,240,.6);z-index:0;}
.node__ic--app::after{content:"";position:absolute;inset:0;border-radius:16px;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.6);backdrop-filter:blur(9px) saturate(1.4);-webkit-backdrop-filter:blur(9px) saturate(1.4);box-shadow:inset 0 1px 0 rgba(255,255,255,.75);z-index:1;}
.node__ic--app svg{position:relative;z-index:2;}
.node:hover .node__ic--app{transform:translateY(-5px);}
.node__t{font-size:13.5px;font-weight:600;letter-spacing:-.01em;}
.node__s{font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);margin-top:4px;white-space:nowrap;}

.chain__cap{
  text-align:center;
  margin-top:14px;
  padding-bottom:2px;
  font-size:10.5px;font-weight:600;letter-spacing:5px;text-transform:uppercase;color:var(--purple);
  white-space:nowrap;
}

/* ---------- statement cell ---------- */
.intro{
  align-items:center;
  justify-content:center;
  text-align:center;
  min-height:170px;
}
.intro p{
  font-size:26px;
  font-weight:400;
  line-height:1.45;
  color:var(--muted);
  letter-spacing:-.015em;
  margin:0 auto;
  max-width:760px;
}
.intro b{
  font-weight:700;
  color:var(--ink);
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:63.99rem){
  .bento{grid-template-columns:repeat(2,1fr);grid-auto-rows:auto;}
  /* overrides the inline grid-column pins set on Oldest + Stacks */
  .cell{grid-column:auto / span 1!important;grid-row:auto!important;min-height:170px;}
  .c6,.c4,.sh-chain{grid-column:auto / span 2!important;}
  .chain{height:360px;min-height:320px;}
  .intro p{font-size:22px;}
}

@media (max-width:47.99rem){
  .wrap{padding:32px 16px 56px;}
  .bento{grid-template-columns:1fr;gap:14px;}
  .cell{grid-column:auto / span 1!important;min-height:0;padding:22px;}
  .intro p{font-size:19px;line-height:1.5;}
  .since__y{font-size:52px;}
  .cap{white-space:normal;}
  /* Chain: full-width 3→1 layout (no horizontal scroll) */
  .sh-chain{padding:18px 14px 14px!important;}
  .chain__scroll{overflow:visible;width:100%;}
  .chain{
    width:100%;
    height:auto;
    aspect-ratio:360 / 340;
    min-height:280px;
    max-height:380px;
  }
  .links--desk{display:none;}
  .links--mob{display:block;}
  .node--gw,
  .node--cloud{display:none;}
  .node--hw{left:16%!important;top:32%!important;width:104px;}
  .node--fw{left:50%!important;top:24%!important;width:104px;}
  .node--proto{left:84%!important;top:32%!important;width:104px;}
  .node--app{left:50%!important;top:78%!important;width:120px;}
  .node__ic{width:48px;height:48px;margin-bottom:8px;border-radius:14px;}
  .node__ic svg{width:20px;height:20px;}
  .node__ic--app::before{transform:translate(7px,-7px);border-radius:14px;}
  .node__ic--app::after{border-radius:14px;}
  .node__t{font-size:12.5px;}
  .node__s{font-size:9px;letter-spacing:.05em;white-space:normal;}
  .chain__cap{
    letter-spacing:2.5px;
    font-size:9px;
    white-space:normal;
    line-height:1.4;
    padding-inline:4px;
  }
}

@media (prefers-reduced-motion:reduce){
  .cell,.node,.sector,.avatars span{opacity:1!important;transform:none!important;transition:none!important;}
  .ring .fill{stroke-dashoffset:100;transition:none;}
  .bars rect{transform:scaleY(1);transition:none;}
  .line .stroke{stroke-dashoffset:0;} .line .area,.line .dot{opacity:1;}
  .donut .b2b{stroke-dashoffset:122;}
  .links path{stroke-dashoffset:0;transition:none;}
  .signal path,.layers path{opacity:1;transform:none;}
  .tl .dash{stroke-dashoffset:0;}
}

} /* .abento-2 */

/* ==========================================================================
   20. Contact page — step wizard, offices under title
   ========================================================================== */
.ahero--contact {
  min-height: auto;
  padding-bottom: var(--sp-8);
  justify-content: flex-start;
  overflow: visible;
}
.ahero--contact .ahero__inner {
  margin-bottom: var(--sp-4);
}
@media (min-width: 48rem) {
  .ahero--contact .ahero__watermark {
    top: 50vh;
    transform: translateY(calc(-50% + var(--lag-y, 0px))) rotate(180deg);
  }
}
/* Mobile must win over base contact watermark / overflow */
@media (max-width: 47.99rem) {
  .ahero--contact {
    overflow: hidden;
    padding-bottom: var(--sp-8);
  }
  .ahero--contact .ahero__watermark {
    top: 100px;
    right: -18px;
    left: auto;
    transform: translateY(var(--lag-y, 0px)) rotate(180deg);
  }
  .wiz-sec {
    padding-top: var(--sp-10);
    margin-top: 0;
  }
  .ahero--contact .offices-under {
    margin-bottom: var(--sp-2);
    padding-right: var(--sp-5);
  }
}

/* Offices sit directly under the page title */
.ahero--contact .offices-under {
  position: relative;
  z-index: 3;
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--sp-5);
  text-align: left;
}
.ahero--contact .offices {
  margin: 0;
  background: rgba(255, 255, 255, 0.45);
  backdrop-filter: blur(16px) saturate(1.3);
  -webkit-backdrop-filter: blur(16px) saturate(1.3);
  border: 1px solid rgba(255, 255, 255, 0.7);
  border-radius: var(--radius-xl);
  padding: var(--sp-4) var(--sp-5);
  box-shadow: var(--shadow-sm);
  text-align: left;
}
.ahero--contact .office {
  padding: var(--sp-5) 0;
}
.ahero--contact .office:first-child { padding-top: var(--sp-2); }
.ahero--contact .office:last-child { padding-bottom: var(--sp-2); }

.container--narrow { max-width: 760px; }

.btn--ghost {
  color: var(--text-muted);
  background: transparent;
  border-color: var(--border-strong);
}
.btn--ghost:hover {
  color: var(--text-strong);
  border-color: var(--text-strong);
  background: var(--surface-sunken);
}
.btn:disabled,
.btn[disabled] { opacity: 0.45; cursor: not-allowed; pointer-events: none; }

/* ---- Shared field styles --------------------------------------------- */
.contact-field { display: flex; flex-direction: column; gap: 6px; }
.contact-field--full { grid-column: 1 / -1; }
.contact-label {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.contact-input,
.contact-textarea {
  width: 100%;
  font-family: var(--font-body);
  font-size: 1rem;
  color: var(--text-strong);
  background: #F0F2F8;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  padding: 0.875rem 1rem;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.contact-input::placeholder,
.contact-textarea::placeholder { color: var(--text-faint); }
.contact-input:focus,
.contact-textarea:focus {
  outline: none;
  background: #EBEEF6;
  border-color: var(--elyon-blue);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--elyon-blue) 22%, transparent);
}
.contact-input.is-invalid,
.contact-textarea.is-invalid {
  border-color: #C45B5B;
  box-shadow: 0 0 0 3px color-mix(in srgb, #C45B5B 18%, transparent);
}
.contact-textarea { resize: vertical; min-height: 120px; line-height: 1.55; }
.contact-error { font-size: 0.8125rem; color: #B54545; min-height: 1.1em; }

/* ---- Wizard (no outer card) ------------------------------------------ */
.wiz-sec {
  padding-top: var(--sp-10);
  padding-bottom: var(--sp-10);
  margin-top: 0;
  position: relative;
  z-index: 2;
}
@media (max-width: 47.99rem) {
  .ahero--contact .offices-under { margin-top: 0; }
}
@media (min-width: 48rem) {
  .wiz-sec { padding-top: var(--sp-12); }
}
.wiz {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  max-width: 960px;
  margin-inline: auto;
}

.wiz__progress {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-bottom: var(--sp-6);
}
.wiz__dot {
  width: 30px;
  height: 6px;
  border-radius: 999px;
  background: var(--border-soft);
  transition: background 0.3s ease;
}
.wiz__dot.is-active { background: var(--elyon-blue); }
.wiz__dot.is-done { background: color-mix(in srgb, var(--elyon-blue) 45%, var(--border-soft)); }

.wiz__step { display: none; }
.wiz__step.is-active { display: block; animation: wiz-in 0.4s var(--ease-out); }
@keyframes wiz-in {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: none; }
}

.wiz__head { text-align: center; margin-bottom: var(--sp-6); }
.wiz__title {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: var(--fs-display-md);
  line-height: 0.96;
  color: var(--elyon-ink);
  margin-top: var(--sp-2);
}
.wiz__sub {
  margin: var(--sp-3) auto 0;
  max-width: 48ch;
  font-size: 0.9375rem;
  line-height: 1.6;
  color: var(--text-muted);
}

/* Glassy service cards — 1 col narrow phones, 2 cols from ~360px */
.wiz__options {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-4);
}
@media (min-width: 22.5rem) {
  .wiz__options { grid-template-columns: 1fr 1fr; }
}
.wiz-card {
  position: relative;
  cursor: pointer;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: var(--sp-5) var(--sp-4);
  font-family: var(--font-body);
  color: inherit;
  background: linear-gradient(160deg, rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.38) 70%);
  backdrop-filter: blur(18px) saturate(1.4);
  -webkit-backdrop-filter: blur(18px) saturate(1.4);
  border: 1.5px solid rgba(255, 255, 255, 0.75);
  border-radius: var(--radius-lg);
  box-shadow: 0 10px 28px rgba(18, 23, 35, 0.06);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s var(--ease-out), background 0.2s ease;
}
.wiz-card:hover {
  border-color: color-mix(in srgb, var(--elyon-blue) 40%, rgba(255, 255, 255, 0.75));
  box-shadow: 0 14px 32px rgba(18, 23, 35, 0.1);
  transform: translateY(-3px);
}
.wiz-card.is-selected {
  border-color: var(--elyon-blue);
  background: linear-gradient(160deg, rgba(255, 255, 255, 0.88), color-mix(in srgb, var(--elyon-blue) 10%, rgba(255, 255, 255, 0.5)));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--elyon-blue) 18%, transparent), 0 14px 32px rgba(108, 151, 255, 0.18);
}
.wiz-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 12px;
  margin-bottom: 6px;
  color: var(--elyon-ink);
  background: rgba(255, 255, 255, 0.65);
  border: 1px solid rgba(255, 255, 255, 0.8);
}
.wiz-card__icon svg { width: 22px; height: 22px; }
.wiz-card__title { font-weight: 600; font-size: 0.95rem; color: var(--elyon-ink); }
.wiz-card__desc { font-size: 0.8rem; color: var(--text-muted); }
.wiz-card__check {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 1.5px solid color-mix(in srgb, var(--border-strong) 70%, transparent);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  background: rgba(255, 255, 255, 0.5);
  transition: background 0.2s ease, border-color 0.2s ease;
}
.wiz-card__check svg { width: 13px; height: 13px; opacity: 0; transition: opacity 0.2s ease; }
.wiz-card.is-selected .wiz-card__check { background: var(--elyon-blue); border-color: var(--elyon-blue); }
.wiz-card.is-selected .wiz-card__check svg { opacity: 1; }

.wiz__error { text-align: center; color: #B54545; font-size: 0.85rem; min-height: 1.1em; margin-top: var(--sp-4); }
.wiz__hint  { text-align: center; color: var(--text-faint); font-size: 0.8125rem; margin-top: var(--sp-4); }

/* Step 2 — white panel, light-gray inputs */
.wiz__panel {
  max-width: 560px;
  margin-inline: auto;
  background: #FFFFFF;
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-sm);
  padding: var(--sp-6);
}
.wiz__fields { display: grid; grid-template-columns: 1fr; gap: var(--sp-5); }

.wiz__actions { margin-top: var(--sp-6); display: flex; justify-content: center; }
.wiz__actions--split { justify-content: space-between; gap: var(--sp-4); }
.wiz__cta { min-width: 160px; }

.wiz__step--done { text-align: center; padding: var(--sp-6) var(--sp-2); }
.wiz__done-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  color: var(--positive);
  background: color-mix(in srgb, var(--positive) 12%, #fff);
  border: 1px solid color-mix(in srgb, var(--positive) 30%, transparent);
  margin-bottom: var(--sp-4);
}
.wiz__done-icon svg { width: 32px; height: 32px; }
.wiz__step--done .wiz__sub a { color: var(--elyon-blue); }
.wiz__restart { margin-top: var(--sp-6); }

/* ---- Offices (shared row layout) ------------------------------------- */
.offices { list-style: none; margin: 0; padding: 0; }
.office {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  padding: var(--sp-5) 0;
  border-top: 1px solid var(--border-soft);
  text-align: left;
}
.office:first-child { border-top: 0; }
.office__head {
  display: flex;
  align-items: center;
  gap: 10px;
}
.office__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  flex: none;
  color: var(--elyon-ink);
  background: rgba(255, 255, 255, 0.8);
  border: 1px solid rgba(255, 255, 255, 0.9);
  border-radius: 10px;
}
.office__icon svg { width: 18px; height: 18px; stroke-width: 1.5; }
.office__name {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: 1.2rem;
  line-height: 1.05;
  color: var(--elyon-ink);
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin: 0;
}
.office__tag {
  font-family: var(--font-mono);
  font-size: 0.6rem;
  letter-spacing: 0.14em;
  padding: 3px 8px;
  border-radius: 999px;
  color: var(--elyon-blue);
  background: color-mix(in srgb, var(--elyon-blue) 12%, #fff);
  border: 1px solid color-mix(in srgb, var(--elyon-blue) 30%, transparent);
}
.office__addr {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.55;
  color: var(--text-muted);
  max-width: 46ch;
  text-align: left;
}
.office__contact { display: flex; flex-direction: column; gap: 8px; text-align: left; align-items: flex-start; }
.office__line {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.9rem;
  color: var(--text-strong);
  text-decoration: none;
}
.office__line svg { width: 16px; height: 16px; color: var(--text-faint); flex: none; }
.office__line:hover { color: var(--elyon-blue); }
.office__dir {
  position: relative;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding: 0.7rem 1.5rem;
  color: var(--elyon-ink);
  background: var(--gradient-button);
  border-radius: var(--radius-pill);
  text-decoration: none;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  box-shadow: none;
  transition: transform 0.24s var(--ease-out), box-shadow 0.24s var(--ease-out);
}
.office__dir::before {
  content: "";
  position: absolute; inset: 0;
  border-radius: inherit;
  padding: 1.5px;
  background: radial-gradient(90px circle at var(--mx, 50%) var(--my, 50%),
    rgba(255, 255, 255, 1), rgba(226, 188, 177, 0.85) 28%, rgba(141, 174, 255, 0.4) 52%, transparent 72%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.3s var(--ease-out);
  pointer-events: none;
}
.office__dir:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 24px rgba(108, 151, 255, 0.35);
}
.office__dir:hover::before { opacity: 1; }

.contact-faq-sec { padding-bottom: calc(var(--divider-gap) + 20px); }

@media (min-width: 48rem) {
  .ahero--contact .offices-under { padding-inline: var(--sp-8); }
  .ahero--contact .offices { padding: var(--sp-5) var(--sp-6); }
  /* Tablet: 2×3 service grid */
  .wiz__options {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--sp-5);
  }
  .wiz-card:nth-child(5),
  .wiz-card:nth-child(6) { grid-column: auto; }
  .wiz__panel { padding: var(--sp-8); }
  .wiz__fields { grid-template-columns: 1fr 1fr; }
  .office {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) auto;
    align-items: center;
    gap: var(--sp-5);
    padding: var(--sp-6) 0;
  }
  .office__icon {
    width: 48px;
    height: 48px;
    border-radius: var(--radius-md);
  }
  .office__icon svg { width: 22px; height: 22px; stroke-width: 1.4; }
  .office__name { font-size: 1.35rem; }
  .office__addr { margin-top: 6px; }
  .office__dir {
    align-self: center;
    justify-self: end;
  }
}

@media (min-width: 64rem) {
  .ahero--contact .offices-under { padding-inline: var(--sp-10); }
  /* Desktop: 4 on top, 2 centered below */
  .wiz__options { grid-template-columns: repeat(4, 1fr); }
  .wiz-card:nth-child(5) { grid-column: 2; }
  .wiz-card:nth-child(6) { grid-column: 3; }
}