/* TeleWorld Signal — base layer */
:root {
	--tw-bg: var(--wp--preset--color--bg);
	--tw-surface: var(--wp--preset--color--surface);
	--tw-card: var(--wp--preset--color--card);
	--tw-text: var(--wp--preset--color--text);
	--tw-muted: var(--wp--preset--color--muted);
	--tw-primary: var(--wp--preset--color--primary);
	--tw-ai: var(--wp--preset--color--ai);
	--tw-border: rgba(255, 255, 255, .08);
	--tw-border-strong: rgba(255, 255, 255, .14);
	--tw-radius: 16px;
	--tw-radius-sm: 10px;
	--tw-ease: cubic-bezier(.2, .8, .2, 1);
	--tw-dur-micro: 200ms;
	--tw-dur-reveal: 400ms;
	--tw-gutter: clamp(1rem, 4vw, 2rem);
	--tw-section-y: clamp(4rem, 9vw, 8rem);
	--tw-cta: var(--wp--preset--gradient--cta);
	color-scheme: dark;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; background: var(--tw-bg); color: var(--tw-text); text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; overflow-x: clip; }
img, svg { max-width: 100%; height: auto; }
:focus-visible { outline: 2px solid var(--tw-primary); outline-offset: 3px; border-radius: 4px; }
::selection { background: rgba(34, 211, 238, .3); color: var(--tw-text); }
.skip-link:focus { background: var(--tw-card); color: var(--tw-text); padding: .75rem 1rem; z-index: 1000; }

/* Layout */
.tw-main { padding: 0 !important; margin: 0; }
.tw-main > .wp-block-post-content > * { margin-block: 0; max-width: none; }
.tw-section { position: relative; padding-block: var(--tw-section-y); padding-inline: var(--tw-gutter); }
.tw-wrap { max-width: var(--wp--style--global--wide-size, 1200px); margin-inline: auto; width: 100%; }
.tw-section + .tw-section { border-top: 1px solid var(--tw-border); }
.tw-head { max-width: 760px; margin-bottom: clamp(2rem, 4vw, 3rem); }
.tw-eyebrow { font-family: var(--wp--preset--font-family--mono); font-weight: 500; font-size: 1rem; letter-spacing: .08em; text-transform: uppercase; color: var(--tw-primary); margin: 0 0 1rem; }
.tw-title { margin: 0 0 1rem; text-wrap: balance; }
.tw-lead { font-size: var(--wp--preset--font-size--lg); color: var(--tw-muted); margin: 0; max-width: 65ch; text-wrap: pretty; }
.tw-tagline { font-family: var(--wp--preset--font-family--heading); font-weight: 600; font-size: var(--wp--preset--font-size--xl); margin: 2.5rem 0 0; background: var(--tw-cta); -webkit-background-clip: text; background-clip: text; color: transparent; }
.tw-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; margin-top: 2rem; }
.tw-actions > * { margin: 0; }

