/* Static bridge for the captured Framer document while its local interactions are rebuilt. */
html { scroll-behavior: smooth; }
body { overflow-x: hidden; }

/* Keep the colored service badges decorative while their silhouettes morph. */
@keyframes service-shape-morph {
  0%, 8%, 100% {
    clip-path: polygon(50% 0%, 70% 3%, 88% 12%, 97% 30%, 100% 50%, 97% 70%, 88% 88%, 70% 97%, 50% 100%, 30% 97%, 12% 88%, 3% 70%, 0% 50%, 3% 30%, 12% 12%, 30% 3%);
  }
  17%, 25% {
    clip-path: polygon(50% 0%, 75% 0%, 100% 0%, 100% 25%, 100% 50%, 100% 75%, 100% 100%, 75% 100%, 50% 100%, 25% 100%, 0% 100%, 0% 75%, 0% 50%, 0% 25%, 0% 0%, 25% 0%);
  }
  34%, 42% {
    clip-path: polygon(50% 22%, 75% 22%, 100% 22%, 100% 36%, 100% 50%, 100% 64%, 100% 78%, 75% 78%, 50% 78%, 25% 78%, 0% 78%, 0% 64%, 0% 50%, 0% 36%, 0% 22%, 25% 22%);
  }
  51%, 59% {
    clip-path: polygon(50% 0%, 57% 14%, 64% 28%, 71% 42%, 78% 56%, 85% 70%, 92% 84%, 100% 100%, 75% 100%, 50% 100%, 25% 100%, 0% 100%, 8% 84%, 15% 70%, 22% 56%, 29% 42%);
  }
  68%, 76% {
    clip-path: polygon(50% 0%, 72% 0%, 90% 8%, 100% 22%, 100% 50%, 100% 78%, 90% 92%, 72% 100%, 50% 100%, 28% 100%, 10% 92%, 0% 78%, 0% 50%, 0% 22%, 10% 8%, 28% 0%);
  }
  85%, 93% {
    clip-path: polygon(50% 0%, 56% 12%, 63% 25%, 69% 38%, 75% 50%, 69% 62%, 63% 75%, 56% 88%, 50% 100%, 44% 88%, 37% 75%, 31% 62%, 25% 50%, 31% 38%, 37% 25%, 44% 12%);
  }
}

