/* /work index + /work/:id detail template
   Tokens only — no parallel palette. Per-app identity arrives as
   --app-accent / --app-accent-soft / --app-accent-deep on the row or section. */

/* ============================================================
   /work — index
   ============================================================ */

.work-index {
  width: 100%;
  padding: calc(var(--nav-height) + 72px) var(--space-3) var(--section-pad-sm);
  background: var(--bg-white);
  color: var(--ink-900);
}

.work-index-inner {
  max-width: 1280px;
  margin: 0 auto;
}

.work-index-header {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(300px, 0.55fr);
  gap: clamp(32px, 8vw, 120px);
  align-items: end;
  margin-bottom: clamp(48px, 7vw, 96px);
}

.work-index-heading { max-width: 13ch; }

.work-index-lede {
  max-width: 42ch;
  font-family: var(--font-text);
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink-600);
}

.work-rows { border-top: 1px solid var(--border-strong); }

.work-row {
  position: relative;
  display: grid;
  grid-template-columns: 48px minmax(160px, 0.7fr) minmax(260px, 1.25fr) minmax(180px, 0.8fr) 60px 38px;
  align-items: center;
  gap: clamp(16px, 2.4vw, 40px);
  min-height: 146px;
  padding: 24px 4px;
  border-bottom: 1px solid var(--border-strong);
  color: inherit;
  text-decoration: none;
  isolation: isolate;
}

.work-row::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--app-accent-soft, var(--copper-50));
  transform: scaleY(0);
  transform-origin: bottom;
  transition: transform 380ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.work-row:hover::before,
.work-row:focus-visible::before { transform: scaleY(1); }

.work-row:focus-visible {
  outline: 2px solid var(--app-accent-deep, var(--copper-700));
  outline-offset: -2px;
}

.work-row-index {
  align-self: start;
  padding-top: 4px;
  font-family: var(--font-geist-mono);
  font-size: 10px;
  letter-spacing: 0.12em;
  color: var(--app-accent-deep, var(--copper-700));
}

.work-row-title { display: grid; gap: 5px; }

.work-row-category {
  font-family: var(--font-text);
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-500);
}

.work-row-title strong {
  font-family: var(--font-display);
  font-size: clamp(21px, 2.3vw, 28px);
  font-weight: 560;
  letter-spacing: -0.035em;
  color: var(--ink-900);
}

.work-row-statement {
  font-family: var(--font-accent);
  font-size: clamp(17px, 1.7vw, 21px);
  line-height: 1.35;
  letter-spacing: -0.015em;
  color: var(--ink-700);
}

.work-row-proof {
  font-family: var(--font-geist-mono);
  font-size: 11px;
  line-height: 1.7;
  letter-spacing: 0.01em;
  color: var(--ink-500);
}

.work-row-media {
  display: block;
  width: 56px;
  height: 56px;
  overflow: hidden;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  transition: transform var(--transition-default);
}
.work-row-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.work-row:hover .work-row-media { transform: scale(1.06); }

.work-row-arrow {
  justify-self: end;
  font-size: 17px;
  color: var(--ink-400);
  transition: transform var(--transition-default), color var(--transition-default);
}
.work-row:hover .work-row-arrow,
.work-row:focus-visible .work-row-arrow {
  transform: translate(3px, 3px);
  color: var(--app-accent-deep, var(--copper-700));
}

.work-index-footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding-top: 26px;
  font-family: var(--font-text);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-500);
}

@media (max-width: 1000px) {
  .work-index-header { grid-template-columns: 1fr; gap: 24px; align-items: start; }
  .work-row {
    grid-template-columns: 36px minmax(0, 1fr) 28px;
    grid-template-areas:
      "idx title arrow"
      ".   stmt  ."
      ".   proof .";
    row-gap: 12px;
    min-height: 0;
    padding: 26px 4px;
  }
  .work-row-index { grid-area: idx; }
  .work-row-title { grid-area: title; }
  .work-row-statement { grid-area: stmt; }
  .work-row-proof { grid-area: proof; }
  .work-row-arrow { grid-area: arrow; align-self: start; }
  .work-row-media { display: none; }
}

@media (max-width: 600px) {
  .work-index { padding-top: calc(var(--nav-height) + 44px); padding-bottom: var(--section-pad-xs); }
}

/* ============================================================
   /work/:id — detail
   ============================================================ */

.work-detail {
  width: 100%;
  background: var(--bg-white);
  color: var(--ink-900);
}