/* Buttons */
.tw-btn { position: relative; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; gap: .5rem; height: 52px; padding-inline: 1.5rem; border-radius: 999px; font-weight: 500; font-size: 1rem; line-height: 1; white-space: nowrap; text-decoration: none; cursor: pointer; border: 1px solid transparent; transition: transform var(--tw-dur-micro) var(--tw-ease), box-shadow var(--tw-dur-micro) var(--tw-ease), background-color var(--tw-dur-micro) var(--tw-ease), border-color var(--tw-dur-micro) var(--tw-ease); touch-action: manipulation; }
.tw-btn::after { content: ""; position: absolute; inset: 0; background: linear-gradient(115deg, transparent 20%, rgba(255, 255, 255, .35) 50%, transparent 80%); transform: translateX(-120%); pointer-events: none; }
.tw-btn--primary { background: var(--tw-cta); color: #07090F; }
.tw-btn--primary:hover { color: #07090F; transform: translateY(-1px); box-shadow: 0 8px 30px -8px rgba(34, 211, 238, .55); }
.tw-btn--ghost { background: rgba(255, 255, 255, .03); color: var(--tw-text); border-color: var(--tw-border-strong); }
.tw-btn--ghost:hover { color: var(--tw-text); border-color: var(--tw-primary); background: rgba(34, 211, 238, .06); }
.tw-btn:active { transform: scale(.98); }
.tw-header .tw-btn { height: 44px; }
.tw-card .tw-btn--ghost { height: 44px; padding-inline: 1rem; margin-top: auto; align-self: flex-start; }
@media (prefers-reduced-motion: no-preference) {
	.tw-btn::after { transition: transform 550ms var(--tw-ease); }
	.tw-btn:hover::after { transform: translateX(120%); }
}

/* Header */
header.wp-block-template-part { position: sticky; top: 0; z-index: 50; }
.admin-bar header.wp-block-template-part { top: 32px; }
@media (max-width: 782px) { .admin-bar header.wp-block-template-part { top: 46px; } }
.tw-header { gap: 1.5rem; padding: .75rem var(--tw-gutter); background: rgba(14, 18, 27, .72); backdrop-filter: saturate(160%) blur(14px); -webkit-backdrop-filter: saturate(160%) blur(14px); border-bottom: 1px solid var(--tw-border); }
.tw-logo { margin: 0; font-family: var(--wp--preset--font-family--heading); font-weight: 600; font-size: 1.15rem; letter-spacing: -.01em; }
.tw-logo a { color: var(--tw-text); text-decoration: none; display: inline-flex; align-items: center; gap: .55rem; }
.tw-logo a::before { content: ""; width: 14px; height: 14px; border-radius: 4px; background: var(--tw-cta); box-shadow: 0 0 18px rgba(34, 211, 238, .6); }
.tw-nav { font-size: 1.05rem; flex: 0 0 auto; }
.wp-block-group.tw-header { justify-content: center; position: relative; }
.tw-header > .tw-btn { position: absolute; right: var(--tw-gutter); top: 50%; translate: 0 -50%; }
.tw-header .tw-nav { margin-inline-start: clamp(1.5rem, 3vw, 2.75rem); }
.tw-nav .wp-block-navigation-item__content { position: relative; color: var(--tw-muted); padding: .5rem .25rem; }
.tw-nav .wp-block-navigation-item__content:hover, .tw-nav .current-menu-item > .wp-block-navigation-item__content, .tw-nav .wp-block-navigation-item__content:focus-visible { color: var(--tw-text); }
:is(.tw-nav, .tw-nav > .wp-block-navigation__container) > .wp-block-navigation-item > .wp-block-navigation-item__content::after {
	content: ""; position: absolute; left: .25rem; right: .25rem; bottom: .1rem; height: 2px; border-radius: 2px;
	background: var(--tw-cta); transform: scaleX(0); transform-origin: center;
}
@media (prefers-reduced-motion: no-preference) {
	:is(.tw-nav, .tw-nav > .wp-block-navigation__container) > .wp-block-navigation-item > .wp-block-navigation-item__content::after { transition: transform 200ms var(--tw-ease); }
}
:is(.tw-nav, .tw-nav > .wp-block-navigation__container) > .wp-block-navigation-item > .wp-block-navigation-item__content:hover::after,
:is(.tw-nav, .tw-nav > .wp-block-navigation__container) > .wp-block-navigation-item > .wp-block-navigation-item__content:focus-visible::after { transform: scaleX(1); }
.tw-nav .wp-block-navigation-submenu__toggle svg { transform: rotate(0deg); }
@media (prefers-reduced-motion: no-preference) {
	.tw-nav .wp-block-navigation-submenu__toggle svg { transition: transform 200ms var(--tw-ease); }
}
.tw-nav .wp-block-navigation-submenu.is-menu-open > .wp-block-navigation-submenu__toggle svg,
.tw-nav .wp-block-navigation-submenu:hover > .wp-block-navigation-submenu__toggle svg,
.tw-nav .wp-block-navigation-submenu:focus-within > .wp-block-navigation-submenu__toggle svg { transform: rotate(180deg); }
.tw-nav .wp-block-navigation__submenu-container {
	background: var(--tw-card) !important; border: 1px solid var(--tw-border-strong) !important; border-radius: 12px;
	padding: .5rem !important; min-width: 240px !important; box-shadow: none;
	opacity: 0; transform: translateY(8px); pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
	.tw-nav .wp-block-navigation__submenu-container { transition: opacity 200ms var(--tw-ease), transform 200ms var(--tw-ease); }
}
.tw-nav .wp-block-navigation-submenu.is-menu-open > .wp-block-navigation__submenu-container,
.tw-nav .wp-block-navigation-submenu:hover > .wp-block-navigation__submenu-container,
.tw-nav .wp-block-navigation-submenu:focus-within > .wp-block-navigation__submenu-container { opacity: 1; transform: none; pointer-events: auto; }
.tw-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	display: block !important; padding: .625rem .75rem; border-radius: 10px; color: var(--tw-text);
}
@media (prefers-reduced-motion: no-preference) {
	.tw-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content { transition: background-color 200ms var(--tw-ease), transform 200ms var(--tw-ease), color 200ms var(--tw-ease); }
}
.tw-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.tw-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus-visible { background: rgba(255, 255, 255, .04); color: var(--tw-text); transform: translateX(3px); }
.tw-nav .wp-block-navigation-item__label { display: block; font-size: 1.0625rem; font-weight: 600; white-space: nowrap; }
.tw-nav .wp-block-navigation-item__description {
	display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;
	font-size: .8125rem; line-height: 1.4; color: var(--tw-muted); margin-top: .2rem;
}
@media (min-width: 1024px) {
	/* Two independent column flows via CSS multicol, not a shared grid or float pair: a 2D
	   grid sizes both columns' row tracks off the taller item in each row (e.g. the 2-line
	   "Marketplace" description stretching the row next to "Voice Agents"), and a float pair
	   can't start the second column at the top either (a later float may never sit higher than
	   an earlier one in source order, so the first Capabilities item gets pinned to wherever
	   the Platform column had already reached). Multicol has neither problem: forcing a column
	   break right after the 4th item gives two normal, independently-flowing block columns that
	   both start at the container's top, so consecutive gaps within a column are just its own
	   items' margins. column-rule draws the divider for free, full height, no extra element. */
	.tw-nav .tw-mega > .wp-block-navigation__submenu-container {
		display: block !important; columns: 2; column-gap: 24px; column-rule: 1px solid var(--tw-border);
		width: 620px !important; padding: 12px !important; max-height: min(70vh, 560px); overflow-y: auto;
	}
	.tw-nav .tw-mega > .wp-block-navigation__submenu-container > .wp-block-navigation-item {
		break-inside: avoid; margin-bottom: 2px;
	}
	.tw-nav .tw-mega > .wp-block-navigation__submenu-container > .wp-block-navigation-item:nth-child(4) { break-after: column; }
	.tw-nav .tw-mega .tw-mega__start > .wp-block-navigation-item__content { position: relative; }
	.tw-nav .tw-mega .tw-mega__start > .wp-block-navigation-item__content::before {
		content: "Platform"; display: block; margin: 0 0 8px; font-family: var(--wp--preset--font-family--mono);
		font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--tw-muted);
	}
	.tw-nav .tw-mega .tw-mega__start--capabilities > .wp-block-navigation-item__content::before { content: "Capabilities"; }
}
@media (max-width: 599px) { .tw-header > .tw-btn { display: none; } }
.wp-block-navigation__responsive-container.is-menu-open { padding: 1.5rem var(--tw-gutter); }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { font-size: 1.1rem; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container { opacity: 1; transform: none; pointer-events: auto; position: static; }

/* Header scrolled state: paint-only (no padding/height/margin change, so the sticky header
   never reflows the page while scrolling; only background + shadow transition). */
header.wp-block-template-part.is-scrolled .tw-header { background: rgba(14, 18, 27, .92); box-shadow: 0 8px 24px -16px rgba(0, 0, 0, .6); }
@media (prefers-reduced-motion: no-preference) {
	.tw-header { transition: background-color var(--tw-dur-micro) var(--tw-ease), box-shadow var(--tw-dur-micro) var(--tw-ease); }
}

/* Footer */
.tw-footer { background: var(--tw-surface); border-top: 1px solid var(--tw-border); padding: clamp(3rem, 6vw, 5rem) var(--tw-gutter) 2rem; }
.tw-footer__grid { display: grid; gap: 2.5rem; grid-template-columns: 1fr; }
@media (min-width: 768px) { .tw-footer__grid { grid-template-columns: 1.3fr repeat(4, 1fr); column-gap: 2rem; } .tw-footer__grid > * { min-width: 0; } }
@media (min-width: 1200px) { .tw-footer__grid { grid-template-columns: minmax(260px, 1.3fr) repeat(4, minmax(140px, 1fr)); } }
.tw-footer__h { font-family: var(--wp--preset--font-family--mono); font-size: .75rem !important; letter-spacing: .08em; text-transform: uppercase; color: var(--tw-muted); margin: 0 0 1rem; }
.tw-footer__links { list-style: none; padding: 0; margin: 0; display: grid; gap: .6rem; }
.tw-footer__links a, .tw-details a { color: var(--tw-text); text-decoration: none; }
@media (min-width: 1200px) { .tw-footer__links a { white-space: nowrap; } }
.tw-footer__links a:hover, .tw-details a:hover { color: var(--tw-primary); }
.tw-footer__brand .tw-lead { font-size: 1rem; margin: 1rem 0 1.5rem; }
.tw-footer__bottom { margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--tw-border); display: flex; flex-direction: column; align-items: flex-start; gap: 1.5rem; }
.tw-footer__bottom-left { display: grid; gap: 1rem; }
.tw-footer__bottom-right { text-align: right; }
@media (max-width: 767px) { .tw-footer__bottom-right { text-align: left; } }
.tw-details { list-style: none; padding: 0; margin: 0; display: grid; gap: .9rem; }
.tw-footer .tw-details { display: flex; flex-wrap: wrap; gap: .75rem 2rem; font-size: .95rem; }
.tw-details__item { display: flex; align-items: center; gap: .6rem; color: var(--tw-muted); }
.tw-details__item::before { content: ""; width: 18px; height: 18px; flex: none; background: var(--tw-primary); -webkit-mask: var(--tw-ic) center / contain no-repeat; mask: var(--tw-ic) center / contain no-repeat; }
.tw-footer__socials { margin-top: 1.25rem; }
.tw-socials { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .6rem; }
.tw-socials svg { fill: currentColor; }
.tw-social { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--tw-border-strong); background: rgba(255, 255, 255, .03); color: var(--tw-text) !important; text-decoration: none; transition: background-color var(--tw-dur-micro) var(--tw-ease), border-color var(--tw-dur-micro) var(--tw-ease), transform var(--tw-dur-micro) var(--tw-ease); }
.tw-social:hover, .tw-social:focus-visible { border-color: var(--tw-primary); background: rgba(34, 211, 238, .1); transform: translateY(-1px); }
.tw-footer__legal { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .75rem 1.5rem; width: 100%; }
.tw-legal-links { color: var(--tw-muted); font-size: .875rem; margin: 0; }
.tw-legal-links a { color: var(--tw-muted); text-decoration: none; }
.tw-legal-links a:hover { color: var(--tw-primary); }
.tw-copyright { color: var(--tw-muted); font-size: .875rem; margin: 0; }
.tw-copyright a { color: var(--tw-muted); text-decoration: none; }
.tw-copyright a:hover { color: var(--tw-primary); }

