/*
 * Oxygène — decorative layer on top of Spectra.
 * Colors, spacing and typography live in the Spectra block settings; this file only adds
 * what Spectra cannot express (gradient text, hover lifts, pills, hero orbit, filters).
 * Classes are applied through "Advanced > Additional CSS class(es)" on each block.
 */

:root {
	--ox-cyan: #0099bb;
	--ox-cyan-deep: #007a96;
	--ox-grad: linear-gradient(135deg, #0099bb 0%, #007a96 100%);
	--ox-fg: #0f172a;
	--ox-slate: #475569;
	--ox-muted: #64748b;
	--ox-subtle: #94a3b8;
	--ox-line: rgba(0, 0, 0, 0.07);
	--ox-header-h: 64px;
}

html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; }
::selection { background: rgba(0, 153, 187, 0.18); }

/* Stack template areas and Spectra sections without the default flow gaps. */
.wp-site-blocks > * + *,
.ox-main,
.ox-canvas > * { margin-block: 0; }
.ox-canvas [id] { scroll-margin-top: var(--ox-header-h); }

/* Spectra stretches every non-container child to 100% width. In flex rows marked
   .ox-auto, children keep their natural width instead. */
body .ox-auto > *:not(.uagb-container-inner-blocks-wrap),
body .ox-auto > .uagb-container-inner-blocks-wrap > * { width: auto !important; }
body .ox-badge { width: auto !important; }

/* ── Header ──────────────────────────────────────────────────────────── */
.ox-site-header {
	position: sticky;
	top: 0;
	z-index: 50;
	-webkit-backdrop-filter: blur(16px);
	backdrop-filter: blur(16px);
}
.admin-bar .ox-site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .ox-site-header { top: 46px; } }
@media (max-width: 600px) { .admin-bar .ox-site-header { top: 0; } }

.ox-header { transition: background-color 0.3s ease, box-shadow 0.3s ease; }
.ox-site-header.is-scrolled .ox-header {
	background-color: rgba(255, 255, 255, 0.95) !important;
	box-shadow: 0 1px 0 var(--ox-line), 0 2px 20px rgba(0, 0, 0, 0.06);
}
.ox-logo { margin: 0; line-height: 0; }
.ox-header .ox-logo img { height: 40px; width: auto; }
.ox-footer .ox-logo img { height: 36px; width: auto; }

.ox-nav { font-size: 14px; gap: 28px; }
.ox-nav .wp-block-navigation__container { gap: 28px; }
body .ox-nav .wp-block-navigation-item__content { color: var(--ox-slate); position: relative; transition: color 0.2s ease; }
.ox-nav .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -4px;
	width: 0;
	height: 2px;
	border-radius: 1px;
	background: var(--ox-cyan);
	transition: width 0.3s ease;
}
body .ox-nav .wp-block-navigation-item__content:hover,
body .ox-nav .wp-block-navigation-item__content.is-active { color: var(--ox-cyan); }
.ox-nav .wp-block-navigation-item__content:hover::after { width: 100%; }
.ox-nav .wp-block-navigation__responsive-container-open {
	color: var(--ox-slate);
	background: #f1f5f9;
	border-radius: 8px;
	padding: 8px;
}
.ox-nav .wp-block-navigation__responsive-container.is-menu-open { padding: 24px; }
.ox-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { font-size: 18px; padding: 8px 0; }

@media (max-width: 781px) {
	.ox-header-cta { display: none !important; }
}

/* ── Buttons ─────────────────────────────────────────────────────────── */
.ox-btn .uagb-buttons-repeater { transition: all 0.25s ease; }
.ox-btn--primary .uagb-buttons-repeater:hover { transform: translateY(-1px); box-shadow: 0 8px 30px rgba(0, 153, 187, 0.35); }
.ox-btn--outline .uagb-buttons-repeater:hover { box-shadow: 0 4px 16px rgba(0, 153, 187, 0.12); }
.ox-plan-cta,
.ox-plan-cta .uagb-buttons__wrap,
.ox-plan-cta .wp-block-uagb-buttons-child,
.ox-plan-cta .uagb-button__wrapper,
.ox-plan-cta .uagb-buttons-repeater { width: 100%; justify-content: center; box-sizing: border-box; }
.ox-plan-cta { margin-top: auto; }

