/* ============================================================
   Connie Liu — Portfolio 2026 · Homepage
   Faithful static reproduction of Figma frame 962:402 (1200 × 3659)
   ============================================================ */

:root {
  --bg:            #faf6ee;
  --ink:           #1a1814;
  --ink-strong:    #15171a;
  --blue:          #3d5afe;
  --blue-strong:   #1256d8;
  --green:         #33a04a; /* hero intro accents */
  --muted:         #6b665a;
  --label:         #8a8474;
  --body:          #4a463c;
  --hairline:      #e2e4e5;
  --hairline-cream:#d8d2c2;
  --band:          #ede7d8;
}

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

html, body { background: var(--bg); }

body {
  font-family: 'Archivo', sans-serif;
  font-variation-settings: 'wdth' 100;
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  display: flex;
  justify-content: center;
}

.stage {
  position: relative;
  width: 1200px;
  height: 3130px;
  background: var(--bg);
  /* visible so the full-bleed Catalog band can escape the 1200px column */
  overflow: visible;
}
/* the 100vw band includes the scrollbar gutter; clip that sliver on
   viewports wide enough to show the full 1200px content */
@media (min-width: 1200px) {
  html, body { overflow-x: clip; }
}

/* ---------- Top navigation ---------- */
.nav {
  position: absolute;
  left: 50%;
  transform: translateX(calc(-50% + 25px));
  top: 48px;
  display: flex;
  gap: 20px;
  align-items: flex-start;
  font-size: 13px;
  line-height: 16px;
}
.nav a { text-decoration: none; color: var(--muted); }
.nav .is-active {
  color: var(--blue);
  font-weight: 700;
  border-bottom: 1px solid var(--blue-strong);
  padding-bottom: 2px;
}

/* ---------- Hero name ---------- */
.hero-name {
  position: absolute;
  left: 91px;
  top: 140px;
  width: 440px;
  height: 148px;
  display: flex;
  align-items: center;
  font-family: 'Instrument Serif', serif;
  font-weight: 400;
  font-size: 108px;
  letter-spacing: -1.68px;
  color: var(--ink);
  white-space: nowrap;
}
.hero-name .dot { color: var(--blue); }

/* ---------- Intro paragraph ---------- */
.intro {
  position: absolute;
  left: 584px;
  top: 173px;
  width: 496px;
  font-size: 22px;
  line-height: 27px;
  color: var(--ink);
  white-space: nowrap;
}
.intro .dot42 { font-family: '42dot Sans', sans-serif; }
.intro em {
  font-family: 'Instrument Serif', serif;
  font-style: italic;
  font-weight: 400;
  font-size: 26px;
  letter-spacing: 0.78px;
}
.intro em.green { color: var(--green); }

/* ---------- Spec table (blue labels) ---------- */
.spec {
  position: absolute;
  left: 80px;
  top: 333px;
  width: 1040px;
  border-top: 1px solid var(--ink-strong);
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}
.spec .cell {
  padding: 20px 25px 24px 24px;
  border-right: 1px solid var(--hairline);
}
.spec .cell:first-child { padding-left: 0; }
.spec .cell:last-child  { padding-right: 0; border-right: none; }
.spec .label {
  font-family: 'IBM Plex Mono', monospace;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 1.2px;
  color: var(--blue);
}
.spec .value {
  margin-top: 8px;
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 500;
  font-size: 14px;
  color: var(--ink-strong);
}
.spec .value.w-focus { max-width: 208px; }

/* ---------- Selected work index ---------- */
.work {
  position: absolute;
  left: 0;
  top: 506px;
  width: 1200px;
  padding-left: 80px;
  padding-right: 48px;
}
.work-head {
  padding-bottom: 17px;
  border-bottom: 1px solid var(--hairline-cream);
  font-family: 'IBM Plex Mono', monospace;
  font-size: 12px;
  letter-spacing: 1.92px;
  line-height: 18px;
  color: var(--label);
  white-space: nowrap;
}
.work-row {
  display: flex;
  gap: 24px;
  align-items: center;
  padding: 48px 0;
  border-bottom: 1px solid var(--hairline-cream);
  text-decoration: none;
  color: inherit;
}
.work-row .copy { flex: 1; min-width: 0; }
.work-row:last-child { border-bottom: none; }
.work-row:hover .title { color: var(--blue); }
.work-row .title {
  font-family: 'Instrument Serif', serif;
  font-weight: 400;
  font-size: 34px;
  line-height: 37.4px;
  color: var(--ink);
  white-space: nowrap;
}
.work-row .subtitle {
  margin-top: 16px;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 12px;
  letter-spacing: 1.92px;
  line-height: 18px;
  color: var(--label);
  white-space: nowrap;
}
.work-row .desc {
  margin-top: 16px;
  font-size: 14px;
  line-height: 22.4px;
  color: var(--body);
}
.work-row .shot {
  position: relative;
  flex-shrink: 0;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 12px 28px rgba(26, 24, 20, 0.16);
}
.work-row .shot img {
  position: absolute;
  transition: transform .5s cubic-bezier(.2,.6,.2,1);
}
.work-row:hover .shot img { transform: scale(1.05); }
.shot-nutriwatch { width: 620px; height: 362px; }
.shot-nutriwatch img { left: 4.185px; top: -8.672px; width: 610.137px; height: 479.087px; }
.shot-grant { width: 620px; height: 389.4px; }
.shot-grant img { left: -19.06px; top: -4px; width: 644.156px; height: 482.499px; }
.shot-nsf { width: 601px; height: 360.6px; }
.shot-nsf img { left: -21.64px; top: -129.21px; width: 634.794px; height: 505.932px; }

