/* Shared functional layout only; visual families are defined in a later phase. */
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; color: #17212b; background: #fff; font: 1rem/1.6 system-ui, sans-serif; }
header, main, footer { max-width: 72rem; margin: 0 auto; padding: 1.5rem; }
header nav, footer nav { display: flex; flex-wrap: wrap; gap: 1rem; }
main > section, main > article { margin-block: 2rem; }
.article-grid, .ebook-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: 1.5rem; }
.article-card, .ebook-card { padding: 1.25rem; border: 1px solid #ccd3d8; }
.ebook-card { display: grid; align-content: start; gap: .8rem; }
.ebook-cover-link { display: block; width: 100%; max-width: 17rem; }
.ebook-cover { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: contain; }
.ebook-cover-large { max-width: 100%; }
.ebook-product-hero { display: grid; grid-template-columns: minmax(9rem, 18rem) minmax(0, 1fr); gap: 2rem; align-items: start; }
.ebook-preview-image { display: block; width: min(100%, 28rem); height: auto; margin-block: 1rem; }
.book-cover-placeholder { aspect-ratio: 2 / 3; display: grid; align-content: center; gap: 1rem; padding: 1rem; background: #ecf0f2; }
@media (max-width: 38rem) { .ebook-product-hero { grid-template-columns: 1fr; } }
