.project-gallery{gap:calc(var(--spacing) * 6);margin-block:calc(var(--spacing) * 8) calc(var(--spacing) * 4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.prose-basic .project-gallery figure{min-width:0;margin:0}.project-gallery figure>a{border:1px solid var(--color-line-strong);border-radius:calc(var(--spacing) * 2);background:var(--color-surface);display:block;overflow:hidden}.project-gallery figure>a:hover{border-color:var(--color-accent-500)}.prose-basic .project-gallery figure img{border-radius:0;width:100%;height:auto;margin:0;display:block}.prose-basic .project-gallery-note{font-size:var(--text-small);color:var(--color-muted)}@media (width<=639px){.project-gallery{grid-template-columns:1fr}}.prose-basic .project-sketch{margin:calc(var(--spacing) * 9) 0}.project-sketch-canvas{padding:calc(var(--spacing) * 7);border:1px solid var(--color-line-strong);border-radius:var(--radius-surface);background:var(--color-surface);color:var(--color-ink);overflow:hidden}.project-sketch-eyebrow{font:var(--text-label)/1.4 var(--font-mono);letter-spacing:var(--text-label--letter-spacing);text-transform:uppercase;color:var(--color-accent-text);display:block}.project-sketch-title{margin-top:calc(var(--spacing) * 3);font:600 var(--text-h3)/1.3 var(--font-display);text-wrap:balance;max-width:28ch}.project-sketch-core{align-items:center;gap:calc(var(--spacing) * 4);padding:calc(var(--spacing) * 5);margin-top:calc(var(--spacing) * 6);border-radius:var(--radius-control);color:var(--color-brand-50);background:var(--color-night);display:flex}.prose-basic .project-sketch-core strong{color:var(--color-brand-50);font:600 var(--text-h4)/1.35 var(--font-display);display:block}.project-sketch-core div>span{margin-top:var(--spacing);color:var(--color-brand-200);font-size:var(--text-small);display:block}.project-sketch-symbol{flex:0 0 calc(var(--spacing) * 10);color:var(--color-accent-400)}.project-sketch-symbol svg{stroke:currentColor;stroke-width:1.5px;width:100%}.prose-basic .project-sketch-nodes{gap:calc(var(--spacing) * 3);margin:calc(var(--spacing) * 6) 0 0;grid-template-columns:repeat(3,minmax(0,1fr));padding:0;list-style:none;display:grid}.prose-basic .project-sketch-nodes li{min-width:0;padding:calc(var(--spacing) * 4);border-top:2px solid var(--color-accent-500);background:var(--color-canvas);font-size:var(--text-small);margin:0;line-height:1.5;position:relative}.project-sketch-nodes li>span:last-child{color:var(--color-muted);display:block}.prose-basic .project-sketch-nodes strong{margin-block:calc(var(--spacing) * 2);color:var(--color-ink);display:block}.project-sketch-marker{color:var(--color-accent-text);font:var(--text-label)/1.4 var(--font-mono)}.project-sketch--hub .project-sketch-nodes{margin-top:calc(var(--spacing) * 8)}.project-sketch--hub .project-sketch-nodes li:before{content:"";width:1px;height:calc(var(--spacing) * 8);background:var(--color-line-strong);position:absolute;bottom:calc(100% + 2px);left:50%}.project-sketch--application .project-sketch-nodes{grid-template-columns:repeat(2,minmax(0,1fr))}.project-sketch--application .project-sketch-nodes li:first-child{grid-column:1/-1}.prose-basic .project-sketch--flow .project-sketch-nodes{grid-template-columns:repeat(2,minmax(0,1fr))}.project-sketch--flow .project-sketch-nodes li{padding-left:calc(var(--spacing) * 12)}.project-sketch--flow .project-sketch-marker{left:calc(var(--spacing) * 4);top:calc(var(--spacing) * 6);position:absolute}.project-sketch--flow .project-sketch-nodes li:not(:last-child):after{content:"→";color:var(--color-accent-text);margin-top:calc(var(--spacing) * 2);display:block}.prose-basic .project-sketch figcaption{margin-top:calc(var(--spacing) * 3);font-size:var(--text-label);color:var(--color-muted)}@media (width<=639px){.project-sketch-canvas{padding:calc(var(--spacing) * 5)}.prose-basic .project-sketch .project-sketch-nodes{grid-template-columns:1fr}.project-sketch--hub .project-sketch-nodes li:before{display:none}.project-sketch--hub .project-sketch-nodes{margin-top:calc(var(--spacing) * 4)}.project-sketch--flow .project-sketch-nodes li:not(:last-child):after{content:"↓"}}