/* Forms */
.tw-form { display: grid; gap: 1.25rem; background: var(--tw-card); border: 1px solid var(--tw-border); border-radius: var(--tw-radius); padding: clamp(1.25rem, 3vw, 2rem); }
.tw-form__grid { display: grid; gap: 1.25rem; grid-template-columns: 1fr; }
@media (min-width: 600px) { .tw-form__grid { grid-template-columns: 1fr 1fr; } }
.tw-form__field { display: grid; gap: .4rem; }
.tw-form label { font-weight: 500; font-size: .95rem; }
.tw-form__req { color: var(--tw-primary); }
.tw-form input, .tw-form select, .tw-form textarea { width: 100%; min-height: 48px; padding: .75rem .9rem; font: inherit; font-size: 1rem; color: var(--tw-text); background: var(--tw-bg); border: 1px solid var(--tw-border-strong); border-radius: var(--tw-radius-sm); transition: border-color var(--tw-dur-micro) var(--tw-ease), box-shadow var(--tw-dur-micro) var(--tw-ease); }
.tw-form input:focus, .tw-form select:focus, .tw-form textarea:focus { outline: none; border-color: var(--tw-primary); box-shadow: 0 0 0 3px rgba(34, 211, 238, .25); }
.tw-form [aria-invalid="true"] { border-color: var(--wp--preset--color--danger); }
.tw-form__error { color: var(--wp--preset--color--danger); font-size: .9rem; margin: 0; display: flex; gap: .4rem; }
.tw-form__error::before { content: "⚠"; }
.tw-form__notice { padding: .9rem 1rem; border-radius: var(--tw-radius-sm); font-weight: 500; }
.tw-form__notice.is-success { background: rgba(52, 211, 153, .1); color: var(--wp--preset--color--success); border: 1px solid rgba(52, 211, 153, .35); }
.tw-form__notice.is-success::before { content: "✓ "; }
.tw-form__notice.is-error { background: rgba(248, 113, 113, .1); color: var(--wp--preset--color--danger); border: 1px solid rgba(248, 113, 113, .35); }
.tw-form__hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.tw-form button { justify-self: start; }

