/* src/components/PortfolioNavigation.css */
.portfolio-nav {
  position: fixed;
  z-index: 70;
  display: flex;
  color: #000;
  font-family: var(--font-ui);
  pointer-events: none;
  justify-content: space-between;
  align-items:  flex-start;
  top: 12.9vh;
  left: clamp(8rem, 18.25vw, 18rem);
  right: clamp(8rem, 23.2vw, 21rem);
}

.portfolio-nav__identity {
  display: flex;
  pointer-events: auto;
  flex-direction: column;
  align-items:  flex-start;
}

.portfolio-nav__name, .portfolio-nav__year {
  letter-spacing: -.035em;
  font-size: clamp(2rem, 2.78vw, 2.5rem);
  font-weight: 430;
  line-height: 1.08;
}

.portfolio-nav__year {
  min-height: 1.08em;
}

.portfolio-nav__year > span {
  display: block;
}

.portfolio-nav__year.is-status {
  color: #0000006b;
  letter-spacing: 0;
  margin-top: .35rem;
  font-size: .95rem;
}

.portfolio-nav__links {
  display: flex;
  color: #0006;
  pointer-events: auto;
  flex-direction: column;
  align-items:  flex-start;
  padding-top: .15rem;
  font-size: clamp(1rem, 1.4vw, 1.25rem);
  font-weight: 300;
  line-height: 1.12;
}

.portfolio-nav__links a {
  position: relative;
  white-space: nowrap;
  transition: color .18s;
}

.portfolio-nav__links a:hover, .portfolio-nav__links a.active {
  color: #000;
}

.portfolio-nav__name:focus-visible {
  outline: 2px solid #000;
  outline-offset: 4px;
}

.portfolio-nav__links a:focus-visible {
  outline: 2px solid #000;
  outline-offset: 4px;
}

@media (max-width: 900px) {
  .portfolio-nav {
    top: 24vh;
    left: 10vw;
    right: 10vw;
  }
}

@media (max-width: 560px) {
  .portfolio-nav {
    display: block;
    top: 30.3vh;
    left: 3.5rem;
    right: auto;
  }

  .portfolio-nav__name, .portfolio-nav__year {
    font-size: 2rem;
    line-height: 1.03;
  }

  .portfolio-nav__links {
    margin-top: 1.15rem;
    padding: 0;
    font-size: 1rem;
    line-height: 1.45;
  }
}

/* src/components/Footer.css */
.footer-container {
  color: #f0f3ef;
  text-align: center;
  border-top: 1px solid #f0f3ef24;
  width: 100%;
  padding: 10rem 0;
  background-color: #20211e !important;
}

.footer-content {
  letter-spacing: .05em;
  font-size: .9rem;
}

/* src/components/PortfolioLayout.css */
.layout-wrapper {
  display: flex;
  color: var(--theme-text);
  background: var(--theme-bg);
  flex-direction: column;
  min-height: 100vh;
}

.main-content {
  flex: 1;
  width: 100%;
  padding-top: 7rem;
}

.layout-wrapper--immersive, .layout-wrapper--immersive .main-content {
  overflow: hidden;
  width: 100vw;
  height: 100dvh;
  min-height: 0;
  padding: 0;
}

/* src/components/MediaPlaceholder.css */
.media-placeholder {
  position: relative;
  display: grid;
  overflow: hidden;
  color: #f6f7f2c7;
  background: #343a38;
  border: 1px solid #f6f7f22e;
  place-items:  center;
  width: 100%;
  height: 100%;
  min-height: 220px;
}

