@font-face {
  font-family: Inter;
  src: url("../assets/fonts/inter.woff2") format("woff2"), url("../assets/fonts/inter.ttf") format("truetype");
  font-weight: 100 900;
  font-display: swap;
}

@font-face {
  font-family: Handlee;
  src: url("../assets/fonts/handlee.woff2") format("woff2"), url("../assets/fonts/handlee.ttf") format("truetype");
  font-display: swap;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: #fff;
  color: #272727;
  font-family: Inter, Arial, sans-serif;
}

header {
  display: flex;
  justify-content: center;
  padding-top: 18px;
}

nav {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 5px;
  background: #242424;
  border-radius: 8px;
  box-shadow: 0 6px 16px #0002;
}

nav a {
  padding: 8px 13px;
  color: #eee;
  text-decoration: none;
  font-size: 14px;
  border-radius: 4px;
}

nav a[aria-current],
nav a:hover {
  background: #393939;
  color: white;
}

nav .contact {
  background: #555;
}

a:focus-visible,
button:focus-visible {
  outline: 3px solid #486ac4;
  outline-offset: 3px;
}

.hero {
  padding: clamp(45px, 8.2vh, 82px) 30px 32px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.portrait {
  position: relative;
  width: clamp(250px, 42vh, 410px);
}

.print {
  position: relative;
  padding: 5% 5% 0;
  background: white;
  transform: rotate(-2deg);
  box-shadow: 0 14px 32px -7px #0003, 0 1px 6px #00000009;
  transition: transform 330ms ease;
}

.turned .print {
  transform: rotate(2deg);
}

.photos {
  position: relative;
  aspect-ratio: 1;
  overflow: hidden;
}

.photos img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 30%;
}

.outdoors {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 240ms ease;
}

.turned .outdoors {
  opacity: 1;
}

.caption {
  display: block;
  padding: 12px 2px 15px;
  text-align: left;
  color: #555;
  font: 18px/1.2 Handlee, cursive;
}

.print button {
  position: absolute;
  inset: 0;
  width: 100%;
  border: 0;
  background: transparent;
  cursor: pointer;
}

/* Cursor-following cue on the portrait, matching the View pill on work cards. */
.turn-pill {
  display: none;
}

@media (hover: hover) and (pointer: fine) {
  .print:hover ~ .turn-pill {
    position: absolute;
    display: block;
    left: var(--turn-x, 50%);
    top: var(--turn-y, 45%);
    z-index: 3;
    border-radius: 100px;
    padding: 5px 11px;
    background: #222;
    color: #fff;
    font: 12px/1.3 Inter, sans-serif;
    white-space: nowrap;
    pointer-events: none;
  }
}

.pointer {
  position: absolute;
  top: 65%;
  left: 113%;
  text-align: left;
  pointer-events: none;
}

.pointer svg {
  display: block;
  filter: drop-shadow(0 2px 4px #0001);
}

.pointer span {
  display: block;
  margin-left: 16px;
  padding: 7px 15px;
  white-space: nowrap;
  background: #e6edff;
  border: 2px solid white;
  border-radius: 30px;
  color: #305cb8;
  font-size: 15px;
  box-shadow: 0 4px 14px #0001;
}

.intro {
  margin-top: clamp(32px, 6.2vh, 62px);
}

h1 {
  margin: 0;
  font-size: clamp(44px, 3.5vw, 68px);
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: -.045em;
}

h1 span {
  display: block;
  color: #737373;
}

.practice {
  margin: 26px 0 0;
  font-size: 18px;
  color: #606060;
}

@media (prefers-reduced-motion: reduce) {

  .print,
  .outdoors {
    transition: none;
  }
}

/* One pointer selection reveals the complete hero heading and actions. */
.action-reveal {
  position: relative;
  width: max-content;
  max-width: 100%;
  margin: 0 auto;
  padding: 5px;
}

.intro .hero-actions {
  display: flex;
  justify-content: center;
  align-items: center;
  width: max-content;
  margin: 19px auto 0;
  gap: 6px;
}

.hero-actions a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 16px;
  border-radius: 99px;
  color: #171717;
  font-size: 14px;
  font-weight: 400;
  line-height: normal;
  text-decoration: none;
  background: white;
  border: 1px solid #eaeaea;
}

.hero-actions a:first-child {
  background: #f1f1f1;
}

.hero-actions a:hover {
  background: #e9e9e9;
  border-color: #d5d5d5;
}

.selection {
  display: none;
  position: absolute;
  top: 0;
  left: 0;
  pointer-events: none;
  border: 1px solid #86b8ff;
}

