/* Calyx Core Motion System — premium, restrained, performance-minded */
:root {
  --cm-ease: cubic-bezier(.22,.61,.36,1);
  --cm-ease-soft: cubic-bezier(.16,1,.3,1);
  --cm-duration: 680ms;
}

/* Subtle printed-paper texture. Disabled on small screens for performance. */
.calyx-page { position: relative; isolation: isolate; }
.calyx-page::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 90;
  pointer-events: none;
  opacity: .025;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E");
  mix-blend-mode: multiply;
}

/* Progressive enhancement: content only starts hidden once JS confirms motion is active. */
.cm-js .cm-reveal,
.cm-js .cm-reveal-item {
  opacity: 0;
  transform: translate3d(0, 24px, 0);
  transition:
    opacity var(--cm-duration) var(--cm-ease),
    transform var(--cm-duration) var(--cm-ease);
  transition-delay: var(--cm-delay, 0ms);
  will-change: opacity, transform;
}
.cm-js .cm-reveal-item { transform: translate3d(0, 18px, 0); }
.cm-js .cm-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* Homepage hero enters with a composed editorial cadence. */
.cm-js #top .cm-hero-bit {
  opacity: 0;
  transform: translate3d(0, 20px, 0);
  transition: opacity 720ms var(--cm-ease-soft), transform 720ms var(--cm-ease-soft);
  transition-delay: var(--cm-delay, 0ms);
}
.cm-js #top .cm-hero-bit.cm-visible { opacity: 1; transform: none; }

/* Premium card interactions */
.svc-glass,
.cm-card {
  transition:
    transform 420ms var(--cm-ease-soft),
    border-color 320ms ease,
    box-shadow 420ms var(--cm-ease-soft),
    background-color 320ms ease !important;
}
@media (hover:hover) and (pointer:fine) {
  .svc-glass:hover,
  .cm-card:hover {
    transform: translateY(-5px);
    border-color: var(--hairline-strong) !important;
    box-shadow: 0 20px 46px -30px rgba(31,28,24,.36);
  }
  .svc-glass .cm-media-img,
  .cm-card .cm-media-img { transition: transform 720ms var(--cm-ease-soft); }
  .svc-glass:hover .cm-media-img,
  .cm-card:hover .cm-media-img { transform: scale(1.025); }
}

/* CTA micro-interactions */
.cm-cta { transition: transform 220ms ease, background-color 220ms ease, color 220ms ease, border-color 220ms ease, box-shadow 220ms ease !important; }
.cm-cta .cm-arrow { display:inline-block; transition: transform 220ms var(--cm-ease); }
@media (hover:hover) and (pointer:fine) {
  .cm-cta:hover { transform: translateY(-1px); }
  .cm-cta:hover .cm-arrow { transform: translateX(5px); }
}

/* Image surfaces */
.cm-media { overflow: hidden; }
.cm-media-img { transform: scale(1); transform-origin: 50% 50%; }

/* Header becomes tighter and more refined after scrolling */
.ch-nav img,
.ch-nav .ch-cta { transition: height 240ms var(--cm-ease), transform 240ms var(--cm-ease), padding 240ms var(--cm-ease); }
.ch-nav.ch-scrolled img { height: 24px !important; }
.ch-nav.ch-scrolled .ch-cta { height: 36px !important; padding-left: 19px !important; padding-right: 19px !important; }
.ch-dd-menu { transform: translateY(8px); transition: opacity 180ms ease-out, transform 180ms var(--cm-ease), visibility 180ms ease-out !important; }
.ch-dd:hover .ch-dd-menu,
.ch-dd:focus-within .ch-dd-menu { transform: translateY(0); }

/* Logo marquee: slower, calmer, interactive focus */
.calyx-track { animation-duration: 38s !important; }
.calyx-track > * { transition: opacity 220ms ease, transform 260ms var(--cm-ease); }
@media (hover:hover) and (pointer:fine) {
  .calyx-track:hover > * { opacity: .6; }
  .calyx-track:hover > *:hover { opacity: 1; transform: scale(1.035); }
}

/* Editorial section marker / separator accents */
.cm-section-accent { position: relative; }
.cm-section-accent::after {
  content: "";
  display: block;
  width: 0;
  height: 1px;
  margin-top: 16px;
  background: var(--brand-accent);
  transition: width 720ms var(--cm-ease-soft) 180ms;
}
.cm-section-accent.cm-visible::after { width: 42px; }

/* Respect accessibility and battery/performance preferences. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
  .cm-js .cm-reveal,
  .cm-js .cm-reveal-item,
  .cm-js #top .cm-hero-bit { opacity: 1 !important; transform: none !important; }
}

@media (max-width: 860px) {
  .calyx-page::before { display: none; }
  .cm-js .cm-reveal { transform: translate3d(0, 14px, 0); }
  .cm-js .cm-reveal-item { transform: translate3d(0, 10px, 0); }
  .svc-glass:hover, .cm-card:hover { transform: none; box-shadow: none; }
  .ch-nav.ch-scrolled img { height: 25px !important; }
}


/* Case studies */
.calyx-case-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;}
.calyx-case-card{text-decoration:none;}
.calyx-case-card .cm-arrow{display:inline-block;transition:transform 220ms var(--cm-ease);}
.calyx-case-card:hover .cm-arrow{transform:translateX(5px);}
.calyx-case-visual{aspect-ratio:16/10;overflow:hidden;background:var(--surface-bone);}
.calyx-case-visual img{width:100%;height:100%;object-fit:cover;display:block;}
.calyx-case-visual-logo{display:flex;align-items:center;justify-content:center;padding:42px;}
.calyx-case-visual-logo img{object-fit:contain;max-width:72%;max-height:64%;filter:none!important;}
@media(max-width:900px){.calyx-case-grid{grid-template-columns:1fr 1fr}.calyx-case-studies>div>div:first-child{align-items:flex-start!important;flex-direction:column!important}.calyx-case-studies{padding-left:20px!important;padding-right:20px!important}}
@media(max-width:620px){.calyx-case-grid{grid-template-columns:1fr}.calyx-case-studies h2{font-size:42px!important}.calyx-case-visual{aspect-ratio:16/9}}
