:root {
  --paper: #ffffff;
  --ink: #121212;
  --muted: #74746f;
  --line: #dcdcd7;
  --image-bg: #f1f1ee;
  --serif: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, "Songti SC", STSong, serif;
  --sans: Inter, "Helvetica Neue", Arial, "PingFang SC", "Microsoft YaHei", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--serif);
  text-rendering: optimizeLegibility;
}
a { color: inherit; text-decoration: none; }
img { display: block; width: 100%; }
button, a { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 1px solid var(--ink); outline-offset: 5px; }

.site-header {
  min-height: 106px;
  padding: 24px 3.2vw 22px;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  background: var(--paper);
}
.site-logo {
  font-size: clamp(2.7rem, 4.2vw, 4.7rem);
  font-weight: 400;
  line-height: .9;
  letter-spacing: -.065em;
}
.site-nav {
  display: flex;
  gap: clamp(24px, 3vw, 54px);
  padding-top: 8px;
  font-size: clamp(1rem, 1.2vw, 1.35rem);
}
.site-nav a, .section-link, .site-footer a { position: relative; }
.site-nav a::after, .section-link::after, .site-footer a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: -4px;
  height: 1px;
  background: currentColor;
  transition: right 220ms ease;
}
.site-nav a:hover::after, .site-nav a.is-current::after,
.section-link:hover::after, .site-footer a:hover::after { right: 0; }