.selection svg {
  position: absolute;
  top: 100%;
  left: 100%;
  filter: drop-shadow(0 1px 2px #185fbb25);
}

.selection i {
  position: absolute;
  width: 6px;
  height: 6px;
  background: white;
  border: 1px solid #86b8ff;
}

.selection i:nth-child(1) {
  left: -3px;
  top: -3px;
}

.selection i:nth-child(2) {
  right: -3px;
  top: -3px;
}

.selection i:nth-child(3) {
  left: -3px;
  bottom: -3px;
}

.selection i:nth-child(4) {
  right: -3px;
  bottom: -3px;
}

@media (prefers-reduced-motion: no-preference) {
  .selection {
    display: block;
    opacity: 0;
    animation: draw-selection 2.15s .25s both;
  }

  .reveal-content {
    animation: reveal-actions 2.15s .25s both;
  }

  @keyframes draw-selection {
    0% {
      opacity: 0;
      width: 0;
      height: 0;
    }

    10% {
      opacity: 1;
      width: 0;
      height: 0;
    }

    45%,
    77% {
      opacity: 1;
      width: 100%;
      height: 100%;
    }

    100% {
      opacity: 0;
      width: 100%;
      height: 100%;
    }
  }

  @keyframes reveal-actions {

    0%,
    49% {
      opacity: 0;
      visibility: hidden;
    }

    50% {
      opacity: 0;
      visibility: visible;
    }

    64%,
    100% {
      opacity: 1;
      visibility: visible;
    }
  }

  .action-reveal:focus-within .reveal-content {
    animation: none;
    opacity: 1;
    visibility: visible;
  }

  .action-reveal:focus-within .selection {
    display: none;
  }
}

.replay {
  background: none;
  border: 0;
  color: #545454;
  cursor: pointer;
  font: 13px Inter, sans-serif;
  padding: 6px;
}

@media (max-height: 800px) {
  .hero {
    padding-top: 35px;
  }

  .intro {
    margin-top: 28px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .replay {
    display: none;
  }
}

.action-reveal.reset .selection,
.action-reveal.reset .reveal-content {
  animation: none;
}

.work {
  max-width: 1160px;
  padding: 68px 48px 96px;
  margin: auto;
  scroll-margin-top: 20px;
}

.work-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 26px;
}

.work h2,
.screens h2,
.testimonials h2 {
  margin: 0;
  font-family: Inter, Arial, sans-serif;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 500;
  letter-spacing: -.045em;
}

.motion-toggle {
  background: white;
  color: #444;
  border: 1px solid #ddd;
  padding: 6px 12px;
  border-radius: 16px;
  cursor: pointer;
  font: 13px Inter, sans-serif;
}

.work-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 40px 24px;
}

.project {
  text-decoration: none;
  color: inherit;
}

.preview {
  aspect-ratio: 5 / 4;
  position: relative;
  overflow: hidden;
  border-radius: 8px;
  background: #f6f6f6;
}

.preview img,
.preview video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  pointer-events: none;
}

.preview .next-frame {
  position: absolute;
  inset: 0;
  opacity: 0;
}

.fizzora .preview {
  background: #f4b2ca;
}

.fizzora .preview img {
  object-fit: contain;
}

.work h3 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 13px 0 4px;
  font-size: 19px;
  font-weight: 500;
  letter-spacing: -.035em;
}

.work h3 span {
  color: #555;
  font-size: 16px;
}

.project:hover h3,
.project:focus-visible h3 {
  text-decoration: underline;
  text-underline-offset: 4px;
}

.project p {
  margin: 0;
  color: #646464;
  font-size: 14px;
}

@keyframes preview-change {

  0%,
  37%,
  100% {
    opacity: 0;
  }

  49%,
  85% {
    opacity: 1;
  }
}

.work.playing .in-view .next-frame {
  animation: preview-change 7s ease-in-out infinite;
}

.work.playing .project:nth-child(even) .next-frame {
  animation-delay: -1.3s;
}

.work.paused .in-view .next-frame {
  animation-play-state: paused;
}

/* The artwork and corner arrow remain visible while the caption rises over them. */
.project {
  position: relative;
  display: block;
  overflow: hidden;
  border-radius: 14px;
}

.project-caption {
  position: absolute;
  inset: auto 0 0;
  padding: 16px 64px 18px 20px;
  background: #f6f6f6;
}

.project-caption h3 {
  margin: 0 0 4px;
}

.project-summary p {
  line-height: 1.45;
}

.card-arrow {
  position: absolute;
  right: 14px;
  bottom: 14px;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: white;
  color: #202020;
  box-shadow: 0 2px 8px #0001;
}

.view-pill {
  display: none;
}