/* Blog / article */
.tw-blog__title, .tw-blog .wp-block-query-title { margin: 0 0 2.5rem; }
.tw-article { padding: var(--tw-section-y) var(--tw-gutter); }
.tw-article__head { margin-bottom: 2.5rem; }
.tw-article__date { color: var(--tw-muted); font-size: .9rem; }
.tw-card--post .wp-block-post-title a { color: var(--tw-text); text-decoration: none; }
.tw-card--post .wp-block-post-title a:hover { color: var(--tw-primary); }
.wp-block-query-pagination { margin-top: 3rem; gap: 1rem; }

/* ===== Components ===== */

/* Hero */
.tw-hero { overflow: hidden; isolation: isolate; padding-block: clamp(4rem, 10vw, 9rem) clamp(3.5rem, 8vw, 7rem); }
.tw-hero::before { content: ""; position: absolute; inset: -20% -10% auto; height: 120%; z-index: -1; pointer-events: none;
	background:
		radial-gradient(40% 50% at 20% 30%, rgba(34, 211, 238, .18), transparent 70%),
		radial-gradient(35% 45% at 80% 20%, rgba(139, 92, 246, .22), transparent 70%),
		radial-gradient(30% 40% at 60% 80%, rgba(34, 211, 238, .08), transparent 70%); filter: blur(10px); }
