/*
 * TODEY OS — Native detail-page layout
 *
 * Theme-owned replacement for the stylesheets the old page builder generated
 * into uploads/elementor/css (the front-end sheet, the site kit and one sheet
 * per post). Detail pages (cards, companies, QR payments, agent cards) render
 * their body through the theme's native engine with the same wrapper classes
 * the builder used (.elementor / .e-con / .elementor-widget), so this file
 * restores exactly the layout those generated sheets produced:
 *   1. the container rules the builder's front-end sheet applied,
 *   2. the site-kit values (20px widget spacing, 1500px container cap),
 *   3. the per-post values, which were identical for every post of a type
 *      and are expressed here by post type and container position.
 * Loaded only where the native body renders, at the position the generated
 * sheets used (before the theme base sheet), so every later theme/plugin
 * rule still wins exactly as it did before.
 */

/* ---------------------------------------------------------------------------
 * 1. Document wrapper
 * ------------------------------------------------------------------------- */
.elementor *,
.elementor :after,
.elementor :before {
	box-sizing: border-box;
}

.elementor a {
	box-shadow: none;
	text-decoration: none;
}

.elementor img {
	border: none;
	border-radius: 0;
	box-shadow: none;
	height: auto;
	max-width: 100%;
}

/* Builder defaults for media, rules and figures placed inside a body
   (no current body contains them; kept so future content renders as before). */
.elementor hr {
	background-color: transparent;
	margin: 0;
}

.elementor .elementor-widget:not(.elementor-widget-text-editor):not(.elementor-widget-theme-post-content) figure {
	margin: 0;
}

.elementor embed,
.elementor iframe,
.elementor object,
.elementor video {
	border: none;
	line-height: 1;
	margin: 0;
	max-width: 100%;
	width: 100%;
}

/* ---------------------------------------------------------------------------
 * 2. Elements (containers and widgets) and kit widget spacing
 * ------------------------------------------------------------------------- */
.elementor-element {
	--flex-direction: initial;
	--flex-wrap: initial;
	--justify-content: initial;
	--align-items: initial;
	--align-content: initial;
	--gap: initial;
	--flex-basis: initial;
	--flex-grow: initial;
	--flex-shrink: initial;
	--order: initial;
	--align-self: initial;
	--widgets-spacing: 20px 20px;
	--widgets-spacing-row: 20px;
	--widgets-spacing-column: 20px;
	align-self: var(--align-self);
	flex-basis: var(--flex-basis);
	flex-grow: var(--flex-grow);
	flex-shrink: var(--flex-shrink);
	order: var(--order);
}

.elementor-element:where(.e-con-full, .elementor-widget) {
	align-content: var(--align-content);
	align-items: var(--align-items);
	flex-direction: var(--flex-direction);
	flex-wrap: var(--flex-wrap);
	gap: var(--row-gap) var(--column-gap);
	justify-content: var(--justify-content);
}

/* ---------------------------------------------------------------------------
 * 3. Containers
 * ------------------------------------------------------------------------- */
