/* Cursor dimensions + blend mode (from Framer React bundle) */
.framer-um3iI.framer-1oy0ih7 {
  width: 26px;
  height: 26px;
  mix-blend-mode: difference;
  overflow: hidden;
  will-change: var(--framer-will-change-override, transform);
}
@media (hover: hover) {
  [data-framer-root] { cursor: none; }
  [data-framer-root] a,
  [data-framer-root] button,
  [data-framer-root] input,
  [data-framer-root] textarea,
  [data-framer-root] [tabindex] { cursor: none; }
}

/* Work-card hover: title + gradient overlay */
.framer-107nacr, .framer-1n3chbh {
  transition: opacity 0.25s ease;
}
.framer-iF7NM:hover .framer-107nacr,
.framer-iF7NM:hover .framer-1n3chbh {
  opacity: 1 !important;
}

/* Footer wrapper: transparent scroll spacer */
.framer-xivj96-container {
  background-color: transparent;
}

/* Hero avatar 1.5× */
@media (min-width: 1274px) {
  .framer-aqkbdw {
    width: 252px !important;
    height: var(--framer-aspect-ratio-supported, 252px) !important;
  }
}
@media (max-width: 1273.98px) {
  .framer-aqkbdw {
    width: 165px !important;
    height: var(--framer-aspect-ratio-supported, 165px) !important;
  }
}