.tw-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: .35;
	background-image: linear-gradient(var(--tw-border) 1px, transparent 1px), linear-gradient(90deg, var(--tw-border) 1px, transparent 1px);
	background-size: 56px 56px; -webkit-mask-image: radial-gradient(70% 60% at 50% 40%, #000, transparent); mask-image: radial-gradient(70% 60% at 50% 40%, #000, transparent); }
.tw-hero > .tw-wrap { display: grid; gap: clamp(2.5rem, 5vw, 4rem); align-items: center; }
@media (min-width: 1024px) { .tw-hero--home > .tw-wrap { grid-template-columns: 1.1fr .9fr; } }
.tw-hero__copy .tw-title { font-size: var(--wp--preset--font-size--3-xl); line-height: 1.05; }
.tw-hero--page .tw-hero__copy { max-width: 880px; margin-inline: auto; text-align: center; }
.tw-hero--page .tw-hero__copy .tw-eyebrow { margin-inline: auto; }
.tw-hero--page .tw-hero__copy .tw-lead { max-width: 62ch; margin-inline: auto; }
.tw-hero--page .tw-hero__copy .tw-actions { justify-content: center; }
.tw-hero--home .tw-hero__copy .tw-title { background: linear-gradient(180deg, #fff 30%, #b6c2d6); -webkit-background-clip: text; background-clip: text; color: transparent; }
.tw-hero--home .tw-hero__copy, .tw-hero--home .tw-hero__visual { align-self: center; }
.tw-hero__visual { position: relative; }
.tw-hero__visual::before { content: ""; position: absolute; inset: 10%; background: radial-gradient(closest-side, rgba(139, 92, 246, .35), transparent); filter: blur(30px); z-index: -1; }

/* Org chart SVG */
.tw-orgchart { width: 100%; height: auto; overflow: visible; }
.tw-orgchart__link { stroke-width: 1.5; fill: none; opacity: .7; stroke-dasharray: 4 6; }
.tw-orgchart__core { fill: #0E121B; stroke-width: 2; }
.tw-orgchart__label { fill: var(--tw-text); font: 600 14px var(--wp--preset--font-family--heading); }
.tw-orgchart__node rect { fill: #131826; stroke: rgba(255, 255, 255, .14); }
.tw-orgchart__node text { fill: var(--tw-text); font: 500 13px var(--wp--preset--font-family--body); }
.tw-orgchart__agent { fill: var(--tw-primary); }
.tw-orgchart__node:nth-of-type(even) .tw-orgchart__agent { fill: #A78BFA; }

/* Chips + trust strip */
.tw-chips { display: flex; flex-wrap: wrap; gap: .6rem; }
.tw-chip { margin: 0; padding: .55rem 1rem; border-radius: 999px; background: rgba(255, 255, 255, .03); border: 1px solid var(--tw-border-strong); font-size: .95rem; }
.tw-chips--strip { padding-block: 1.5rem; background: var(--tw-surface); }
.tw-chips--strip .tw-chips { justify-content: center; gap: .5rem 2rem; }
.tw-chips--strip .tw-chip { background: none; border: 0; padding: 0; color: var(--tw-muted); font-family: var(--wp--preset--font-family--mono); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; display: flex; align-items: center; gap: .6rem; }
.tw-chips--strip .tw-chip::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--tw-primary); box-shadow: 0 0 10px var(--tw-primary); }

/* Split */
.tw-split > .tw-wrap { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: start; }
@media (min-width: 1024px) {
	.tw-split > .tw-wrap { grid-template-columns: 1fr 1fr; }
	.tw-split--reverse .tw-split__copy { order: 2; }
}
.tw-split__copy p { color: var(--tw-muted); }
.tw-split__media { background: var(--tw-card); border: 1px solid var(--tw-border); border-radius: var(--tw-radius); padding: clamp(1.25rem, 3vw, 2rem); }
.tw-split__list-title { font-size: 1rem !important; font-family: var(--wp--preset--font-family--mono); text-transform: uppercase; letter-spacing: .08em; color: var(--tw-muted); margin: 0 0 1rem; }

/* Lists */
.tw-list { list-style: none; padding: 0; margin: 0; display: grid; gap: .55rem; }
.tw-list li { position: relative; padding-left: 1.6rem; }
.tw-list--check li::before { content: ""; position: absolute; left: 0; top: .35em; width: 1rem; height: 1rem; background: var(--tw-primary); -webkit-mask: url("../icons/check.svg") center / contain no-repeat; mask: url("../icons/check.svg") center / contain no-repeat; }
.tw-split__media .tw-list--check { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
.tw-list--dot { gap: .35rem; font-size: .95rem; color: var(--tw-muted); }
.tw-list--dot li { padding-left: 1rem; }
.tw-list--dot li::before { content: ""; position: absolute; left: 0; top: .7em; width: 5px; height: 5px; border-radius: 50%; background: var(--tw-ai); }

/* Grid + cards */
.tw-grid { display: grid; gap: 1.25rem; grid-template-columns: 1fr; }
@media (min-width: 600px) { .tw-grid--2, .tw-grid--3, .tw-grid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .tw-grid--3 { grid-template-columns: repeat(3, 1fr); } .tw-grid--4 { grid-template-columns: repeat(4, 1fr); } }
.tw-card { position: relative; display: flex; flex-direction: column; gap: .75rem; padding: 1.5rem; background: var(--tw-card); border: 1px solid var(--tw-border); border-radius: var(--tw-radius); overflow: hidden; isolation: isolate; transition: border-color var(--tw-dur-micro) var(--tw-ease), transform var(--tw-dur-micro) var(--tw-ease); }
.tw-card > * { margin: 0; }
.tw-card::before { content: ""; width: 44px; height: 44px; border-radius: 12px; flex: none; background: linear-gradient(135deg, rgba(34, 211, 238, .16), rgba(139, 92, 246, .2)); border: 1px solid var(--tw-border-strong); }
.tw-card:not([class*="tw-ic-"])::before { display: none; }
.tw-card[class*="tw-ic-"]::after { content: ""; position: absolute; top: calc(1.5rem + 11px); left: calc(1.5rem + 11px); width: 22px; height: 22px; background: var(--tw-primary); -webkit-mask: var(--tw-ic) center / contain no-repeat; mask: var(--tw-ic) center / contain no-repeat; }
.tw-card:hover { border-color: rgba(34, 211, 238, .45); transform: translateY(-4px); box-shadow: 0 0 0 1px rgba(34, 211, 238, .25), 0 16px 40px -20px rgba(34, 211, 238, .45); }
.tw-card__title { font-size: var(--wp--preset--font-size--lg) !important; line-height: 1.25; }
.tw-card__text { color: var(--tw-muted); }
.tw-cards--department .tw-card, .tw-cards--role .tw-card { padding: 1.75rem; }
.tw-cards--department .tw-card[class*="tw-ic-"]::after, .tw-cards--role .tw-card[class*="tw-ic-"]::after { top: calc(1.75rem + 11px); left: calc(1.75rem + 11px); }

/* Steps */
.tw-steps { display: grid; gap: 1rem; counter-reset: tw-step; }
.tw-step { position: relative; counter-increment: tw-step; padding: 1.25rem 1.25rem 1.25rem 4.25rem; background: var(--tw-card); border: 1px solid var(--tw-border); border-radius: var(--tw-radius); }
.tw-step > * { margin: 0; }
.tw-step::before { content: counter(tw-step, decimal-leading-zero); position: absolute; left: 1.25rem; top: 1.2rem; font: 500 .8rem var(--wp--preset--font-family--mono); color: var(--tw-primary); width: 2.2rem; height: 2.2rem; display: grid; place-items: center; border-radius: 50%; border: 1px solid rgba(34, 211, 238, .4); background: rgba(34, 211, 238, .06); }
.tw-step__title { font-size: 1.1rem !important; margin-bottom: .25rem !important; }
.tw-step__text { color: var(--tw-muted); font-size: .98rem; }
@media (min-width: 1024px) {
	.tw-steps--workflow .tw-steps, .tw-steps--loop .tw-steps { grid-auto-flow: column; grid-auto-columns: 1fr; gap: 1.5rem; }
	.tw-steps--workflow .tw-step, .tw-steps--loop .tw-step { padding: 4.25rem 1.25rem 1.25rem; }
	.tw-steps--workflow .tw-step::before, .tw-steps--loop .tw-step::before { top: 1.25rem; }
	.tw-steps--workflow .tw-step:not(:last-child)::after, .tw-steps--loop .tw-step:not(:last-child)::after { content: ""; position: absolute; top: calc(1.25rem + 1.1rem); left: calc(1.25rem + 2.2rem + .5rem); right: calc(-1.5rem - 1.25rem + .5rem); height: 1px; background: linear-gradient(90deg, var(--tw-primary), var(--tw-ai)); transform-origin: left center; }
	.tw-steps--numbered .tw-steps { grid-template-columns: repeat(2, 1fr); }
	.tw-steps--timeline .tw-steps { grid-template-columns: repeat(4, 1fr); }
}
.tw-steps--loop .tw-step:last-child::after { content: "↻"; position: absolute; right: 1rem; top: 1.2rem; color: var(--tw-ai); font-size: 1.2rem; }

/* Compare */
.tw-compare__cols { display: grid; gap: 1.25rem; }
@media (min-width: 768px) { .tw-compare__cols { grid-template-columns: 1fr 1fr; } }
.tw-compare__col { padding: clamp(1.5rem, 3vw, 2.25rem); border-radius: var(--tw-radius); border: 1px solid var(--tw-border); background: var(--tw-card); }
.tw-compare__col--ai { background: linear-gradient(160deg, rgba(34, 211, 238, .08), rgba(139, 92, 246, .12)), var(--tw-card); border-color: rgba(139, 92, 246, .35); }
.tw-compare__heading { font-size: var(--wp--preset--font-size--xl) !important; margin: 0 0 1.25rem; }

/* FAQ */
.tw-faq__list { display: grid; gap: .75rem; max-width: 860px; }
.tw-faq .wp-block-details { background: var(--tw-card); border: 1px solid var(--tw-border); border-radius: var(--tw-radius); padding: 0; }
.tw-faq summary { cursor: pointer; list-style: none; padding: 1.15rem 3rem 1.15rem 1.25rem; font-weight: 500; position: relative; min-height: 48px; }
.tw-faq summary::-webkit-details-marker { display: none; }
.tw-faq summary::after { content: "+"; position: absolute; right: 1.25rem; top: 50%; transform: translateY(-50%); color: var(--tw-primary); font-size: 1.4rem; transition: transform var(--tw-dur-micro) var(--tw-ease); }
.tw-faq details[open] summary::after { transform: translateY(-50%) rotate(45deg); }
.tw-faq details > p { margin: 0; padding: 0 1.25rem 1.25rem; color: var(--tw-muted); }

/* CTA band */
.tw-cta__inner { position: relative; overflow: hidden; isolation: isolate; text-align: center; padding: clamp(2.5rem, 6vw, 5rem) clamp(1.25rem, 4vw, 3rem); border-radius: 24px; border: 1px solid rgba(139, 92, 246, .35); background: radial-gradient(60% 80% at 50% 0%, rgba(139, 92, 246, .25), transparent 70%), radial-gradient(50% 60% at 50% 100%, rgba(34, 211, 238, .15), transparent 70%), var(--tw-surface); }
.tw-cta__inner .tw-lead { margin-inline: auto; max-width: 60ch; }
.tw-cta__inner .tw-actions { justify-content: center; }
.tw-cta__line { font-family: var(--wp--preset--font-family--heading); font-weight: 500; font-size: var(--wp--preset--font-size--lg); max-width: 60ch; margin: 1rem auto 0; }

/* Prose */
.tw-prose > .tw-wrap { max-width: 760px; }
.tw-prose p, .tw-prose li { color: #C9D2E0; }
.tw-prose__h { font-size: var(--wp--preset--font-size--xl) !important; margin: 2.5rem 0 1rem; }
.tw-prose .tw-list li::before { content: ""; position: absolute; left: .25rem; top: .7em; width: 6px; height: 6px; border-radius: 50%; background: var(--tw-primary); }

/* Contact */
.tw-contact > .tw-wrap { display: grid; gap: clamp(2rem, 5vw, 4rem); }
@media (min-width: 1024px) { .tw-contact > .tw-wrap { grid-template-columns: .9fr 1.1fr; } }
.tw-contact__info .tw-details { margin-top: 1rem; font-size: 1.05rem; }

/* Proof */
.tw-proof, .tw-stats, .tw-logos { padding: var(--tw-section-y) var(--tw-gutter); border-top: 1px solid var(--tw-border); }
.tw-quotes { display: grid; gap: 1.25rem; }
@media (min-width: 768px) { .tw-quotes { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); } }
.tw-quote { margin: 0; padding: 2rem; background: var(--tw-card); border: 1px solid var(--tw-border); border-radius: var(--tw-radius); }
.tw-quote blockquote { margin: 0 0 1.25rem; font-size: 1.1rem; }
.tw-quote figcaption { display: grid; gap: .15rem; color: var(--tw-muted); }
.tw-quote figcaption strong { color: var(--tw-text); }
.tw-stats__grid { display: grid; gap: 1.5rem; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); text-align: center; }
.tw-stat { display: grid; gap: .35rem; }
.tw-stat__value { font: 600 clamp(2.25rem, 5vw, 3.5rem) / 1 var(--wp--preset--font-family--heading); font-variant-numeric: tabular-nums; background: var(--tw-cta); -webkit-background-clip: text; background-clip: text; color: transparent; }
.tw-stat__label { font-weight: 500; }
.tw-stat__source { color: var(--tw-muted); font-size: .8rem; }
.tw-logos__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 2.5rem; }
.tw-logos__list img { max-height: 40px; width: auto; filter: grayscale(1) brightness(1.6); opacity: .7; }

/* 404 */
.tw-404 { text-align: center; }
.tw-404 .wp-block-search { max-width: 480px; margin: 2rem auto; }

/* ===== Motion (only when html.tw-motion; never under reduced motion) ===== */
.tw-motion :is(.tw-head, .tw-card, .tw-step, .tw-chip, .tw-compare__col, .tw-split__media, .tw-faq .wp-block-details, .tw-cta__inner, .tw-quote, .tw-stat):not(.is-in) {
	opacity: 0; transform: translateY(24px);
}
.tw-motion:not(.tw-js) :is(.tw-head, .tw-card, .tw-step, .tw-chip, .tw-compare__col, .tw-split__media, .tw-faq .wp-block-details, .tw-cta__inner, .tw-quote, .tw-stat):not(.is-in) {
	animation: tw-failsafe 0s linear 3s forwards; /* if JS never runs, show content after 3s */
}
.tw-motion .tw-reveal { transition: opacity var(--tw-dur-reveal) var(--tw-ease), transform var(--tw-dur-reveal) var(--tw-ease); transition-delay: calc(var(--tw-i, 0) * 60ms); }
.tw-motion .tw-reveal.is-in { opacity: 1; transform: none; animation: none; }
@keyframes tw-failsafe { to { opacity: 1; transform: none; } }

/* Eyebrow: a gradient line grows in with the section, or immediately in the hero */
.tw-motion .tw-eyebrow::before { content: ""; display: inline-block; width: 20px; height: 2px; margin-right: .5rem; vertical-align: middle; background: var(--tw-cta); transform: scaleX(0); transform-origin: left; transition: transform 500ms var(--tw-ease) 80ms; }
.tw-motion .tw-head.is-in .tw-eyebrow::before, .tw-motion .tw-hero__copy .tw-eyebrow::before { transform: scaleX(1); }

/* Hero entrance: copy fades up in sequence, visual fades + scales in */
.tw-motion .tw-hero__copy > * { animation: tw-hero-in 500ms var(--tw-ease) both; }
.tw-motion .tw-hero__copy > *:nth-child(1) { animation-delay: 0ms; }
.tw-motion .tw-hero__copy > *:nth-child(2) { animation-delay: 90ms; }
.tw-motion .tw-hero__copy > *:nth-child(3) { animation-delay: 180ms; }
.tw-motion .tw-hero__copy > *:nth-child(4) { animation-delay: 270ms; }
@keyframes tw-hero-in { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
.tw-motion .tw-hero__visual { animation: tw-visual-in 600ms var(--tw-ease) 200ms both; }
@keyframes tw-visual-in { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: scale(1); } }

/* Hero mesh drift (20s) */
.tw-motion .tw-hero::before { animation: tw-drift 20s ease-in-out infinite alternate; }
@keyframes tw-drift { from { transform: translate3d(-2%, -1%, 0) scale(1); } to { transform: translate3d(3%, 2%, 0) scale(1.08); } }

/* Workflow / loop connectors draw in */
.tw-motion .tw-steps .tw-step::after { transform: scaleX(0); transition: transform 600ms var(--tw-ease); transition-delay: calc(var(--tw-i, 0) * 120ms + 200ms); }
.tw-motion .tw-steps .tw-step.is-in::after { transform: scaleX(1); }
.tw-motion .tw-steps--loop .tw-step:last-child::after { transform: none; }

/* Org chart: links flow, agents pulse */
.tw-motion .tw-orgchart__link { animation: tw-flow 1.6s linear infinite; animation-delay: calc(var(--tw-i, 0) * -.4s); }
@keyframes tw-flow { to { stroke-dashoffset: -20; } }
.tw-motion .tw-orgchart__agent { transform-box: fill-box; transform-origin: center; animation: tw-pulse 2.4s var(--tw-ease) infinite; }
.tw-motion .tw-orgchart__node:nth-of-type(2) .tw-orgchart__agent { animation-delay: .3s; }
.tw-motion .tw-orgchart__node:nth-of-type(3) .tw-orgchart__agent { animation-delay: .6s; }
.tw-motion .tw-orgchart__node:nth-of-type(4) .tw-orgchart__agent { animation-delay: .9s; }
@keyframes tw-pulse { 0%, 100% { transform: scale(1); opacity: .8; } 50% { transform: scale(1.5); opacity: 1; } }

/* Card cursor glow */
.tw-motion .tw-card { background-image: radial-gradient(320px circle at var(--mx, -400px) var(--my, -400px), rgba(34, 211, 238, .09), transparent 60%); }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; transition: none !important; }
}

/* Menu entrance: staggered fade and slide-in on load; skipped when reduced motion is requested. */
@keyframes tw-nav-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: no-preference) {
	:is(.tw-nav, .tw-nav > .wp-block-navigation__container) > .wp-block-navigation-item { animation: tw-nav-in 480ms var(--tw-ease) both; }
	:is(.tw-nav, .tw-nav > .wp-block-navigation__container) > .wp-block-navigation-item:nth-child(2) { animation-delay: 60ms; }
	:is(.tw-nav, .tw-nav > .wp-block-navigation__container) > .wp-block-navigation-item:nth-child(3) { animation-delay: 120ms; }
	:is(.tw-nav, .tw-nav > .wp-block-navigation__container) > .wp-block-navigation-item:nth-child(4) { animation-delay: 180ms; }
	:is(.tw-nav, .tw-nav > .wp-block-navigation__container) > .wp-block-navigation-item:nth-child(5) { animation-delay: 240ms; }
	:is(.tw-nav, .tw-nav > .wp-block-navigation__container) > .wp-block-navigation-item:nth-child(n+6) { animation-delay: 300ms; }
}