.e-con {
	--border-radius: 0;
	--border-top-width: 0px;
	--border-right-width: 0px;
	--border-bottom-width: 0px;
	--border-left-width: 0px;
	--border-style: initial;
	--border-color: initial;
	--container-widget-width: 100%;
	--container-widget-height: initial;
	--container-widget-flex-grow: 0;
	--container-widget-align-self: initial;
	--container-max-width: 1500px;
	--content-width: min(100%, var(--container-max-width, 1140px));
	--width: 100%;
	--min-height: initial;
	--height: auto;
	--text-align: initial;
	--margin-top: 0px;
	--margin-right: 0px;
	--margin-bottom: 0px;
	--margin-left: 0px;
	--padding-top: var(--container-default-padding-top, 10px);
	--padding-right: var(--container-default-padding-right, 10px);
	--padding-bottom: var(--container-default-padding-bottom, 10px);
	--padding-left: var(--container-default-padding-left, 10px);
	--position: relative;
	--z-index: revert;
	--overflow: visible;
	--gap: var(--widgets-spacing, 20px);
	--row-gap: var(--widgets-spacing-row, 20px);
	--column-gap: var(--widgets-spacing-column, 20px);
	--flex-wrap-mobile: wrap;
	--margin-block-start: var(--margin-top);
	--margin-block-end: var(--margin-bottom);
	--margin-inline-start: var(--margin-left);
	--margin-inline-end: var(--margin-right);
	--padding-inline-start: var(--padding-left);
	--padding-inline-end: var(--padding-right);
	--padding-block-start: var(--padding-top);
	--padding-block-end: var(--padding-bottom);
	border-radius: var(--border-radius);
	height: var(--height);
	min-height: var(--min-height);
	min-width: 0;
	overflow: var(--overflow);
	position: var(--position);
	width: var(--width);
	z-index: var(--z-index);
	margin-block-end: var(--margin-block-end);
	margin-block-start: var(--margin-block-start);
	margin-inline-end: var(--margin-inline-end);
	margin-inline-start: var(--margin-inline-start);
	padding-inline-end: var(--padding-inline-end);
	padding-inline-start: var(--padding-inline-start);
}

.e-con:where(:not(.e-div-block-base)) {
	transition: background var(--background-transition, .3s), border var(--border-transition, .3s), box-shadow var(--border-transition, .3s), transform var(--e-con-transform-transition-duration, .4s);
}

.e-con-full,
.e-con > .e-con-inner {
	padding-block-end: var(--padding-block-end);
	padding-block-start: var(--padding-block-start);
	text-align: var(--text-align);
}

.e-con,
.e-con > .e-con-inner {
	display: var(--display);
}

.e-con.e-flex {
	--flex-direction: column;
	--flex-basis: auto;
	--flex-grow: 0;
	--flex-shrink: 1;
	flex: var(--flex-grow) var(--flex-shrink) var(--flex-basis);
}

.e-con-full.e-flex,
.e-con.e-flex > .e-con-inner {
	flex-direction: var(--flex-direction);
}

/* Top-level containers are centred and capped at their width. */
[data-elementor-id] > .e-con {
	--margin-left: auto;
	--margin-right: auto;
	max-width: min(100%, var(--width));
}

@media (max-width: 1024px) {
	.e-con {
		--container-max-width: 1024px;
	}
}

@media (max-width: 767px) {
	.e-con {
		--container-max-width: 767px;
	}

	.e-con.e-flex {
		--width: 100%;
		--flex-wrap: var(--flex-wrap-mobile);
	}
}

/* ---------------------------------------------------------------------------
 * 4. Widgets
 * ------------------------------------------------------------------------- */
.elementor-widget {
	position: relative;
}

.e-con .elementor-widget {
	min-width: 0;
}

.elementor-element:where(:not(.e-con)):where(:not(.e-div-block-base)):not(:has(.elementor-widget-container)) {
	transition: background .3s, border .3s, border-radius .3s, box-shadow .3s, transform var(--e-transform-transition-duration, .4s);
}

.e-con .elementor-widget.elementor-widget {
	margin-block-end: 0;
}

.elementor.elementor .e-con > .elementor-widget {
	max-width: 100%;
}

/* ---------------------------------------------------------------------------
 * 5. Per-type values (identical on every post of a type)
 *    Body = banner container (1st) + data container (2nd); agent cards have
 *    only the 1st. Container positions ignore any section block inserted
 *    between them (":nth-child(n of .e-con)").
 * ------------------------------------------------------------------------- */

/* 5a. Every detail body: flex containers; top-level ones 1300px wide from 768px up. */
:where(.single-portfolio, .single-todey_infra, .single-todey_qr, .single-agentic) [data-elementor-id] .e-con {
	--display: flex;
}

@media (min-width: 768px) {
	:where(.single-portfolio, .single-todey_infra, .single-todey_qr, .single-agentic) [data-elementor-id] > .e-con {
		--width: 1300px;
	}
}