@media (hover: hover) and (pointer: fine) {
  .project-caption {
    transform: translateY(101%);
    opacity: 0;
    transition: transform 220ms ease, opacity 180ms ease;
  }

  .project:is(:hover, :focus-visible) .project-caption {
    transform: translateY(0);
    opacity: 1;
  }

  .project:hover h3,
  .project:focus-visible h3 {
    text-decoration: none;
  }

  .project:hover .view-pill {
    position: absolute;
    display: block;
    left: var(--view-x, 50%);
    top: var(--view-y, 45%);
    border-radius: 100px;
    padding: 5px 11px;
    background: #222;
    color: white;
    font: 12px/1.3 Inter, sans-serif;
    pointer-events: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .project-caption {
    transition: none;
  }
}

.about-section {
  max-width: 1160px;
  margin: auto;
  padding: 84px 48px 116px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: center;
  border-top: 1px solid #eee;
}

.about-photos {
  position: relative;
  width: 100%;
  height: 320px;
  display: grid;
  place-items: center;
  border-radius: 14px;
}

.about-photos img {
  grid-area: 1 / 1;
  width: 174px;
  height: 216px;
  object-fit: cover;
  border: 7px solid white;
  border-bottom-width: 17px;
  box-shadow: 0 6px 16px #0002;
  transform: translate(var(--rest), 0) rotate(var(--tilt));
  transition: transform 320ms ease-out;
}

.about-photos img:nth-child(1) {
  --rest: 18px;
  --tilt: 8deg;
  --spread: 128px;
  --angle: 17deg;
  --lift: 6px;
}

.about-photos img:nth-child(2) {
  --rest: -17px;
  --tilt: -8deg;
  --spread: -129px;
  --angle: -16deg;
  --lift: 2px;
}

.about-photos img:nth-child(3) {
  --rest: 9px;
  --tilt: 4deg;
  --spread: 47px;
  --angle: 7deg;
  --lift: -24px;
}

.about-photos img:nth-child(4) {
  --rest: 0px;
  --tilt: -3deg;
  --spread: -38px;
  --angle: -6deg;
  --lift: 26px;
}

.about-photos:is(:hover, :focus-visible) img {
  transform: translate(var(--spread), var(--lift)) rotate(var(--angle));
}

.about-photos:focus-visible {
  outline: 2px solid #486ac4;
}

.about-copy {
  max-width: 485px;
}

.about-copy h1 {
  font-size: 32px;
  font-weight: 500;
  letter-spacing: -.045em;
  margin: 0 0 20px;
}

.about-copy p {
  font-size: 18px;
  line-height: 1.55;
  color: #484848;
  margin: 0 0 14px;
}

.about-tools {
  display: flex;
  gap: 9px;
  margin-top: 24px;
}

.about-tools a {
  border: 1px solid #e5e5e5;
  padding: 7px 12px;
  border-radius: 8px;
  color: #333;
  text-decoration: none;
  font-size: 14px;
  transition: transform 160ms ease;
}

.about-tools a:is(:hover, :focus-visible) {
  transform: translateY(-3px) rotate(-2deg);
  background: #fafafa;
}

@media (prefers-reduced-motion: reduce) {

  .about-photos img,
  .about-tools a {
    transition: none;
  }
}

/* Gallery rows run edge to edge on the device; the heading keeps the page grid. */
.screens {
  padding: 0 0 80px;
  margin: 0;
  scroll-margin-top: 28px;
  overflow-x: clip;
}

.screens>.work-heading {
  width: min(1064px, 100% - 96px);
  margin: 0 auto 26px;
}

.screens h2 {
  margin: 0;
  font-size: 30px;
  font-weight: 500;
  letter-spacing: -.045em;
}

.screens-window {
  overflow: hidden;
  width: 100%;
}

.screens-track {
  display: flex;
  width: max-content;
}

.screens-track+.screens-track {
  margin-top: 32px;
}

.screens-set {
  display: flex;
  gap: 16px;
  padding-right: 16px;
}

.screen-frame {
  height: 360px;
  overflow: hidden;
  background: #f3f3f3;
  border-radius: 12px;
  box-shadow: inset 0 0 0 1px #0001;
}

.desktop .screen-frame {
  width: 420px;
  height: 340px;
}

.mobile .screen-frame {
  width: 270px;
}

.screen-frame img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.screens.ready .screens-track {
  animation: gallery-scroll 46s linear infinite;
}

.screens.ready .screens-track:nth-child(2) {
  animation-direction: reverse;
}

.screens.paused .screens-track {
  animation-play-state: paused;
}

@keyframes gallery-scroll {
  to {
    transform: translateX(-50%);
  }
}

.project {
  transition: transform 180ms ease, box-shadow 180ms ease;
}

.project:is(:hover, :focus-visible) {
  transform: translateY(-3px);
  box-shadow: 0 9px 18px -7px rgb(0 0 0 / 18%);
}

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

  .project:is(:hover, :focus-visible) {
    transform: none;
  }
}

.stack-experience {
  max-width: 860px;
  margin: 0 auto;
  padding: 40px 48px 110px;
}

.stack-experience h2 {
  margin: 0 0 10px;
  color: #676767;
  font: 24px/1.25 Handlee, cursive;
}

.stack-icons {
  display: flex;
  align-items: center;
  gap: 5px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.stack-icons li {
  position: relative;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: white;
  box-shadow: 0 3px 12px #00000012;
  transition: none;
}

.stack-icons img,
.adobe {
  width: 30px;
  height: 30px;
}

.adobe {
  display: grid;
  place-items: center;
  border-radius: 6px;
  font: 600 19px Inter, sans-serif;
}

.Ps {
  background: #001e36;
  color: #31a8ff;
}

.Ai {
  background: #330000;
  color: #ff9a00;
}

.stack-icons span {
  position: absolute;
  top: calc(100% + 6px);
  opacity: 0;
  pointer-events: none;
  font-size: 12px;
  color: #444;
}

.stack-icons li:focus-visible {
  outline: 2px solid #487cff;
  outline-offset: 4px;
}

.stack-icons li:is(:hover, :focus-visible) span {
  opacity: 1;
}

.jobs {
  margin-top: 64px;
}

.jobs details {
  border-bottom: 1px solid #eaeaea;
}

.jobs summary {
  display: flex;
  gap: 16px;
  align-items: center;
  padding: 25px 2px;
  cursor: pointer;
  list-style: none;
}

.jobs summary::-webkit-details-marker {
  display: none;
}

.jobs strong {
  font-size: 20px;
  font-weight: 550;
  letter-spacing: -.035em;
}

.jobs time {
  margin-left: auto;
  color: #666;
}

.jobs summary::after {
  content: '';
  width: 7px;
  height: 7px;
  border: solid #777;
  border-width: 0 1.5px 1.5px 0;
  transform: rotate(45deg);
}

.jobs [open] summary::after {
  transform: rotate(225deg);
}

.jobs details p {
  margin: -10px 0 22px 2px;
  color: #555;
}

@media (prefers-reduced-motion: reduce) {
  .stack-icons li {
    transition: none;
  }
}

.stack-experience .experience-title {
  font: 500 25px/1.3 Inter, sans-serif;
  color: #272727;
  margin: 0 0 12px;
  letter-spacing: -.03em;
}

/* One shared testimonial panel, opened by the person controls. */
.testimonials {
  max-width: 860px;
  margin: 0 auto;
  padding: 0 48px 96px;
  overflow-anchor: none;
}

.testimonial-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
}