.media-placeholder__grid {
  position: absolute;
  opacity: .28;
  background-image: linear-gradient(#ffffff14 1px, #0000 1px), linear-gradient(90deg, #ffffff14 1px, #0000 1px);
  background-size: 32px 32px;
  inset: 0;
}

.media-placeholder__content {
  position: relative;
  display: flex;
  font-family: var(--font-ui);
  letter-spacing: .08em;
  text-align: center;
  text-transform: uppercase;
  flex-direction: column;
  align-items:  center;
  gap: .35rem;
  max-width: 80%;
  font-size: .7rem;
  line-height: 1.35;
}

.media-placeholder__content strong {
  color: #fff;
  margin: .25rem 0;
  font-size: clamp(.85rem, 1.1vw, 1.05rem);
  font-weight: 550;
}

.media-placeholder__project {
  color: var(--accent-soft, #cfe7c5);
}

/* src/components/DeviceFrame.css */
.device-frame {
  position: relative;
  display: block;
  isolation: isolate;
  flex: none;
  width: 100%;
  height: auto;
}

.device-frame--macbook-legacy {
  aspect-ratio: 3840 / 2637;
}

.device-frame--macbook-notch {
  aspect-ratio: 3840 / 2727;
}

.device-frame--iphone-plus {
  aspect-ratio: 1824 / 3840;
}

.device-frame--iphone-pro, .device-frame--iphone-pro-max {
  aspect-ratio: 1791 / 3840;
}

.device-frame--ipad-11 {
  aspect-ratio: 1448 / 1086;
}

.device-frame--glasses {
  aspect-ratio: 2394 / 744;
}

.device-frame--vision-pro {
  aspect-ratio: 4800 / 2824;
}

.device-frame__product {
  display: block;
  object-fit: contain;
  pointer-events: none;
  user-select: none;
  width: 100%;
  max-width: none;
  height: 100%;
}

.device-frame__screen {
  position: absolute;
  z-index: 0;
  overflow: hidden;
  background: #050505;
}

.device-frame__screen img {
  display: block;
  object-fit: cover;
  width: 100%;
  max-width: none;
  height: 100%;
}

.device-frame--macbook-legacy .device-frame__screen {
  border-radius: .7;
  width: 80.6%;
  height: 73.8%;
  top: 3.4%;
  left: 9.7%;
}

.device-frame--macbook-notch .device-frame__screen {
  border-radius: .8;
  width: 78.4%;
  height: 71.1%;
  top: 3.6%;
  left: 10.8%;
}

.device-frame--iphone-plus .device-frame__screen {
  border-radius: .8;
  width: 87%;
  height: 70.5%;
  top: 11.3%;
  left: 6.5%;
}

.device-frame--iphone-pro .device-frame__screen, .device-frame--iphone-pro-max .device-frame__screen {
  border-radius: 10.8% / 5.1%;
  width: 90.4%;
  height: 96.2%;
  top: 1.9%;
  left: 4.8%;
}

.device-frame--ipad-11 .device-frame__screen {
  border-radius: 2.2% / 3%;
  width: 75%;
  height: 72.4%;
  top: 13.7%;
  left: 12.5%;
}

.device-frame__overlay {
  position: relative;
  z-index: 1;
  display: block;
  object-fit: contain;
  pointer-events: none;
  user-select: none;
  width: 100%;
  max-width: none;
  height: 100%;
}

.device-frame--iphone-pro:after, .device-frame--iphone-pro-max:after {
  position: absolute;
  z-index: 2;
  content: "";
  pointer-events: none;
  background: #030303;
  border-radius: 999px;
  width: 25%;
  height: 2.35%;
  top: 3.05%;
  left: 37.5%;
  box-shadow: 0 0 0 1px #ffffff0b;
}

/* src/components/HorizontalRail.css */
.horizontal-rail {
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior: contain;
  scrollbar-width: none;
  scroll-snap-type: x proximity;
  touch-action: pan-x;
  -webkit-overflow-scrolling: touch;
  outline: none;
  width: 100%;
  min-width: 0;
}

.horizontal-rail::-webkit-scrollbar {
  display: none;
}

.horizontal-rail__track {
  display: flex;
  align-items:  center;
  width: max-content;
  min-width: 100%;
  height: 100%;
}

.horizontal-rail [data-rail-item] {
  scroll-snap-align: center;
  scroll-snap-stop: normal;
}

.horizontal-rail.is-dragging, .horizontal-rail.is-scrolling {
  cursor: grabbing;
  scroll-snap-type: none;
}

.horizontal-rail.is-dragging {
  user-select: none;
}

.horizontal-rail:focus-visible {
  box-shadow: inset 0 0 0 2px #cfe7c56b;
}

@media (prefers-reduced-motion: reduce) {
  .horizontal-rail {
    scroll-behavior: auto;
  }
}

/* src/pages/Work.css */
.work-rail-page {
  position: relative;
  overflow: hidden;
  color: #000;
  background: #fff;
  width: 100vw;
  height: 100dvh;
  min-height: 620px;
}

.work-rail {
  cursor: grab;
  width: 100%;
  height: 100%;
}

.work-rail .horizontal-rail__track {
  align-items:  flex-end;
  padding-bottom: clamp(3rem, 6vh, 4rem);
}

.work-rail__spacer {
  flex: none;
  height: 1px;
}

.work-rail__spacer--start {
  width: clamp(11rem, 12.8vw, 16rem);
}

.work-rail__spacer--end {
  width: clamp(8rem, 16vw, 20rem);
}

.project-card {
  --device-width: 12rem;
  position: relative;
  display: flex;
  flex: 0 0 var(--device-width);
  width: var(--device-width);
  transform-origin: center bottom;
  align-items:  flex-end;
  margin-right: clamp(5rem, 6.2vw, 8rem);
}

.project-card--macbook-notch, .project-card--macbook-legacy {
  --device-width: clamp(42rem, 44vw, 50rem);
}

.project-card--iphone-plus, .project-card--iphone-pro {
  --device-width: clamp(9.5rem, 10vw, 11rem);
}

.project-card--iphone-pro-max {
  --device-width: clamp(11.25rem, 11.5vw, 13rem);
}

.project-card--ipad-11 {
  --device-width: clamp(27rem, 29vw, 33rem);
}

.project-card--glasses {
  --device-width: clamp(17.5rem, 20vw, 21rem);
}

.project-card--vision-pro {
  --device-width: clamp(22rem, 26vw, 25rem);
}

.project-card__button {
  position: relative;
  display: flex;
  color: #000;
  text-align: left;
  cursor: pointer;
  background: none;
  border: 0;
  justify-content: center;
  align-items:  flex-end;
  width: 100%;
  padding: 0;
  transition: transform .36s cubic-bezier(.22,1,.36,1);
}

.project-card__button:hover {
  transform: translateY(-7px);
}

.project-card__button:focus-visible {
  outline: 2px solid #000;
  outline-offset: 12px;
}

.project-card .device-frame {
  filter: drop-shadow(0 1.2rem 2rem #00000017);
}

.project-card--iphone-plus .device-frame, .project-card--iphone-pro .device-frame, .project-card--iphone-pro-max .device-frame {
  filter: drop-shadow(0 .9rem 1.2rem #00000014);
}

.project-card--glasses .device-frame {
  filter: drop-shadow(0 .65rem .9rem #00000021);
}

.project-card--vision-pro .device-frame {
  filter: drop-shadow(0 .8rem 1.1rem #00000024);
}

.project-card__meta {
  position: absolute;
  display: flex;
  color: #0000006b;
  font-family: var(--font-ui);
  opacity: 0;
  pointer-events: none;
  align-items: baseline;
  gap: .55rem;
  width: max-content;
  transition: opacity .22s, transform .26s;
  font-size: .73rem;
  font-weight: 360;
  line-height: 1.2;
  top: calc(100% + .9rem);
  left: 50%;
  transform: translate(-50%, 5px);
}

.project-card__meta strong {
  color: #000;
  font-weight: 500;
}

.project-card__button:hover .project-card__meta {
  opacity: 1;
  transform: translate(-50%);
}

.project-card__button:focus-visible .project-card__meta {
  opacity: 1;
  transform: translate(-50%);
}

@media (max-width: 900px) {
  .work-rail-page {
    min-height: 540px;
  }

  .work-rail .horizontal-rail__track {
    padding-bottom: 18vh;
  }

  .work-rail__spacer--start {
    width: 2rem;
  }

  .work-rail__spacer--end {
    width: 4rem;
  }

  .project-card {
    margin-right: 2rem;
  }

  .project-card--macbook-notch, .project-card--macbook-legacy {
    --device-width: clamp(15rem, 66vw, 23rem);
  }

  .project-card--iphone-plus, .project-card--iphone-pro {
    --device-width: clamp(5rem, 21vw, 7rem);
  }

  .project-card--iphone-pro-max {
    --device-width: clamp(6rem, 24vw, 8rem);
  }

  .project-card--ipad-11 {
    --device-width: clamp(12rem, 48vw, 17rem);
  }

  .project-card--glasses {
    --device-width: clamp(7.8rem, 33vw, 10.5rem);
  }

  .project-card--vision-pro {
    --device-width: clamp(9rem, 39vw, 12rem);
  }

  .project-card__meta {
    font-size: .64rem;
    top: calc(100% + .55rem);
  }
}

@media (max-width: 560px) {
  .work-rail-page {
    min-height: 500px;
  }

  .work-rail .horizontal-rail__track {
    padding-bottom: 27.5vh;
  }

  .project-card {
    margin-right: 2rem;
  }

  .project-card--macbook-notch, .project-card--macbook-legacy {
    --device-width: 15.25rem;
  }

  .project-card--iphone-plus, .project-card--iphone-pro {
    --device-width: 5.25rem;
  }

  .project-card--iphone-pro-max {
    --device-width: 6.25rem;
  }

  .project-card--ipad-11 {
    --device-width: 12rem;
  }

  .project-card--glasses {
    --device-width: 8.5rem;
  }

  .project-card--vision-pro {
    --device-width: 9.75rem;
  }

  .project-card__meta {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .project-card__button, .project-card__meta {
    transition-duration: 1ms;
  }

  .project-card__button:hover {
    transform: none;
  }
}

/* src/pages/About.css */
.about-page {
  position: relative;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior-y: contain;
  color: #111;
  background: #fff;
  width: 100vw;
  height: 100dvh;
  min-height: 100dvh;
}

.about-back {
  position: fixed;
  z-index: 20;
  display: grid;
  border-radius: 50%;
  place-items:  center;
  width: 44px;
  height: 44px;
  transition: background .18s, transform .22s;
  top: clamp(2rem, 5vh, 3.75rem);
  left: clamp(1.5rem, 3.6vw, 4rem);
}

.about-back img {
  display: block;
  filter: invert(1);
  width: 24px;
  height: 24px;
  transform: rotate(-90deg);
}

.about-back:hover {
  background: #0000000e;
  transform: translateX(-3px);
}

.about-back:focus-visible {
  outline: 2px solid #111;
  outline-offset: 4px;
}

.about-socials a:focus-visible {
  outline: 2px solid #111;
  outline-offset: 4px;
}

.about-stage {
  display: grid;
  grid-template-columns: minmax(17rem, .84fr) minmax(20rem, 1.16fr);
  align-items:  center;
  gap: clamp(3.5rem, 7vw, 8rem);
  width: min(100% - 3rem, 1040px);
  min-height: 100dvh;
  margin: 0 auto;
  padding: clamp(7rem, 13vh, 10rem) 0 clamp(4rem, 8vh, 7rem);
}

.about-copy {
  align-self:  center;
  max-width: 29rem;
}

.about-eyebrow {
  color: #0000006b;
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-bottom: 1rem;
  font-size: .75rem;
  font-weight: 400;
}

.about-copy h1 {
  font-family: var(--font-ui);
  letter-spacing: -.035em;
  margin-bottom: clamp(1.35rem, 2.4vh, 2rem);
  font-size: clamp(1.65rem, 2.2vw, 2rem);
  font-weight: 470;
  line-height: 1.05;
}

.about-summary {
  color: #161616;
  font-family: var(--font-ui);
  letter-spacing: -.018em;
  font-size: clamp(1.05rem, 1.35vw, 1.22rem);
  font-weight: 390;
  line-height: 1.36;
}

.about-socials {
  display: flex;
  color: #00000061;
  flex-direction: column;
  align-items:  flex-start;
  margin-top: clamp(1.5rem, 3vh, 2.25rem);
  font-size: clamp(1rem, 1.25vw, 1.15rem);
  font-weight: 320;
  line-height: 1.45;
}

.about-socials a {
  text-transform: capitalize;
  transition: color .18s;
}

.about-socials a:hover {
  color: #111;
}

.about-portrait {
  justify-self: end;
  width: 100%;
  max-width: 34rem;
}

.about-portrait img {
  display: block;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: 50% 34%;
  filter: grayscale(100%) contrast(.94);
  background: #e9e9e9;
  width: 100%;
}

.about-status {
  color: #0006;
  letter-spacing: .055em;
  white-space: nowrap;
  text-transform: uppercase;
  margin-top: clamp(1.35rem, 2.7vh, 2rem);
  font-size: .65rem;
}

@media (max-width: 820px) {
  .about-back {
    position: absolute;
    top: 1.2rem;
    left: 1rem;
  }

  .about-stage {
    grid-template-columns: 1fr;
    gap: 2.5rem;
    width: min(100% - 2rem, 38rem);
    min-height: 0;
    padding: 6.75rem 0 3rem;
  }

  .about-copy {
    max-width: 34rem;
  }

  .about-copy h1 {
    font-size: 1.75rem;
  }

  .about-summary {
    font-size: 1.05rem;
    line-height: 1.42;
  }

  .about-socials {
    margin-top: 1.5rem;
    font-size: 1rem;
  }

  .about-status {
    white-space: normal;
  }

  .about-portrait {
    justify-self: stretch;
    max-width: none;
  }

  .about-portrait img {
    aspect-ratio: 4 / 5;
    object-position: 50% 42%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .about-page *, .about-page *:before, .about-page *:after {
    animation-duration: 1ms !important;
    transition-duration: 1ms !important;
  }
}

/* src/pages/ProjectDetail.css */
.project-detail-rail, .project-detail-mobile {
  --detail-gutter: clamp(1.25rem, 3.4vw, 4rem);
  --detail-bg: #eadbd7;
  --detail-ink: #171717;
  --detail-muted: #17171791;
  color: var(--detail-ink);
  background: var(--detail-bg);
}

.project-detail-rail {
  overflow: hidden;
  width: 100vw;
  height: 100dvh;
  min-height: 650px;
}

.project-detail-rail__header {
  position: fixed;
  z-index: 60;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  padding: 0 var(--detail-gutter);
  color: var(--detail-ink);
  pointer-events: none;
  align-items:  center;
  height: 7.75rem;
  top: 0;
  left: 0;
  right: 0;
}

.detail-brand {
  font-family: var(--font-display);
  letter-spacing: -.025em;
  justify-self: start;
  font-size: clamp(1.55rem, 2vw, 2.25rem);
  font-weight: 520;
  line-height: 1;
}

.detail-back {
  display: inline-flex;
  grid-column: 2;
  color: var(--detail-ink);
  font-family: var(--font-ui);
  letter-spacing: .05em;
  text-transform: uppercase;
  cursor: pointer;
  pointer-events: auto;
  background: #fff;
  border: 0;
  border-radius: 999px;
  justify-content: center;
  align-items:  center;
  gap: .65rem;
  min-width: 6.25rem;
  min-height: 44px;
  padding: .7rem 1.1rem;
  transition: color .22s, background .22s, transform .22s;
  font-size: .7rem;
  font-weight: 650;
}

.detail-back:hover {
  color: #fff;
  background: #281c20;
  transform: translateX(-3px);
}

.detail-back:focus-visible {
  outline: 2px solid var(--detail-ink);
  outline-offset: 4px;
}

.detail-chapter-nav button:focus-visible {
  outline: 2px solid var(--detail-ink);
  outline-offset: 4px;
}

.next-project:focus-visible {
  outline: 2px solid var(--detail-ink);
  outline-offset: 4px;
}

.mobile-next-project:focus-visible {
  outline: 2px solid var(--detail-ink);
  outline-offset: 4px;
}

.detail-chapter__read-more:focus-visible {
  outline: 2px solid var(--detail-ink);
  outline-offset: 4px;
}

.detail-current {
  display: flex;
  grid-column: 3;
  color: #17171799;
  font-family: var(--font-ui);
  letter-spacing: .08em;
  text-transform: uppercase;
  justify-self: end;
  align-items:  center;
  gap: 1rem;
  font-size: .66rem;
}

.detail-current span:last-child {
  color: var(--detail-ink);
}

.detail-horizontal-rail {
  cursor: grab;
  height: 100%;
}

.detail-rail-spacer {
  flex: 0 0 max(var(--detail-gutter), 4vw);
  height: 1px;
}

.detail-chapter {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  opacity: .38;
  flex: 0 0 68vw;
  width: 68vw;
  height: calc(100dvh - 10.75rem);
  min-height: 520px;
  margin: 6.6rem clamp(3rem, 5vw, 6rem) 2.25rem;
  transition: opacity .52s, transform .72s cubic-bezier(.22,1,.36,1);
  transform: scale(.955);
}

.detail-chapter--context {
  flex-basis: 64vw;
  width: 64vw;
}

.detail-chapter--research {
  flex-basis: 74vw;
  width: 74vw;
}

.detail-chapter--concept {
  flex-basis: 61vw;
  width: 61vw;
}

.detail-chapter--design {
  flex-basis: 78vw;
  width: 78vw;
}

.detail-chapter--outcome {
  flex-basis: 70vw;
  width: 70vw;
}

.detail-chapter.is-active {
  opacity: 1;
  transform: scale(1);
}

.detail-chapter--hero {
  grid-template-areas: "caption media";
  grid-template-columns: minmax(21rem, .78fr) minmax(0, 1.28fr);
  grid-template-rows: minmax(0, 1fr);
  flex-basis: 92vw;
  gap: clamp(2.5rem, 6vw, 7.5rem);
  width: 92vw;
  height: calc(100dvh - 9.5rem);
  margin: 6.75rem 8vw 2rem 0;
}

.detail-chapter__media {
  display: flex;
  overflow: hidden;
  justify-content: center;
  align-items:  center;
  min-width: 0;
  min-height: 0;
}

.detail-chapter--hero .detail-chapter__media {
  grid-area: media;
}

.detail-hero-media {
  overflow: hidden;
  background: #ffffff4d;
  border-radius: 1.15rem;
  width: 100%;
  height: min(71vh, 670px);
}

.detail-hero-media img {
  display: block;
  object-fit: cover;
  width: 100%;
  height: 100%;
}

.detail-media-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-auto-flow: dense;
  gap: clamp(.65rem, 1.1vw, 1.15rem);
  width: 100%;
  height: 100%;
  max-height: min(63vh, 600px);
}

.detail-media-grid__item {
  grid-column: span 6;
}

.detail-media-grid--1 .detail-media-grid__item {
  grid-column: 1 / -1;
}

.detail-media-grid--2 {
  grid-template-rows: minmax(0, 1fr);
}

.detail-media-grid--3, .detail-media-grid--4, .detail-media-grid--5, .detail-media-grid--6 {
  grid-template-rows: repeat(2, minmax(0, 1fr));
}

.detail-media-grid--3 .detail-media-grid__item:first-child {
  grid-column: span 7;
  grid-row: span 2;
}

.detail-media-grid--3 .detail-media-grid__item:not(:first-child) {
  grid-column: span 5;
}

.detail-media-grid--5 .detail-media-grid__item, .detail-media-grid--6 .detail-media-grid__item {
  grid-column: span 4;
}

.detail-media-grid__item[data-orientation="portrait"] {
  place-self: stretch center;
}

.detail-media-grid__item[data-orientation="landscape"] {
  align-self: stretch;
}

.detail-media-grid__item {
  position: relative;
  display: flex;
  overflow: hidden;
  background: none;
  border-radius: 1rem;
  justify-content: center;
  align-items:  center;
  width: 100%;
  min-width: 0;
  height: 100%;
  min-height: 0;
}

.detail-media-grid__item img {
  display: block;
  object-fit: contain;
  background: none;
  border-radius: 1rem;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: 100%;
}

.detail-media-grid__item--video {
  aspect-ratio: 16 / 9;
  background: #101010;
}

.detail-media-grid__item--video iframe {
  border: 0;
  width: 100%;
  height: 100%;
}

.detail-media-grid__item--video a {
  position: absolute;
  color: #fff;
  font-family: var(--font-ui);
  letter-spacing: .06em;
  text-transform: uppercase;
  background: #281c20;
  border-radius: 999px;
  padding: .65rem .85rem;
  font-size: .68rem;
  bottom: 1rem;
  right: 1rem;
}

.detail-chapter__caption {
  display: grid;
  grid-template-columns: minmax(6rem, .55fr) minmax(0, 2.45fr);
  overflow: hidden;
  opacity: 0;
  gap: clamp(1rem, 2.5vw, 2.75rem);
  width: min(100%, 960px);
  max-height: 0;
  margin: 0 auto;
  padding-top: 0;
  transition: opacity .42s 90ms, transform .52s cubic-bezier(.22,1,.36,1) 90ms, max-height .52s, padding-top .52s;
  transform: translateY(16px);
}

.detail-chapter__caption.is-active {
  opacity: 1;
  max-height: min(23vh, 235px);
  padding-top: clamp(.85rem, 1.4vw, 1.25rem);
  transition-delay: 60ms, 60ms, 0s, 0s;
  transform: translateY(0);
}

.detail-chapter__caption.is-expanded {
  max-height: min(48vh, 440px);
}

.detail-chapter--hero .detail-chapter__caption {
  display: block;
  grid-area: caption;
  padding: 0 0 0 var(--detail-gutter);
  overflow: visible;
  opacity: 1;
  align-self:  center;
  width: 100%;
  max-height: min(72vh, 680px);
  margin: 0;
  transform: none;
}

.detail-chapter__caption-header {
  display: flex;
  color: #171717c2;
  font-family: var(--font-ui);
  letter-spacing: .09em;
  text-transform: uppercase;
  flex-direction: column;
  gap: .3rem;
  padding-top: .2rem;
  font-size: .63rem;
}

.detail-chapter__caption-header span:first-child {
  color: #1717175e;
}

.detail-chapter--hero .detail-chapter__caption-header {
  margin-bottom: clamp(1.5rem, 3vh, 2.5rem);
}

.detail-chapter__caption-body {
  display: flex;
  overflow: hidden;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
}

.detail-chapter__caption-body h1 {
  font-family: var(--font-ui);
  letter-spacing: -.045em;
  font-size: clamp(1.85rem, 3vw, 3.6rem);
  font-weight: 430;
  line-height: .98;
}

.detail-chapter--hero .detail-chapter__caption-body h1 {
  letter-spacing: -.065em;
  max-width: 8ch;
  font-size: clamp(3.8rem, 6.2vw, 7.7rem);
  font-weight: 430;
  line-height: .84;
}

.detail-chapter__tagline {
  color: #171717ad;
  font-family: var(--font-ui);
  margin-top: .65rem;
  font-size: clamp(.82rem, .9vw, .96rem);
  line-height: 1.45;
}

.detail-chapter--hero .detail-chapter__tagline {
  color: #171717c7;
  max-width: 42ch;
  margin-top: clamp(1.5rem, 3vh, 2.6rem);
  font-size: clamp(.9rem, 1vw, 1rem);
}

.detail-chapter__meta {
  display: flex;
  color: #171717ad;
  font-family: var(--font-ui);
  letter-spacing: .055em;
  text-transform: uppercase;
  flex-wrap: wrap;
  gap: .5rem 1.3rem;
  margin-top: 1rem;
  font-size: .62rem;
}

.detail-chapter__long-copy {
  overflow-x: hidden;
  overflow-y: hidden;
  overscroll-behavior: contain;
  scrollbar-color: #17171740 transparent;
  scrollbar-width: thin;
  max-height: 4.7rem;
  margin-top: .75rem;
}

.detail-chapter__long-copy.is-expanded {
  overflow-y: auto;
  max-height: min(28vh, 260px);
  padding-right: .5rem;
}

.detail-chapter__source + .detail-chapter__source {
  border-top: 1px solid #17171721;
  margin-top: 1rem;
  padding-top: 1rem;
}

.detail-chapter__source h2 {
  font-family: var(--font-ui);
  letter-spacing: .07em;
  text-transform: uppercase;
  margin-bottom: .25rem;
  font-size: .68rem;
  font-weight: 650;
}

.detail-chapter__source-tag {
  color: #171717b8;
  font-family: var(--font-ui);
  margin-bottom: .35rem;
  font-size: .72rem;
}

.detail-chapter__text {
  color: #171717ab;
  font-family: var(--font-ui);
  white-space: pre-line;
  margin-top: .75rem;
  font-size: clamp(.78rem, .88vw, .92rem);
  line-height: 1.5;
}

.detail-chapter__text--missing {
  color: #17171780;
}

.detail-chapter__read-more {
  color: var(--detail-ink);
  font-family: var(--font-ui);
  letter-spacing: .08em;
  text-transform: uppercase;
  cursor: pointer;
  background: none;
  border: 0;
  border-bottom: 1px solid;
  flex: none;
  align-self:  flex-start;
  margin-top: .85rem;
  padding: 0 0 .2rem;
  font-size: .67rem;
}

.detail-chapter--next {
  display: flex;
  flex-basis: 92vw;
  justify-content: center;
  align-items:  center;
  width: 92vw;
}

.next-project {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(18rem, .65fr);
  grid-template-rows: auto minmax(0, 1fr);
  color: inherit;
  text-align: left;
  cursor: pointer;
  background: none;
  border: 0;
  width: 100%;
  height: min(71vh, 680px);
  padding: 0;
}

.next-project__eyebrow {
  grid-column: 1 / 3;
  color: #17171799;
  font-family: var(--font-ui);
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-bottom: 1rem;
  font-size: .68rem;
}

.next-project__frame {
  overflow: hidden;
  border-radius: 1.15rem;
  min-width: 0;
}

.next-project__frame img {
  display: block;
  object-fit: cover;
  width: 100%;
  height: 100%;
}

.next-project__caption {
  display: flex;
  background: #ffffff6b;
  flex-direction: column;
  justify-content: center;
  padding: clamp(1.5rem, 4vw, 4rem);
}

.next-project__caption h2 {
  font-family: var(--font-ui);
  letter-spacing: -.06em;
  font-size: clamp(3rem, 6vw, 7.5rem);
  font-weight: 430;
  line-height: .84;
}

.next-project__caption span, .next-project__caption p {
  color: #17171791;
  font-family: var(--font-ui);
  letter-spacing: .06em;
  text-transform: uppercase;
  margin-top: .8rem;
  font-size: .67rem;
}

.project-detail-rail__footer {
  position: fixed;
  z-index: 58;
  right: var(--detail-gutter);
  bottom: .85rem;
  left: var(--detail-gutter);
  pointer-events: none;
}

.detail-progress {
  overflow: hidden;
  background: #17171726;
  width: 100%;
  height: 1px;
}

.detail-progress span {
  display: block;
  background: var(--detail-ink);
  transform-origin: left;
  width: 100%;
  height: 100%;
  transition: transform .24s linear;
}

.detail-chapter-nav {
  display: flex;
  pointer-events: auto;
  justify-content: space-between;
  align-items:  flex-start;
  gap: .5rem;
  margin-top: .55rem;
}

.detail-chapter-nav button {
  display: flex;
  color: #17171752;
  font-family: var(--font-ui);
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
  background: none;
  border: 0;
  align-items:  center;
  gap: .4rem;
  padding: 0;
  transition: color .22s;
  font-size: .58rem;
}

.detail-chapter-nav button.is-active {
  color: var(--detail-ink);
}

.detail-chapter-nav em {
  font-style: normal;
}

@media (max-width: 1100px) {
  .detail-chapter-nav em {
    display: none;
  }
}

.project-not-found {
  display: grid;
  background: var(--theme-bg);
  place-items:  center;
  gap: 2rem;
  min-height: 100dvh;
  padding: 8rem 1.5rem;
}

.project-not-found .media-placeholder {
  aspect-ratio: 16 / 9;
  width: min(90vw, 900px);
}

.project-not-found button {
  color: var(--theme-bg);
  font-family: var(--font-ui);
  background: var(--text-white);
  border: 0;
  border-radius: 999px;
  padding: .8rem 1.1rem;
}

.project-detail-mobile {
  overflow: visible;
  width: 100%;
  min-height: 100dvh;
  padding: 7.5rem 1rem 3rem;
}

.project-detail-mobile__hero, .project-detail-mobile__chapter {
  scroll-margin-top: 7rem;
}

.project-detail-mobile__hero {
  padding-bottom: 3.5rem;
}

.project-detail-mobile .project-detail-rail__header {
  grid-template-columns: 1fr auto auto;
  backdrop-filter: blur(12px);
  background: #eadbd7e0;
  gap: .65rem;
  height: 6rem;
  padding: 0 1rem;
}

.project-detail-mobile .detail-brand {
  font-family: var(--font-ui);
  letter-spacing: -.025em;
  font-size: 1.08rem;
  font-weight: 680;
}

.project-detail-mobile .detail-back {
  grid-column: 2;
  width: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  font-size: 0;
}

.project-detail-mobile .detail-back span {
  font-size: 1rem;
}

.project-detail-mobile .detail-current {
  grid-column: 3;
  gap: 0;
}

.project-detail-mobile .detail-current span:first-child {
  display: none;
}

.project-detail-mobile .detail-current span:last-child {
  display: grid;
  color: var(--detail-ink);
  background: #fff;
  border-radius: 50%;
  place-items:  center;
  width: 44px;
  height: 44px;
}

.project-detail-mobile .detail-chapter__caption {
  display: block;
  overflow: visible;
  opacity: 1;
  width: 100%;
  max-height: none;
  margin: 0;
  padding: 0;
  transform: none;
}

.project-detail-mobile .detail-chapter__caption-header {
  flex-direction: row;
  justify-content: space-between;
  margin-bottom: 1.2rem;
  font-size: .62rem;
}

.project-detail-mobile .detail-chapter__caption-body {
  display: block;
  overflow: visible;
}

.project-detail-mobile .detail-chapter__caption-body h1 {
  font-family: var(--font-ui);
  letter-spacing: -.06em;
  font-size: clamp(2.2rem, 12vw, 3.6rem);
  font-weight: 440;
  line-height: .9;
}

.project-detail-mobile__hero .detail-chapter__caption-body h1 {
  max-width: 8ch;
  font-size: clamp(3.4rem, 17vw, 5rem);
  line-height: .84;
}

.project-detail-mobile .detail-chapter__tagline, .project-detail-mobile .detail-chapter__text {
  color: #171717c2;
  font-size: 1rem;
  line-height: 1.45;
}

.project-detail-mobile__hero .detail-chapter__tagline {
  margin-top: 2.5rem;
}

.project-detail-mobile .detail-chapter__meta {
  color: #171717a6;
  gap: .5rem 1rem;
  margin-top: 1.5rem;
  font-size: .65rem;
}

.project-detail-mobile__media {
  width: 100%;
  margin-top: 2rem;
}

.project-detail-mobile .detail-hero-media {
  aspect-ratio: 16 / 10;
  border-radius: .75rem;
  height: auto;
}

.project-detail-mobile__story {
  display: flex;
  flex-direction: column;
  gap: 4.25rem;
}

.project-detail-mobile__chapter {
  border-top: 1px solid #17171726;
  padding-top: 1rem;
}

.project-detail-mobile .detail-media-grid {
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
  height: auto;
  max-height: none;
}

.project-detail-mobile .detail-media-grid__item {
  background: none;
  border-radius: .75rem;
  min-height: 0;
}

.project-detail-mobile .detail-media-grid__item img {
  object-fit: contain;
  border-radius: .75rem;
  width: 100%;
  height: auto;
  max-height: none;
}

.project-detail-mobile .media-placeholder {
  border-radius: .75rem;
  min-height: 15rem;
}

.project-detail-mobile__chapter .detail-chapter__caption {
  margin-top: 1.5rem;
}

.project-detail-mobile .detail-chapter__long-copy {
  overflow: visible;
  max-height: none;
  margin-top: 1rem;
  padding-right: 0;
}

.project-detail-mobile .detail-chapter__read-more {
  display: none;
}

.project-detail-mobile__next {
  background: color-mix(in srgb, var(--detail-bg) 74%, #fff);
  margin: 5rem -1rem -3rem;
  padding: 2.5rem 1rem 3rem;
}

.mobile-next-project {
  display: grid;
  grid-template-columns: 1fr auto;
  color: inherit;
  text-align: left;
  background: none;
  border: 0;
  width: 100%;
  padding: 0;
}

.mobile-next-project img {
  grid-column: 1 / 3;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border-radius: .75rem;
  width: 100%;
  margin-bottom: 2rem;
}

.mobile-next-project span {
  grid-column: 1;
  color: #17171794;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-size: .7rem;
}

.mobile-next-project strong {
  grid-column: 1;
  font-family: var(--font-ui);
  letter-spacing: -.06em;
  margin-top: .5rem;
  font-size: clamp(3rem, 16vw, 5rem);
  font-weight: 430;
  line-height: .84;
}

.mobile-next-project i {
  grid-column: 2;
  grid-row: 2 / 4;
  align-self:  end;
  font-size: 1.4rem;
  font-style: normal;
}

@media (max-width: 1050px) and (min-width: 701px) {
  .detail-chapter--hero {
    grid-template-columns: minmax(17rem, .75fr) minmax(0, 1.25fr);
    gap: 2.5rem;
  }

  .detail-chapter--hero .detail-chapter__caption-body h1 {
    font-size: clamp(3.3rem, 6vw, 5.5rem);
  }

  .detail-chapter-nav em {
    display: none;
  }
}

@media (max-width: 700px) {
  body.is-project-detail-mobile {
    overflow-x: hidden;
    overflow-y: auto;
    height: auto;
  }

  body.is-project-detail-mobile .layout-wrapper--immersive, body.is-project-detail-mobile .layout-wrapper--immersive .main-content {
    overflow: visible;
    width: 100%;
    height: auto;
    min-height: 100dvh;
  }
}

@media (prefers-reduced-motion: reduce) {
  .detail-chapter, .detail-chapter__caption, .detail-progress span, .detail-back {
    transition-duration: 1ms;
  }

  .detail-chapter, .detail-chapter__caption {
    transform: none;
  }
}

/* src/pages/Contact.css */
.contact-container {
  display: flex;
  flex-direction: column;
  align-items:  center;
  max-width: 800px;
  margin: 0 auto;
  padding: 0 4rem;
}

.contact-header {
  text-align: center;
  margin-top: 2rem;
  margin-bottom: 4rem;
}

.contact-form {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  width: 100%;
  max-width: 500px;
}

.input-wrapper {
  position: relative;
  width: 100%;
}

.input-wrapper:after {
  content: "";
  position: absolute;
  pointer-events: none;
  background-color: #000;
  width: 0%;
  height: 1px;
  transition: width .2s ease-out;
  bottom: 0;
  left: 0;
}

.input-wrapper:focus-within:after {
  width: 100%;
}

.form-input {
  outline: none;
  background-color: #f0f0f0;
  border: none;
  border-radius: 4px;
  width: 100%;
  padding: 1rem;
  font-family: inherit;
  font-size: .9rem;
}

.form-input:focus {
  background-color: #eaeaea;
}

.form-textarea {
  resize: vertical;
  min-height: 150px;
}

.submit-btn {
  color: #fff;
  cursor: pointer;
  background: none;
  border: 1px solid #fff;
  align-self:  flex-start;
  padding: .8rem 2rem;
  transition: all .3s;
  font-family: inherit;
}

.submit-btn:hover {
  color: var(--color-bg);
  background: #fff;
}

.overlay {
  position: fixed;
  display: flex;
  backdrop-filter: blur(6px);
  pointer-events: auto;
  background: #00000059;
  justify-content: center;
  align-items:  center;
  inset: 0;
  z-index: 999999 !important;
}

.ov-box {
  backdrop-filter: blur(8px);
  text-align: center;
  background: #ffffff0d;
  border: 1px solid #fff3;
  min-width: 280px;
  padding: 28px 36px;
}

.ov-title {
  color: #fff;
  margin-bottom: 6px;
  font-size: 1.3rem;
  font-weight: 500;
}

.ov-text {
  opacity: .85;
  color: #fff;
  font-size: .95rem;
}

.retry-btn {
  color: #fff;
  cursor: pointer;
  background: none;
  border: 1px solid #ffffff80;
  margin-top: 18px;
  padding: 6px 16px;
}

/* src/components/CustomCursor.css */
.cursor-dot {
  position: fixed;
  pointer-events: none;
  z-index: 9999;
  background-color: #111;
  border-radius: 50%;
  width: 6px;
  height: 6px;
  top: 0;
  left: 0;
}

.cursor-circle {
  position: fixed;
  pointer-events: none;
  z-index: 9998;
  background-color: #0000;
  border: 1px solid #111;
  border-radius: 50%;
  width: 50px;
  height: 50px;
  top: 0;
  left: 0;
}

@media (pointer: fine) {
  body, a, button, input {
    cursor: none !important;
  }
}

/* src/styles.css */
:root {
  --bg-work: #fff;
  --accent-soft: #000;
  --selection-bg: #000;
  --text-white: #000;
  --footer-bg: #101614;
  --theme-bg: var(--bg-work);
  --theme-text: var(--text-white);
  --theme-bg-rgb: 255, 255, 255;
  --theme-text-rgb: 0, 0, 0;
  --font-display: "Karma", Georgia, serif;
  --font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  --page-gutter: clamp(1.25rem, 3.5vw, 4rem);
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  --buncss-light: initial;
  --buncss-dark: ;
  color-scheme: light;
  background: var(--theme-bg);
  min-width: 320px;
}

body {
  color: var(--theme-text);
  font-family: var(--font-ui);
  background: var(--theme-bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  min-width: 320px;
  min-height: 100vh;
  font-size: 16px;
  line-height: 1.5;
}

body.is-immersive-page {
  overflow: hidden;
  width: 100%;
  height: 100dvh;
}

#root {
  min-height: 100vh;
}

::selection {
  color: #fff;
  background: var(--selection-bg);
}

a {
  color: inherit;
  text-decoration: none;
}

button, input, textarea, select {
  font: inherit;
}

img {
  max-width: 100%;
}

ul {
  list-style: none;
}

.loading {
  display: grid;
  color: #00000080;
  font-family: var(--font-ui);
  place-items:  center;
  min-height: 60vh;
}

@media (prefers-reduced-motion: reduce) {
  *, *:before, *:after {
    scroll-behavior: auto !important;
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
  }
}