.work-detail-head {
  max-width: var(--content-max);
  margin: 0 auto;
  padding: calc(var(--nav-height) + 56px) var(--space-3) 40px;
}

.work-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  font-family: var(--font-text);
  font-size: 12px;
  font-weight: 650;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-500);
  text-decoration: none;
  transition: color var(--transition-default);
}
.work-back:hover { color: var(--app-accent-deep, var(--copper-700)); }

.work-detail-identity {
  display: flex;
  align-items: center;
  gap: clamp(14px, 2vw, 24px);
  margin-top: 8px;
}

.work-detail-icon {
  flex: 0 0 auto;
  width: clamp(52px, 6vw, 68px);
  height: clamp(52px, 6vw, 68px);
  overflow: hidden;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
}
.work-detail-icon img { width: 100%; height: 100%; object-fit: cover; display: block; }

.work-detail-naming { min-width: 0; display: grid; gap: 2px; }

.work-detail-chapter {
  font-family: var(--font-geist-mono);
  font-size: 10px;
  letter-spacing: 0.12em;
  color: var(--app-accent-deep, var(--copper-700));
}

.work-detail-name {
  font-family: var(--font-display);
  font-size: clamp(34px, 5vw, 58px);
  font-weight: 560;
  line-height: 1;
  letter-spacing: -0.045em;
  color: var(--ink-900);
}

.work-detail-discipline {
  font-family: var(--font-text);
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-500);
}

.work-detail-status { flex: 0 0 auto; margin-left: auto; align-self: flex-start; }

.work-detail-statement {
  max-width: 34ch;
  margin-top: clamp(20px, 3vw, 30px);
  font-family: var(--font-accent);
  font-size: clamp(21px, 2.6vw, 32px);
  line-height: 1.24;
  letter-spacing: -0.02em;
  color: var(--ink-700);
}

.work-detail-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 20px;
  margin-top: 28px;
}

.work-detail-cta { text-decoration: none; }

.work-detail-proof {
  font-family: var(--font-geist-mono);
  font-size: 11px;
  letter-spacing: 0.01em;
  color: var(--ink-500);
}

/* --- de-duplication inside the reused engines ---------------------------
   The identity block above is the page's single statement of chapter, name,
   discipline and status. Suppress the copies that renderAppTabs and
   renderProductShowcase print for the old long-scroll landing page. */
.work-detail .app-tabs-identity { display: none; }
.work-detail .app-tabs-bar { justify-content: center; }
.work-detail .showcase-headline { display: none; }
.work-detail .showcase-status { display: none; }
.work-detail .showcase-meta { margin-bottom: 4px; }

/* Tab panels start hidden, so the scroll-reveal observer never fires for the
   Tour/Demo panels. On this page the content is simply visible. */
.work-detail .section-content { opacity: 1; transform: none; transition: none; }

/* The engines were built for a long-scroll page and open with 128px of air.
   Under a sticky tab bar that reads as a gap, not rhythm. */
.work-detail .app-tabs-panel > .section {
  padding-top: var(--section-pad-sm);
  padding-bottom: var(--section-pad-sm);
}
.work-detail .app-tabs-panel > .ui-tour-section { padding-top: 40px; }

/* The tab bar is the only sticky chrome here. */
.work-detail .app-tabs { border-top: 1px solid var(--border-soft); }

@media (max-width: 720px) {
  .work-detail-head { padding-top: calc(var(--nav-height) + 32px); padding-bottom: 28px; }
  .work-detail-identity { flex-wrap: wrap; }
  .work-detail-status { margin-left: 0; width: auto; }
  .work-detail-statement { max-width: none; }
}

/* ============================================================
   /work/:id — unknown id
   ============================================================ */

.work-detail--missing { min-height: 60vh; display: grid; place-items: center; }

.work-missing-inner {
  max-width: 560px;
  margin: 0 auto;
  padding: calc(var(--nav-height) + 64px) var(--space-3) var(--section-pad-xs);
  text-align: center;
}

.work-missing-inner .eyebrow { justify-content: center; }

.work-missing-body { margin-top: 18px; color: var(--ink-600); }

.work-missing-body code {
  font-family: var(--font-geist-mono);
  font-size: 0.92em;
  padding: 2px 7px;
  border-radius: var(--radius-sm);
  background: var(--bg-cream);
  color: var(--ink-800);
}

.work-missing-cta { margin-top: 28px; text-decoration: none; }