.testimonial-person img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
  filter: grayscale(1);
  opacity: .9;
  transition: filter 220ms ease, opacity 220ms ease, transform 280ms cubic-bezier(.34, 1.56, .64, 1);
}

/* Resting avatars stay grey; the hovered or open one returns to full colour. */
.testimonial-person:is(:hover, :focus-visible) img {
  filter: grayscale(0) saturate(1.12);
  opacity: 1;
  transform: scale(1.12);
}

.testimonial-person[aria-expanded="true"] img {
  filter: grayscale(0);
  opacity: 1;
}

.testimonial-people {
  display: flex;
  padding-left: 8px;
  flex-shrink: 0;
}

.testimonial-person {
  position: relative;
  width: 52px;
  height: 52px;
  margin-left: -8px;
  padding: 0;
  display: grid;
  place-items: center;
  border: 3px solid white;
  border-radius: 50%;
  background: #f0f0f0;
  color: #555;
  box-shadow: 0 2px 7px #00000012;
  font: 500 13px Inter, sans-serif;
  cursor: pointer;
  transition: transform 150ms ease, background-color 150ms ease;
}

.testimonial-person[aria-expanded="true"] {
  background: #e8edff;
  color: #3157ad;
  transform: translateY(-5px);
  z-index: 2;
}

.testimonial-person:focus-visible {
  outline: 2px solid #487cff;
  outline-offset: 3px;
  z-index: 3;
}

@media (prefers-reduced-motion: reduce) {
  .testimonial-person img {
    transition: none;
  }

  .testimonial-person:is(:hover, :focus-visible) img {
    transform: none;
  }
}

#testimonial-panel {
  padding-top: 22px;
}

#testimonial-panel[hidden] {
  display: none;
}

.testimonial {
  margin: 0;
  padding: 28px 30px;
  border: 1px solid #eaeaea;
  border-radius: 18px;
  background: white;
}

.testimonial blockquote {
  margin: 0 0 20px;
}

.testimonial blockquote p {
  margin: 0;
  color: #414141;
  font-size: 17px;
  line-height: 1.65;
  letter-spacing: -.015em;
}

.testimonial figcaption strong {
  display: block;
  font-size: 14px;
  font-weight: 550;
  color: #272727;
}

.testimonial figcaption span {
  display: block;
  margin-top: 4px;
  font-size: 12px;
  line-height: 1.5;
  color: #707070;
}

.testimonial figcaption a {
  color: inherit;
  text-decoration: none;
}

.testimonial figcaption a:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .testimonial-person {
    transition: none;
  }

  .testimonial-person[aria-expanded="true"] {
    transform: none;
  }
}

.contact-footer {
  max-width: 940px;
  padding: 0 48px 56px;
  margin: 0 auto;
}

.contact-card {
  position: relative;
  min-height: 460px;
  padding: 42px 40px 0;
  border-radius: 40px;
  background: #f4f4f4;
  text-align: center;
}

.contact-label {
  margin: 0 0 16px;
  font-size: 18px;
  font-weight: 500;
  color: #858585;
}

.contact-card h2 {
  margin: 0;
  font: 500 30px/1.25 Inter, Arial, sans-serif;
  letter-spacing: -.045em;
}

.footer-email {
  display: inline-block;
  padding: 20px 8px 20px 30px;
  border-radius: 99px;
  background: white;
  color: #272727;
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -.025em;
  text-decoration: none;
}

.footer-email:hover {
  box-shadow: 0 3px 14px #0000000a;
}

.footer-socials {
  display: flex;
  justify-content: flex-end;
  gap: 4px;
  margin-top: 76px;
}

.footer-orb {
  position: relative;
  display: block;
  width: 104px;
  height: 104px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #252525;
  text-decoration: none;
}

.footer-ball {
  display: grid;
  place-items: center;
  width: 104px;
  height: 104px;
  border: 1px solid #d7d7d7;
  border-radius: 50%;
  background: white;
  pointer-events: none;
  transform: translate(0, 0) rotate(0);
  transition: transform 600ms cubic-bezier(.22, 1, .36, 1);
}

.footer-ball svg {
  width: 40px;
  height: 40px;
}

.footer-orb[href] {
  cursor: pointer;
}

.footer-orb[aria-disabled] {
  cursor: default;
}

.footer-orb-slot {
  display: block;
  width: 104px;
  height: 104px;
  flex-shrink: 0;
}

.footer-orb-slot.rolling {
  position: relative;
  z-index: 2;
}

.footer-orb-slot.rolling .footer-ball {
  transition: none;
  box-shadow: 0 12px 18px -14px #00000040;
}

@media (prefers-reduced-motion: reduce) {
  .footer-ball {
    transition: none;
  }
}