/* Site logo (set in Appearance > Editor / Customizer). The artwork has wide black margins: crop them and let
   the black blend into the dark header. When a logo is set it is the home link (its alt text is the site name),
   so the text title is removed entirely: a clipped title link would still be an invisible keyboard focus stop. */
.tw-logo-img { margin: 0; line-height: 0; flex: none; }
.tw-logo-img a { display: block; }
.tw-logo-img img { display: block; width: clamp(150px, 16vw, 200px); height: auto; aspect-ratio: 1376 / 260; object-fit: cover; mix-blend-mode: lighten; }
.tw-footer .tw-logo-img img { width: 170px; }
.tw-header:has(.tw-logo-img img) .tw-logo, .tw-footer:has(.tw-logo-img img) .tw-logo { display: none; }

/* Header: centred logo + menu with the button pinned right only when there is room; below 1200px the button
   stays in the normal flow (right edge) so it can never overlap the menu. */
@media (max-width: 1199px) {
	.wp-block-group.tw-header { justify-content: flex-start; }
	.tw-header > .tw-btn { position: static; translate: none; margin-inline-start: auto; }
}

/* Mid-width desktops: tighter spacing so logo + menu + button fit on one row. */
@media (min-width: 1000px) and (max-width: 1199px) {
	.tw-header .tw-nav { margin-inline-start: 1rem; gap: 10px !important; font-size: .95rem; }
	.tw-nav .wp-block-navigation-item__content { padding-inline: .15rem; }
	.tw-header .tw-logo-img img { width: 140px; }
	.tw-header > .tw-btn { flex: none; }
}
/* Below 1000px the full menu cannot fit beside the logo: use the hamburger from here (core switches at 600px). */
@media (max-width: 999px) {
	.wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex !important; }
	.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none !important; }
	.tw-header > .tw-btn { flex: none; }
}

/* backdrop-filter makes the header the containing block of the fixed mobile-menu overlay, which then collapses
   to the header height. Core adds .has-modal-open to <html> while the menu is open: drop the filter then. */
html.has-modal-open .tw-header { backdrop-filter: none; -webkit-backdrop-filter: none; }
