/* Project walkthrough pages. Builds on style.css tokens. */
.proj { max-width: var(--max); margin-inline: auto; padding: clamp(1.5rem, 4vw, 3rem) var(--gutter) clamp(4rem, 8vw, 7rem); }
.back { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; color: var(--bone-dim); text-decoration: none; font: 500 .9375rem/1 var(--f-body); padding: .6rem 0; transition: color .2s; }
.back:hover { color: var(--bone); }
.proj-head { margin-top: clamp(1rem, 3vw, 2rem); }
.proj-head h1 { font: 900 clamp(3rem, 9vw, 8.5rem)/.88 var(--f-stencil); overflow-wrap: anywhere; text-transform: uppercase; margin: .9rem 0 1.5rem; letter-spacing: .005em; }
.proj-lede { max-width: 46ch; font-size: clamp(1.1875rem, 2vw, 1.5rem); line-height: 1.5; color: var(--bone); margin-bottom: 2rem; }
.proj-media { margin-block: clamp(2rem, 5vw, 3.5rem); }
.proj-media .browser-view { max-height: 80vh; }
.proj-shot { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: var(--panel); }
.proj-shot img { width: 100%; height: auto; }
.proj-body { display: grid; grid-template-columns: minmax(14rem, 19rem) minmax(0, 1fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.glance { position: sticky; top: 6rem; border: 1px solid var(--line); border-radius: 12px; padding: 1.25rem 1.4rem; background: var(--panel); }
.glance h2 { font: 800 1.25rem/1 var(--f-display); text-transform: uppercase; letter-spacing: .04em; margin-bottom: .75rem; color: var(--bone-dim); }
.glance dl { margin: 0; }
.glance div { padding: .75rem 0; border-top: 1px solid var(--line); }
.glance div:first-of-type { border-top: 0; padding-top: 0; }
.glance dt { font: 400 .8125rem/1.3 var(--f-mono); color: var(--bone-dim); margin-bottom: .2rem; }
.glance dd { margin: 0; font-size: .9375rem; line-height: 1.45; }
.prose > section { padding-inline: 0; }
.prose > section + section { margin-top: clamp(2.5rem, 5vw, 4rem); }
.prose h2 { font: 800 clamp(2rem, 3.6vw, 2.9rem)/1 var(--f-display); text-transform: uppercase; letter-spacing: .01em; margin-bottom: 1.1rem; }
.prose p { max-width: 64ch; color: var(--bone); }
.prose p + p { margin-top: 1rem; }
.prose p.dim, .prose .dim { color: var(--bone-dim); }
.prose strong { font-weight: 600; }
.prose a { color: var(--signal); text-underline-offset: 3px; }
.prose ul { margin: 1rem 0 0; padding-left: 1.2rem; max-width: 64ch; }
.prose li + li { margin-top: .6rem; }
.prose li::marker { color: var(--signal); }
.steps { list-style: none; counter-reset: step; margin: 1.25rem 0 0; padding: 0; max-width: 70ch; }
.steps li { counter-increment: step; display: grid; grid-template-columns: 3.25rem minmax(0, 1fr); gap: 1rem; padding: 1.15rem 0; border-top: 1px solid var(--line); }
.steps li:last-child { border-bottom: 1px solid var(--line); }
.steps li::before { content: counter(step); font: 900 2.75rem/.9 var(--f-stencil); color: var(--signal); }
.steps b { display: block; font-weight: 600; margin-bottom: .2rem; }
.steps span { color: var(--bone-dim); }
.proj-next { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: clamp(3rem, 7vw, 6rem); padding-top: 2rem; border-top: 1px solid var(--line); }
.proj-next a { text-decoration: none; padding: 1.1rem 0; display: block; }
.proj-next small { display: block; font: 400 .8125rem/1 var(--f-mono); color: var(--bone-dim); margin-bottom: .5rem; }
.proj-next b { font: 800 clamp(1.75rem, 3vw, 2.5rem)/1 var(--f-display); text-transform: uppercase; transition: color .2s; }
.proj-next a:hover b { color: var(--signal); }
.proj-next .next { text-align: right; }
.playbox { position: relative; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: #000; aspect-ratio: 9 / 7; }
.playbox picture { display: block; position: absolute; inset: 0; }
.playbox img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(.45); }
.playbox iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #000; }
.playbox .go { position: absolute; left: clamp(1rem, 3vw, 2rem); bottom: clamp(1rem, 3vw, 2rem); }
.playbox .go .btn { background: var(--g, var(--signal)); color: var(--ink); }
.playbox .go .btn:hover { background: var(--bone); }
@media (max-width: 900px) {
  .proj-body { grid-template-columns: 1fr; }
  .glance { position: static; }
}
@media (max-width: 720px) {
  .playbox { aspect-ratio: auto; height: min(78vh, 40rem); height: min(78dvh, 40rem); }
  .playbox img { filter: brightness(.7); object-position: 50% 0; }
  .proj-next { grid-template-columns: 1fr; }
  .proj-next .next { text-align: left; }
  .steps li { grid-template-columns: 2.5rem minmax(0, 1fr); }
  .steps li::before { font-size: 2.25rem; }
}

.proj-head h1.long { font-size: clamp(2.1rem, 8.4vw, 7rem); }
@media (max-width: 720px) {
  .proj { padding-top: 1rem; }
  .proj-lede { font-size: 1.1875rem; }
  .proj-media .browser-view { max-height: none; }
  .prose h2 { font-size: 2.1rem; }
  .glance { padding: 1rem 1.1rem; }
  .proj-next b { font-size: 1.75rem; }
}