/*
 * Exact CSS port of the approved design system's components (_ds_bundle.js:
 * Button, IconButton, Card, ServiceCard, PillTabs, TextInput,
 * ColorBlockSection, PromoBanner). The original renders these as inline
 * styles from React; this reproduces the identical computed styles as
 * classes so PHP templates can reuse them exactly instead of re-deriving
 * approximate CSS.
 */

/* Section (shared.jsx's Section wrapper) */
.adnxt-section {
	max-width: var(--container-max);
	margin: 0 auto;
	padding: var(--space-section) var(--space-xl) 0;
}

/* Eyebrow (shared.jsx's Eyebrow) -- occasionally rendered as a heading
   tag (see adsnxt_eyebrow()'s $heading_tag param); margin-top/font-weight
   explicitly neutralize the global h1-h4 reset (base.css) so it renders
   identically whether it's a <div> or a heading. */
.adnxt-eyebrow {
	font-family: var(--font-mono);
	font-size: var(--eyebrow-size);
	font-weight: inherit;
	letter-spacing: var(--eyebrow-ls);
	text-transform: uppercase;
	color: var(--ink);
	opacity: 0.6;
	margin: 0 0 16px;
}

/* Button */
.adnxt-btn {
	font-family: var(--font-sans);
	font-size: var(--button-size);
	line-height: var(--button-lh);
	letter-spacing: var(--button-ls);
	font-weight: var(--button-w);
	border: none;
	cursor: pointer;
	border-radius: var(--radius-pill);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	transition: transform var(--btn-transition, 0.12s) ease;
	text-decoration: none;
}

.adnxt-btn:active {
	transform: scale(0.97);
}

.adnxt-btn.is-primary {
	background: var(--ink);
	color: var(--on-primary);
	padding: var(--btn-primary-padding, 10px 20px);
}

.adnxt-btn.is-secondary {
	background: var(--canvas);
	color: var(--ink);
	padding: var(--btn-secondary-padding, 8px 18px 10px);
}

.adnxt-btn.is-tertiary-text {
	background: transparent;
	color: var(--ink);
	padding: var(--btn-tertiary-padding, 8px 12px);
	font-weight: var(--link-w);
}

.adnxt-btn.is-promo {
	background: var(--accent-impact);
	color: var(--on-primary);
	padding: var(--btn-promo-padding, 10px 18px);
}

/* IconButton */
.adnxt-icon-btn {
	width: 40px;
	height: 40px;
	border-radius: var(--radius-full);
	border: none;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--surface-soft);
	color: var(--ink);
	transition: transform 0.12s ease;
}

.adnxt-icon-btn:active {
	transform: scale(0.94);
}

.adnxt-icon-btn.is-inverse {
	background: var(--on-inverse-soft);
	color: var(--inverse-ink);
}

/* Card */
.adnxt-card {
	background: var(--canvas);
	border: 1px solid var(--hairline);
	border-radius: var(--radius-lg);
	padding: 24px;
	font-family: var(--font-sans);
	color: var(--ink);
}