@media (prefers-reduced-motion: no-preference) {
  .framer-Ftf0w .framer-1986vme,
  .framer-Ftf0w .framer-4vxkwg,
  .framer-Ftf0w .framer-193n5kq {
    position: relative;
    isolation: isolate;
    border-radius: 0 !important;
    background-color: transparent !important;
  }
  .framer-Ftf0w .framer-1986vme::before,
  .framer-Ftf0w .framer-4vxkwg::before,
  .framer-Ftf0w .framer-193n5kq::before {
    content: "";
    position: absolute;
    z-index: 0;
    inset: 0;
    pointer-events: none;
    background: var(--service-shape-color);
    clip-path: polygon(50% 0%, 70% 3%, 88% 12%, 97% 30%, 100% 50%, 97% 70%, 88% 88%, 70% 97%, 50% 100%, 30% 97%, 12% 88%, 3% 70%, 0% 50%, 3% 30%, 12% 12%, 30% 3%);
    animation: service-shape-morph 18s cubic-bezier(.4, 0, .2, 1) infinite;
  }
  .framer-Ftf0w .framer-1986vme { --service-shape-color: #cef0eb; }
  .framer-Ftf0w .framer-4vxkwg { --service-shape-color: #f7f2bc; }
  .framer-Ftf0w .framer-193n5kq { --service-shape-color: #e4cef2; }
  .framer-Ftf0w .framer-1986vme::before { animation-delay: 0s; }
  .framer-Ftf0w .framer-4vxkwg::before { animation-delay: -6s; }
  .framer-Ftf0w .framer-193n5kq::before { animation-delay: -12s; }
  .framer-Ftf0w .framer-1986vme > *,
  .framer-Ftf0w .framer-4vxkwg > *,
  .framer-Ftf0w .framer-193n5kq > * {
    position: relative;
    z-index: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .framer-Ftf0w .framer-1986vme,
  .framer-Ftf0w .framer-4vxkwg,
  .framer-Ftf0w .framer-193n5kq {
    position: relative;
    isolation: isolate;
    border-radius: 0 !important;
    background-color: transparent !important;
  }
  .framer-Ftf0w .framer-1986vme::before,
  .framer-Ftf0w .framer-4vxkwg::before,
  .framer-Ftf0w .framer-193n5kq::before {
    content: "";
    position: absolute;
    z-index: 0;
    inset: 0;
    pointer-events: none;
    background: var(--service-shape-color);
    clip-path: none;
  }
  .framer-Ftf0w .framer-1986vme > *,
  .framer-Ftf0w .framer-4vxkwg > *,
  .framer-Ftf0w .framer-193n5kq > * {
    position: relative;
    z-index: 1;
  }
  .framer-Ftf0w .framer-1986vme { --service-shape-color: #cef0eb; }
  .framer-Ftf0w .framer-4vxkwg { --service-shape-color: #f7f2bc; }
  .framer-Ftf0w .framer-193n5kq { --service-shape-color: #e4cef2; }
  .framer-Ftf0w .framer-1986vme::before,
  .framer-Ftf0w .framer-193n5kq::before { border-radius: 50%; }
}

/* Center each company label against its logo in both row variants. */
.framer-Ftf0w .framer-1fze2x,
.framer-Ftf0w .framer-skocuk { align-items: center !important; }

/* Give each company mark a small, controlled response to pointer hover. */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .framer-Ftf0w .framer-3ljjcv .framer-l4c4hd,
  .framer-Ftf0w .framer-3ljjcv .framer-1lvy49b,
  .framer-Ftf0w .framer-3ljjcv .framer-ev1saa,
  .framer-Ftf0w .framer-3ljjcv .framer-2pdixc,
  .framer-Ftf0w .framer-3ljjcv .framer-1idurym,
  .framer-Ftf0w .framer-3ljjcv .framer-rthkql,
  .framer-Ftf0w .framer-3ljjcv .framer-nd7fh0 {
    transform-origin: center;
    transition: transform 200ms cubic-bezier(.22, 1, .36, 1);
  }
  .framer-Ftf0w .framer-3ljjcv .framer-l4c4hd:hover,
  .framer-Ftf0w .framer-3ljjcv .framer-1lvy49b:hover,
  .framer-Ftf0w .framer-3ljjcv .framer-ev1saa:hover,
  .framer-Ftf0w .framer-3ljjcv .framer-2pdixc:hover,
  .framer-Ftf0w .framer-3ljjcv .framer-1idurym:hover,
  .framer-Ftf0w .framer-3ljjcv .framer-rthkql:hover,
  .framer-Ftf0w .framer-3ljjcv .framer-nd7fh0:hover {
    transform: scale(1.08) rotate(2deg);
  }
}

/* Use the portfolio's serif face only for navigation links. */
@media (hover: hover) {
  .framer-Ftf0w nav a:not([data-framer-name="Brandlabel"]):hover,
  .framer-Ftf0w nav a:not([data-framer-name="Brandlabel"]):hover * {
    font-family: "Instrument Serif", "Instrument Serif Placeholder", serif !important;
    font-style: italic !important;
  }
}
.framer-Ftf0w nav a:not([data-framer-name="Brandlabel"]):focus-visible,
.framer-Ftf0w nav a:not([data-framer-name="Brandlabel"]):focus-visible * {
  font-family: "Instrument Serif", "Instrument Serif Placeholder", serif !important;
  font-style: italic !important;
}

/* Reserve each top-nav link's box so the font swap cannot move its hit area. */
.framer-Ftf0w nav .framer-1reva88 > .framer-o8icdl a {
  box-sizing: border-box;
  display: inline-block;
  min-width: 4.25rem;
  padding: .28em .4em;
  text-align: center;
  white-space: nowrap;
}
.framer-Ftf0w nav .framer-1reva88 > .framer-5z7whq a { min-width: 7.5rem; }
.framer-Ftf0w nav .framer-1reva88 > .framer-1nc1ykx a { min-width: 3.75rem; }
.framer-Ftf0w nav .framer-1reva88 > .framer-5bm7b5 a { min-width: 2.75rem; }

[style*="opacity:0.001"] { opacity: 1 !important; }
[data-framer-appear-id] { opacity: 1 !important; transform: none !important; }
@media (prefers-reduced-motion: no-preference) {
  .local-reveal {
    opacity: 0 !important;
    transform: translateY(16px) !important;
    transition: opacity 520ms cubic-bezier(.22, 1, .36, 1) var(--local-reveal-delay, 0ms),
                transform 520ms cubic-bezier(.22, 1, .36, 1) var(--local-reveal-delay, 0ms);
  }
  .local-reveal.is-revealed {
    opacity: 1 !important;
    transform: none !important;
  }
}
[style*="visibility:hidden"], [data-static-carousel] ul [style*="visibility: hidden"] { visibility: visible !important; }
[data-framer-appear-id], [data-framer-appear-animation] { animation: none !important; }
.framer-rx9D8.framer-1rn61uk { display: flex !important; }
[data-framer-name="copy"] { cursor: pointer; }
/* Remove the copy control from the full-width SVG row; script places it beside the live text. */
@media (prefers-reduced-motion: no-preference) {
  [data-framer-name="email"] > [data-framer-name="copy"] {
    transition: opacity 160ms ease, transform 160ms ease;
  }
}
@media (hover: hover) and (pointer: fine) {
  [data-framer-name="email"] > [data-framer-name="copy"]:hover { opacity: .74; }
}
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  [data-framer-name="email"] > [data-framer-name="copy"]:hover { transform: translateY(-2px); }
}
[data-framer-name="email"] > [data-framer-name="copy"].is-copying {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
footer a.framer-1l4v67s[href="./#hero"] {
  transform: scale(1);
  transform-origin: center;
}
@media (prefers-reduced-motion: no-preference) {
  footer a.framer-1l4v67s[href="./#hero"] {
    transition: transform 180ms cubic-bezier(.22, 1, .36, 1);
  }
}
@media (hover: hover) and (pointer: fine) {
  footer a.framer-1l4v67s[href="./#hero"]:hover { transform: scale(1.14); }
  footer a.framer-1l4v67s[href="./#hero"]:focus-visible { transform: scale(1.14); }
}
.framer-1o3pkac-container { transition: opacity 220ms ease, transform 220ms ease; }
html[data-local-nav-hidden="true"] .framer-1o3pkac-container { opacity: 0; transform: translate(-50%, -110%) !important; pointer-events: none; }
.local-nav-active-dot {
  position: absolute;
  top: 0;
  left: 0;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #0f1c0d;
  opacity: 0;
  pointer-events: none;
  z-index: 5;
  transition: transform 460ms cubic-bezier(.22, 1, .36, 1), opacity 140ms ease;
}
.local-nav-active-dot.is-visible { opacity: .55; }
@media (prefers-reduced-motion: reduce) {
  .local-nav-active-dot { transition: none; }
}
[data-framer-name="OPEN"] { cursor: pointer; }
[data-framer-name="mousepointer"] { overflow: visible !important; }
[data-framer-name="mousepointer"] .framer-1xnrpfl {
  transform: scale(1);
  transform-origin: center;
}
a[href^="mailto:"], a[href^="mailto:"] *,
a[href*="drive.google.com"], a[href*="drive.google.com"] *,
a[href*="linkedin.com"], a[href*="linkedin.com"] * {
  cursor: alias !important;
}
@media (hover: hover) and (pointer: fine) {
  [data-framer-name="mousepointer"].is-over-clickable .framer-1xnrpfl { transform: scale(2.15); }
}
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  [data-framer-name="mousepointer"] .framer-1xnrpfl {
    transition: transform 180ms cubic-bezier(.22, 1, .36, 1);
  }
  [data-static-carousel="projects"] ul > li > :first-child { overflow: hidden; }
  [data-static-carousel="projects"] ul > li > :first-child img {
    transition: transform 240ms cubic-bezier(.22, 1, .36, 1);
  }
  [data-static-carousel="projects"] ul > li > :first-child:hover img { transform: scale(1.015); }
}
[data-static-carousel] { overflow: hidden !important; }
/* Framer's pan-y rule blocks horizontal touch swipes; allow native panning on both axes. */
[data-static-carousel] ul { overflow-x: auto !important; overflow-y: hidden !important; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; touch-action: auto !important; -webkit-overflow-scrolling: touch; cursor: grab; }
[data-static-carousel] ul::-webkit-scrollbar { display: none; }
[data-static-carousel] ul > li > :first-child { scroll-snap-align: start; scroll-snap-stop: always; }
[data-static-carousel] ul.is-rebasing { scroll-snap-type: none !important; scroll-behavior: auto !important; }
[data-static-carousel] ul.is-dragging { scroll-snap-type: none !important; scroll-behavior: auto !important; cursor: grabbing; user-select: none; }
[data-static-carousel] ul img { -webkit-user-drag: none; user-select: none; }
[data-static-carousel] ul a { -webkit-user-drag: none; }
[data-static-carousel] .framer--slideshow-controls { opacity: 1 !important; pointer-events: none; }
[data-static-carousel] .framer--slideshow-controls button { opacity: 1 !important; pointer-events: auto; cursor: pointer; }
[data-static-carousel="projects"] ul,
[data-static-carousel="projects"] ul * { cursor: grab !important; }
[data-static-carousel="projects"] ul.is-dragging,
[data-static-carousel="projects"] ul.is-dragging * { cursor: grabbing !important; }
[data-static-carousel="projects"] ul > li > :first-child {
  width: var(--project-slide-width, 92%) !important;
  flex-basis: var(--project-slide-width, 92%) !important;
}
[data-static-carousel="projects"] ul img { object-fit: contain !important; }
[data-static-carousel="testimonials"] ul > li > :first-child {
  padding-inline: var(--carousel-edge-gutter, 16px) !important;
}
.local-framer-menu { position:fixed; inset:0; z-index:2147483000; overflow:auto; display:flex; flex-direction:column; justify-content:space-between; gap:48px; padding:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px)); background:#dbf573; color:#20231c; font-family:"Hanken Grotesk",sans-serif; }
.local-framer-menu[hidden] { display:none; }
.local-framer-menu__top { display:flex; justify-content:space-between; align-items:center; gap:24px; font-size:14px; letter-spacing:.04em; transform:translateY(-2px); }
.local-framer-menu__top a {
  display:flex;
  align-items:center;
  gap:8px;
  color:#0f1c0d;
  font-family:"Hanken Grotesk","Hanken Grotesk Placeholder",sans-serif;
  font-size:14px;
  font-style:normal;
  font-weight:400;
  letter-spacing:0;
  line-height:1.5em;
  text-decoration:none;
  padding:10px;
  margin:-10px;
}
.local-framer-menu__close {
  border:0;
  background:none;
  color:inherit;
  font-family:"Hanken Grotesk","Hanken Grotesk Placeholder",sans-serif;
  font-size:14px;
  font-style:normal;
  font-weight:400;
  letter-spacing:-.02em;
  line-height:1.1em;
  text-transform:none;
  cursor:pointer;
  padding:10px;
  margin:-10px;
}
.local-framer-menu__links { display:flex; flex-direction:column; align-items:flex-start; gap:4px; }
.local-framer-menu__links a { color:inherit; text-decoration:none; font-size:clamp(42px,9.5vw,104px); line-height:1.04; letter-spacing:-.055em; white-space:nowrap; }
.local-framer-menu__footer { display:grid; gap:24px; font-size:14px; }
.local-framer-menu__contact { display:grid; gap:10px; container-type:inline-size; }
.local-framer-menu__statement { margin:0; font-size:clamp(16px,4vw,20px); line-height:1.15; letter-spacing:-.025em; }
.local-framer-menu__email { display:flex; align-items:center; gap:10px; width:100%; min-width:0; }
.local-framer-menu__email > a {
  flex:1 1 auto;
  min-width:0;
  color:inherit;
  font-size:clamp(20px,8vw,38px);
  font-size:clamp(20px,8.5cqi,48px);
  letter-spacing:-.045em;
  line-height:1.1;
  white-space:nowrap;
  text-decoration:none;
}
.local-framer-menu__copy { display:grid; place-items:center; flex:0 0 32px; width:32px; height:32px; padding:6px; border:0; background:transparent; color:inherit; cursor:pointer; opacity:.58; transition:opacity 160ms ease, transform 160ms ease; }
.local-framer-menu__copy svg { display:block; width:100%; height:100%; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.7; }
.local-framer-menu__copy:hover { opacity:.82; transform:translateY(-2px); }
.local-framer-menu__email > .local-framer-menu__copy.is-copying { opacity:0; visibility:hidden; pointer-events:none; }
.local-framer-menu__socials { display:flex; flex-wrap:wrap; gap:8px 20px; }
.local-framer-menu__socials a { color:inherit; text-decoration:none; }
.local-framer-menu__meta { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px 20px; font-size:13px; line-height:1.3; }
@media (prefers-reduced-motion: reduce) {
  .local-framer-menu__copy { transition:none; }
}
@keyframes local-menu-panel-open {
  from {
    clip-path:circle(0 at var(--local-menu-origin-x, calc(100% - 24px)) var(--local-menu-origin-y, 24px));
  }
  to {
    clip-path:circle(150vmax at var(--local-menu-origin-x, calc(100% - 24px)) var(--local-menu-origin-y, 24px));
  }
}
.local-framer-menu.is-opening { animation:local-menu-panel-open 720ms cubic-bezier(.22,1,.36,1) both; }
@keyframes local-menu-link-enter {
  0%, 44% { opacity:0; transform:translateY(14px); font-family:"Hanken Grotesk",sans-serif; font-style:normal; }
  48% { opacity:0; transform:translateY(8px); font-family:"Instrument Serif","Instrument Serif Placeholder",serif; font-style:italic; }
  100% { opacity:1; transform:translateY(0); font-family:"Instrument Serif","Instrument Serif Placeholder",serif; font-style:italic; }
}
.local-framer-menu.is-opening .local-framer-menu__links a {
  animation:local-menu-link-enter 460ms cubic-bezier(.22,1,.36,1) both;
  animation-delay:780ms;
}
.local-framer-menu.is-opening .local-framer-menu__links a:nth-child(2) { animation-delay:910ms; }
.local-framer-menu.is-opening .local-framer-menu__links a:nth-child(3) { animation-delay:1040ms; }
.local-framer-menu.is-opening .local-framer-menu__links a:nth-child(4) { animation-delay:1170ms; }
@media (prefers-reduced-motion: reduce) {
  .local-framer-menu.is-opening { animation:none; }
  .local-framer-menu.is-opening .local-framer-menu__links a {
    animation:none;
    font-family:"Instrument Serif","Instrument Serif Placeholder",serif;
    font-style:italic;
    opacity:1;
    transform:none;
  }
}
.local-copy-status { position:fixed; z-index:2147483001; left:50%; bottom:24px; transform:translateX(-50%); padding:10px 16px; border-radius:999px; background:#20231c; color:white; font:500 14px/1.2 "Hanken Grotesk",sans-serif; }
.local-copy-status[hidden] { display:none; }
.local-email-copy-typing::after {
  content: "";
  display: inline-block;
  height: .82em;
  margin-inline-start: .06em;
  border-inline-end: 1.5px solid currentColor;
  vertical-align: -.06em;
  animation: local-email-type-caret 720ms steps(2, start) infinite;
}
@keyframes local-email-type-caret { 50% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  .local-email-copy-typing::after { animation: none; }
}
.local-marquee { opacity:1 !important; }
.framer-cdtr7q-container { opacity:.12 !important; }
.local-marquee__track {
  width:max-content !important;
  animation:local-marquee-loop 22s linear infinite;
}
@keyframes local-marquee-loop {
  from { transform:translateX(0); }
  to { transform:translateX(calc(var(--local-marquee-distance) * -1)); }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior:auto; } [data-static-carousel] ul, .framer-1o3pkac-container { transition:none; } }
@media (prefers-reduced-motion: reduce) { .local-marquee__track { animation:none; transform:translateX(0) !important; } }
@media (max-width: 809.98px) {
  /* Keep mobile galleries swipeable without overlaying arrows on the images. */
  [data-static-carousel] .framer--slideshow-controls { display: none !important; }

  /* Replace Framer's fixed 358px phone width with the available viewport width. */
  #about-me .framer-1ra37qk {
    width: calc(100vw - 32px) !important;
    height: auto !important;
    aspect-ratio: 358 / 350;
  }
}

/* Tighten the personal photo mosaic without changing the project galleries. */
section[data-framer-name="otherthings"] .framer-nkmzmz,
section[data-framer-name="otherthings"] .framer-pzb13z,
section[data-framer-name="otherthings"] .framer-15wqvqg,
section[data-framer-name="otherthings"] .framer-608why,
section[data-framer-name="otherthings"] .framer-19yp367,
section[data-framer-name="otherthings"] .framer-1glkwfe { gap: 8px !important; }

/* Keep the mosaic layout on large phones and tablets instead of stacking it. */
@media (min-width: 600px) and (max-width: 1199.98px) {
  .framer-Ftf0w.framer-72rtr7 { width: 100% !important; }

  section[data-framer-name="otherthings"] .framer-pzb13z {
    flex-direction: row !important;
    height: 480px !important;
  }
  section[data-framer-name="otherthings"] .framer-15wqvqg {
    flex: 1 0 0 !important;
    width: 1px !important;
    height: 100% !important;
  }
  section[data-framer-name="otherthings"] .framer-608why {
    flex-direction: row !important;
    flex: 1 0 0 !important;
    height: 1px !important;
  }
  section[data-framer-name="otherthings"] .framer-19yp367 {
    flex-direction: row !important;
    flex: 1 0 0 !important;
    width: 1px !important;
    height: 100% !important;
  }
  section[data-framer-name="otherthings"] .framer-jfftgi {
    flex: 1 0 0 !important;
    width: 1px !important;
    height: 100% !important;
  }
  section[data-framer-name="otherthings"] .framer-1glkwfe { flex-direction: row !important; }
  section[data-framer-name="otherthings"] .framer-11c5dgq,
  section[data-framer-name="otherthings"] .framer-wk13if,
  section[data-framer-name="otherthings"] .framer-1ntrm1d {
    flex: 1 0 0 !important;
    width: 1px !important;
    height: var(--framer-aspect-ratio-supported, 117px) !important;
  }
}