/* Nav icon grid squares: transition for converge/spread animation */
.framer-1vrx0im, .framer-2irnel, .framer-ryl9c1, .framer-a4mw7x {
  transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

/* Status dot pulse */
@keyframes cos-pulse {
  0%   { transform: scale(1);   opacity: 0.65; }
  70%  { transform: scale(2.8); opacity: 0; }
  100% { transform: scale(2.8); opacity: 0; }
}

/* Avatar pixel burst: snap in, hold, fade */
@keyframes cos-pixel-in {
  0%   { transform: scale(0);   opacity: 0; }
  8%   { transform: scale(1.1); opacity: 1; }
  80%  { transform: scale(1);   opacity: 1; }
  100% { transform: scale(1);   opacity: 0; }
}

/* Avatar pixel burst: snap in, hold, rotate 90°, fade */
@keyframes cos-pixel-spin {
  0%   { transform: scale(0)   rotate(0deg);  opacity: 0; }
  5%   { transform: scale(1.1) rotate(0deg);  opacity: 1; }
  37%  { transform: scale(1)   rotate(0deg);  opacity: 1; }
  62%  { transform: scale(1)   rotate(90deg); opacity: 1; }
  80%  { transform: scale(1)   rotate(90deg); opacity: 1; }
  100% { transform: scale(1)   rotate(90deg); opacity: 0; }
}

/* Hero name (home page only): tight line-height.
   Font-size is handled by CRITICAL_CSS with !important. Scoped to the
   home-page name containers (.framer-p3zcd6 / .framer-h3olmu) so this
   does not leak onto the contact-page "SHOOT A REQUEST" heading. */
.framer-p3zcd6 .framer-styles-preset-bglb1i:not(.rich-text-wrapper),
.framer-h3olmu .framer-styles-preset-bglb1i:not(.rich-text-wrapper),
.framer-p3zcd6 .framer-styles-preset-bglb1i.rich-text-wrapper h1,
.framer-h3olmu .framer-styles-preset-bglb1i.rich-text-wrapper h1 {
  --framer-line-height: 0.8em;
}

/* Contact heading: restore Framer's intended font-sizes.
   Framer's PropertyOverrides runtime script injects
   min(10.77vw,261px) for .framer-ACPLf AFTER the stylesheet loads,
   overriding the page's own 174px/130px/90px values.
   These !important rules win over that late injection. */
.framer-8yLTX .framer-styles-preset-bglb1i:not(.rich-text-wrapper),
.framer-8yLTX .framer-styles-preset-bglb1i.rich-text-wrapper h1 {
  --framer-font-size: 174px !important;
  --framer-line-height: 1em !important;
}
@media (max-width: 1199px) and (min-width: 810px) {
  .framer-8yLTX .framer-styles-preset-bglb1i:not(.rich-text-wrapper),
  .framer-8yLTX .framer-styles-preset-bglb1i.rich-text-wrapper h1 {
    --framer-font-size: 130px !important;
  }
}
@media (max-width: 809px) {
  .framer-8yLTX .framer-styles-preset-bglb1i:not(.rich-text-wrapper),
  .framer-8yLTX .framer-styles-preset-bglb1i.rich-text-wrapper h1 {
    --framer-font-size: 90px !important;
  }
}

/* Hidden sections */
section.framer-19i4xg    { display: none !important; }
.framer-d7nid0-container  { display: none !important; }
.framer-1rijm4d-container { display: none !important; }

/* Floating nav: fixed, transparent */
header.framer-TSio1 {
  position: fixed !important;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  overflow: visible !important;
  background-color: transparent !important;
  transition: padding-top 0.4s ease, padding-bottom 0.4s ease;
}
header.framer-TSio1[data-border]::after { display: none; }
header.framer-TSio1 .framer-22gwm9-container {
  transition: width 0.4s ease, height 0.4s ease;
}
header.framer-TSio1 .framer-89dhfu p.framer-text {
  transition: font-size 0.4s ease;
}
header.framer-TSio1 .framer-1iby9z9 {
  transition: background 0.4s ease, border-radius 0.4s ease, box-shadow 0.4s ease, padding 0.4s ease;
}

/* Nav links: collapsed before JS opens them */
[data-cos-nav] { max-width: 0; overflow: hidden; }
[data-cos-nav], [data-cos-nav] nav { background: transparent !important; }

/* Scrolled state: tighter padding */
header.framer-TSio1.cos-scrolled {
  padding-top: 12px !important;
  padding-bottom: 12px !important;
  padding-right: 24px !important;
}
header.framer-TSio1.cos-scrolled .framer-22gwm9-container {
  width: 24px !important;
  height: var(--framer-aspect-ratio-supported, 24px) !important;
}
header.framer-TSio1.cos-scrolled .framer-89dhfu p.framer-text {
  font-size: 18px !important;
}

/* Scrolled state: glass pill on logo */
header.framer-TSio1.cos-scrolled .framer-1iby9z9 {
  background: rgba(255, 255, 255, 0.6);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border-radius: 8px;
  box-shadow: none;
  padding: 8px 12px;
}

/* Scrolled state: glass pill on menu (snaps instantly — avoids wide-frost flash) */
header.framer-TSio1.cos-scrolled .framer-e4ig5p {
  flex: none !important;
  width: auto !important;
  margin-left: auto;
  background: rgba(255, 255, 255, 0.6);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border-radius: 8px;
  box-shadow: none;
  padding: 8px 12px;
}
header.framer-TSio1.cos-scrolled .framer-0ahr3.framer-85c39k {
  gap: 16px !important;
}

/* Footer font sizes (+2px over Framer defaults) */
footer.framer-YX0Wc .framer-styles-preset-v5rub6:not(.rich-text-wrapper),
footer.framer-YX0Wc .framer-styles-preset-v5rub6.rich-text-wrapper h4 {
  --framer-font-size: 50px;
}
@media (max-width: 1199px) and (min-width: 810px) {
  footer.framer-YX0Wc .framer-styles-preset-v5rub6:not(.rich-text-wrapper),
  footer.framer-YX0Wc .framer-styles-preset-v5rub6.rich-text-wrapper h4 {
    --framer-font-size: 40px;
  }
}
@media (max-width: 809px) {
  footer.framer-YX0Wc .framer-styles-preset-v5rub6:not(.rich-text-wrapper),
  footer.framer-YX0Wc .framer-styles-preset-v5rub6.rich-text-wrapper h4 {
    --framer-font-size: 34px;
  }
}
footer.framer-YX0Wc .framer-styles-preset-1l7bfec:not(.rich-text-wrapper),
footer.framer-YX0Wc .framer-styles-preset-1l7bfec.rich-text-wrapper p {
  --framer-font-size: 18px;
}
footer.framer-YX0Wc .framer-styles-preset-1fdwjqn:not(.rich-text-wrapper),
footer.framer-YX0Wc .framer-styles-preset-1fdwjqn.rich-text-wrapper p {
  --framer-font-size: 18px;
}
@media (max-width: 1199px) and (min-width: 810px) {
  footer.framer-YX0Wc .framer-styles-preset-1fdwjqn:not(.rich-text-wrapper),
  footer.framer-YX0Wc .framer-styles-preset-1fdwjqn.rich-text-wrapper p {
    --framer-font-size: 16px;
  }
}
@media (max-width: 809px) {
  footer.framer-YX0Wc .framer-styles-preset-1fdwjqn:not(.rich-text-wrapper),
  footer.framer-YX0Wc .framer-styles-preset-1fdwjqn.rich-text-wrapper p {
    --framer-font-size: 14px;
  }
}
footer.framer-YX0Wc .framer-p15zb8 {
  padding-top: 84px !important;
  padding-bottom: 84px !important;
}

/* Animated underline: nav + footer social links */
a.framer-styles-preset-1xepc05,
a.framer-styles-preset-dsdgjd {
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0% calc(100% + 4px);
  background-size: 0% 1px;
  transition: background-size 0.3s ease !important;
  text-decoration: none !important;
}
a.framer-styles-preset-1xepc05 {
  --framer-link-hover-text-color: var(--token-e9abed44-df8b-4765-bbfe-7c072006d47b, #121114);
}
a.framer-styles-preset-dsdgjd {
  --framer-link-hover-text-color: var(--token-c21010f9-5cb6-4d3d-85fc-4227a6481949, #fff);
}
a.framer-styles-preset-1xepc05:hover,
a.framer-styles-preset-dsdgjd:hover {
  background-size: 100% 1px;
  color: inherit !important;
}

/* Email copy element: underline on text only (excludes SVG icon) */
.framer-x0dm4m {
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0% calc(100% + 4px);
  background-size: 0% 1px;
  transition: background-size 0.3s ease;
}
.framer-1jpg09i-container:hover .framer-x0dm4m {
  background-size: 100% 1px;
}

/* Contact form: tighten gaps between fields and button */
.framer-8yLTX .framer-1elmz03 { gap: 0 !important; }
.framer-8yLTX .framer-c0nbn7  { margin-bottom: 20px; }
.framer-8yLTX .framer-1cir3d4 { margin-bottom: 4px; }
.framer-8yLTX .framer-n9u796  { margin-bottom: 8px; }

/* Contact heading: left-align inner container so it matches the email section
   below at any viewport width (prevents right-drift when max-width:1600px kicks in) */
.framer-8yLTX .framer-1rr4hax {
  place-content: flex-start !important;
  align-items: flex-start !important;
}

/* CTA link buttons: animated underline on text (same effect as nav links) */
a.framer-WqizJ p.framer-text,
a.framer-9w2via p.framer-text {
  display: inline-block;
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0% calc(100% + 2px);
  background-size: 0% 1px;
  transition: background-size 0.3s ease;
}
a.framer-WqizJ:hover p.framer-text,
a.framer-9w2via:hover p.framer-text {
  background-size: 100% 1px;
}

/* Submit button: restore pointer cursor + text underline on hover when enabled */
button.framer-rccim:not(:disabled) {
  cursor: pointer !important;
}
button.framer-rccim:not(:disabled):hover p.framer-text {
  text-decoration: underline;
}