/* 5b. Column containers: banner container of every type, data container of QR payments. */
:where(.single-portfolio, .single-todey_infra, .single-todey_qr, .single-agentic) [data-elementor-id] > .e-con:nth-child(1 of .e-con),
:where(.single-todey_qr) [data-elementor-id] > .e-con:nth-child(2 of .e-con) {
	--flex-direction: column;
	--container-widget-width: 100%;
	--container-widget-height: initial;
	--container-widget-flex-grow: 0;
	--container-widget-align-self: initial;
	--flex-wrap-mobile: wrap;
}

/* 5c. Banner container top spacing (cards, companies, QR payments). */
:where(.single-portfolio, .single-todey_infra, .single-todey_qr) [data-elementor-id] > .e-con:nth-child(1 of .e-con) {
	--padding-top: 2vw;
	--padding-bottom: 0vw;
	--padding-left: 0vw;
	--padding-right: 0vw;
}

@media (max-width: 1366px) {
	:where(.single-portfolio, .single-todey_infra, .single-todey_qr) [data-elementor-id] > .e-con:nth-child(1 of .e-con) {
		--padding-top: 0vw;
		--padding-bottom: 0vw;
		--padding-left: 0vw;
		--padding-right: 0vw;
	}
}

@media (max-width: 1024px) {
	:where(.single-portfolio, .single-todey_infra, .single-todey_qr) [data-elementor-id] > .e-con:nth-child(1 of .e-con) {
		--padding-top: 10px;
		--padding-bottom: 0px;
		--padding-left: 0px;
		--padding-right: 0px;
	}
}

@media (max-width: 880px) {
	:where(.single-portfolio, .single-todey_infra, .single-todey_qr) [data-elementor-id] > .e-con:nth-child(1 of .e-con) {
		--padding-top: 0px;
		--padding-bottom: 0px;
		--padding-left: 0px;
		--padding-right: 0px;
	}
}

/* 5d. Cards: tier-comparison container is a centred row, no padding. */
:where(.single-portfolio) [data-elementor-id] > .e-con:nth-child(2 of .e-con) {
	--flex-direction: row;
	--container-widget-width: calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );
	--container-widget-height: 100%;
	--container-widget-flex-grow: 1;
	--container-widget-align-self: stretch;
	--flex-wrap-mobile: wrap;
	--justify-content: space-between;
	--align-items: center;
	--padding-top: 0vw;
	--padding-bottom: 0vw;
	--padding-left: 0vw;
	--padding-right: 0vw;
}

:where(.single-portfolio [data-elementor-id] > .e-con:nth-child(2 of .e-con)) > .elementor-element.elementor-widget.elementor-widget-shortcode {
	width: 100%;
	max-width: 100%;
	margin: 0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;
	padding: 0px 0px 0px 0px;
}

/* 5e. Companies: profile container has no padding. */
:where(.single-todey_infra) [data-elementor-id] > .e-con:nth-child(2 of .e-con) {
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-right: 0px;
}

:where(.single-todey_infra [data-elementor-id] > .e-con:nth-child(2 of .e-con)) > .elementor-element.elementor-widget.elementor-widget-shortcode {
	margin: 0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;
	padding: 0px 0px 0px 0px;
}

/* 5f. Phones: every detail container drops its padding. */
@media (max-width: 767px) {
	:where(.single-portfolio, .single-todey_infra, .single-todey_qr, .single-agentic) [data-elementor-id] > .e-con {
		--padding-top: 0px;
		--padding-bottom: 0px;
		--padding-left: 0px;
		--padding-right: 0px;
	}

	:where(.single-portfolio [data-elementor-id] > .e-con:nth-child(2 of .e-con)) > .elementor-element.elementor-widget.elementor-widget-shortcode {
		margin: -40px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;
		padding: 0px 0px 0px 0px;
	}

	:where(.single-todey_infra [data-elementor-id] > .e-con:nth-child(2 of .e-con)) > .elementor-element.elementor-widget.elementor-widget-shortcode {
		padding: 0px 0px 0px 0px;
	}
}