/* ── Gradient text ───────────────────────────────────────────────────── */
/* Highlighted words (Spectra "Highlight" format) inside headings with .ox-grad. */
.ox-grad mark,
.ox-grad-text .uagb-heading-text,
.ox-grad-text .uagb-counter-block-number {
	background: var(--ox-grad) !important;
	-webkit-background-clip: text !important;
	background-clip: text !important;
	-webkit-text-fill-color: transparent !important;
	color: transparent;
	padding: 0 !important;
}
.ox-grad .uagb-desc-text { max-width: 36rem; }
.ox-grad.is-centered .uagb-desc-text { margin-inline: auto; }

/* ── Labels, badges, pills ───────────────────────────────────────────── */
.ox-label .uagb-heading-text { margin: 0; }
.ox-badge {
	align-self: flex-start;
	border: 1px solid rgba(0, 153, 187, 0.25);
	border-radius: 999px;
}
.ox-badge .uagb-heading-text { display: flex; align-items: center; gap: 8px; margin: 0; }
.ox-badge .uagb-heading-text::before {
	content: "";
	flex: none;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: currentColor;
	animation: ox-pulse 3s ease-in-out infinite;
}
.ox-badge--green { border-color: rgba(5, 150, 105, 0.18); border-radius: 12px; }
.ox-badge--green .uagb-heading-text { gap: 10px; }
.ox-badge--green .uagb-heading-text::before { width: 8px; height: 8px; }

.ox-pills p { margin: 0; }
.ox-pills-label { font-size: 12px; color: var(--ox-subtle); }
.ox-pill {
	font-size: 12px;
	line-height: 1.5;
	color: var(--ox-muted);
	background: #f8fafc;
	border: 1px solid rgba(0, 0, 0, 0.08);
	border-radius: 999px;
	padding: 4px 12px;
	transition: all 0.2s ease;
}
.ox-pill:hover { background: rgba(0, 153, 187, 0.06); border-color: rgba(0, 153, 187, 0.25); }

