/**
 * Reserve intrinsic space for media before load to reduce CLS.
 */

 #logo {
	height: auto;
	max-width: 100%;
}

/* Divi / content images: honor width/height attrs via aspect-ratio. */
.et_pb_image .et_pb_image_wrap,
.et_pb_image_wrap {
	display: block;
	max-width: 100%;
}

.et_pb_image .et_pb_image_wrap img,
.et_pb_module img.wp-image,
img[width][height] {
	height: auto;
	max-width: 100%;
}

/*
 * Hero / module video boxes: reserve 16:9 before metadata arrives.
 * Do NOT apply aspect-ratio + overflow:hidden to .et_pb_slide_content
 * (that clips overlay text and breaks full-bleed layouts).
 */
.video-container .et_pb_video_box,
.et_pb_video_box,
.et_pb_video .et_pb_video_box,
#home-video .et_pb_video_box,
#header-video .et_pb_video_box {
	aspect-ratio: 16 / 9;
	width: 100%;
	max-width: 100%;
	overflow: hidden;
}

/*
 * Content videos: HTML width/height attrs are CLS ratio hints only.
 * Without width:100% + height:auto, browsers lock to attr pixels
 * (e.g. 1280×720) and leave empty space on wide viewports —
 * see /nodule-processing/, /products/, /videos/.
 */
.et_pb_code video,
.et_pb_code_inner video,
.et_pb_text video,
.et_pb_text_inner video,
.et_pb_video_box video,
.video-container video,
.et_pb_slide video,
#home-video video,
#header-video video,
.et_main_video_container video,
.wp-block-video video,
video#auto-vid {
	width: 100%;
	max-width: 100%;
	height: auto;
	display: block;
	background-color: #0a1628;
}

.et_pb_video_box video,
.video-container video,
.et_pb_slide video,
#home-video video,
#header-video video {
	object-fit: cover;
}

/* Section background videos must fill the section box, not shrink by ratio. */
.et_pb_section_video_bg video {
	width: 100% !important;
	height: 100% !important;
	max-width: none;
	object-fit: cover;
	aspect-ratio: auto;
}

/* News cards / post thumbnails: fixed ratio so lazy load cannot reflow. */
.news article .post-thumbnail,
.page article .post-thumbnail,
.page-template-news-page article .post-thumbnail,
.rest-of-posts article .post-thumbnail,
.featured article .post-thumbnail,
.single article .post-thumbnail {
	aspect-ratio: 3 / 2;
	overflow: hidden;
	width: 100%;
}

.news article .post-thumbnail img,
.page article .post-thumbnail img,
.page-template-news-page article .post-thumbnail img,
.rest-of-posts article .post-thumbnail img,
.featured article .post-thumbnail img,
.single article .post-thumbnail img {
	width: 100% !important;
	height: 100% !important;
	max-height: none !important;
	min-height: 0 !important;
	object-fit: cover;
	display: block;
}



.dsm-entry-thumbnail img,
.dsm-blog-carousel-item .dsm-entry-thumbnail img,
.dsm-blog-carousel-item img.wp-post-image,
.dsm-grid-post-holder-inner .dsm-entry-thumbnail img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* Media logo carousel: reserve height without clipping varied logo ratios.
 * Do NOT force a short aspect-ratio + overflow:hidden — square logos (e.g. NYT)
 * get cut top/bottom when width:100% + height:auto exceeds a 3:1 box. */
.dsm_card_carousel_child_image_wrapper,
figure.dsm_card_carousel_child_image_wrapper {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 72px;
	overflow: visible;
	aspect-ratio: auto;
}



/* Resource / card grid images on homepage. */
.home .et_pb_blurb .et_pb_image_wrap,
.home .et_pb_blurb img,
.et_pb_gallery_image img {
	height: auto;
	max-width: 100%;
}