/* ============================================================
   The Catalog — carousel band (Figma 1042:1108 region)
   ============================================================ */
.cat-band {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: 1996px;
  /* background bleeds across the full viewport; content stays at 1200 */
  width: max(100vw, 1200px);
  height: 637px;
  background: var(--band);
}
.cat-band .inner {
  position: relative;
  width: 1200px;
  height: 637px;
  margin: 0 auto;
}
.cat-band .head {
  position: absolute;
  left: 79px;
  top: 72px;
  width: 773px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.cat-band .head h2 {
  font-family: 'Instrument Serif', serif;
  font-weight: 400;
  font-size: 64px;
  line-height: 48px;
  color: var(--ink);
}
.cat-band .head p {
  font-size: 14px;
  line-height: 22.4px;
  color: var(--body);
}

/* rail */
.pw-rail {
  position: absolute;
  left: 0;
  top: 217px;
  width: 1200px;
  display: flex;
  gap: 24px;
  overflow-x: auto;
  scroll-behavior: smooth;
  padding: 0 56px 6px;
  cursor: grab;
  scrollbar-width: none;
}
.pw-rail::-webkit-scrollbar { display: none; }
.pw-rail.is-dragging { cursor: grabbing; scroll-behavior: auto; }

.pw-card {
  position: relative;
  flex: 0 0 300px;
  height: 225px;
  border-radius: 30px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  background: linear-gradient(152deg, #e8e3d6 0%, #d6cdb8 72%);
  box-shadow: 0 5px 12px rgba(26, 24, 20, 0.22);
  transition: transform .4s cubic-bezier(.2,.6,.2,1);
}
.pw-card:hover { transform: scale(1.05); }
.pw-card img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top;
  -webkit-user-drag: none;
  user-select: none;
  pointer-events: none;
}
.pw-card .cap {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 60.75px;
  border-radius: 0 0 30px 30px;
  background: linear-gradient(to right, rgba(26,24,20,0.88), rgba(0,0,0,0));
  padding: 6px 0 0 18px;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.pw-card .cap.light {
  background: linear-gradient(to right, #ffffff, rgba(153,153,153,0.4));
}
.pw-card .cap .t {
  font-weight: 600;
  font-size: 14px;
  line-height: 28.5px;
  letter-spacing: -0.19px;
  color: #fff;
  white-space: nowrap;
}
.pw-card .cap .g {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.6px;
  line-height: 15px;
  color: #e7e2d4;
  white-space: nowrap;
}
.pw-card .cap.light .t { color: var(--ink); }
.pw-card .cap.light .g { color: var(--ink); }

/* arrows */
.pw-nav {
  position: absolute;
  top: 296px;
  width: 42px;
  height: 42px;
  border-radius: 21px;
  background: var(--band);
  border: 1px solid var(--ink);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Archivo', sans-serif;
  font-size: 17px;
  line-height: 25.5px;
  color: var(--ink);
  cursor: pointer;
  z-index: 2;
  transition: background .2s, color .2s, opacity .2s;
}
.pw-nav:hover { background: var(--ink); color: var(--band); }
.pw-nav[disabled] { opacity: .25; pointer-events: none; }
.pw-nav.prev { left: 35px; }
.pw-nav.next { left: 1125px; }

/* CTA */
.pw-cta {
  position: absolute;
  left: 79px;
  top: 521px;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 8px 12px;
  border-radius: 999px;
  background: #17150f;
  text-decoration: none;
}
.pw-cta .tx {
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 700;
  font-size: 12px;
  line-height: 24px;
  color: #f3f1ea;
  white-space: nowrap;
}
.pw-cta .arrow {
  font-family: 'Source Sans 3', sans-serif;
  font-size: 14px;
  color: #fff;
}

/* ---------- Capabilities ---------- */
.caps {
  position: absolute;
  left: 99px;
  top: 2709px;
  width: 1001px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  column-gap: 24px;
}
.cap .cap-label {
  font-family: 'IBM Plex Mono', monospace;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 1.92px;
  line-height: 18px;
  color: var(--blue);
}
.cap .cap-body {
  margin-top: 13.32px;
  font-size: 14.5px;
  line-height: 24.65px;
  color: var(--body);
}

/* ---------- Footer (compact, centered 1086) ---------- */
.footer {
  position: absolute;
  left: calc(50% - 1px);
  transform: translateX(-50%);
  top: 2933px;
  width: 1086px;
  height: 149px;
  border-top: 1px solid var(--ink);
}
.footer .talk {
  position: absolute;
  top: 59px;
  left: 52px;
  font-family: 'Instrument Serif', serif;
  font-size: 32px;
  line-height: normal;
  color: var(--ink);
  white-space: nowrap;
}
.footer .talk .dash { font-style: italic; }
.footer .talk a {
  color: var(--blue);
  text-decoration: none;
  border-bottom: 1px solid var(--blue);
  padding-bottom: 1px;
}
.footer .links {
  position: absolute;
  top: 78px;
  left: 851px;
  display: flex;
  gap: 24px;
}
.footer .links a {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-size: 13px;
  color: var(--muted);
  text-decoration: none;
}
.footer .links .arrow {
  font-family: 'Source Sans 3', sans-serif;
  font-size: 8px;
}