/* Technology pills: <p class="ox-pill ox-tech is-{color}">Name <span class="ox-cat">Catégorie</span></p> */
.ox-tech {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 16px;
	border-radius: 12px;
	font-size: 14px;
	font-weight: 500;
	color: var(--ox-fg);
	--ox-dot: var(--ox-cyan);
}
.ox-tech::before { content: ""; flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--ox-dot); }
.ox-tech .ox-cat { font-size: 12px; font-weight: 400; color: var(--ox-subtle); background: #f1f5f9; border-radius: 999px; padding: 2px 8px; }
.ox-tech.is-blue { --ox-dot: #2563eb; }
.ox-tech.is-violet { --ox-dot: #7c3aed; }
.ox-tech.is-green { --ox-dot: #059669; }
.ox-tech.is-amber { --ox-dot: #d97706; }
.ox-tech.is-pink { --ox-dot: #db2777; }
.ox-tech.is-orange { --ox-dot: #c2410c; }

/* Project tech tags: text color set per tag in the paragraph settings. */
.ox-tags p { margin: 0; }
.ox-tag {
	font-size: 12px;
	line-height: 1.5;
	padding: 4px 10px;
	border-radius: 8px;
	background: color-mix(in srgb, currentColor 6%, transparent);
	border: 1px solid color-mix(in srgb, currentColor 15%, transparent);
}

/* ── Filters (portfolio & technologies) ──────────────────────────────── */
.ox-filter .uagb-buttons-repeater { transition: all 0.2s ease; }
.ox-filter--solid .uagb-buttons-repeater { box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04); }
.ox-filter--solid .is-active .uagb-buttons-repeater .uagb-button__link { color: #fff !important; }
.ox-filter--soft .is-active .uagb-buttons-repeater .uagb-button__link { color: var(--ox-cyan) !important; font-weight: 600; }
.ox-filter--solid .is-active .uagb-buttons-repeater {
	background: var(--ox-cyan) !important;
	border-color: var(--ox-cyan) !important;
	color: #fff !important;
	font-weight: 600 !important;
	box-shadow: 0 4px 14px rgba(0, 153, 187, 0.25);
}
.ox-filter--soft .uagb-buttons-repeater { background: #f8fafc !important; }
.ox-filter--soft .is-active .uagb-buttons-repeater {
	background: rgba(0, 153, 187, 0.1) !important;
	border-color: rgba(0, 153, 187, 0.4) !important;
	color: var(--ox-cyan) !important;
	font-weight: 600 !important;
}
.ox-is-hidden { display: none !important; }

/* ── Cards ───────────────────────────────────────────────────────────── */
.ox-card { transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease; }
.ox-card:hover { transform: translateY(-2px); }

.ox-service-box .uagb-ifb-icon-wrap { line-height: 0; display: flex; justify-content: flex-start; text-align: left; }
.ox-service-box .uagb-iconbox-icon-wrap { margin-left: 0 !important; margin-right: auto !important; }
.ox-service-box .uagb-iconbox-icon-wrap,
.ox-contact-item .uagb-iconbox-icon-wrap {
	display: flex !important;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	padding: 0 !important;
	border-radius: 12px;
	box-sizing: border-box;
}
.ox-contact-item .uagb-iconbox-icon-wrap { width: 40px; height: 40px; border: 1px solid rgba(0, 153, 187, 0.15); }
.ox-contact-item a.uagb-infobox-link-wrap,
.ox-contact-item .uagb-infobox-cta-link { color: inherit; }

.ox-checks .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap { flex: none; }

/* Steps (AI section) */
.ox-step .ox-step-num { flex: none; }
body .ox-step > :last-child { flex: 1 1 0; min-width: 0; }

/* Pricing */
.ox-plans { padding-top: 14px; }
.ox-plan { position: relative; overflow: visible !important; }
.ox-plan .ox-checks { flex: 1 1 auto; }
body .ox-popular {
	position: absolute !important;
	width: auto !important;
	top: -14px;
	left: 50%;
	transform: translateX(-50%);
	white-space: nowrap;
	background: #fff;
	border-radius: 999px;
	padding: 4px 16px;
	margin: 0 !important;
}
.ox-price mark { margin-left: 4px; }

/* Portfolio cards */
.ox-project { color: inherit; text-decoration: none !important; }
.ox-project:hover { transform: translateY(-4px); }
.ox-project-body { flex: 1 1 auto; }
.ox-shot { position: relative; height: 200px; flex: none; }
.ox-shot.is-mockup { height: 230px; }
.ox-shot .ox-shot-img,
.ox-shot .ox-shot-img figure,
.ox-shot .ox-shot-img img { width: 100% !important; height: 100% !important; margin: 0; max-width: none; }
body .ox-shot .ox-shot-img { position: absolute !important; inset: 0; }
.ox-shot .ox-shot-img img { object-fit: cover; object-position: top; transition: transform 0.5s ease; }
.ox-shot.is-mockup .ox-shot-img { inset: 8px 4px 0; width: auto !important; height: auto !important; }
.ox-shot.is-mockup .ox-shot-img img { object-fit: contain; object-position: center; }
.ox-project:hover .ox-shot-img img { transform: scale(1.04); }
body .ox-cat.wp-block-uagb-advanced-heading {
	position: absolute !important;
	width: auto !important;
	top: 12px;
	left: 12px;
	z-index: 2;
	border-radius: 999px;
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}
body .ox-overlay {
	position: absolute !important;
	inset: 0;
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(0, 153, 187, 0.82);
	opacity: 0;
	transition: opacity 0.3s ease;
	margin: 0 !important;
}
.ox-overlay .uagb-heading-text {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: #fff;
	border-radius: 12px;
	padding: 10px 20px;
}
.ox-overlay .uagb-heading-text::after {
	content: "";
	width: 16px;
	height: 16px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E") center / contain no-repeat;
}
.ox-project:hover .ox-overlay,
.ox-project:focus-visible .ox-overlay { opacity: 1; }
.ox-urlbar .wp-block-uagb-icon { line-height: 0; }

/* Form: two fields per row on larger screens. */
.ox-form .uagb-forms-main-form { display: grid; grid-template-columns: 1fr 1fr; column-gap: 16px; }
.ox-form .uagb-forms-main-form > * { grid-column: 1 / -1; }
.ox-form .uagb-forms-main-form > .ox-half { grid-column: auto; }
.ox-form .uagb-forms-main-submit-button { width: 100%; justify-content: center; transition: all 0.25s ease; }
.ox-form .uagb-forms-main-submit-button:hover { transform: translateY(-1px); box-shadow: 0 8px 30px rgba(0, 153, 187, 0.35); }
.ox-form .uagb-forms-input:focus { box-shadow: 0 0 0 3px rgba(0, 153, 187, 0.1); }
.ox-form textarea { resize: none; }
.ox-form .uagb-forms-phone-flex { display: flex; gap: 8px; }
.ox-form .uagb-forms-phone-flex select { flex: 0 0 110px; min-width: 110px; }
@media (max-width: 600px) {
	.ox-form .uagb-forms-main-form > .ox-half { grid-column: 1 / -1; }
}

/* ── Stats band ──────────────────────────────────────────────────────── */
.ox-stats-grid { position: relative; }
.ox-stats-grid::before,
.ox-stats-grid::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	height: 1px;
	background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.08), transparent);
}
.ox-stats-grid::before { top: 0; }
.ox-stats-grid::after { bottom: 0; }
.ox-stat + .ox-stat { border-left: 1px solid rgba(0, 0, 0, 0.06); }
@media (max-width: 767px) {
	.ox-stat:nth-child(odd) { border-left: 0; }
	.ox-stat:nth-child(n + 3) { border-top: 1px solid rgba(0, 0, 0, 0.06); }
}

/* ── Hero ────────────────────────────────────────────────────────────── */
.ox-hero { position: relative; isolation: isolate; }
.ox-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	opacity: 0.6;
	background-image: radial-gradient(circle, rgba(0, 153, 187, 0.12) 1px, transparent 1px);
	background-size: 28px 28px;
}
.ox-hero::after {
	content: "";
	position: absolute;
	z-index: -1;
	pointer-events: none;
	top: -80px;
	right: -80px;
	width: 520px;
	height: 520px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(0, 153, 187, 0.1) 0%, transparent 70%);
}
.ox-hero-title .uagb-desc-text { max-width: 36rem; }

/* Decorative orbit with floating stat cards (hidden below 1024px). */
.ox-orbit {
	position: relative;
	flex: 0 0 288px !important;
	width: 288px !important;
	height: 288px;
	margin-right: 5%;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(0, 153, 187, 0.18) 0%, rgba(37, 99, 235, 0.08) 22%, transparent 34%);
	animation: ox-float 6s ease-in-out infinite;
}
.ox-orbit::before,
.ox-orbit::after {
	content: "";
	position: absolute;
	border-radius: 50%;
	pointer-events: none;
}
.ox-orbit::before {
	inset: 0;
	border: 1.5px solid rgba(0, 153, 187, 0.18);
	background:
		radial-gradient(circle at 50% 1.8%, #0099bb 0 5px, transparent 6px),
		radial-gradient(circle at 100% 50%, #0099bb 0 3px, transparent 4px);
	filter: drop-shadow(0 0 6px rgba(0, 153, 187, 0.45));
	animation: ox-spin 14s linear infinite;
}
.ox-orbit::after {
	inset: 24px;
	border: 1px solid rgba(0, 153, 187, 0.12);
	outline: 1px solid rgba(37, 99, 235, 0.1);
	outline-offset: -27px;
	background: radial-gradient(circle at 85% 85%, #2563eb 0 4px, transparent 5px);
	animation: ox-spin 9s linear infinite reverse;
}
.ox-float {
	position: absolute !important;
	z-index: 2;
	width: auto !important;
	min-width: 140px;
	animation: ox-float 6s ease-in-out 2s infinite;
}
.ox-float--a { top: -16px; left: -80px; }
.ox-float--b { bottom: -8px; right: -20px; animation-delay: 3s; }
.ox-float:hover { transform: none; }

@media (max-width: 1024px) {
	.ox-orbit { display: none !important; }
}

/* ── Animations ──────────────────────────────────────────────────────── */
@keyframes ox-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@keyframes ox-pulse { 0%, 100% { opacity: 0.6; } 50% { opacity: 1; } }
@keyframes ox-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.ox-orbit, .ox-orbit::before, .ox-orbit::after, .ox-float, .ox-badge .uagb-heading-text::before { animation: none; }
}

/* ── Footer ──────────────────────────────────────────────────────────── */
.ox-footer-nav { font-size: 12px; gap: 24px; }
.ox-footer-nav .wp-block-navigation__container { gap: 24px; justify-content: center; }
body .ox-footer-nav .wp-block-navigation-item__content { color: var(--ox-subtle); }
body .ox-footer-nav .wp-block-navigation-item__content:hover { color: var(--ox-cyan); }

/* ── Blog listing (index template) ───────────────────────────────────── */
.ox-post-card { border: 1px solid var(--ox-line); transition: transform 0.25s ease, box-shadow 0.25s ease; }
.ox-post-card:hover { transform: translateY(-2px); box-shadow: 0 8px 32px rgba(0, 153, 187, 0.1); }

/* Keep hero / section buttons left-aligned on small screens. */
@media (max-width: 767px) {
	.ox-hero-content .uagb-buttons__wrap { justify-content: flex-start !important; row-gap: 12px; }
}
