/* Shared card sizing. Loaded after mobile styles so every breakpoint uses the same frames. */
main :is(.range-links,.catalogue-grid,.trade-product-grid,.reading-cards,.pvc-discovery-grid,.guide-grid,.tool-grid,.resource-grid,.consumer-grid,.hub-stages,.hub-note-pair,.price-options){align-items:stretch;min-width:0}
main :is(.range-links,.catalogue-grid,.trade-product-grid,.reading-cards,.pvc-discovery-grid,.guide-grid,.tool-grid,.resource-grid,.consumer-grid,.hub-stages,.hub-note-pair,.price-options)>*{min-width:0;max-width:100%;box-sizing:border-box}
/* Product photographs fill equally sized frames; no image-dependent white margins. */
main .range-links>a,main .catalogue-grid>a.visual-product,main .trade-product-grid>a,main .pvc-photo-card{display:flex;flex-direction:column;height:100%;min-width:0;overflow:hidden}
main .range-links>a>img,main .catalogue-grid>a.visual-product>img,main .trade-product-grid>a>img,main .pvc-photo-card>img,main .pvc-discovery-grid .pvc-photo-card>img{display:block;flex:0 0 auto;width:100%;height:auto;min-height:0;max-height:none;aspect-ratio:8/5;object-fit:cover;object-position:center;padding:0;border-radius:0;background:#edf3f7}
main .range-links>a>img{margin:0 0 22px}
main .range-links>a>span{margin:0 0 16px}
main .range-links>a>h3{min-height:2.5em;margin:0 0 12px;line-height:1.25}
main .range-links>a>p{margin:0}
main .catalogue-grid>a.visual-product>div,main .trade-product-grid>a>div,main .pvc-photo-card>div{display:flex;flex-direction:column;flex:1;padding:26px;min-width:0}
main .catalogue-grid>a.visual-product>div>span:first-child{line-height:1.25;min-height:2.5em}
main .catalogue-grid>a.visual-product>div>p:last-child,main .trade-product-grid>a>div>p:last-child{margin-bottom:0}
main .pvc-photo-card .text-link{align-self:flex-start;margin-top:auto}
main .pvc-photo-card h3,main .trade-product-grid h3{min-height:2.5em;line-height:1.25}
/* Equal card bodies and bottom-aligned actions, allowing text to grow. */
main .reading-cards>.reading-card,main .guide-grid>a,main .resource-grid>article,main .tool-grid>.tool-card{display:flex;flex-direction:column;height:100%}
main .reading-card :is(.reading-card-link,.reading-arrow){align-self:flex-start;margin-top:auto;padding-top:20px}
main .reading-card p{margin-bottom:0}
main .resource-grid>article>a:last-child,main .tool-card>a:last-child{align-self:flex-start;margin-top:auto;padding-top:18px}
main :is(.three,.four,.trade-services,.trade-audiences,.trade-steps){align-items:stretch}
main :is(.three,.four,.trade-services,.trade-audiences,.trade-steps)>article{min-width:0;height:100%}
/* Tablet grids should not squeeze cards into desktop column counts. */
@media(min-width:701px) and (max-width:1100px){main .range-links{grid-template-columns:repeat(3,minmax(0,1fr))}main :is(.catalogue-grid,.trade-product-grid,.guide-grid,.tool-grid,.resource-grid){grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){main :is(.range-links,.catalogue-grid,.trade-product-grid,.reading-cards,.pvc-discovery-grid,.guide-grid,.tool-grid,.resource-grid,.price-options,.hub-stages,.hub-note-pair){grid-template-columns:minmax(0,1fr);gap:24px}main .range-links>a{display:flex;padding-top:20px;gap:0}main .range-links>a>img{aspect-ratio:8/5;margin-bottom:18px}main .range-links>a>h3,main .pvc-photo-card h3,main .trade-product-grid h3,main .catalogue-grid>a.visual-product>div>span:first-child{min-height:0}main .range-links>a>span{margin-bottom:10px}main .catalogue-grid>a.visual-product>div,main .trade-product-grid>a>div,main .pvc-photo-card>div{padding:22px}main .reading-cards>.reading-card{height:auto}main .reading-card :is(.reading-card-link,.reading-arrow){padding-top:18px}}
@media print{main :is(.reading-cards>.reading-card,.pvc-photo-card,.range-links>a){height:auto;break-inside:avoid}}