.home-hero { padding: 0 3.2vw; }
.carousel { position: relative; }
.carousel-images {
  position: relative;
  display: block;
  height: min(74vh, 820px);
  min-height: 520px;
  overflow: hidden;
  background: var(--image-bg);
}
.carousel-slide {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 0;
  transform: scale(1.012);
  transition: opacity 900ms ease, transform 1500ms cubic-bezier(.2,.7,.2,1);
}
.carousel-slide.is-active { z-index: 1; opacity: 1; transform: scale(1); }
.carousel-slide img { height: 100%; object-fit: cover; }
.carousel-caption {
  min-height: 52px;
  display: flex;
  justify-content: space-between;
  padding-top: 13px;
  font-size: clamp(.95rem, 1vw, 1.12rem);
}
.carousel-caption p { margin: 0; }
.muted, .work-meta span { color: var(--muted); }
.carousel-controls {
  position: absolute;
  z-index: 3;
  right: 18px;
  bottom: 70px;
  display: flex;
  gap: 7px;
}
.carousel-controls button {
  width: 36px;
  height: 30px;
  border: 0;
  border-bottom: 1px solid rgba(255,255,255,.55);
  padding: 0;
  background: transparent;
  color: rgba(255,255,255,.65);
  cursor: pointer;
  font: 500 11px/1 var(--sans);
}
.carousel-controls button.is-active { border-color: #fff; color: #fff; }

.work-section, .archive-section { padding: clamp(110px,13vw,220px) 3.2vw 0; }
.section-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  padding-bottom: 30px;
  border-bottom: 1px solid var(--line);
}
.section-index, .page-intro > p, .page-intro > span, .about-kicker, .detail-label {
  margin: 0 0 13px;
  color: var(--muted);
  font: 500 11px/1.2 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.section-heading h1, .page-intro h1 {
  margin: 0;
  font-size: clamp(3.7rem,7vw,8rem);
  font-weight: 400;
  line-height: .9;
  letter-spacing: -.045em;
}
.section-link { margin-bottom: 6px; font-size: 1.1rem; }
.work-grid {
  display: grid;
  grid-template-columns: repeat(12,minmax(0,1fr));
  gap: clamp(48px,6vw,96px) 22px;
  padding-top: 34px;
}
.work-card { grid-column: span 4; }
.work-image { margin: 0; overflow: hidden; background: var(--image-bg); }
.work-image img {
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform 700ms cubic-bezier(.2,.7,.2,1);
}
.crop-portrait .work-image img { aspect-ratio: 3 / 4; }
.crop-square .work-image img { aspect-ratio: 1; }
.work-card:hover .work-image img { transform: scale(1.018); }
.work-meta {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-top: 12px;
  padding-top: 11px;
  border-top: 1px solid var(--ink);
}
.work-meta h2, .work-meta p { margin: 0; font-size: clamp(.92rem,1vw,1.12rem); font-weight: 400; }
.work-meta p {
  color: var(--muted);
  font-family: var(--sans);
  font-size: 10px;
  line-height: 1.5;
  letter-spacing: .06em;
  text-align: right;
  text-transform: uppercase;
}

.page-intro {
  min-height: 43vh;
  padding: clamp(90px,11vw,170px) 3.2vw 44px;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  border-bottom: 1px solid var(--line);
}
.page-intro > p { grid-column: 1 / -1; align-self: start; }
.page-intro > span { margin-bottom: 4px; text-align: right; }
.archive-section { padding-top: 40px; }

.about-page {
  min-height: calc(100vh - 106px);
  padding: clamp(100px,12vw,190px) 3.2vw 110px;
}
.about-page h1 {
  max-width: 1180px;
  margin: 0;
  font-size: clamp(2.7rem,5.7vw,6.8rem);
  font-weight: 400;
  line-height: 1.02;
  letter-spacing: -.04em;
}
.about-cn {
  max-width: 670px;
  margin: 48px 0 0 auto;
  font-size: clamp(1.2rem,1.65vw,1.8rem);
  line-height: 1.7;
}
.about-details {
  width: min(680px,100%);
  margin: clamp(90px,12vw,180px) 0 0 auto;
  padding-top: 18px;
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 24px;
  border-top: 1px solid var(--ink);
  font-size: 1.2rem;
  line-height: 1.6;
}
.about-details p { margin: 0; }

.site-footer {
  min-height: 130px;
  margin: clamp(120px,15vw,240px) 3.2vw 0;
  padding: 22px 0 40px;
  display: flex;
  justify-content: space-between;
  border-top: 1px solid var(--ink);
  font-size: 1rem;
}
.site-footer p { margin: 0; }
.site-footer div { display: flex; gap: 28px; }

@media (max-width: 820px) {
  .site-header { min-height: 124px; flex-direction: column; gap: 24px; padding: 22px 20px 20px; }
  .site-logo { font-size: 3.1rem; }
  .site-nav { width: 100%; justify-content: space-between; gap: 16px; padding: 0; font-size: 1rem; }
  .home-hero, .work-section, .archive-section, .page-intro, .about-page { padding-left: 20px; padding-right: 20px; }
  .carousel-images { height: 62vh; min-height: 430px; }
  .carousel-caption { min-height: 72px; font-size: .95rem; }
  .carousel-controls { right: 10px; bottom: 86px; }
  .work-section { padding-top: 110px; }
  .section-heading h1, .page-intro h1 { font-size: clamp(3.25rem,16vw,5.3rem); }
  .work-grid { display: block; padding-top: 24px; }
  .work-card { display: block; margin: 0 0 64px; }
  .page-intro { min-height: 36vh; padding-top: 90px; }
  .about-page { padding-top: 90px; }
  .about-cn { margin-top: 34px; }
  .about-details { grid-template-columns: 1fr; gap: 36px; }
  .site-footer { margin-left: 20px; margin-right: 20px; }
}

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

/* V2 — centered editorial layout */
:root {
  --page-edge: clamp(22px, 4.35vw, 66px);
  --serif: "Iowan Old Style", Baskerville, "Times New Roman", "Songti SC", "Noto Serif CJK SC", STSong, serif;
}

body {
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

.site-header {
  width: 100%;
  min-height: 188px;
  padding: 30px var(--page-edge) 32px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 30px;
}

.site-logo {
  margin-left: .12em;
  font-size: clamp(3.3rem, 4.7vw, 4.6rem);
  line-height: .92;
  letter-spacing: .12em;
}

.site-nav {
  align-items: center;
  justify-content: center;
  gap: clamp(34px, 6.8vw, 106px);
  padding-top: 0;
  font-size: clamp(.7rem, .86vw, .88rem);
  letter-spacing: .32em;
  line-height: 1;
  text-transform: uppercase;
}

.site-nav a::after,
.site-footer a::after {
  bottom: -7px;
  transition: right 260ms ease;
}

.home-hero {
  width: 100%;
  padding: 0;
}

.carousel-images {
  height: min(68vh, 760px);
  min-height: 500px;
}

.carousel-arrow {
  position: absolute;
  z-index: 3;
  top: 50%;
  width: 52px;
  height: 52px;
  border: 0;
  padding: 0;
  display: grid;
  place-items: center;
  transform: translateY(-50%);
  background: transparent;
  color: #fff;
  cursor: pointer;
  font: 300 2rem/1 var(--serif);
  text-shadow: 0 1px 10px rgba(0, 0, 0, .18);
  transition: transform 220ms ease;
}

.carousel-arrow--previous { left: 24px; }
.carousel-arrow--next { right: 24px; }
.carousel-arrow--previous:hover { transform: translate(-5px, -50%); }
.carousel-arrow--next:hover { transform: translate(5px, -50%); }

.carousel-controls {
  right: auto;
  bottom: 24px;
  left: 50%;
  gap: 12px;
  transform: translateX(-50%);
}

.carousel-controls button {
  width: 11px;
  height: 11px;
  border: 1px solid rgba(255, 255, 255, .95);
  border-radius: 50%;
  background: transparent;
  transition: background-color 200ms ease;
}

.carousel-controls button.is-active {
  border-color: #fff;
  background: #fff;
}

.work-section,
.archive-section {
  padding-right: var(--page-edge);
  padding-left: var(--page-edge);
}

.work-section {
  padding-top: clamp(52px, 5.4vw, 82px);
}

.work-section + .work-section {
  padding-top: clamp(62px, 6.5vw, 100px);
}

.section-heading {
  min-height: 50px;
  align-items: center;
  gap: 24px;
  padding-bottom: 0;
  border-bottom: 0;
}

.section-heading h2 {
  margin: 0;
  font-size: clamp(1.05rem, 1.5vw, 1.45rem);
  font-weight: 400;
  letter-spacing: .36em;
  line-height: 1.2;
  text-transform: uppercase;
}

.section-arrow {
  display: inline-block;
  font-size: clamp(1.55rem, 2vw, 2rem);
  font-weight: 300;
  line-height: 1;
  transition: transform 240ms ease;
}

.section-heading:hover .section-arrow {
  transform: translateX(7px);
}

.work-grid {
  gap: clamp(44px, 5vw, 82px) 22px;
  padding-top: 22px;
}

.work-grid--preview {
  gap: 22px;
}

.work-grid--preview.work-grid--photography {
  grid-template-columns: minmax(0, 1.62fr) minmax(0, 1fr);
}

.work-grid--preview.work-grid--photography .work-card,
.work-grid--preview.work-grid--design .work-card {
  grid-column: auto;
}

.work-grid--preview.work-grid--photography .work-image img {
  height: clamp(300px, 34vw, 525px);
  aspect-ratio: auto;
}

.work-grid--preview.work-grid--design {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.work-grid--preview.work-grid--design .work-image img {
  aspect-ratio: 4 / 5;
}

.page-intro {
  min-height: 40vh;
  padding-right: var(--page-edge);
  padding-left: var(--page-edge);
}

.page-intro > p,
.page-intro > span,
.about-kicker,
.detail-label {
  letter-spacing: .2em;
}

.page-intro h1 {
  letter-spacing: .06em;
}

.about-page {
  min-height: calc(100vh - 188px);
  padding-right: var(--page-edge);
  padding-left: var(--page-edge);
}

.about-page h1 {
  letter-spacing: .01em;
}

.site-footer {
  margin-right: var(--page-edge);
  margin-left: var(--page-edge);
}

@media (max-width: 820px) {
  :root { --page-edge: 18px; }

  .site-header {
    min-height: 154px;
    padding: 26px var(--page-edge) 28px;
    gap: 27px;
  }

  .site-logo { font-size: 2.85rem; }

  .site-nav {
    width: 100%;
    justify-content: center;
    gap: clamp(16px, 6vw, 38px);
    padding: 0;
    font-size: .64rem;
    letter-spacing: .2em;
  }

  .home-hero { padding: 0; }

  .carousel-images {
    height: 58vh;
    min-height: 380px;
  }

  .carousel-arrow {
    width: 44px;
    height: 44px;
    font-size: 1.55rem;
  }

  .carousel-arrow--previous { left: 6px; }
  .carousel-arrow--next { right: 6px; }

  .carousel-controls {
    right: auto;
    bottom: 18px;
    gap: 10px;
  }

  .carousel-controls button {
    width: 9px;
    height: 9px;
  }

  .work-section,
  .work-section + .work-section {
    padding-top: 46px;
  }

  .section-heading { min-height: 44px; }

  .section-heading h2 {
    font-size: .9rem;
    letter-spacing: .28em;
  }

  .section-arrow { font-size: 1.45rem; }

  .work-grid,
  .work-grid--preview.work-grid--photography,
  .work-grid--preview.work-grid--design {
    display: grid;
    grid-template-columns: 1fr;
    gap: 18px;
    padding-top: 16px;
  }

  .work-card,
  .work-grid--preview.work-grid--photography .work-card,
  .work-grid--preview.work-grid--design .work-card {
    grid-column: auto;
    margin: 0;
  }

  .work-grid--preview.work-grid--photography .work-image img {
    height: auto;
    aspect-ratio: 4 / 3;
  }

  .work-grid--preview.work-grid--design {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .work-grid:not(.work-grid--preview) {
    gap: 58px;
  }

  .page-intro h1 { letter-spacing: .02em; }
  .about-page { min-height: calc(100vh - 154px); }
}

@media (max-width: 460px) {
  .site-nav {
    gap: 15px;
    font-size: .58rem;
    letter-spacing: .12em;
  }

  .carousel-images {
    height: 52vh;
    min-height: 340px;
  }

  .work-grid--preview.work-grid--design {
    grid-template-columns: 1fr;
  }
}