.footer-email-group {
  position: relative;
  display: inline-flex;
  align-items: center;
  margin-top: 32px;
  padding-right: 16px;
  background: white;
  border-radius: 99px;
}

.copy-email {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #555;
  cursor: pointer;
}

.copy-email:hover {
  background: #f4f4f4;
  color: #222;
}

.copy-status {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  right: 0;
  font-size: 12px;
  color: #555;
}

@media (prefers-reduced-motion: no-preference) {
  .action-reveal.reset .reveal-content {
    opacity: 0;
    visibility: hidden;
  }
}

/* Approved standalone homepage captions. Retain animated artwork and cursor View pill. */
.work .work-grid {
  row-gap: 56px;
}

.work .project {
  border-radius: 0;
  overflow: visible;
}

.work .project-caption {
  position: static;
  padding: 30px 0 0;
  background: transparent;
  opacity: 1;
  transform: none;
  transition: none;
}

.work .project-caption h3 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin: 0 0 12px;
  font: 500 26px/1.25 Inter, Arial, sans-serif;
  letter-spacing: -.035em;
  color: inherit;
}

.work .project-caption .project-link-arrow {
  font: 400 27px/1 Inter, Arial, sans-serif;
  color: inherit;
  margin-right: 3px;
}

.work .project-caption p {
  font: 400 16px/1.6 Inter, Arial, sans-serif;
  color: #737373;
  max-width: 48ch;
}

.work .card-arrow {
  display: none;
}

.work .view-pill {
  z-index: 3;
}

[data-theme="dark"] .work .project-caption {
  background: transparent;
}

[data-theme="dark"] .work .project-caption p {
  color: #bcbcc4;
}

/* Selected Work stays flat on hover; the View cursor remains the interaction cue. */
.work .project,
.work .project:is(:hover, :focus-visible) {
  transform: none;
  box-shadow: none;
  background: transparent;
  transition: none;
}

.work .project:is(:hover, :focus-visible) .project-caption {
  background: transparent;
}

/* Quiet hover motion within the image, without raising or filling the card. */
.work .preview img,
.work .preview video {
  transition: transform 420ms cubic-bezier(.22, 1, .36, 1);
}

.work .project-link-arrow {
  transition: transform 240ms ease;
}

@media (hover:hover) and (pointer:fine) {
  .work .project:hover .preview img,
  .work .project:hover .preview video {
    transform: scale(1.025);
  }

  .work .project:hover .project-link-arrow {
    transform: translate(2px, -2px);
  }
}

.work .project:focus-visible .preview img,
.work .project:focus-visible .preview video {
  transform: scale(1.025);
}

.work .project:focus-visible .project-link-arrow {
  transform: translate(2px, -2px);
}

