/*
 * Enneon Core 1.0.35 - the one central stylesheet.
 * Variable names match ELEMENTOR_V4_MAP.md and the Elementor 4 Variables
 * (Elementor prints each Variable as --{label} on :root).
 */

:root {
	/* Light colours come from the Elementor 4 Variables (Site Settings), printed on :root.
	   Only the motion curves live here, because Atomic has no curve Variable. */
	--vd-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
	--vd-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
	color-scheme: light;
}

/* Dark set. html[data-theme] (0,1,1) beats Elementor's :root (0,1,0), whatever the load order. */
html[data-theme="dark"] {
	--color-primary: #B89A52; /* AA text gold on #171717: 6.6 */
	--color-primary-foreground: #171717; /* dark ink on the gold button in dark mode */
	--color-accent: #B89A52;
	--color-background: #171717;
	--color-foreground: #DADDE3;
	--color-muted-foreground: #9CA5B3;
	--color-card-foreground: #F2F5F7;
	--color-haze: #2C3744;
	--color-vellum: #1F192C;
	--color-brand: #7F6CA8;
	--color-brand-foreground: #FFFFFF;
	--color-border: #FFFFFF3D;
	--color-secondary: #262626;
	--color-secondary-foreground: #FAFAFA;
	--color-input: #FFFFFF26;
	--color-ring: #737373;
	--color-card-translucent: #000000B8;
	--color-haze-translucent: #556475B8;
	color-scheme: dark;
}

body {
	background: var(--color-background);
	color: var(--color-foreground);
}

html.vd-theme-changing,
html.vd-theme-changing * {
	transition: background-color 250ms var(--vd-ease-in-out), color 250ms var(--vd-ease-in-out), border-color 250ms var(--vd-ease-in-out) !important; /* documented: must beat element transitions only while the theme swaps */
}

/*
 * Additions to Elementor 4 global classes. Atomic cannot express these:
 * a single-side border, and transitions. Selectors match Elementor's own
 * (.elementor .vd-*) so they sit at the same weight and only add properties.
 */
.elementor .vd-list-item { border-bottom: 1px solid var(--color-border); }
.elementor .vd-step { border-top: 1px solid var(--color-border); }
.elementor .vd-stat { border-top: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); padding: 24px 0; }
.elementor .vd-client-name { transition: color 150ms var(--vd-ease-out); }
.elementor .vd-chip { transition: background-color 150ms var(--vd-ease-out), color 150ms var(--vd-ease-out); }

.elementor .vd-btn-primary,
.elementor .vd-btn-outline { transition: background-color 150ms var(--vd-ease-out), opacity 150ms var(--vd-ease-out), border-color 150ms var(--vd-ease-out); }
.elementor .vd-nav-link,
.elementor .vd-tab { transition: color 150ms var(--vd-ease-out), background-color 200ms var(--vd-ease-in-out); }
.elementor .vd-btn-primary:focus-visible,
.elementor .vd-btn-outline:focus-visible,
.elementor .vd-nav-link:focus-visible,
.elementor .vd-tab:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }

