/* ==========================================================================
   UA site-wide enhancements — button spacing + tasteful entrance motion.
   Scoped defensively so it never fights the theme's own layout.
   ========================================================================== */

:root {
	--ua-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
	--ua-spring: cubic-bezier(0.34, 1.4, 0.64, 1);
}

/* ---------- button spacing (requested) ----------
   Add breathing room between neighbouring buttons without touching solitary ones. */

.wp-block-button + .wp-block-button,
.wp-block-buttons .wp-block-button + .wp-block-button {
	margin-left: 12px;
}

/* buttons that sit directly next to each other in any flow container */
a.wp-block-button__link + a.wp-block-button__link,
.wp-block-button__link + .wp-block-button__link {
	margin-left: 12px;
}

/* generic adjacent buttons/links styled as buttons in the theme */
.btn + .btn,
.button + .button,
.elementor-button + .elementor-button {
	margin-left: 12px;
	margin-bottom: 6px;
}

/* when buttons wrap onto multiple lines, keep vertical rhythm too */
.wp-block-buttons { row-gap: 12px; }

/* our own tool buttons already gap via flex; leave them alone */

/* ---------- gentle entrance animation for content blocks ----------
   Only animate opacity + small translate, GPU-friendly, reduced-motion safe. */

.ua-reveal {
	opacity: 0;
	transform: translateY(22px);
	will-change: opacity, transform;
	transition: opacity 0.7s var(--ua-ease), transform 0.7s var(--ua-ease);
}

.ua-reveal.ua-shown {
	opacity: 1;
	transform: none;
}

/* stagger children when a container is revealed */
.ua-reveal-group > * {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.6s var(--ua-ease), transform 0.6s var(--ua-ease);
}

.ua-reveal-group.ua-shown > * { opacity: 1; transform: none; }
.ua-reveal-group.ua-shown > *:nth-child(1) { transition-delay: 0.04s; }
.ua-reveal-group.ua-shown > *:nth-child(2) { transition-delay: 0.10s; }
.ua-reveal-group.ua-shown > *:nth-child(3) { transition-delay: 0.16s; }
.ua-reveal-group.ua-shown > *:nth-child(4) { transition-delay: 0.22s; }
.ua-reveal-group.ua-shown > *:nth-child(5) { transition-delay: 0.28s; }
.ua-reveal-group.ua-shown > *:nth-child(6) { transition-delay: 0.34s; }

/* ---------- link underline sweep on nav (subtle, professional) ---------- */

.main-navigation a {
	position: relative;
}

/* subtle lift on card-like elements sitewide */
.ua-lift {
	transition: transform 0.3s var(--ua-ease), box-shadow 0.3s var(--ua-ease);
}
.ua-lift:hover {
	transform: translateY(-4px);
	box-shadow: 0 14px 32px rgba(22, 41, 74, 0.12);
}

