/* Layout and utility helpers */
.container { width: min(var(--container-max), calc(100% - 48px)); margin-inline: auto; }
.container-wide { width: min(var(--container-wide), calc(100% - 48px)); margin-inline: auto; }
.stack > * + * { margin-top: 18px; }
.stack-sm > * + * { margin-top: 10px; }
.stack-lg > * + * { margin-top: 30px; }
.grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(28px, 5vw, 58px); align-items: center; }
.grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.split-line { border-top: 1px solid var(--color-line); }
.muted { color: var(--color-muted); }
.text-soft { color: var(--color-text-soft); }
.text-primary { color: var(--color-primary-dark); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.visually-separated > * + * { border-top: 1px solid var(--color-line); }
.reveal-on-scroll, .scroll-reveal { opacity: 0; transform: translateY(18px); transition: opacity 600ms var(--ease), transform 600ms var(--ease); }
.reveal-on-scroll.reveal-active, .scroll-reveal.revealed { opacity: 1; transform: translateY(0); }
.line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 760px) { .container, .container-wide { width: min(100% - 32px, var(--container-max)); } .grid-2, .grid-3 { grid-template-columns: 1fr; } }