/* Header: sticky, shrinks 104 to 72 after 40px of scroll (Figma navbar home-hero / home-scroll). */
/* Sticky sits on the Theme Builder wrapper, because a sticky child cannot outlive its parent. */
.elementor-location-header { position: sticky; top: 0; z-index: 100; }
.admin-bar .elementor-location-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .elementor-location-header { top: 46px; } }
.elementor .vd-header { transition: height 250ms var(--vd-ease-in-out), background-color 250ms var(--vd-ease-in-out); }
html.vd-is-scrolled .elementor .vd-header { height: 72px; background-color: var(--color-card-translucent); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
@media (max-width: 767px) {
	html.vd-is-scrolled .elementor .vd-header { height: 72px; }
}

/* Home: the header sits over the hero, transparent, with the ╱╱╱ mark instead of the logo. */
.vd-has-hero .elementor-location-header { margin-bottom: -104px; }
.vd-has-hero .elementor .vd-header { background-color: transparent; }
html:not(.vd-is-scrolled) .vd-has-hero .elementor .vd-header .vd-logo { display: none; }
.elementor .vd-header-mark { display: none; }
html:not(.vd-is-scrolled) .vd-has-hero .elementor .vd-header-mark { display: block; }
body:not(.vd-has-hero) .elementor .vd-header { background-color: var(--color-card-translucent); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
@media (max-width: 767px) { .vd-has-hero .elementor-location-header { margin-bottom: -88px; } }

.vd-logo { display: inline-flex; color: var(--color-foreground); line-height: 0; }
.vd-logo:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 4px; }

/* Header button: primary over the home hero, gold outline everywhere else (Figma navbar states). */
.elementor .vd-btn-header { height: 56px; }
body:not(.vd-has-hero) .elementor .vd-btn-header,
html.vd-is-scrolled .elementor .vd-btn-header { background-color: transparent; color: var(--color-primary); border-color: var(--color-border); font-weight: 300; }
body:not(.vd-has-hero) .elementor .vd-btn-header:hover,
html.vd-is-scrolled .elementor .vd-btn-header:hover { background-color: var(--color-secondary); opacity: 1; }

/* Header row: logo left, menu and actions grouped right, 48px apart (Figma navbar). */
.elementor .vd-header { gap: 48px; flex-wrap: nowrap; }
.elementor .vd-header > .vd-header-brand,
.elementor .vd-header > .vd-header-actions { flex: 0 0 auto; width: auto; }
.elementor .vd-header .vd-nav { flex: 1 1 auto; }
@media (min-width: 1025px) {
	.vd-nav .elementor-nav-menu--main { display: flex; justify-content: flex-end; }
	.vd-nav .elementor-nav-menu--main .elementor-nav-menu { flex-wrap: nowrap; }
}
@media (max-width: 767px) {
	.elementor .vd-header { gap: 8px; }
	.elementor .vd-header .vd-nav { flex: 0 0 auto; }
}

/* Main menu - Elementor Pro Nav Menu inside the atomic header, restyled to the Figma navbar. */
.vd-nav .elementor-nav-menu--main .elementor-item { padding: 14px 24px; font: 400 16px/24px var(--font-sans), system-ui, sans-serif; color: var(--color-foreground); }
.vd-nav .elementor-nav-menu--main .elementor-item:hover,
.vd-nav .elementor-nav-menu--main .elementor-item.highlighted,
.vd-nav .elementor-nav-menu--main .elementor-item-active { color: var(--color-primary); }
.vd-nav .elementor-nav-menu--main .elementor-item::before,
.vd-nav .elementor-nav-menu--main .elementor-item::after { display: none; }
.vd-nav .elementor-nav-menu--main .sub-arrow { padding-left: 12px; }
.vd-nav .elementor-nav-menu--main .sub-arrow svg { width: 12px; height: 12px; fill: currentColor; }
.vd-nav .elementor-nav-menu--main .sub-menu {
	min-width: 300px !important; /* documented: SmartMenus writes an inline min-width */
	padding: 16px 0; background: var(--color-background); border: 1px solid var(--color-border); border-radius: 0; box-shadow: 0 4px 6px -1px #0000001A, 0 2px 4px -2px #0000001A;
	animation: vd-drop 150ms var(--vd-ease-out);
}
.vd-nav .elementor-nav-menu--main .sub-menu .elementor-sub-item { justify-content: flex-start; text-align: left; padding: 16px 32px; background: transparent; font: 600 16px/24px var(--font-sans), system-ui, sans-serif; color: var(--color-foreground); }
.vd-nav .elementor-nav-menu--main .sub-menu .elementor-sub-item:hover { color: var(--color-primary); background: transparent; }
@keyframes vd-drop { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }

/* Burger and mobile panel (Figma navbar mobile / mobile open). */
.vd-nav .elementor-menu-toggle { width: 36px; height: 36px; padding: 6px; background: transparent; color: var(--color-foreground); border-radius: 0; }
.vd-nav .elementor-menu-toggle svg { fill: currentColor; }
.vd-nav .elementor-nav-menu--dropdown { background: var(--color-background); border-top: 1px solid var(--color-border); }
.vd-nav .elementor-nav-menu--dropdown .elementor-item,
.vd-nav .elementor-nav-menu--dropdown .elementor-sub-item { justify-content: center; padding: 12px 16px; background: transparent; font: 400 16px/24px var(--font-sans), system-ui, sans-serif; color: var(--color-foreground); text-align: center; }
.vd-nav .elementor-nav-menu--dropdown .elementor-item:hover,
.vd-nav .elementor-nav-menu--dropdown .elementor-sub-item:hover { color: var(--color-primary); background: transparent; }

/* Footer link lists - Nav Menu widgets set to vertical. */
.vd-footer-nav .elementor-nav-menu--main .elementor-item { padding: 6px 0; font: 400 14px/20px var(--font-sans), system-ui, sans-serif; color: var(--color-brand-foreground); }
.vd-footer-nav .elementor-nav-menu--main .elementor-item.elementor-item-active { color: var(--color-brand-foreground); text-decoration: underline; text-underline-offset: 3px; }
.vd-footer-nav .elementor-nav-menu--main .elementor-item:hover { color: var(--color-brand-foreground); text-decoration: underline; text-underline-offset: 3px; }
.vd-footer-nav .elementor-nav-menu--main .elementor-item::before,
.vd-footer-nav .elementor-nav-menu--main .elementor-item::after { display: none; }
.vd-footer .vd-logo { color: var(--color-brand-foreground); }
.elementor .vd-footer a:not(.vd-btn-light) { color: inherit; }
.elementor .vd-footer .vd-btn-light { color: #2C3744; align-self: flex-start; } /* fixed ink: the button stays light in both modes */

/* Footer: rule above the bottom bar, legal links in a row. */
.elementor .vd-footer-bottom { border-top: 1px solid #FFFFFF3D; }
.vd-footer-legal .elementor-nav-menu--main .elementor-nav-menu { gap: 32px; }
.vd-footer-legal .elementor-nav-menu--main .elementor-item { padding: 0; }

/* Mobile header order: logo, mode switch, burger (Figma navbar mobile). */
@media (max-width: 767px) {
	.elementor .vd-header .vd-nav { order: 3; }
	.elementor .vd-header .vd-header-actions { margin-left: auto; }
}

/* Buttons: right arrow from the Figma Button component (Show Right Icon). */
.vd-btn-arrow::after {
	content: ""; width: 20px; height: 20px; flex: 0 0 20px; 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='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%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='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform 150ms var(--vd-ease-out);
}
.vd-btn-arrow:hover::after { transform: translateX(3px); }
/* Buttons printed by shortcodes carry the same look as the atomic classes. */
.vd-sc-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 56px; padding: 16px 24px; border: 1px solid var(--color-border); font: 500 16px/24px var(--font-sans), system-ui, sans-serif; color: var(--color-foreground); text-decoration: none; transition: background-color 150ms var(--vd-ease-out); }
.vd-sc-btn:hover { background: var(--color-secondary); }

/* Icons */
.vd-icon { display: inline-flex; color: var(--color-foreground); line-height: 0; }
.vd-icon svg { width: 100%; height: auto; }
.vd-ic-af { fill: var(--color-accent, #B89A52); }
.vd-ic-as { stroke: var(--color-accent, #B89A52); } /* pictograms keep the brand gold; text uses the AA gold */
.vd-icon-stat-years, .vd-icon-stat-regions, .vd-icon-stat-projects { width: 300px; max-width: 100%; }
.vd-icon-step-1, .vd-icon-step-2, .vd-icon-step-3, .vd-icon-step-4 { width: 190px; }
.vd-icon-scroll { width: 72px; }
@media (max-width: 1024px) { .vd-icon-step-1, .vd-icon-step-2, .vd-icon-step-3, .vd-icon-step-4 { width: 120px; } }
@media (max-width: 1024px) and (min-width: 768px) { .elementor .vd-step > .elementor-widget-shortcode { flex: 0 0 120px; } }

/* Hero video layer */
.elementor .vd-hero { position: relative; overflow: hidden; }
.vd-hero-video { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.vd-hero-video video { width: 100%; height: 100%; object-fit: cover; opacity: 0.55; }
html[data-theme="dark"] .vd-hero-video video { opacity: 0.18; }
.elementor .vd-hero > *:not(.elementor-widget-shortcode:first-child) { position: relative; z-index: 1; }
.elementor .vd-hero > .elementor-widget-shortcode:first-child { position: absolute; inset: 0; z-index: 0; }
.vd-hero-logo .vd-logo { color: var(--color-foreground); }
.vd-hero-logo .vd-logo-svg { width: 680px; max-width: 100%; height: auto; }

/* Territorial branding band: the Figma map behind, fading from haze. */
.elementor .vd-section-map { background: linear-gradient(90deg, var(--color-haze) 0%, transparent 100%), url("../img/territorial-map.webp") center / cover no-repeat; }
html[data-theme="dark"] .elementor .vd-section-map { background: linear-gradient(90deg, var(--color-haze) 0%, #2C3744CC 100%), url("../img/territorial-map.webp") center / cover no-repeat; }

/* Map band: content pinned top and bottom over the 840px map, markers on top of the image. */
.elementor .vd-section-map { position: relative; }
.elementor .vd-section-map > .vd-container { position: relative; z-index: 1; min-height: 712px; }
.elementor .vd-section-map > .vd-container > .vd-row.vd-row:last-child { margin-top: auto; align-items: flex-end; }
.elementor .vd-section-map > .elementor-widget-shortcode { position: absolute; inset: 0; z-index: 0; }
.vd-map-pins { position: absolute; inset: 0; pointer-events: none; }
.vd-map-pin { position: absolute; width: 52px; height: 52px; line-height: 0; }
.vd-map-pin-lg { transform: scale(1.35); }
@media (max-width: 767px) {
	.elementor .vd-section-map > .vd-container { min-height: 0; }
	.vd-map-pins { display: none; }
}

/* "Избранное" grid - Figma frame 35771:1167: 680 wide | 563 tall, then 563 tall | 680 wide. */
.vd-featured-grid { display: grid; grid-template-columns: 1fr 1fr; column-gap: 24px; row-gap: 24px; align-items: start; transition: opacity 200ms var(--vd-ease-in-out); }
.vd-featured-grid.is-switching { opacity: 0; }
.vd-featured-grid .vd-project-card { display: flex; flex-direction: column; color: inherit; text-decoration: none; }
.vd-featured-grid .vd-project-card[hidden] { display: none; }
.vd-featured-grid .vd-slot-2 { justify-self: end; width: 82.8%; }
.vd-featured-grid .vd-slot-3 { width: 82.8%; }
.vd-project-card-media { display: block; overflow: hidden; background: var(--color-haze); }
.vd-project-card-media.vd-fit { background: #ffffff; }
.vd-featured-grid .vd-project-card-media.vd-fit img.vd-project-card-img { object-fit: contain; padding: 6%; } /* logo covers: whole logo, never cropped */
.vd-featured-grid .vd-project-card-media img.vd-project-card-img { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; transition: transform 400ms var(--vd-ease-out); }
.vd-project-card:hover .vd-project-card-img { transform: scale(1.04); }
.vd-slot-1 .vd-project-card-media, .vd-slot-4 .vd-project-card-media { aspect-ratio: 680 / 428; }
.vd-slot-2 .vd-project-card-media { aspect-ratio: 563 / 674; }
.vd-slot-3 .vd-project-card-media { aspect-ratio: 563 / 562; }
.vd-project-card-title { margin-top: 24px; font: 600 36px/40px var(--font-sans), system-ui, sans-serif; letter-spacing: -0.9px; color: var(--color-foreground); }
.vd-project-card-meta { display: flex; justify-content: space-between; gap: 24px; margin-top: 16px; padding-bottom: 24px; border-bottom: 1px solid var(--color-border); font: 200 16px/20px var(--font-sans), system-ui, sans-serif; letter-spacing: 3px; text-transform: uppercase; color: var(--color-muted-foreground); }
.elementor .vd-tabs.vd-featured-tabs, .vd-featured-tabs { background: transparent; border: 0; padding: 0; gap: 8px; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
.vd-featured-tabs .vd-tab { flex: 0 0 auto; }
.vd-featured-tabs .vd-tab { height: 44px; padding: 0 16px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--color-muted-foreground); font: 500 14px/20px var(--font-sans), system-ui, sans-serif; cursor: pointer; }
.vd-featured-tabs .vd-tab[aria-selected="true"] { background: transparent; color: var(--color-foreground); border-bottom-color: var(--color-primary); }
@media (max-width: 767px) {
	.vd-featured-grid { grid-template-columns: 1fr; }
	.vd-featured-grid .vd-slot-2, .vd-featured-grid .vd-slot-3 { width: 100%; justify-self: stretch; }
	.vd-featured-grid .vd-project-card-media { aspect-ratio: 4 / 3; }
	.vd-project-card-title { font-size: 30px; line-height: 36px; letter-spacing: -0.75px; }
	.vd-project-card-meta { font-size: 14px; letter-spacing: 2px; }
}

/* Cards: one 4:3 frame everywhere so titles always line up; the cover sits whole and centred inside it (client, 20 Oct).
   Every frame has the same soft colour, so all cards read as equal boxes (Ashot, 20 Oct). */
.vd-featured-grid .vd-project-card .vd-project-card-media { aspect-ratio: 4 / 3 !important; height: auto; background: #E4E6EE; display: flex; align-items: center; justify-content: center; } /* documented: beats the slot shapes above */
.vd-featured-grid .vd-project-card .vd-project-card-media img.vd-project-card-img { width: 100%; height: 100%; object-fit: contain; object-position: center; padding: 0; }
.vd-featured-grid .vd-project-card:hover .vd-project-card-img { transform: scale(1.02); }
.vd-featured-grid .vd-project-card.vd-slot-2, .vd-featured-grid .vd-project-card.vd-slot-3 { width: 100%; justify-self: stretch; }
html[data-theme="dark"] .vd-featured-grid .vd-project-card .vd-project-card-media { background: #343849; }
.vd-featured-grid .vd-project-card .vd-project-card-media.vd-fit { background: #E4E6EE; }
html[data-theme="dark"] .vd-featured-grid .vd-project-card .vd-project-card-media.vd-fit { background: #343849; } /* equal widths, so equal heights in a row */

/* Projects archive */
.vd-archive-bar { display: flex; justify-content: space-between; align-items: center; gap: 24px; flex-wrap: wrap; margin-bottom: 48px; }
.vd-archive-tools { display: flex; gap: 16px; flex-wrap: wrap; }
.vd-field select, .vd-field input { height: 44px; padding: 0 16px; border: 1px solid var(--color-border); border-radius: 0; background: var(--color-background); color: var(--color-foreground); font: 400 14px/20px var(--font-sans), system-ui, sans-serif; }
.vd-field input { width: 280px; max-width: 100%; }
.vd-field select:focus-visible, .vd-field input:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; border-color: var(--color-primary); }
.vd-archive-grid { row-gap: 64px; }
/* The archive is a plain two-column grid: every card the same wide shape, so rows stay even. */
.vd-archive-grid .vd-project-card, .vd-related-grid .vd-project-card { width: 100% !important; justify-self: stretch !important; } /* documented: overrides the homepage slot widths */
.vd-archive-grid .vd-project-card .vd-project-card-media, .vd-related-grid .vd-project-card .vd-project-card-media { aspect-ratio: 680 / 428; }
.vd-empty { font: 200 16px/24px var(--font-sans), system-ui, sans-serif; color: var(--color-muted-foreground); }
@media (max-width: 767px) { .vd-archive-tools, .vd-field, .vd-field input, .vd-field select { width: 100%; } .vd-archive-grid { row-gap: 40px; } }

/* Single project */
.vd-project-hero { display: flex; flex-direction: column; gap: 24px; }
.vd-project-back { display: inline-flex; gap: 16px; width: fit-content; font: 200 20px/24px var(--font-sans), system-ui, sans-serif; letter-spacing: 3px; text-transform: uppercase; color: var(--color-primary); text-decoration: none; }
.vd-project-back:hover { text-decoration: underline; text-underline-offset: 4px; }
.vd-project-title { margin: 24px 0 0; font: 600 60px/60px var(--font-sans), system-ui, sans-serif; letter-spacing: -1.5px; color: var(--color-foreground); overflow-wrap: break-word; }
.vd-project-meta { margin: 0; font: 200 16px/20px var(--font-sans), system-ui, sans-serif; letter-spacing: 3px; text-transform: uppercase; color: var(--color-muted-foreground); }
.vd-project-meta .vd-dot { margin: 0 12px; color: var(--color-border); }
.vd-project-lead { max-width: 797px; margin: 0; font: 300 24px/32px var(--font-sans), system-ui, sans-serif; letter-spacing: -0.6px; color: var(--color-foreground); }
.vd-project-cover { margin: 24px 0 0; }
.vd-project-cover img { display: block; width: auto; max-width: 100%; height: auto; max-height: min(80vh, 760px); margin: 0 auto; } /* whole image, never cropped (client, 8 Oct); tall images are scaled down, not cut */
@media (max-width: 767px) {
	.vd-project-title { font-size: 36px; line-height: 40px; letter-spacing: -0.9px; hyphens: auto; }
	.vd-project-back { font-size: 16px; line-height: 20px; }
	.vd-project-lead { font-size: 20px; line-height: 28px; }
}

/* Search results */
.vd-search-form { display: flex; gap: 16px; flex-wrap: wrap; }
.vd-search-form .vd-field input { width: 420px; height: 56px; }
.vd-search-count { margin: 24px 0 0; font: 200 16px/20px var(--font-sans), system-ui, sans-serif; letter-spacing: 3px; text-transform: uppercase; color: var(--color-muted-foreground); }
.vd-search-list { list-style: none; margin: 24px 0 0; padding: 0; }
.vd-search-item { display: flex; gap: 24px; align-items: baseline; padding: 24px 0; border-bottom: 1px solid var(--color-border); }
.vd-search-type { flex: 0 0 140px; font: 200 16px/20px var(--font-sans), system-ui, sans-serif; letter-spacing: 3px; text-transform: uppercase; color: var(--color-primary); }
.vd-search-title { font: 300 24px/32px var(--font-sans), system-ui, sans-serif; letter-spacing: -0.6px; color: var(--color-foreground); text-decoration: none; }
.vd-search-title:hover { color: var(--color-primary); }
@media (max-width: 767px) { .vd-search-item { flex-direction: column; gap: 8px; } .vd-search-type { flex-basis: auto; } .vd-search-form .vd-field input { width: 100%; } }

/* Legacy widgets that still read Elementor's Global Colors follow dark mode too. */
html[data-theme="dark"], html[data-theme="dark"] body, html[data-theme="dark"] [class*="elementor-kit-"] { --e-global-color-primary: #B89A52; --e-global-color-secondary: #DADDE3; --e-global-color-text: #DADDE3; --e-global-color-accent: #B89A52; }
.elementor .vd-form .elementor-button.elementor-button[type="submit"], .elementor .vd-form .elementor-button.elementor-button[type="submit"] .elementor-button-text { background-color: var(--color-primary); color: var(--color-primary-foreground); }

/* Team member page */
.vd-profile { display: flex; gap: 141px; align-items: flex-start; }
.vd-profile-photo { position: sticky; top: 120px; }
.vd-profile-text { display: flex; flex-direction: column; gap: 24px; max-width: 680px; }
.vd-profile-bio p { margin: 0 0 16px; font: 200 16px/24px var(--font-sans), system-ui, sans-serif; color: var(--color-foreground); }
.vd-profile-bio p:first-child { font: 300 24px/32px var(--font-sans), system-ui, sans-serif; letter-spacing: -0.6px; }
@media (max-width: 1024px) { .vd-profile { gap: 48px; } }
@media (max-width: 767px) { .vd-profile { flex-direction: column; } .vd-profile-photo { position: static; } .vd-profile-bio p:first-child { font-size: 20px; line-height: 28px; } }

/* Contact form - Elementor Pro Form, restyled to the Figma inputs (border, square, 44px). */
.vd-form .elementor-field-group { margin-bottom: 16px; }
.vd-form .elementor-field-group > label { font: 200 16px/20px var(--font-sans), system-ui, sans-serif; letter-spacing: 3px; text-transform: uppercase; color: var(--color-muted-foreground); margin-bottom: 8px; }
.vd-form .elementor-field-textual { min-height: 48px; padding: 12px 16px; border: 1px solid var(--color-border) !important; border-radius: 0 !important; background: var(--color-background) !important; color: var(--color-foreground) !important; font: 400 16px/24px var(--font-sans), system-ui, sans-serif !important; } /* documented: the Pro form writes its own field colours with high specificity */
.vd-form .elementor-field-textual:focus { outline: 2px solid var(--color-ring); outline-offset: 2px; border-color: var(--color-primary) !important; }
.vd-form .elementor-field-type-acceptance label, .vd-form .elementor-field-type-acceptance a { font: 200 14px/20px var(--font-sans), system-ui, sans-serif; color: var(--color-muted-foreground); letter-spacing: 0; text-transform: none; }
.vd-form .elementor-button { height: 56px; padding: 16px 24px; border-radius: 0; background: var(--color-primary); color: var(--color-primary-foreground); font: 500 16px/24px var(--font-sans), system-ui, sans-serif; letter-spacing: 0.32px; text-transform: uppercase; transition: opacity 150ms var(--vd-ease-out); }
.vd-form .elementor-button:hover { opacity: 0.88; }
.vd-form .elementor-message { font: 400 14px/20px var(--font-sans), system-ui, sans-serif; }

/* Person card (homepage "О нас"). */
.vd-person-card-inner { display: flex; align-items: center; gap: 141px; }
.vd-person-photo { flex: 0 0 327px; aspect-ratio: 327 / 455; border: 1px solid var(--color-border); overflow: hidden; }
.vd-person-photo img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); }
.vd-person-text { max-width: 561px; }
.vd-person-name { margin: 0; font: 600 60px/60px var(--font-sans), system-ui, sans-serif; letter-spacing: -1.5px; color: var(--color-foreground); }
.vd-person-role { margin: 24px 0 0; font: 200 16px/20px var(--font-sans), system-ui, sans-serif; letter-spacing: 3px; text-transform: uppercase; color: var(--color-muted-foreground); }
.vd-person-bio { margin: 32px 0 32px; font: 200 16px/24px var(--font-sans), system-ui, sans-serif; letter-spacing: -0.6px; color: var(--color-foreground); }
@media (max-width: 1024px) { .vd-person-card-inner { gap: 48px; } }
@media (max-width: 767px) {
	.vd-person-card-inner { flex-direction: column; align-items: flex-start; gap: 24px; }
	.vd-person-photo { flex-basis: auto; width: 100%; max-width: 327px; }
	.vd-person-name { font-size: 48px; line-height: 48px; letter-spacing: -1.2px; }
}

/* Section reveal (Ashot: light fade-in). Only when JS runs, never above the fold, once per element. */
html.vd-js .vd-reveal { opacity: 0; transform: translateY(24px); transition: opacity 400ms var(--vd-ease-out), transform 400ms var(--vd-ease-out); transition-delay: var(--vd-delay, 0ms); }
html.vd-js .vd-reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	html.vd-js .vd-reveal { opacity: 1; transform: none; transition: none; }
}
/* Hero entrance on load. */
html.vd-js .vd-hero .vd-hero-inner { animation: vd-fade 600ms var(--vd-ease-out) both; }
@keyframes vd-fade { from { opacity: 0; } to { opacity: 1; } }

/* Anchor targets (menu links to /kompetentsii/#...) land below the sticky header. */
.elementor .e-con[id] { scroll-margin-top: 96px; }
html { scroll-behavior: smooth; }

/* Long Russian words (Территориальный) must never push a phone sideways. */
.elementor h1, .elementor h2, .elementor h3, .elementor p { overflow-wrap: break-word; }
@media (max-width: 767px) {
	.elementor h1, .elementor h2, .elementor h3 { hyphens: auto; -webkit-hyphens: auto; }
}

/* Accessibility: one visible focus ring everywhere (WCAG 2.4.7 / 2.4.11), 3:1 against the page. */
.elementor a:focus-visible, .elementor button:focus-visible, .elementor input:focus-visible, .elementor select:focus-visible, .elementor textarea:focus-visible, .vd-cookie :focus-visible, .skip-link:focus-visible {
	outline: 2px solid var(--color-foreground); outline-offset: 3px;
}
.elementor .vd-section-brand :focus-visible, .elementor .vd-footer :focus-visible { outline-color: var(--color-brand-foreground); }
.vd-nav .elementor-item:focus-visible, .vd-footer-nav .elementor-item:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
[data-vd-main]:focus { outline: none; }

/* Hover on plain text links (phone, email, Telegram) and the footer logo. */
.elementor .e-paragraph-link-base, .elementor .e-heading-link-base { text-decoration: none; text-underline-offset: 4px; }
.elementor .e-paragraph-link-base:hover, .elementor .e-heading-link-base:hover { text-decoration: underline; }
.vd-footer .vd-logo, .vd-header .vd-logo { transition: opacity 150ms var(--vd-ease-out); }
.vd-footer .vd-logo:hover, .vd-header .vd-logo:hover { opacity: 0.8; }
.vd-empty { margin: 0; }

/* Burger from tablet down (header nav switches at 1024). */
@media (max-width: 1024px) {
	.elementor .vd-header .vd-nav { order: 3; flex: 0 0 auto; }
	.elementor .vd-header .vd-header-actions { margin-left: auto; }
	.elementor .vd-header { gap: 16px; }
}

/* Mode switch - Figma mode-switch-button, 56 x 56 with a 20px sun */
.vd-mode-switch {
	display: inline-flex; align-items: center; justify-content: center;
	width: 56px; height: 56px; padding: 0; border: 0; border-radius: 0;
	background: transparent; color: var(--color-foreground); cursor: pointer;
	transition: background-color 150ms var(--vd-ease-out);
}
.vd-mode-switch:hover { background: var(--color-secondary); }
.vd-mode-switch:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }
.vd-mode-switch-moon { display: none; }
html[data-theme="dark"] .vd-mode-switch-sun { display: none; }
html[data-theme="dark"] .vd-mode-switch-moon { display: block; }

/* Cookie notice */
.vd-cookie {
	position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 9999;
	max-width: 560px; margin-left: auto;
	display: flex; gap: 16px; align-items: center; justify-content: space-between;
	padding: 16px 24px; background: var(--color-background); color: var(--color-foreground);
	border: 1px solid var(--color-border);
	font: 200 14px/20px Geologica, system-ui, sans-serif;
}
.vd-cookie[hidden] { display: none; }
.vd-cookie-text { margin: 0; }
.vd-cookie-link { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.vd-cookie-ok {
	flex: 0 0 auto; height: 40px; padding: 0 16px; border: 1px solid var(--color-primary);
	background: var(--color-primary); color: var(--color-primary-foreground);
	font: 500 14px/20px Geologica, system-ui, sans-serif; cursor: pointer;
}

/* Tabs (project body) - Figma Tabs, variant Line */
.vd-tabs { display: inline-flex; gap: 4px; padding: 4px; background: var(--color-secondary); border: 1px solid var(--color-border); max-width: 100%; overflow-x: auto; }
.vd-tab { height: 44px; padding: 0 16px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--color-muted-foreground); font: 500 14px/20px Geologica, system-ui, sans-serif; cursor: pointer; white-space: nowrap; transition: color 150ms var(--vd-ease-out), background-color 200ms var(--vd-ease-in-out); }
.vd-tab:hover { color: var(--color-foreground); }
.vd-tab[aria-selected="true"] { background: var(--color-background); color: var(--color-foreground); border-bottom-color: var(--color-primary); }
.vd-tab:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }
.vd-tab-panel { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 32px; }
.vd-tab-panel[hidden] { display: none; }
.vd-tab-col-title { margin: 0 0 16px; font: 600 24px/32px Geologica, system-ui, sans-serif; letter-spacing: -0.6px; color: var(--color-foreground); }
.vd-tab-col-text { margin: 0; font: 200 16px/24px Geologica, system-ui, sans-serif; color: var(--color-foreground); }

/* Project body */
.vd-project-body { display: flex; flex-direction: column; gap: 48px; }
.vd-pb-title { max-width: 797px; margin: 0 auto 24px; font: 600 36px/40px Geologica, system-ui, sans-serif; letter-spacing: -0.9px; color: var(--color-foreground); }
.vd-pb-prose { max-width: 797px; margin-inline: auto; font: 300 20px/30px Geologica, system-ui, sans-serif; color: var(--color-foreground); }
.vd-pb-prose b, .vd-pb-prose strong { font-weight: 500; }
.vd-pb-prose p { margin: 0 0 16px; }
.vd-pb-image { margin: 0; }
.vd-pb-image .vd-img-dark { display: none; }
html[data-theme="dark"] .vd-pb-image.vd-has-dark .vd-img-light { display: none; }
html[data-theme="dark"] .vd-pb-image.vd-has-dark .vd-img-dark { display: block; }
.vd-pb-gallery .vd-project-img.vd-img-small, .vd-pb-pair .vd-project-img.vd-img-small { width: 100% !important; max-width: none; margin: 0; } /* in a grid, small sources fill their cell so rows stay even */
.vd-pb-image .vd-project-img.vd-img-small { width: auto !important; max-width: min(100%, 400px); height: auto; margin: 0 auto; display: block; } /* documented: beats the full-width rule for real photos */
.vd-project-img { display: block; width: 100%; height: auto; }
.vd-pb-caption { margin-top: 8px; font: 200 14px/20px Geologica, system-ui, sans-serif; color: var(--color-muted-foreground); }
.vd-pb-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
/* Galleries: 2 per row by default (client, 8 Oct), every image in a row the same size via one shared box. */
.vd-pb-gallery { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; align-items: start; }
.vd-pb-gallery.vd-cols-1 { grid-template-columns: 1fr; }
.vd-pb-gallery.vd-cols-3 { grid-template-columns: repeat(3, 1fr); }
.vd-pb-gallery.vd-cols-2 .vd-pb-gallery-item img, .vd-pb-gallery.vd-cols-3 .vd-pb-gallery-item img, .vd-pb-pair img { display: block; width: 100%; height: auto; aspect-ratio: var(--vd-box, 4 / 3); object-fit: contain; background: var(--vd-frame, #E4E6EE); } /* whole picture in an equal frame, never cut (client, 27 Oct) */
:root { --vd-frame: #E4E6EE; }
html[data-theme="dark"] { --vd-frame: #343849; }
.vd-pb-gallery.vd-cols-1 .vd-pb-gallery-item img { display: block; width: 100%; height: auto; }
/* An odd last image in a 2-up gallery takes the full row at its own shape, never a half-empty row. */
.vd-pb-gallery.vd-cols-2 .vd-pb-gallery-item:last-child:nth-child(odd) { grid-column: 1 / -1; }
.vd-pb-gallery.vd-cols-2 .vd-pb-gallery-item:last-child:nth-child(odd) img { aspect-ratio: auto; object-fit: initial; }
.vd-pb-video iframe, .vd-pb-video video { display: block; width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; }
.vd-pb-list-items { list-style: none; margin: 0 auto; padding: 0; max-width: 797px; }
.vd-pb-list > .vd-pb-title + .vd-pb-list-items, .vd-pb-text > * { margin-inline: auto; } /* text column centred under the images (client, 27 Oct) */
.vd-pb-list-items .vd-list-item { font: 400 18px/28px Geologica, system-ui, sans-serif; }
.vd-list-item { padding: 16px 0; border-top: 1px solid var(--color-border); font: 500 16px/24px Geologica, system-ui, sans-serif; }

@media (max-width: 767px) {
	.vd-project-body { gap: 32px; }
	.vd-pb-title { font-size: 30px; line-height: 36px; letter-spacing: -0.75px; }
	.vd-pb-pair { grid-template-columns: 1fr; gap: 16px; }
	.vd-pb-pair img { aspect-ratio: auto; object-fit: initial; }
	.vd-pb-gallery, .vd-pb-gallery.vd-cols-2 { grid-template-columns: 1fr; gap: 16px; }
	.vd-pb-gallery.vd-cols-3 { grid-template-columns: repeat(2, 1fr); gap: 12px; }
	.vd-pb-gallery.vd-cols-2 .vd-pb-gallery-item img { aspect-ratio: auto; object-fit: initial; }
	.vd-pb-prose { font-size: 18px; line-height: 28px; }
	.vd-tab-panel { grid-template-columns: 1fr; }
	.vd-cookie { flex-direction: column; align-items: stretch; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 1ms !important; /* documented: reduced-motion override must win */
		transition-duration: 1ms !important;
		scroll-behavior: auto !important;
	}
}

/* CTA outline button on purple: readable on hover (client, 3 Nov) */
.vd-btn-on-brand:hover, .vd-btn-on-brand:focus-visible { color: #232838 !important; }
.vd-btn-on-brand:hover svg, .vd-btn-on-brand:focus-visible svg { stroke: currentColor; color: #232838; }

/* Legal pages (privacy policy, terms of use; body class vd-legal added by enneon-core): same type and centred column as the project pages (Ashot, 5 Nov) */
body.vd-legal main.site-main { max-width: 1512px; margin: 0 auto; padding: 96px 64px 120px; box-sizing: border-box; }
body.vd-legal .page-header, body.vd-legal .page-content { max-width: 797px; margin-inline: auto; }
body.vd-legal .page-header .entry-title { margin: 0 0 32px; font: 600 48px/52px Geologica, system-ui, sans-serif; letter-spacing: -1.2px; color: var(--color-foreground); }
body.vd-legal .page-content { font: 300 18px/28px Geologica, system-ui, sans-serif; color: var(--color-foreground); overflow-wrap: break-word; }
body.vd-legal .page-content h2 { margin: 48px 0 16px; font: 600 28px/34px Geologica, system-ui, sans-serif; letter-spacing: -0.5px; color: var(--color-foreground); }
body.vd-legal .page-content p { margin: 0 0 16px; }
body.vd-legal .page-content ul { margin: 0 0 16px; padding-left: 24px; }
body.vd-legal .page-content li { margin: 0 0 8px; }
body.vd-legal .page-content a { color: var(--color-primary, #80672E); }
@media (max-width: 767px) {
	body.vd-legal main.site-main { padding: 56px 16px 80px; }
	body.vd-legal .page-header .entry-title { font-size: 28px; line-height: 32px; letter-spacing: -0.7px; hyphens: auto; overflow-wrap: break-word; } /* «конфиденциальности» must fit a 328px column */
	body.vd-legal .page-content { font-size: 16px; line-height: 26px; }
	body.vd-legal .page-content h2 { margin-top: 36px; font-size: 22px; line-height: 28px; }
}