@media (prefers-reduced-motion: reduce) {
	.ua-reveal,
	.ua-reveal-group > *,
	.ua-lift {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
}

/* ---------- breadcrumbs ---------- */
.ua-breadcrumbs { margin: 0 0 18px; font-size: 0.85rem; }
.ua-breadcrumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; }
.ua-breadcrumbs li { display: flex; align-items: center; color: #7a8699; }
.ua-breadcrumbs li:not(:last-child)::after { content: "\203A"; margin-left: 6px; color: #c5cee0; }
.ua-breadcrumbs a { color: #2e75b6; text-decoration: none; }
.ua-breadcrumbs a:hover { text-decoration: underline; }
.ua-breadcrumbs li[aria-current] { color: #16294a; font-weight: 600; }

/* ---------- sticky quote bar ---------- */
.ua-stickybar {
	position: fixed;
	left: 50%;
	bottom: 22px;
	transform: translate(-50%, 140%);
	z-index: 9990;
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 12px 16px 12px 22px;
	background: #16294a;
	color: #fff;
	border-radius: 999px;
	box-shadow: 0 12px 34px rgba(22,41,74,0.32);
	transition: transform 0.45s cubic-bezier(0.34,1.4,0.64,1), opacity 0.4s ease;
	opacity: 0;
	max-width: calc(100vw - 32px);
}
.ua-stickybar.ua-show { transform: translate(-50%, 0); opacity: 1; }
.ua-stickybar-msg { font-weight: 600; font-size: 0.95rem; }
.ua-stickybar .ua-btn-primary { background: #2e75b6; padding: 9px 18px; white-space: nowrap; }
.ua-stickybar .ua-btn-primary:hover { background: #3d85c6; transform: translateY(-1px); }
.ua-stickybar-close {
	background: transparent; border: 0; color: #9fb2d4; font-size: 22px;
	line-height: 1; cursor: pointer; padding: 0 4px;
}
.ua-stickybar-close:hover { color: #fff; }

@media (max-width: 520px) {
	.ua-stickybar { flex-wrap: nowrap; padding: 10px 12px 10px 16px; gap: 10px; }
	.ua-stickybar-msg { font-size: 0.85rem; }
}

@media (prefers-reduced-motion: reduce) {
	.ua-stickybar { transition: opacity 0.3s ease !important; }
	.ua-stickybar.ua-show { transform: translate(-50%, 0); }
}

/* ============================================================
   Projects section — animated hero banner (pages 487/488/504)
   Scoped to page IDs so no other page is affected. CSS-only.
   ============================================================ */
.page-id-487 .ua-banner,
.page-id-488 .ua-banner,
.page-id-504 .ua-banner {
	position: relative;
	margin: 4px 0 34px;
	padding: 58px 44px;
	border-radius: 18px;
	overflow: hidden;
	isolation: isolate;
	background: linear-gradient(120deg, #12213f 0%, #1d3a6b 45%, #2e75b6 100%);
	background-size: 200% 200%;
	box-shadow: 0 20px 46px rgba(18, 33, 63, 0.30);
	animation: ua-bnr-rise 0.85s cubic-bezier(0.22,0.61,0.36,1) both,
	           ua-bnr-sheen 12s ease-in-out 1s infinite;
}

/* soft drifting light orbs behind the title */
.page-id-487 .ua-banner::before,
.page-id-488 .ua-banner::before,
.page-id-504 .ua-banner::before {
	content: "";
	position: absolute;
	top: -60%;
	right: -10%;
	width: 420px;
	height: 420px;
	background: radial-gradient(circle, rgba(120,180,255,0.28) 0%, transparent 65%);
	z-index: -1;
	animation: ua-bnr-float1 14s ease-in-out infinite;
}
.page-id-487 .ua-banner::after,
.page-id-488 .ua-banner::after,
.page-id-504 .ua-banner::after {
	content: "";
	position: absolute;
	bottom: -70%;
	left: -8%;
	width: 340px;
	height: 340px;
	background: radial-gradient(circle, rgba(46,117,182,0.35) 0%, transparent 60%);
	z-index: -1;
	animation: ua-bnr-float2 18s ease-in-out infinite;
}

/* title */
.page-id-487 .ua-banner .ua-banner-title,
.page-id-488 .ua-banner .ua-banner-title,
.page-id-504 .ua-banner .ua-banner-title {
	margin: 0 !important;
	color: #fff !important;
	font-size: clamp(2rem, 4.4vw, 3.1rem) !important;
	line-height: 1.08 !important;
	font-weight: 800 !important;
	letter-spacing: -0.02em;
	text-shadow: 0 2px 18px rgba(0,0,0,0.22);
	animation: ua-bnr-title 0.8s cubic-bezier(0.22,0.61,0.36,1) 0.18s both;
}
.page-id-487 .ua-banner .ua-banner-title::after,
.page-id-488 .ua-banner .ua-banner-title::after,
.page-id-504 .ua-banner .ua-banner-title::after {
	content: "";
	display: block;
	width: 76px;
	height: 4px;
	margin-top: 18px;
	border-radius: 2px;
	background: linear-gradient(90deg, #7fb2ef, #ffffff);
	transform-origin: left center;
	animation: ua-bnr-bar 0.7s cubic-bezier(0.22,0.61,0.36,1) 0.5s both;
}

@keyframes ua-bnr-rise  { from { opacity: 0; transform: translateY(26px) scale(0.985); } to { opacity: 1; transform: none; } }
@keyframes ua-bnr-title { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
@keyframes ua-bnr-bar   { from { opacity: 0; transform: scaleX(0); } to { opacity: 1; transform: scaleX(1); } }
@keyframes ua-bnr-sheen { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
@keyframes ua-bnr-float1 { 0%, 100% { transform: translate(0,0); } 50% { transform: translate(-30px, 26px); } }
@keyframes ua-bnr-float2 { 0%, 100% { transform: translate(0,0); } 50% { transform: translate(28px, -22px); } }

@media (max-width: 640px) {
	.page-id-487 .ua-banner,
	.page-id-488 .ua-banner,
	.page-id-504 .ua-banner { padding: 40px 26px; border-radius: 14px; }
}

@media (prefers-reduced-motion: reduce) {
	.page-id-487 .ua-banner, .page-id-488 .ua-banner, .page-id-504 .ua-banner,
	.page-id-487 .ua-banner .ua-banner-title, .page-id-488 .ua-banner .ua-banner-title, .page-id-504 .ua-banner .ua-banner-title,
	.page-id-487 .ua-banner .ua-banner-title::after, .page-id-488 .ua-banner .ua-banner-title::after, .page-id-504 .ua-banner .ua-banner-title::after,
	.page-id-487 .ua-banner::before, .page-id-488 .ua-banner::before, .page-id-504 .ua-banner::before,
	.page-id-487 .ua-banner::after, .page-id-488 .ua-banner::after, .page-id-504 .ua-banner::after {
		animation: none !important;
		opacity: 1 !important;
		transform: none !important;
	}
}
/* end projects animated banner */

/* ============================================================
   Per-project banner strips (Projects pages 487/488/504)
   Tagged headings get a gradient banner; CTA headings untouched.
   ============================================================ */
.page-id-487 h2.ua-proj-head,
.page-id-488 h2.ua-proj-head,
.page-id-504 h2.ua-proj-head {
	position: relative !important;
	margin: 42px 0 24px !important;
	padding: 24px 30px !important;
	border-radius: 14px !important;
	color: #fff !important;
	background: linear-gradient(100deg, #16294a 0%, #244a86 58%, #2e75b6 100%) !important;
	box-shadow: 0 12px 30px rgba(22, 41, 74, 0.20) !important;
	border-left: 5px solid #7fb2ef !important;
	overflow: hidden;
	transition: transform 0.3s cubic-bezier(0.22,0.61,0.36,1), box-shadow 0.3s ease;
}
.page-id-487 h2.ua-proj-head:hover,
.page-id-488 h2.ua-proj-head:hover,
.page-id-504 h2.ua-proj-head:hover {
	transform: translateX(5px);
	box-shadow: 0 16px 40px rgba(22, 41, 74, 0.30) !important;
}
/* hide the theme's small underline accent inside the filled banner */
.page-id-487 h2.ua-proj-head::after,
.page-id-488 h2.ua-proj-head::after,
.page-id-504 h2.ua-proj-head::after {
	display: none !important;
}

/* ============================================================
   Sticky "get a quote" bar — button contrast fix
   (was blue #2e75b6 on navy #16294a — hard to read)
   ============================================================ */
.ua-stickybar .ua-btn-primary {
	background: #ffffff !important;
	color: #16294a !important;
	font-weight: 700 !important;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.22) !important;
}
.ua-stickybar .ua-btn-primary:hover {
	background: #eaf1fb !important;
	color: #12213f !important;
	transform: translateY(-1px);
}
/* end per-project banners + sticky button fix */

/* ============================================================
   Extend animated hero banner to Clients + Partners pages
   Clients 180/425/506 · Partners 38/426/507 (reuses ua-bnr-* keyframes)
   ============================================================ */
.page-id-180 .ua-banner, .page-id-425 .ua-banner, .page-id-506 .ua-banner,
.page-id-38 .ua-banner,  .page-id-426 .ua-banner, .page-id-507 .ua-banner {
	position: relative;
	margin: 4px 0 34px;
	padding: 58px 44px;
	border-radius: 18px;
	overflow: hidden;
	isolation: isolate;
	background: linear-gradient(120deg, #12213f 0%, #1d3a6b 45%, #2e75b6 100%);
	background-size: 200% 200%;
	box-shadow: 0 20px 46px rgba(18, 33, 63, 0.30);
	animation: ua-bnr-rise 0.85s cubic-bezier(0.22,0.61,0.36,1) both,
	           ua-bnr-sheen 12s ease-in-out 1s infinite;
}
.page-id-180 .ua-banner::before, .page-id-425 .ua-banner::before, .page-id-506 .ua-banner::before,
.page-id-38 .ua-banner::before,  .page-id-426 .ua-banner::before, .page-id-507 .ua-banner::before {
	content: ""; position: absolute; top: -60%; right: -10%;
	width: 420px; height: 420px;
	background: radial-gradient(circle, rgba(120,180,255,0.28) 0%, transparent 65%);
	z-index: -1; animation: ua-bnr-float1 14s ease-in-out infinite;
}
.page-id-180 .ua-banner::after, .page-id-425 .ua-banner::after, .page-id-506 .ua-banner::after,
.page-id-38 .ua-banner::after,  .page-id-426 .ua-banner::after, .page-id-507 .ua-banner::after {
	content: ""; position: absolute; bottom: -70%; left: -8%;
	width: 340px; height: 340px;
	background: radial-gradient(circle, rgba(46,117,182,0.35) 0%, transparent 60%);
	z-index: -1; animation: ua-bnr-float2 18s ease-in-out infinite;
}
.page-id-180 .ua-banner .ua-banner-title, .page-id-425 .ua-banner .ua-banner-title, .page-id-506 .ua-banner .ua-banner-title,
.page-id-38 .ua-banner .ua-banner-title,  .page-id-426 .ua-banner .ua-banner-title, .page-id-507 .ua-banner .ua-banner-title {
	margin: 0 !important; color: #fff !important;
	font-size: clamp(2rem, 4.4vw, 3.1rem) !important;
	line-height: 1.08 !important; font-weight: 800 !important;
	letter-spacing: -0.02em; text-shadow: 0 2px 18px rgba(0,0,0,0.22);
	animation: ua-bnr-title 0.8s cubic-bezier(0.22,0.61,0.36,1) 0.18s both;
}
.page-id-180 .ua-banner .ua-banner-title::after, .page-id-425 .ua-banner .ua-banner-title::after, .page-id-506 .ua-banner .ua-banner-title::after,
.page-id-38 .ua-banner .ua-banner-title::after,  .page-id-426 .ua-banner .ua-banner-title::after, .page-id-507 .ua-banner .ua-banner-title::after {
	content: ""; display: block; width: 76px; height: 4px; margin-top: 18px;
	border-radius: 2px; background: linear-gradient(90deg, #7fb2ef, #ffffff);
	transform-origin: left center;
	animation: ua-bnr-bar 0.7s cubic-bezier(0.22,0.61,0.36,1) 0.5s both;
}

/* logo cards: hover lift (per-item polish) */
.page-id-180 .ua-pcard, .page-id-425 .ua-pcard, .page-id-506 .ua-pcard,
.page-id-38 .ua-pcard,  .page-id-426 .ua-pcard, .page-id-507 .ua-pcard {
	transition: transform 0.3s cubic-bezier(0.22,0.61,0.36,1), box-shadow 0.3s ease, border-color 0.3s ease;
}
.page-id-180 .ua-pcard:hover, .page-id-425 .ua-pcard:hover, .page-id-506 .ua-pcard:hover,
.page-id-38 .ua-pcard:hover,  .page-id-426 .ua-pcard:hover, .page-id-507 .ua-pcard:hover {
	transform: translateY(-6px);
	box-shadow: 0 16px 34px rgba(22, 41, 74, 0.16);
}

@media (max-width: 640px) {
	.page-id-180 .ua-banner, .page-id-425 .ua-banner, .page-id-506 .ua-banner,
	.page-id-38 .ua-banner,  .page-id-426 .ua-banner, .page-id-507 .ua-banner { padding: 40px 26px; border-radius: 14px; }
}
@media (prefers-reduced-motion: reduce) {
	.page-id-180 .ua-banner, .page-id-425 .ua-banner, .page-id-506 .ua-banner,
	.page-id-38 .ua-banner,  .page-id-426 .ua-banner, .page-id-507 .ua-banner,
	.page-id-180 .ua-banner .ua-banner-title, .page-id-425 .ua-banner .ua-banner-title, .page-id-506 .ua-banner .ua-banner-title,
	.page-id-38 .ua-banner .ua-banner-title,  .page-id-426 .ua-banner .ua-banner-title, .page-id-507 .ua-banner .ua-banner-title,
	.page-id-180 .ua-banner .ua-banner-title::after, .page-id-425 .ua-banner .ua-banner-title::after, .page-id-506 .ua-banner .ua-banner-title::after,
	.page-id-38 .ua-banner .ua-banner-title::after,  .page-id-426 .ua-banner .ua-banner-title::after, .page-id-507 .ua-banner .ua-banner-title::after,
	.page-id-180 .ua-banner::before, .page-id-425 .ua-banner::before, .page-id-506 .ua-banner::before,
	.page-id-38 .ua-banner::before,  .page-id-426 .ua-banner::before, .page-id-507 .ua-banner::before,
	.page-id-180 .ua-banner::after, .page-id-425 .ua-banner::after, .page-id-506 .ua-banner::after,
	.page-id-38 .ua-banner::after,  .page-id-426 .ua-banner::after, .page-id-507 .ua-banner::after {
		animation: none !important; opacity: 1 !important; transform: none !important;
	}
}
/* end clients + partners hero + card polish */

/* ============================================================
   General professional polish — sitewide
   ============================================================ */
html{scroll-behavior:smooth;}
::selection{background:rgba(46,117,182,.22);color:#16294a;}
::-moz-selection{background:rgba(46,117,182,.22);color:#16294a;}

/* accessible, consistent focus rings (keyboard users) */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,
select:focus-visible,.wp-block-button__link:focus-visible,.btn:focus-visible{
  outline:3px solid rgba(46,117,182,.55);outline-offset:2px;border-radius:4px;
}

/* smooth link colour transitions inside content */
.box-content a:not(.wp-block-button__link):not(.ua-btn):not(.ua-hero-btn):not(.ua-ind-chip){
  transition:color .2s ease,opacity .2s ease;
}

/* back-to-top button */
.ua-top{
  position:fixed;right:22px;bottom:92px;z-index:9980;
  width:46px;height:46px;border-radius:50%;border:0;cursor:pointer;
  background:linear-gradient(135deg,#16294a,#2e75b6);color:#fff;
  display:grid;place-items:center;
  box-shadow:0 10px 26px rgba(22,41,74,.34);
  opacity:0;transform:translateY(14px);pointer-events:none;
  transition:opacity .3s ease,transform .3s cubic-bezier(0.34,1.4,0.64,1),box-shadow .3s ease,background .3s ease;
}
.ua-top.ua-show{opacity:1;transform:none;pointer-events:auto;}
.ua-top:hover{transform:translateY(-3px);box-shadow:0 15px 34px rgba(22,41,74,.46);background:linear-gradient(135deg,#1d3a6b,#3d85c6);}
.ua-top:active{transform:translateY(-1px);}
.ua-top svg{width:20px;height:20px;}
@media (max-width:600px){.ua-top{right:16px;bottom:84px;width:42px;height:42px;}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}.ua-top{transition:opacity .2s ease;}}
/* end professional polish */