/* ServiceCard */
.adnxt-service-card {
	background: var(--surface-soft);
	border-radius: var(--radius-md);
	padding: var(--space-lg);
	font-family: var(--font-sans);
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.adnxt-service-card__icon {
	color: var(--ink);
}

.adnxt-service-card__eyebrow {
	font-family: var(--font-mono);
	font-size: var(--caption-size);
	letter-spacing: var(--caption-ls);
	text-transform: uppercase;
	color: var(--ink);
	opacity: 0.6;
}

.adnxt-service-card__title {
	margin: 0;
	font-size: var(--card-title-size);
	font-weight: var(--card-title-w);
	line-height: var(--card-title-lh);
	letter-spacing: normal;
	color: var(--ink);
}

.adnxt-service-card__desc {
	font-size: var(--body-sm-size);
	font-weight: var(--body-sm-w);
	line-height: var(--body-sm-lh);
	color: var(--ink);
}

/* PillTabs -- verbatim port of the design system's PillTabs component
   (_ds_bundle.js: components/forms/PillTabs.jsx). No width/wrap/overflow
   rules belong on this component itself -- the original has none. Where
   the original needs mobile overflow handling (Portfolio/Pricing), it
   wraps PillTabs in a separate .pilltabs-compact div (verbatim in the
   approved static site.css too) that forces display:flex + max-width:100%
   + overflow-x:auto at <=480px; because PillTabs becomes a flex ITEM of
   that wrapper, it and its own button children shrink via the browser's
   default flex-shrink:1 / min-width:auto, wrapping button labels at word
   boundaries only as far as needed before the row starts scrolling --
   no custom min-width or flex value required to reproduce that. */
.adnxt-pilltabs {
	display: inline-flex;
	gap: 4px;
	background: var(--surface-soft);
	padding: 4px;
	border-radius: var(--radius-pill);
	font-family: var(--font-sans);
}

.adnxt-pilltabs button {
	border: none;
	cursor: pointer;
	padding: 8px 20px;
	border-radius: var(--radius-pill);
	font-size: var(--button-size);
	font-weight: var(--button-w);
	letter-spacing: var(--button-ls);
	background: transparent;
	color: var(--ink);
	transition: background 0.15s ease;
	font-family: var(--font-sans);
}

.adnxt-pilltabs button.is-selected {
	background: var(--ink);
	color: var(--on-primary);
}

/* TextInput */
.adnxt-text-input {
	display: flex;
	flex-direction: column;
	gap: 6px;
	font-family: var(--font-sans);
	min-width: 0;
}

.adnxt-text-input span {
	font-size: var(--body-lg-size);
	font-weight: var(--body-lg-w);
	color: var(--ink);
}

.adnxt-text-input input,
.adnxt-text-input textarea,
.adnxt-text-input select {
	font-family: var(--font-sans);
	font-size: var(--body-size);
	color: var(--ink);
	background: var(--canvas);
	border: 1px solid var(--hairline);
	border-radius: var(--radius-md);
	padding: var(--input-padding, 12px 14px);
	outline: none;
	width: 100%;
	min-width: 0;
	box-sizing: border-box;
}

.adnxt-text-input input:focus,
.adnxt-text-input textarea:focus,
.adnxt-text-input select:focus {
	border-color: var(--ink);
	outline: 2px solid var(--hairline-soft);
	outline-offset: 1px;
}

/* ColorBlockSection */
.adnxt-color-block {
	border-radius: var(--radius-lg);
	padding: var(--space-xxl);
	font-family: var(--font-sans);
	color: var(--ink);
}

.adnxt-color-block.block-lime { background: var(--block-lime); }
.adnxt-color-block.block-lilac { background: var(--block-lilac); }
.adnxt-color-block.block-cream { background: var(--block-cream); }
.adnxt-color-block.block-mint { background: var(--block-mint); }
.adnxt-color-block.block-pink { background: var(--block-pink); }
.adnxt-color-block.block-coral { background: var(--block-coral); }
.adnxt-color-block.block-navy {
	background: var(--block-navy);
	color: var(--inverse-ink);
}

.adnxt-color-block__eyebrow {
	font-family: var(--font-mono);
	font-size: var(--eyebrow-size);
	letter-spacing: var(--eyebrow-ls);
	text-transform: uppercase;
	margin-bottom: 16px;
	opacity: 0.7;
}

.adnxt-color-block__title {
	font-size: var(--headline-size);
	font-weight: var(--headline-w);
	line-height: var(--headline-lh);
	letter-spacing: var(--headline-ls);
	margin: 0 0 16px;
	max-width: 70%;
}

.adnxt-color-block__body {
	font-size: var(--subhead-size);
	font-weight: var(--subhead-w);
	line-height: var(--subhead-lh);
	letter-spacing: var(--subhead-ls);
	max-width: 70%;
}

@media (max-width: 768px) {
	.adnxt-color-block__title,
	.adnxt-color-block__body {
		max-width: 100%;
	}
}

/* PromoBanner */
.adnxt-promo-banner {
	background: var(--block-lilac);
	border-radius: var(--radius-md);
	padding: var(--space-md) var(--space-lg);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	font-family: var(--font-sans);
	flex-wrap: wrap;
}

.adnxt-promo-banner__text {
	font-size: var(--body-sm-size);
	font-weight: var(--body-sm-w);
	color: var(--ink);
}

.adnxt-promo-banner__cta {
	background: var(--accent-impact);
	color: var(--on-primary);
	border: none;
	cursor: pointer;
	border-radius: var(--radius-pill);
	padding: 10px 18px;
	font-size: var(--button-size);
	font-weight: var(--button-w);
	white-space: nowrap;
	text-decoration: none;
	display: inline-flex;
}

.promo-black-btn .adnxt-promo-banner__cta {
	background: var(--ink) !important;
	color: var(--on-primary) !important;
}