@media(prefers-reduced-motion:reduce) {

  .work .preview img,
  .work .preview video,
  .work .project-link-arrow {
    transition: none;
  }

  .work .project:is(:hover, :focus-visible) .preview img,
  .work .project:is(:hover, :focus-visible) .preview video,
  .work .project:is(:hover, :focus-visible) .project-link-arrow {
    transform: none;
  }
}
@media (min-width: 768px) and (max-width: 900px) {
  .pointer { left: 48%; top: 88%; }
}
/* Shared Mobile Design System (767px and below) */
@media (max-width: 767px) {
  :root {
    --m-gutter: 20px;
    --m-section: 56px;
    --m-card-gap: 32px;
    --m-display: 600 34px/38px Inter, -apple-system, sans-serif;
    --m-display-track: -0.035em;
    --m-h2: 26px/30px Inter, -apple-system, sans-serif;
    --m-h2-track: -0.03em;
    --m-h3: 20px/24px Inter, -apple-system, sans-serif;
    --m-h3-track: -0.02em;
    --m-body: 16px/24px Inter, -apple-system, sans-serif;
    --m-body-track: -0.011em;
    --m-small: 15px/21px Inter, -apple-system, sans-serif;
    --m-small-track: -0.01em;
    --m-meta: 13px/18px Inter, -apple-system, sans-serif;
  }

  /* Universal section spacing & gutters */
  .hero,
  .work,
  .screens,
  .stack-experience,
  .testimonials,
  .contact-footer {
    padding-left: var(--m-gutter);
    padding-right: var(--m-gutter);
    margin-top: var(--m-section);
    margin-bottom: 0;
    box-sizing: border-box;
    width: 100%;
  }

  .hero {
    margin-top: 24px;
    padding-top: 0;
  }

  /* Typography tokens on headings */
  h1 {
    font: var(--m-display);
    letter-spacing: var(--m-display-track);
  }

  .work h2,
  .screens h2,
  .stack-experience h2,
  .experience-title,
  #testimonials-title,
  #contact-title {
    font-size: 26px;
    line-height: 30px;
    letter-spacing: -0.03em;
  }

  /* Hero adjustments */
  .hero .portrait {
    width: 260px;
    max-width: calc(100% - 32px);
    margin: 0 auto;
  }
  .hero .pointer {
    left: 40%;
    top: 86%;
  }
  .hero .pointer span {
    font-size: 13px;
    padding: 5px 10px;
  }
  .hero-actions {
    display: flex;
    gap: 8px;
    margin-top: 16px;
  }
  .hero-actions a {
    min-height: 44px;
    padding: 0 24px;
  }

  /* 3. SELECTED WORK */
  .work {
    padding-bottom: 0;
  }
  .work-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--m-card-gap);
    width: 100%;
  }
  .work .project {
    width: 100%;
  }
  .work .preview {
    width: 100%;
    aspect-ratio: 5 / 4;
    border-radius: 8px;
  }
  .work h3 {
    font-size: 20px;
    line-height: 24px;
    letter-spacing: -0.02em;
    margin-top: 12px;
    margin-bottom: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  .work .project-summary p {
    font-size: 15px;
    line-height: 21px;
    letter-spacing: -0.01em;
    max-width: 34ch;
    margin-top: 6px;
    margin-bottom: 0;
  }

  /* 4. INDIVIDUAL SCREENS GALLERY */
  .screens {
    padding-left: 0;
    padding-right: 0;
    overflow: hidden;
  }
  .screens > .work-heading {
    width: 100%;
    padding-left: var(--m-gutter);
    padding-right: var(--m-gutter);
    margin-bottom: 16px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    box-sizing: border-box;
  }
  .screens .motion-toggle {
    min-height: 44px;
    padding: 0 16px;
    align-self: flex-start;
    margin: 0;
    display: inline-flex;
    align-items: center;
  }
  .screens-window {
    width: 100%;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scroll-behavior: smooth;
    padding: 0 var(--m-gutter);
    box-sizing: border-box;
    scrollbar-width: none;
  }
  .screens-window::-webkit-scrollbar {
    display: none;
  }

  .screens-track {
    display: flex;
    gap: 16px;
    width: max-content;
  }
  .screens-track.desktop {
    display: none;
  }
  .screens-set {
    display: flex;
    gap: 16px;
    padding: 0;
  }
  .screen-frame {
    flex: 0 0 calc((100vw - (var(--m-gutter) * 2)) * 0.85);
    width: calc((100vw - (var(--m-gutter) * 2)) * 0.85);
    max-width: 320px;
    height: 280px;
    padding: 8px;
    box-sizing: border-box;
    scroll-snap-align: start;
    border-radius: 12px;
  }

  /* 5. MY STACK */
  .stack-icons {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 16px;
    justify-items: center;
    align-items: center;
    padding: 0;
    margin-top: 16px;
  }
  .stack-icons li {
    width: 52px;
    height: 52px;
    display: grid;
    place-items: center;
  }
  .stack-icons img,
  .stack-icons .adobe {
    width: 44px;
    height: 44px;
  }
  .stack-icons .adobe {
    font-size: 24px;
  }

  /* 6. WORK EXPERIENCE */
  .jobs {
    margin-top: 48px;
  }
  .jobs details {
    border-bottom: 1px solid #eaeaea;
  }
  .jobs summary {
    min-height: 52px;
    padding: 14px 0;
    display: flex;
    align-items: center;
  }
  .jobs strong {
    font-size: 16px;
    line-height: 24px;
    letter-spacing: -0.011em;
    font-weight: 500;
  }
  .jobs time {
    font-size: 13px;
    line-height: 18px;
  }
  .jobs details p {
    font-size: 15px;
    line-height: 21px;
    letter-spacing: -0.01em;
    margin: 0 0 16px;
  }

  /* 7. TESTIMONIALS */
  .testimonials {
    padding-bottom: 0;
  }
  .testimonial-heading {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }
  .testimonial-people {
    display: flex;
    gap: 12px;
    padding: 0;
    margin: 0;
    flex-wrap: nowrap;
  }
  .testimonial-person {
    width: 44px;
    height: 44px;
    margin-left: 0;
    border: none;
    border-radius: 50%;
    flex-shrink: 0;
    box-shadow: 0 1px 4px rgba(0,0,0,0.12);
  }
  .testimonial-person[aria-expanded="true"] {
    box-shadow: 0 0 0 2px #10121b;
    transform: none;
  }
  [data-theme="dark"] .testimonial-person[aria-expanded="true"] {
    box-shadow: 0 0 0 2px #ffffff;
  }
  #testimonial-panel {
    padding-top: 16px;
    width: 100%;
  }
  .testimonial blockquote p {
    font-size: 16px;
    line-height: 24px;
    letter-spacing: -0.011em;
  }
  .testimonial figcaption {
    margin-top: 16px;
  }

  /* 8. CONTACT */
  .contact-footer {
    padding: 0 var(--m-gutter) 48px;
    margin-top: var(--m-section);
  }
  .contact-card {
    min-height: 0;
    padding: 32px 20px;
    border-radius: 32px;
    box-sizing: border-box;
    width: 100%;
  }
  .footer-email-group {
    width: 100%;
    box-sizing: border-box;
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 24px;
  }
  .footer-email {
    flex: 1;
    min-width: 0;
    font-size: clamp(14px, 4.3vw, 17px);
    padding: 14px 8px 14px 16px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .copy-email {
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
  }
  .footer-socials {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 32px;
    flex-wrap: nowrap;
  }
  .footer-orb-slot,
  .footer-orb,
  .footer-ball {
    width: 52px;
    height: 52px;
  }
  .footer-ball svg {
    width: 22px;
    height: 22px;
  }
}

@media (max-width: 360px) {
  .contact-footer {
    padding-left: 10px;
    padding-right: 10px;
  }
}

/* Individual screens: bare app screens in soft grey frames, straight on the page.
   The row pauses while the pointer is on it and carries on when it leaves. */
.screens-window { padding-top: 8px; }
.screens-track.mobile { padding-bottom: 8px; }
.mobile .screens-set { gap: 28px; padding-right: 28px; }
.mobile .screen-frame { --screen-w: 240px; width: var(--screen-w); height: auto; aspect-ratio: 384 / 834; flex: none; padding: 0; border: 6px solid #cfd0d4; border-radius: 20px; background: #cfd0d4; box-shadow: none; overflow: hidden; }
.mobile .screen-frame img { width: 100%; height: 100%; object-fit: cover; border-radius: 14px; }
.screens.ready .screens-track:hover { animation-play-state: paused; }
[data-theme="dark"] .mobile .screen-frame { border-color: #3a3a41; background: #3a3a41; box-shadow: none; }
@media (max-width: 767px) {
  .screens-window { padding-top: 4px; }
  .screens-window { scroll-padding-left: var(--m-gutter, 16px); }
  .screens-track.mobile { padding-bottom: 4px; }
  .mobile .screens-set { gap: 16px; padding-right: 0; }
  .mobile .screen-frame { flex: 0 0 200px; width: 200px; max-width: none; height: auto; padding: 0; border-width: 5px; border-radius: 20px; scroll-snap-align: start; }
  .mobile .screen-frame img { border-radius: 15px; }
}
/* Laptop row: each website sits flat on a light panel inside the same grey frame
   and 20px corners as the phones. The page runs off the bottom edge, like a browser. */
.desktop .screens-set { gap: 28px; padding-right: 28px; }
.desktop .screen-frame { position: relative; width: 600px; height: auto; aspect-ratio: 16 / 10; flex: none; padding: 0; border: 6px solid #cfd0d4; border-radius: 20px; background: #f4f4f5; box-shadow: none; overflow: hidden; }
.desktop .screen-frame .web-shot { position: absolute; top: 36px; left: 40px; width: calc(100% - 80px); height: auto; object-fit: initial; border-radius: 4px; box-shadow: 0 0 0 1px rgba(0,0,0,.05), 0 10px 30px rgba(20,20,30,.08); }
.desktop .screen-frame .web-phone { position: absolute; right: 26px; bottom: -70px; width: 128px; height: auto; border: 4px solid #17171a; border-radius: 24px; box-shadow: 0 14px 30px rgba(20,20,30,.18); }
.screens-track + .screens-track { margin-top: 28px; }
[data-theme="dark"] .desktop .screen-frame { border-color: #3a3a41; background: #26262b; }
@media (max-width: 767px) {
  .desktop .screen-frame { width: 300px; border-width: 5px; border-radius: 20px; }
  .desktop .screen-frame .web-shot { top: 20px; left: 22px; width: calc(100% - 44px); border-radius: 3px; }
  .desktop .screen-frame .web-phone { width: 66px; right: 14px; bottom: -36px; border-width: 3px; border-radius: 13px; }
}

/* Testimonials: a clear ring around the person whose quote is showing. */
.testimonial-person[aria-expanded="true"] { box-shadow: 0 0 0 2px #fff, 0 0 0 4px #10121b; }
[data-theme="dark"] .testimonial-person[aria-expanded="true"] { box-shadow: 0 0 0 2px #161618, 0 0 0 4px #fff; }

/* Phones: both screens rows scroll by themselves, like desktop; holding a finger
   on a row pauses it. Even spacing, tool icons spread across the width. */
@media (max-width: 767px) {
  .screens .motion-toggle, .work .motion-toggle { display: none !important; }
  .work { padding-top: 0; }
  .hero { padding-bottom: 0; }
  .screens { padding-bottom: 0; }
  .screens-window { overflow: hidden; padding: 0; background: none; scroll-snap-type: none; }
  .screens-track, .screens-track.desktop { display: flex; gap: 0; width: max-content; padding: 4px 0; }
  .screens-track + .screens-track { margin-top: 20px; }
  .screens-set { gap: 16px; padding-right: 16px; }
  .screens-track.held { animation-play-state: paused; }
  .desktop .screen-frame { flex: 0 0 300px; }
  .stack-experience { padding-top: 0; padding-bottom: 0; }
  .stack-icons { grid-template-columns: repeat(5, 40px); justify-content: space-between; gap: 18px 0; margin-top: 16px; }
  .stack-icons li { width: 40px; height: 40px; }
  .stack-icons img, .stack-icons .adobe { width: 34px; height: 34px; }
  .stack-icons .adobe { font-size: 18px; }
  .testimonial-people { padding: 4px; }
  .testimonial-people { gap: 10px; }
  .testimonial-person, .testimonial-person img { width: 36px; height: 36px; }
}
/* "Pause previews" removed on every screen size. */
.work .motion-toggle { display: none !important; }

/* "Replay reveal" removed. */
.replay { display: none !important; }

/* About on phones: the four photos on top, the text underneath, full width. */
@media (max-width: 767px) {
  .about-section { grid-template-columns: 1fr; gap: 28px; padding: 24px 24px 56px; border-top: 0; }
  .about-photos { height: 260px; }
  .about-photos img { width: 140px; height: 176px; border-width: 6px; border-bottom-width: 14px; }
  .about-photos img:nth-child(1) { --spread: 92px; }
  .about-photos img:nth-child(2) { --spread: -92px; }
  .about-photos img:nth-child(3) { --spread: 34px; }
  .about-photos img:nth-child(4) { --spread: -28px; }
  .about-copy { max-width: none; }
  .about-copy h1 { font-size: 28px; margin-bottom: 14px; }
  .about-copy p { font-size: 17px; }
}

/* Stack + experience: one grey stage. Left: journey and tools; right: a simple timeline. */
.stack-experience.xp { max-width: 1160px; padding: 24px 48px 96px; }
.xp-stage { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 64px; align-items: start; padding: 56px 48px; border-radius: 28px; background: #f4f4f5; }
.stack-experience.xp .xp-side h2 { margin: 0 0 18px; font: 500 40px/1.08 Inter, sans-serif; letter-spacing: -.05em; color: #141414; }
.xp-side p { margin: 0; max-width: 460px; font-size: 16px; line-height: 1.6; color: #5b5b60; }
.xp-tools-title { margin: 30px 0 12px; font: 24px/1.25 Handlee, cursive; color: #676767; }
/* My stack keeps its original look: white circles in one straight row. */
.xp .stack-icons { display: flex; flex-wrap: nowrap; gap: 5px; margin: 0; }
.xp .stack-icons li { flex: none; width: 40px; height: 40px; }
.xp .stack-icons img, .xp .stack-icons .adobe { width: 25px; height: 25px; }
.xp .stack-icons .adobe { font-size: 15px; border-radius: 5px; }
.xp-card { padding: 28px 30px 12px; border-radius: 20px; background: #fff; }
.xp-label { margin: 0 0 8px; font: 500 13px/1.3 Inter, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: #8a8a90; }
.xp-timeline { position: relative; margin: 0; padding: 0; list-style: none; }
.xp-timeline::before { content: ""; position: absolute; left: 5px; top: 34px; bottom: 34px; width: 1px; background: #dcdce0; }
.xp-timeline li { position: relative; display: grid; grid-template-columns: 20px 1fr auto; gap: 0 14px; align-items: center; padding: 18px 0; border-bottom: 1px solid #efeff1; }
.xp-timeline li:last-child { border-bottom: 0; }
.xp-dot { position: relative; width: 11px; height: 11px; border-radius: 50%; background: #c4c4c9; box-shadow: 0 0 0 4px #fff; }
.xp-timeline .now .xp-dot { background: #141414; }
.xp-timeline strong { display: block; font-size: 18px; font-weight: 500; letter-spacing: -.025em; color: #141414; }
.xp-timeline div span { display: block; margin-top: 3px; font-size: 14.5px; color: #305cb8; }
.xp-timeline time { font-size: 14.5px; color: #7a7a80; }
[data-theme="dark"] .xp-stage { background: #1c1c20; }
[data-theme="dark"] .xp-card { background: #26262b; box-shadow: none; }
[data-theme="dark"] .xp-dot { box-shadow: 0 0 0 4px #26262b; background: #55555c; }
[data-theme="dark"] .xp-timeline .now .xp-dot { background: #f0f0f2; }
[data-theme="dark"] :is(.stack-experience.xp .xp-side h2, .xp-timeline strong) { color: #f0f0f2; }
[data-theme="dark"] .xp-tools-title { color: #bcbcc4; }
[data-theme="dark"] .xp-side p, [data-theme="dark"] .xp-timeline time { color: #a8a8ae; }
[data-theme="dark"] .xp-timeline div span { color: #8fb0f0; }
[data-theme="dark"] .xp-timeline li { border-bottom-color: #34343a; }
[data-theme="dark"] .xp-timeline::before { background: #3a3a41; }
@media (max-width: 767px) {
  .stack-experience.xp { padding: 0 var(--m-gutter, 20px); }
  .xp-stage { grid-template-columns: 1fr; padding: 28px 18px 18px; border-radius: 24px; }
  .stack-experience.xp .xp-side h2 { font-size: 30px; }
  .xp-side p { font-size: 16px; }
  .xp .stack-icons { display: grid; grid-template-columns: repeat(5, 46px); justify-content: space-between; gap: 16px 0; }
  .xp .stack-icons li { width: 46px; height: 46px; }
  .xp .stack-icons img, .xp .stack-icons .adobe { width: 26px; height: 26px; }
  .xp .stack-icons .adobe { font-size: 14px; border-radius: 5px; }
  .xp-tools-title { margin-top: 26px; }
  /* Phones: two separate cards — journey + My stack, then Experience below it. */
  .xp-stage { padding: 0; border-radius: 0; background: none; }
  .xp-side { padding: 28px 18px 24px; border-radius: 24px; background: #f4f4f5; }
  .xp-card { margin-top: 16px; padding: 24px 18px 8px; border-radius: 24px; background: #f4f4f5; }
  .xp-dot { box-shadow: 0 0 0 4px #f4f4f5; }
  .xp-timeline li { border-bottom-color: #e4e4e7; }
  [data-theme="dark"] .xp-stage { background: none; }
  [data-theme="dark"] :is(.xp-side, .xp-card) { background: #1c1c20; }
  [data-theme="dark"] .xp-dot { box-shadow: 0 0 0 4px #1c1c20; }
  .xp-card { margin-top: 24px; padding: 22px 18px 6px; }
  .xp-timeline li { gap: 0 12px; padding: 16px 0; }
  .xp-timeline strong { font-size: 16.5px; }
  .xp-timeline time { font-size: 13.5px; }
}
