/* MST Digital Studio theme layer: fonts, header, mobile menu, footer, testimonials and shared content styles. */

@font-face { font-family: "Bricolage Grotesque"; font-style: normal; font-weight: 200 800; font-display: swap; src: url("../fonts/bricolage-grotesque-wght.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Bricolage Grotesque"; font-style: normal; font-weight: 200 800; font-display: swap; src: url("../fonts/bricolage-grotesque-ext-wght.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Instrument Sans"; font-style: normal; font-weight: 400 700; font-display: swap; src: url("../fonts/instrument-sans-wght.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Instrument Sans"; font-style: normal; font-weight: 400 700; font-display: swap; src: url("../fonts/instrument-sans-ext-wght.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Instrument Serif"; font-style: italic; font-weight: 400; font-display: swap; src: url("../fonts/instrument-serif-italic.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Instrument Serif"; font-style: italic; font-weight: 400; font-display: swap; src: url("../fonts/instrument-serif-italic-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }

:root {
	--mst-serif: "Instrument Serif", Georgia, serif;
	--mst-bg: #070A18;
	--mst-surface: #0D1230;
	--mst-raised: #141B3F;
	--mst-line: #232B55;
	--mst-ink: #EEF1FA;
	--mst-muted: #A3ACC9;
	--mst-accent: #2F6BFF;
	--mst-accent-soft: #8DB0FF;
	--mst-display: "Bricolage Grotesque", sans-serif;
	--mst-body: "Instrument Sans", sans-serif;
	--mst-header-h: 88px;
	--mst-ease: cubic-bezier(.22, 1, .36, 1);
}

html { scroll-behavior: smooth; overscroll-behavior-y: none; }
/* Lenis (smooth scrolling on desktop) */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: clip; }
/* A faint film grain over the whole page, for depth on the dark grounds. */
body.mst-site::after { content: ""; position: fixed; inset: 0; z-index: 2000; pointer-events: none; opacity: .045; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
body.mst-site { background-color: var(--mst-bg); color: var(--mst-ink); font-family: var(--mst-body); overflow-x: clip; }
/* body's overflow is handed to the viewport, which mobile Chrome still widens when an element slides in from
   the side; clipping the page wrapper keeps the layout at the screen width. */
body.mst-site #page { overflow-x: hidden; overflow-x: clip; }
body.mst-site:not(.elementor-page) #content { padding-top: calc(var(--mst-header-h) + 40px); }
::selection { background: var(--mst-accent); color: #fff; }

/* ---------- Buttons (theme parts) ---------- */
.mst-btn { display: inline-flex; align-items: center; gap: 8px; font-family: var(--mst-body); font-weight: 600; font-size: 15px; line-height: 1.2; border-radius: 999px; padding: 13px 22px; text-decoration: none; transition: background-color .3s, transform .3s var(--mst-ease), border-color .3s; }
.mst-btn--primary { background: var(--mst-accent); color: #fff; }
.mst-btn--primary:hover, .mst-btn--primary:focus-visible { background: #4A7FFF; color: #fff; transform: translateY(-2px); }

/* ---------- Header ---------- */
.mst-header { position: fixed; top: 0; left: 0; right: 0; z-index: 1000; transition: transform .45s var(--mst-ease), background-color .35s, border-color .35s, backdrop-filter .35s; border-bottom: 1px solid transparent; }
/* Hero copy waits for its entrance (mst.js); the mst-fx class is removed after 3.5 s if scripts never run. */
.mst-fx .elementor > .e-con:first-child :is(.e-paragraph-base, .e-button-base, .mst-trust) { visibility: hidden; }
body.admin-bar .mst-header { top: 32px; }
@media (max-width: 782px) { body.admin-bar .mst-header { top: 46px; } }
.mst-header.is-scrolled, .mst-header.is-open { background: rgba(7, 10, 24, .74); -webkit-backdrop-filter: blur(16px) saturate(140%); backdrop-filter: blur(16px) saturate(140%); border-bottom-color: rgba(35, 43, 85, .85); }
.mst-header.is-hidden { transform: translateY(-110%); }
.mst-header__inner { max-width: 1248px; margin: 0 auto; padding: 0 24px; height: var(--mst-header-h); display: flex; align-items: center; gap: 32px; transition: height .35s var(--mst-ease); }
.mst-header.is-scrolled .mst-header__inner { height: 72px; }
.mst-header__logo { display: inline-flex; flex: 0 0 auto; }
.mst-logo { height: 48px; width: auto; display: block; transition: height .35s var(--mst-ease); }
.mst-header.is-scrolled .mst-logo { height: 42px; }

.mst-nav { margin-left: auto; }
.mst-nav__list, .mst-nav__list ul { list-style: none; margin: 0; padding: 0; }
.mst-nav__list { display: flex; align-items: center; gap: 30px; }
.mst-nav__list > li { position: relative; }
.mst-nav__list a { font-family: var(--mst-body); font-size: 15px; font-weight: 500; color: var(--mst-ink); text-decoration: none; opacity: .82; transition: opacity .25s, color .25s; }
.mst-nav__list > li > a { position: relative; display: inline-flex; align-items: center; gap: 6px; padding: 10px 0; }
.mst-nav__list > li > a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 4px; height: 1px; background: var(--mst-accent-soft); transform: scaleX(0); transform-origin: right; transition: transform .4s var(--mst-ease); }
.mst-nav__list > li > a:hover, .mst-nav__list > .current-menu-item > a, .mst-nav__list > .current-menu-ancestor > a { opacity: 1; }
.mst-nav__list > li > a:hover::after, .mst-nav__list > .current-menu-item > a::after, .mst-nav__list > .current-menu-ancestor > a::after { transform: scaleX(1); transform-origin: left; }
.mst-nav__list > .menu-item-has-children > a::before { content: ""; order: 2; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); }
.mst-nav__list .sub-menu { position: absolute; top: 100%; left: -18px; min-width: 260px; padding: 10px; background: rgba(13, 18, 48, .96); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); border: 1px solid var(--mst-line); border-radius: 20px; box-shadow: 0 24px 60px rgba(47, 107, 255, .14); opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity .3s, transform .35s var(--mst-ease), visibility .3s; }
.mst-nav__list li:hover > .sub-menu, .mst-nav__list li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.mst-nav__list .sub-menu a { display: block; padding: 11px 14px; border-radius: 12px; opacity: .9; }
.mst-nav__list .sub-menu a:hover, .mst-nav__list .sub-menu .current-menu-item > a { background: var(--mst-raised); opacity: 1; color: #fff; }

.mst-header__actions { display: flex; align-items: center; gap: 18px; }
.mst-lang { display: inline-flex; align-items: center; gap: 2px; padding: 3px; border: 1px solid var(--mst-line); border-radius: 999px; }
.mst-lang__item { font-family: var(--mst-body); font-size: 12px; font-weight: 600; letter-spacing: .06em; color: var(--mst-muted); text-decoration: none; padding: 5px 9px; border-radius: 999px; transition: color .25s, background-color .25s; }
.mst-lang__item:hover { color: var(--mst-ink); }
.mst-lang__item.is-current { background: var(--mst-raised); color: var(--mst-ink); }
.mst-header__cta { padding: 12px 20px; font-size: 14px; }

.mst-burger { display: none; width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--mst-line); background: transparent; position: relative; cursor: pointer; padding: 0; }
.mst-burger:hover, .mst-burger:focus { background: transparent; border-color: var(--mst-accent-soft); }
.mst-burger__line { position: absolute; left: 13px; right: 13px; height: 1.5px; background: var(--mst-ink); transition: transform .4s var(--mst-ease), top .4s var(--mst-ease); }
.mst-burger__line:nth-of-type(2) { top: 19px; }
.mst-burger__line:nth-of-type(3) { top: 26px; }
.mst-header.is-open .mst-burger__line:nth-of-type(2) { top: 22px; transform: rotate(45deg); }
.mst-header.is-open .mst-burger__line:nth-of-type(3) { top: 22px; transform: rotate(-45deg); }

/* ---------- Mobile menu ---------- */
.mst-menu { position: fixed; inset: 0; z-index: 999; background: var(--mst-bg); padding: calc(var(--mst-header-h) + 24px) 24px 32px; display: flex; flex-direction: column; justify-content: space-between; overflow-x: hidden; overflow-y: auto; opacity: 0; transition: opacity .35s; }
.mst-menu.is-open { opacity: 1; }
.mst-menu[hidden] { display: none; }
.mst-menu__glow { position: absolute; right: -30%; bottom: -20%; width: 90vw; height: 90vw; border-radius: 50%; background: radial-gradient(circle, rgba(47, 107, 255, .35) 0%, rgba(47, 107, 255, 0) 65%); pointer-events: none; }
.mst-menu__list, .mst-menu__list ul { list-style: none; margin: 0; padding: 0; }
.mst-menu__list > li { border-bottom: 1px solid var(--mst-line); overflow: hidden; }
.mst-menu__list > li > a { display: block; padding: 18px 0; font-family: var(--mst-display); font-size: 34px; font-weight: 600; letter-spacing: -.02em; line-height: 1.1; color: var(--mst-ink); text-decoration: none; }
.mst-menu__list .sub-menu { padding: 0 0 18px 2px; display: grid; gap: 4px; }
.mst-menu__list .sub-menu a { font-family: var(--mst-body); font-size: 17px; color: var(--mst-muted); text-decoration: none; padding: 6px 0; display: inline-block; }
.mst-menu__list .current-menu-item > a { color: var(--mst-accent-soft); }
.mst-menu__foot { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 18px; padding-top: 32px; }
.mst-menu__mail { color: var(--mst-ink); font-size: 16px; text-decoration: none; }
.mst-lang--menu { border: 0; padding: 0; gap: 8px; }
.mst-lang--menu .mst-lang__item { font-size: 14px; border: 1px solid var(--mst-line); padding: 8px 14px; }
body.mst-menu-open { overflow: hidden; }

@media (max-width: 1100px) {
	.mst-nav, .mst-header__actions > .mst-lang { display: none; }
	.mst-burger { display: inline-block; }
	.mst-header__actions { margin-left: auto; }
}
@media (max-width: 600px) {
	:root { --mst-header-h: 76px; }
	.mst-header__cta { display: none; }
	.mst-logo { height: 44px; }
	.mst-header.is-scrolled .mst-logo { height: 40px; }
}
/* Phones: at the top of the page the hero image's brightest lines sit right behind the header, so a soft
   shade (and a faint shadow on the logo) keeps the logo legible. Once scrolled, the header's glass takes over. */
@media (max-width: 767px) {
	.mst-header::before { content: ""; position: absolute; inset: 0 0 -36px 0; z-index: -1; pointer-events: none; background: linear-gradient(180deg, rgba(7, 10, 24, .8) 0%, rgba(7, 10, 24, .55) 55%, rgba(7, 10, 24, 0) 100%); transition: opacity .35s; }
	.mst-header.is-scrolled::before, .mst-header.is-open::before { opacity: 0; }
	.mst-header:not(.is-scrolled) .mst-logo { filter: drop-shadow(0 1px 6px rgba(7, 10, 24, .75)); }
}
@media (min-width: 1101px) { .mst-menu { display: none !important; } }

/* ---------- Footer ---------- */
.mst-footer { background: var(--mst-bg); border-top: 1px solid var(--mst-line); color: var(--mst-ink); position: relative; overflow: hidden; }
.mst-footer__inner { max-width: 1248px; margin: 0 auto; padding: 96px 24px 36px; }
.mst-footer__top { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 48px; }
.mst-logo--footer { height: 40px; }
.mst-footer__tagline { margin: 22px 0 18px; max-width: 320px; font-size: 16px; line-height: 1.6; color: var(--mst-muted); }
.mst-footer__mail { font-family: var(--mst-display); font-size: 20px; font-weight: 600; color: var(--mst-ink); text-decoration: none; border-bottom: 1px solid var(--mst-line); padding-bottom: 4px; transition: border-color .3s, color .3s; }
.mst-footer__mail:hover { color: var(--mst-accent-soft); border-color: var(--mst-accent-soft); }
.mst-footer__heading { margin: 6px 0 18px; font-size: 13px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; color: var(--mst-muted); }
.mst-footer__col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.mst-footer__col a { color: var(--mst-ink); text-decoration: none; font-size: 16px; opacity: .85; transition: opacity .25s, color .25s; }
.mst-footer__col a:hover { opacity: 1; color: var(--mst-accent-soft); }
.mst-footer__slogan { margin: 96px 0 48px; font-family: var(--mst-display); font-weight: 600; font-size: min(8.4vw, 116px); line-height: .95; letter-spacing: -.035em; color: var(--mst-ink); }
.mst-footer__slogan em { font-family: var(--mst-serif); font-style: italic; font-weight: 400; font-size: 1.1em; letter-spacing: -.01em; color: var(--mst-accent-soft); }
.mst-footer__bottom { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding-top: 24px; border-top: 1px solid var(--mst-line); font-size: 14px; color: var(--mst-muted); }
.mst-footer__bottom p { margin: 0; }
.mst-footer__top-link { color: var(--mst-ink); text-decoration: none; }
.mst-footer__top-link:hover { color: var(--mst-accent-soft); }
@media (max-width: 1024px) { .mst-footer__top { grid-template-columns: 1fr 1fr; } .mst-footer__brand { grid-column: 1 / -1; } }
@media (max-width: 600px) { .mst-footer__inner { padding: 72px 20px 28px; } .mst-footer__top { grid-template-columns: 1fr; gap: 36px; } .mst-footer__slogan { margin: 64px 0 36px; font-size: 13vw; } }

/* ---------- Testimonials ---------- */
.mst-testi { --fade: var(--mst-surface); width: 100vw; margin-left: calc(50% - 50vw); display: grid; gap: 24px; }
/* The padding gives the hover lift room inside the clipped row; the negative margin keeps the spacing. */
.mst-testi__row { position: relative; overflow: hidden; padding: 14px 0; margin: -14px 0; }
.mst-testi__row::before, .mst-testi__row::after { content: ""; position: absolute; top: 0; bottom: 0; width: 12%; z-index: 2; pointer-events: none; }
.mst-testi__row::before { left: 0; background: linear-gradient(90deg, var(--fade) 0%, rgba(13, 18, 48, 0) 100%); }
.mst-testi__row::after { right: 0; background: linear-gradient(270deg, var(--fade) 0%, rgba(13, 18, 48, 0) 100%); }
/* No backdrop blur on these cards: dozens of blurred, moving layers stall iPhone Safari's rendering. */
.mst-testi__track { display: flex; width: max-content; animation: mst-testi-left 70s linear infinite; }
.mst-testi__row--rev .mst-testi__track { animation-name: mst-testi-right; animation-duration: 80s; }
.mst-testi__row:hover .mst-testi__track, .mst-testi__row:focus-within .mst-testi__track { animation-play-state: paused; }
/* Cards keep their own height (stretching them to the longest review left most of them half empty). */
.mst-testi__set { display: flex; }
.mst-testi__card { flex: 0 0 420px; margin: 0 12px; padding: 32px; display: flex; flex-direction: column; gap: 18px; background: linear-gradient(160deg, rgba(24, 32, 74, .96) 0%, rgba(16, 22, 56, .96) 100%); border: 1px solid rgba(141, 176, 255, .14); border-radius: 28px; box-sizing: border-box; transition: border-color .3s, transform .4s var(--mst-ease); }
.mst-testi__card:hover { border-color: rgba(141, 176, 255, .45); transform: translateY(-4px); }
.mst-testi__head { display: flex; align-items: center; gap: 14px; }
.mst-testi__avatar { flex: 0 0 46px; width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; background: linear-gradient(135deg, #2F6BFF 0%, #141B3F 100%); color: #fff; font-family: var(--mst-display); font-weight: 600; font-size: 16px; letter-spacing: .02em; }
.mst-testi__head .mst-testi__name { margin: 0; font-family: var(--mst-display); font-size: 18px; font-weight: 600; color: var(--mst-ink); line-height: 1.2; }
.mst-testi__head .mst-testi__stars { margin: 4px 0 0; color: var(--mst-accent-soft); font-size: 14px; letter-spacing: 2px; line-height: 1; }
.mst-testi__text { margin: 0; padding: 0; border: 0; font-family: var(--mst-body); font-size: 16.5px; line-height: 1.6; color: #C9D0E6; font-style: normal; }
.mst-testi__text p { margin: 0; }
.mst-testi__text p + p { margin-top: .7em; }
.mst-testi__text.is-clamped { display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; }
.mst-testi__more { align-self: flex-start; padding: 0; background: none; border: 0; color: var(--mst-accent-soft); font-family: var(--mst-body); font-size: 14px; font-weight: 600; text-transform: none; letter-spacing: 0; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.mst-testi__more:hover, .mst-testi__more:focus { background: none; color: #fff; }
.mst-testi button.mst-testi__more { text-transform: none; letter-spacing: 0; font-size: 14px; padding: 0; }
.mst-testi__source { margin-top: auto; font-size: 12px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; color: var(--mst-muted); }
@keyframes mst-testi-left { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes mst-testi-right { from { transform: translateX(-50%); } to { transform: translateX(0); } }
.mst-testi__text .mst-testi__rated { font-family: var(--mst-serif); font-style: italic; font-size: 22px; line-height: 1.35; color: var(--mst-ink); }
/* Phones: one swipeable row with every review (snaps card by card; mst.js moves it along every few
   seconds). Two endless marquees are too heavy for iPhone Safari. */
@media (max-width: 767px) {
	.mst-testi__row--rev, .mst-testi__set--copy, .mst-testi__row::before, .mst-testi__row::after { display: none; }
	.mst-testi__row { overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 6px 0; margin: 0; scroll-padding-inline: 20px; }
	.mst-testi__row::-webkit-scrollbar { display: none; }
	.mst-testi__track { animation: none; padding: 0 14px; }
	.mst-testi__card { flex: 0 0 82vw; max-width: 340px; margin: 0 6px; padding: 24px; scroll-snap-align: center; }
	.mst-testi__card:hover { transform: none; }
}

/* ---------- Shared content styles for Elementor pages ---------- */
/* Titles: sentence case and a lighter, tighter grotesque; the highlighted word switches to a serif italic. */
.elementor h1 { text-transform: none; }
body .elementor .mst-display { font-weight: 600; letter-spacing: -.035em; }
body .elementor .mst-h2 { font-weight: 600; letter-spacing: -.03em; }
.elementor :is(h1, h2, h3) em, .mst-insights__title em { font-family: var(--mst-serif); font-style: italic; font-weight: 400; font-size: 1.1em; line-height: .9; letter-spacing: -.01em; color: var(--mst-accent-soft); padding-right: .03em; }
/* Section labels open with a short rule (not inside cards, where they act as field names). */
.elementor .mst-label, .mst-insights__label { display: inline-flex; align-items: center; gap: 12px; }
.elementor .mst-label::before, .mst-insights__label::before { content: ""; flex: 0 0 28px; height: 1px; background: currentColor; opacity: .7; }
.elementor .mst-card .mst-label::before { display: none; }
.elementor a.mst-btn-primary:hover, .elementor a.mst-btn-primary:focus-visible { box-shadow: 0 14px 34px -12px rgba(47, 107, 255, .75); }

/* Ticker: a quieter line in the serif italic. The track must be as wide as its two copies so -50% moves
   exactly one copy (Elementor's .e-con width would clamp it to the screen); mst.js sets the speed. */
.elementor .e-con.mst-marquee { display: flex; flex-wrap: nowrap; flex-shrink: 0; width: max-content !important; max-width: none !important; animation: mst-marquee 36s linear infinite; }
.mst-marquee > * { flex: 0 0 auto; white-space: nowrap; }
body .elementor .mst-marquee p { font-family: var(--mst-serif); font-style: italic; font-weight: 400; font-size: 34px; letter-spacing: -.005em; line-height: 1.1; color: rgba(238, 241, 250, .82); padding-right: 0; }
.mst-marquee p span { font-family: var(--mst-body); font-style: normal; font-size: .42em; vertical-align: .55em; color: var(--mst-accent); padding: 0 1.4em; }
.elementor .e-con:has(> .mst-marquee) { padding-block: 22px; }
@media (max-width: 767px) {
	body .elementor .mst-marquee p { font-size: 22px; }
	.elementor .e-con:has(> .mst-marquee) { padding-block: 16px; }
}
@keyframes mst-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* Elementor's style conversion drops `inset` and `z-index`, so the full-bleed layers are pinned here:
   the hero background (fx-bg) with its images and shade, and the closing section's arc image. */
/* The background layer reaches 14% above the hero: its scroll drift (12%, mst.js) never uncovers a bare band.
   (body … beats the fx-bg global class, whose own "inset: 0" loads after this file.) */
body .elementor .fx-bg { inset: -14% 0 0 0; z-index: 0; }
/* On load the background fades in and its image settles from a slight zoom, starting with the first paint.
   As CSS animations they run on the graphics card, so they stay smooth while the page's scripts start up.
   The zoom is on the images, not on the layer: GSAP drifts the layer with the scroll, and it would fold a
   `scale` found there into its own transform (the image then stayed zoomed). The fade starts just above
   zero so the image still counts as painted (Largest Contentful Paint). Computers get a shorter, subtler
   zoom: on a big screen the phones' 8% over 2.6 s read as a slow-motion drift. */
@keyframes mst-bg-fade { from { opacity: .01; } }
@keyframes mst-bg-zoom { from { scale: 1.08; } }
@keyframes mst-bg-zoom-pc { from { scale: 1.035; } }
body .elementor .fx-bg { animation: mst-bg-fade 1.4s cubic-bezier(.33, 1, .68, 1) both; }
body .elementor .fx-bg > img { animation: mst-bg-zoom 2.6s cubic-bezier(.33, 1, .68, 1) both; }
@media (hover: hover) and (pointer: fine) {
	body .elementor .fx-bg { animation-duration: 1s; }
	body .elementor .fx-bg > img { animation: mst-bg-zoom-pc 1.6s cubic-bezier(.22, 1, .36, 1) both; }
}
/* Computers: the hero title's words and the copy under it enter through these CSS animations (mst.js adds the
   classes and the delays). The script used to move them frame by frame, which stuttered whenever other
   scripts were busy. The offsets come from the reveal system (--mst-x / --mst-y). */
@keyframes mst-in { from { opacity: 0; transform: translate(var(--mst-x, 0), var(--mst-y, 0)); filter: blur(8px); } }
@keyframes mst-in-clip { from { opacity: 0; clip-path: inset(12% 10% 12% 10%); transform: scale(1.1); filter: blur(8px); } }
@keyframes mst-rise { from { opacity: 0; transform: translateY(110%); } }
.mst-in { animation: mst-in 1.1s cubic-bezier(.19, 1, .22, 1) backwards; }
.mst-in-clip { animation: mst-in-clip 1.5s cubic-bezier(.19, 1, .22, 1) backwards; }
.mst-rise-in { animation: mst-rise 1.1s cubic-bezier(.165, .84, .44, 1) backwards; }
.elementor .fx-bg > img, .elementor .fx-bg > div { position: absolute; inset: 0; width: 100%; height: 100%; }
.elementor .mst-section > img.e-image-base { inset: 0; z-index: 0; }
/* Closing section: copy sits higher and the bottom padding follows the image scale (the arc is at 70%
   of the image height), so the light arc stays below the buttons instead of crossing the text. */
.elementor .mst-section:has(> img.e-image-base) { padding-top: 120px; padding-bottom: max(300px, calc(17vw + 60px)); }
.elementor .mst-section:has(> img.e-image-base) .mst-lead { color: #D6DCEE; text-shadow: 0 2px 18px rgba(7, 10, 24, .85); }
.elementor .mst-section:has(> img.e-image-base) h2.mst-display { max-width: 11.5em; }
@media (max-width: 767px) {
	.elementor .mst-section:has(> img.e-image-base) { padding-top: 88px; padding-bottom: 320px; }
}
/* Hero shade: keeps the copy (left and bottom) on the dark part of the image. The image itself is at full
   brightness; only the shade darkens it, about as much as before behind the copy and the buttons (up to
   ~66%) and much less on the right, where the light lines are. */
body .elementor .fx-bg > div { background: linear-gradient(0deg, rgba(7, 10, 24, .78) 0%, rgba(7, 10, 24, 0) 42%), linear-gradient(90deg, rgba(7, 10, 24, .94) 0%, rgba(7, 10, 24, .85) 36%, rgba(7, 10, 24, .6) 66%, rgba(7, 10, 24, .34) 82%, rgba(7, 10, 24, .12) 100%); }
/* Phones: the portrait image is flipped so its light lines sit at the top, and the copy moves to the
   bottom, over the dark half. The image keeps its full brightness; only the copy area is shaded. */
@media (max-width: 767px) {
	.elementor .fx-bg > img[src*="mst-hero-mobile"] { transform: scaleY(-1); }
	body .elementor .fx-bg > div { background: linear-gradient(0deg, rgba(7, 10, 24, .96) 0%, rgba(7, 10, 24, .82) 40%, rgba(7, 10, 24, .3) 62%, rgba(7, 10, 24, 0) 82%); }
	body .elementor > .mst-section:first-child { justify-content: flex-end; }
}
/* Service pages: the hero shows the service's 3D object on the right; the copy keeps the dark left side. */
/* Desktop: the image only fills the right 62% and fades in from its left edge, so the object never sits
   behind the title. */
.elementor .fx-bg > img[src*="mst-servico"] { opacity: 1; filter: brightness(.95); }
@media (min-width: 768px) {
	/* Starts below the fixed header (the layer itself begins 14% above the hero), so the art never slides under the menu. */
	/* Faded on the left (behind the title) and at the bottom, so the image's own dark backdrop never shows an edge. */
	.elementor .fx-bg > img[src*="mst-servico"] { inset: 22% 0 0 auto; height: 78%; width: 62%; object-position: 60% 50%; -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 34%), linear-gradient(180deg, transparent 0%, #000 14%, #000 62%, transparent 96%); -webkit-mask-composite: source-in; mask-image: linear-gradient(90deg, transparent 0%, #000 34%), linear-gradient(180deg, transparent 0%, #000 14%, #000 62%, transparent 96%); mask-composite: intersect; }
}
body .elementor .fx-bg:has(> img[src*="mst-servico"]) > div { background: linear-gradient(0deg, rgba(7, 10, 24, .75) 0%, rgba(7, 10, 24, 0) 34%), linear-gradient(90deg, rgba(7, 10, 24, .9) 0%, rgba(7, 10, 24, .55) 40%, rgba(7, 10, 24, 0) 62%); }
/* The service object floats gently (scaled a touch so the moving edges never show). */
@keyframes mst-float { 0%, 100% { transform: scale(1.04) translateY(0); } 50% { transform: scale(1.04) translateY(-14px); } }
.elementor .fx-bg > img[src*="mst-servico"] { animation: mst-bg-zoom 2.6s cubic-bezier(.33, 1, .68, 1) both, mst-float 7s ease-in-out infinite; }
@media (hover: hover) and (pointer: fine) {
	.elementor .fx-bg > img[src*="mst-servico"] { animation: mst-bg-zoom-pc 1.6s cubic-bezier(.22, 1, .36, 1) both, mst-float 7s ease-in-out infinite; }
}
/* Service titles wrap before they reach the object on the right. */
.elementor > .mst-section:first-child:has(.fx-bg > img[src*="mst-servico"]) h1 { max-width: 720px; }
/* Phones: full-screen hero, image in the top half fading out, copy below it. */
@media (max-width: 767px) {
	body .elementor > .mst-section:first-child:has(.fx-bg > img[src*="mst-servico"]) { min-height: 100vh; min-height: 100svh; }
	.elementor .fx-bg > img[src*="mst-servico"] { inset: 12.3% 0 auto 0; height: 48%; object-position: 70% 50%; -webkit-mask-image: linear-gradient(180deg, #000 55%, transparent 100%); mask-image: linear-gradient(180deg, #000 55%, transparent 100%); }
	body .elementor .fx-bg:has(> img[src*="mst-servico"]) > div { background: linear-gradient(0deg, rgba(7, 10, 24, .97) 0%, rgba(7, 10, 24, .86) 42%, rgba(7, 10, 24, .25) 66%, rgba(7, 10, 24, 0) 84%); }
}

/* Service cards (home, Services page, "Other services") carry their service image. */
/* 768 px versions, loaded only when the card comes near the screen (mst.js adds .mst-bg-on). */
.elementor .mst-card { --mst-svc: none; }
.elementor .mst-card.mst-bg-on:has(> a[href*="criacao-de-websites"], > a[href*="/web-design/"]) { --mst-svc: url("/wp-content/uploads/mst/mst-servico-websites-768x576.webp"); }
.elementor .mst-card.mst-bg-on:has(> a[href*="lojas-online"], > a[href*="ecommerce-websites"]) { --mst-svc: url("/wp-content/uploads/mst/mst-servico-lojas-online-768x576.webp"); }
.elementor .mst-card.mst-bg-on:has(> a[href$="/seo/"], > a[href*="seo-services"]) { --mst-svc: url("/wp-content/uploads/mst/mst-servico-seo-768x576.webp"); }
.elementor .mst-card.mst-bg-on:has(> a[href*="marketing-digital"], > a[href*="digital-marketing"]) { --mst-svc: url("/wp-content/uploads/mst/mst-servico-marketing-digital-768x576.webp"); }
.elementor .mst-card.mst-bg-on:has(> a[href*="branding"]) { --mst-svc: url("/wp-content/uploads/mst/mst-servico-branding-768x576.webp"); }
/* The image fills the whole card; a dark veil (heaviest where the copy sits) keeps the text readable. */
.elementor .mst-card:has(> a[href*="criacao-de-websites"], > a[href*="/web-design/"], > a[href*="lojas-online"], > a[href*="ecommerce-websites"], > a[href$="/seo/"], > a[href*="seo-services"], > a[href*="marketing-digital"], > a[href*="digital-marketing"], > a[href*="branding"]) {
	background: linear-gradient(0deg, rgba(8, 11, 30, .96) 0%, rgba(8, 11, 30, .7) 45%, rgba(8, 11, 30, .45) 100%), linear-gradient(90deg, rgba(8, 11, 30, .75) 0%, rgba(8, 11, 30, .15) 75%), var(--mst-svc) 72% 40% / cover no-repeat, #0D1230;
	border-color: rgba(141, 176, 255, .2);
	transition: transform .5s var(--mst-ease), box-shadow .5s var(--mst-ease), border-color .3s;
}
.elementor .mst-card:has(> a[href*="criacao-de-websites"], > a[href*="/web-design/"], > a[href*="lojas-online"], > a[href*="ecommerce-websites"], > a[href$="/seo/"], > a[href*="seo-services"], > a[href*="marketing-digital"], > a[href*="digital-marketing"], > a[href*="branding"]):hover {
	transform: translateY(-6px);
	border-color: rgba(141, 176, 255, .55);
	box-shadow: 0 34px 70px -34px rgba(47, 107, 255, .55);
}

/* Outline buttons get a dark glass fill so they stay readable over the light lines. */
.elementor a.mst-btn-ghost { background-color: rgba(7, 10, 24, .6); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
/* Phones: a blur that moves over a moving image is re-rendered every frame and makes iPhone scroll stutter. */
@media (hover: none) { .elementor a.mst-btn-ghost { background-color: rgba(7, 10, 24, .8); -webkit-backdrop-filter: none; backdrop-filter: none; } }
@media (min-width: 768px) { .elementor a.e-button-base { white-space: nowrap; flex-shrink: 0; } }

/* ---------- Page transitions: same-site navigations cross-fade (View Transitions API); the header
   stays put. Browsers without support simply navigate as before. ---------- */
@view-transition { navigation: auto; }
.mst-header { view-transition-name: mst-header; }
::view-transition-old(root) { animation: mst-page-out .3s cubic-bezier(.4, 0, 1, 1) both; }
::view-transition-new(root) { animation: mst-page-in .6s cubic-bezier(.22, 1, .36, 1) both; }
@keyframes mst-page-out { to { opacity: 0; transform: scale(.985); } }
@keyframes mst-page-in { from { opacity: 0; transform: translateY(16px); } }

/* ---------- Process steps (.mst-steps, set by mst.js): numbers, a progress line, sticky title ---------- */
.elementor .e-con.mst-steps { position: relative; counter-reset: mst-step; padding-left: 44px; border-width: 0; }
.elementor .mst-steps > .e-con { counter-increment: mst-step; }
.elementor .mst-steps > .e-con > h3::before { content: counter(mst-step, decimal-leading-zero); display: block; margin-bottom: 8px; font-family: var(--mst-serif); font-style: italic; font-weight: 400; font-size: 26px; line-height: 1; letter-spacing: 0; color: var(--mst-accent-soft); }
.mst-steps__line { position: absolute; left: 0; top: 0; bottom: 0; width: 2px; border-radius: 2px; background: var(--mst-line); }
.mst-steps__fill { position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(180deg, #8DB0FF, #2F6BFF); box-shadow: 0 0 12px rgba(47, 107, 255, .6); transform-origin: top center; }
@media (min-width: 1025px) {
	.elementor .mst-container.mst-steps-wrap { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.3fr); column-gap: 88px; align-items: start; }
	.elementor .mst-steps-wrap > h2 { position: sticky; top: 150px; }
	.elementor .mst-steps > .e-con { flex-direction: column; gap: 12px; }
	.elementor .mst-steps > .e-con > h3 { flex: none; }
}
@media (max-width: 767px) {
	.elementor .e-con.mst-steps { padding-left: 28px; }
	.elementor .mst-steps > .e-con > h3::before { font-size: 22px; }
}

/* ---------- Cards that tilt towards the cursor (desktop, .mst-tilt set by mst.js) ---------- */
.elementor .mst-tilt, .mst-insight.mst-tilt { position: relative; transition: border-color .3s, box-shadow .5s var(--mst-ease) !important; }
.mst-glare { position: absolute; inset: 0; z-index: 2; border-radius: inherit; pointer-events: none; opacity: 0; transition: opacity .45s; background: radial-gradient(520px circle at var(--gx, 50%) var(--gy, 50%), rgba(141, 176, 255, .16), rgba(141, 176, 255, 0) 45%); mix-blend-mode: screen; }
.mst-tilt:hover > .mst-glare { opacity: 1; }

/* ---------- Project names in the home proof strip ([mst_project_names]) ----------
   The widget and list wrappers step aside (display: contents) so each name is a flex item of the
   strip, wrapping with the same 36px gap as before. */
.elementor-widget-shortcode:has(.mst-clients), .elementor-widget-shortcode:has(.mst-clients) > *, .elementor-widget-shortcode:has(.mst-clients) .elementor-shortcode, .mst-clients { display: contents; }
.elementor .e-con:has(> .elementor-widget-shortcode .mst-clients) { row-gap: 16px; column-gap: 34px; }
.mst-clients li { margin: 0; list-style: none; font-family: var(--mst-display); font-size: 22px; font-weight: 600; line-height: 1.16; letter-spacing: -.01em; color: var(--mst-ink); }
@media (max-width: 767px) { .mst-clients li { font-size: 18px; } }

/* ---------- Projects ([mst_projects]) ---------- */
.elementor-widget-shortcode:has(.mst-projects), .mst-projects { width: 100%; }
.mst-projects__filters { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 44px; }
.mst-projects button.mst-projects__filter { font-family: var(--mst-body); font-size: 15px; font-weight: 600; line-height: 1.2; text-transform: none; letter-spacing: 0; color: var(--mst-muted); background: transparent; border: 1px solid var(--mst-line); border-radius: 999px; padding: 12px 22px; cursor: pointer; transition: color .25s, background-color .25s, border-color .25s; }
.mst-projects button.mst-projects__filter:hover, .mst-projects button.mst-projects__filter:focus-visible { color: var(--mst-ink); background: transparent; border-color: var(--mst-accent-soft); }
.mst-projects button.mst-projects__filter.is-active { color: var(--mst-bg); background: var(--mst-ink); border-color: var(--mst-ink); }
.mst-projects__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 56px 28px; }
.mst-proj[hidden] { display: none; }
.mst-proj__media { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; border: 1px solid var(--mst-line); border-radius: 28px; background: var(--mst-raised); transition: border-color .4s; }
.mst-proj__img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 0%; transition: transform .9s var(--mst-ease); }
a.mst-proj__media:hover, a.mst-proj__media:focus-visible { border-color: var(--mst-accent-soft); }
a.mst-proj__media:hover .mst-proj__img, a.mst-proj__media:focus-visible .mst-proj__img { transform: scale(1.04); }
.mst-proj__go { position: absolute; top: 18px; right: 18px; width: 52px; height: 52px; display: grid; place-items: center; border-radius: 50%; background: var(--mst-ink); color: var(--mst-bg); font-size: 22px; line-height: 1; opacity: 0; transform: scale(.6); transition: opacity .35s, transform .45s var(--mst-ease); }
a.mst-proj__media:hover .mst-proj__go, a.mst-proj__media:focus-visible .mst-proj__go { opacity: 1; transform: scale(1); }
.mst-proj__meta { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 22px 4px 0; }
.mst-projects h3.mst-proj__name { margin: 0; font-family: var(--mst-display); font-size: 26px; font-weight: 600; line-height: 1.15; letter-spacing: -.015em; color: var(--mst-ink); }
.mst-proj__info { margin: 0; font-size: 15px; color: var(--mst-muted); white-space: nowrap; }
.mst-projects__empty { margin: 0; padding: 56px 32px; border: 1px dashed var(--mst-line); border-radius: 28px; text-align: center; font-size: 18px; line-height: 1.6; color: var(--mst-muted); }
.mst-projects__empty a { color: var(--mst-accent-soft); font-weight: 600; text-decoration: none; white-space: nowrap; }
.mst-projects__empty a:hover { color: var(--mst-ink); }
@media (max-width: 767px) {
	.mst-projects__filters { gap: 8px; margin-bottom: 32px; }
	.mst-projects button.mst-projects__filter { font-size: 14px; padding: 10px 16px; }
	.mst-projects__grid { grid-template-columns: 1fr; gap: 40px; }
	.mst-proj__media { border-radius: 20px; }
	.mst-proj__meta { flex-direction: column; gap: 6px; padding-top: 16px; }
	.mst-projects h3.mst-proj__name { font-size: 22px; }
	.mst-projects__empty { padding: 40px 22px; font-size: 16px; }
}

/* ---------- Long service copy (.mst-prose, restructured by inc/prose.php) ----------
   An editorial layout instead of one big text box: a lead paragraph, then numbered chapters with the
   title on the left (it stays in view while reading) and the copy on the right; lists become tiles. */
body .elementor .elementor-widget.mst-prose { width: 100%; max-width: 100%; background: none; border: 0; border-radius: 0; padding: 0; box-sizing: border-box; }
body .elementor .elementor-widget-text-editor a, body .elementor .elementor-widget-text-editor a:visited { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
body .elementor .elementor-widget-text-editor a:hover { color: inherit; opacity: .8; }
.mst-prose__intro { max-width: 900px; margin: 0 0 64px; }
.mst-prose__intro p { margin: 0 0 16px; font-family: var(--mst-body); font-size: 22px; line-height: 1.6; color: var(--mst-ink); }
.mst-prose__item { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.6fr); gap: 28px 72px; padding: 52px 0; border-top: 1px solid var(--mst-line); }
.mst-prose__item:last-child { border-bottom: 1px solid var(--mst-line); }
.mst-prose__head { position: sticky; top: 120px; align-self: start; display: flex; flex-direction: column; gap: 14px; }
.mst-prose__num { font-family: var(--mst-serif); font-style: italic; font-size: 60px; line-height: .9; color: var(--mst-accent-soft); }
.mst-prose .mst-prose__head h3 { margin: 0; font-family: var(--mst-display); font-size: 28px; font-weight: 600; line-height: 1.2; letter-spacing: -.02em; color: var(--mst-ink); }
.mst-prose__body > p { margin: 0 0 16px; font-size: 18px; line-height: 1.75; color: var(--mst-muted); }
.mst-prose__body > p:last-child { margin-bottom: 0; }
body .elementor .mst-prose__body a { color: var(--mst-accent-soft); text-decoration-color: rgba(141, 176, 255, .4); }
.mst-prose ul.mst-prose__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.mst-prose ul.mst-prose__list li { position: relative; margin: 0; padding: 22px 22px 22px 60px; border: 1px solid var(--mst-line); border-radius: 20px; background: linear-gradient(160deg, rgba(20, 27, 63, .7) 0%, rgba(13, 18, 48, .7) 100%); font-size: 15.5px; line-height: 1.55; color: var(--mst-muted); transition: border-color .3s, transform .4s var(--mst-ease); }
.mst-prose ul.mst-prose__list li:hover { border-color: rgba(141, 176, 255, .45); transform: translateY(-3px); }
.mst-prose ul.mst-prose__list li::before { content: ""; position: absolute; left: 20px; top: 22px; width: 26px; height: 26px; border-radius: 50%; background: rgba(47, 107, 255, .2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238DB0FF' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 13px no-repeat; }
.mst-prose ul.mst-prose__list li strong { display: block; margin-bottom: 4px; font-family: var(--mst-display); font-size: 17px; font-weight: 600; line-height: 1.3; color: var(--mst-ink); }
.mst-prose ul.mst-prose__list li.is-title-only { display: flex; align-items: center; min-height: 72px; }
.mst-prose ul.mst-prose__list li.is-title-only strong { margin: 0; }
@media (max-width: 1024px) {
	.mst-prose__item { grid-template-columns: 1fr; gap: 24px; padding: 40px 0; }
	.mst-prose__head { position: static; flex-direction: row; align-items: baseline; gap: 16px; }
	.mst-prose__num { font-size: 44px; }
}
@media (max-width: 767px) {
	.mst-prose__intro { margin-bottom: 40px; }
	.mst-prose__intro p { font-size: 18px; }
	.mst-prose .mst-prose__head h3 { font-size: 22px; }
	.mst-prose__num { font-size: 38px; }
	.mst-prose__body > p { font-size: 16.5px; }
	.mst-prose ul.mst-prose__list { grid-template-columns: 1fr; }
}

/* ---------- FAQ accordion (Elementor atomic) ---------- */
.e-accordion-item-base { border-bottom: 1px solid var(--mst-line); }
.e-accordion-item-header-base { list-style: none; cursor: pointer; align-items: center; }
.e-accordion-item-header-base::-webkit-details-marker { display: none; }
.e-accordion-item-header-base .e-paragraph-base { transition: color .25s; }
.e-accordion-item-header-base:hover .e-paragraph-base { color: var(--mst-accent-soft); }
/* Round button with a chevron that turns when the answer opens. The icon is an Elementor container (.e-con),
   whose own size, radius and ::before overlay rules win over plain selectors, hence the !important. */
.elementor .e-accordion-item-header-base > .e-accordion-item-icon-base { flex: 0 0 44px !important; width: 44px !important; height: 44px !important; min-height: 0 !important; padding: 0 !important; border: 1px solid var(--mst-line) !important; border-radius: 50% !important; background: var(--mst-raised) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23EEF1FA' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center / 20px 20px no-repeat !important; transition: transform .45s var(--mst-ease), background-color .3s, border-color .3s; }
.elementor .e-accordion-item-header-base:hover > .e-accordion-item-icon-base { border-color: var(--mst-accent-soft) !important; transform: translateY(2px); }
.elementor details[open] > .e-accordion-item-header-base > .e-accordion-item-icon-base { background-color: var(--mst-accent) !important; border-color: var(--mst-accent) !important; transform: rotate(180deg); }
@media (max-width: 767px) { .elementor .e-accordion-item-header-base > .e-accordion-item-icon-base { flex-basis: 38px !important; width: 38px !important; height: 38px !important; background-size: 18px 18px !important; } }

/* ---------- Insights ([mst_insights]): rings, bars and the growth chart ---------- */
.elementor .mst-insights-wrap { padding: 0 !important; gap: 0 !important; }
.mst-insights-wrap .elementor-widget { width: 100%; margin: 0 !important; }
.mst-insights { position: relative; overflow: hidden; padding: 128px 24px; background: var(--mst-bg); border-top: 1px solid var(--mst-line); }
.mst-insights::before { content: ""; position: absolute; left: 50%; top: -260px; width: 1100px; height: 640px; transform: translateX(-50%); background: radial-gradient(closest-side, rgba(47, 107, 255, .16), rgba(47, 107, 255, 0)); pointer-events: none; }
.mst-insights__inner { position: relative; max-width: 1200px; margin: 0 auto; display: flex; flex-direction: column; gap: 56px; }
.mst-insights__head { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; max-width: 780px; }
.mst-insights__label { margin: 0; font-family: var(--mst-body); font-size: 13px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; color: var(--mst-accent-soft); }
.mst-insights h2.mst-insights__title { margin: 0; font-family: var(--mst-display); font-size: 52px; font-weight: 600; line-height: 1.06; letter-spacing: -.03em; color: var(--mst-ink); }
.mst-insights__lead { margin: 0; max-width: 620px; font-size: 19px; line-height: 1.6; color: var(--mst-muted); }
.mst-insights__rings { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.mst-insights--stacked .mst-insights__inner > .mst-insight--chart { margin-top: -36px; }
.mst-insights__split { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 20px; align-items: stretch; }
.mst-insights__aside { display: grid; gap: 20px; }
.mst-insight { display: flex; flex-direction: column; gap: 14px; padding: 36px; border: 1px solid var(--mst-line); border-radius: 28px; background: linear-gradient(160deg, rgba(20, 27, 63, .92) 0%, rgba(13, 18, 48, .92) 100%); transition: border-color .4s; }
.mst-insight:hover { border-color: rgba(141, 176, 255, .45); }
.mst-insights h3.mst-insight__title { margin: 0 0 6px; font-family: var(--mst-display); font-size: 22px; font-weight: 600; line-height: 1.25; letter-spacing: -.01em; color: var(--mst-ink); }
.mst-insight__text { margin: 0; font-size: 17px; line-height: 1.55; color: var(--mst-ink); }
.mst-insight__source { margin: auto 0 0; padding-top: 8px; font-size: 12px; letter-spacing: .03em; color: #7C86A8; }
.mst-ring { position: relative; width: 132px; height: 132px; margin-bottom: 6px; }
.mst-ring svg { display: block; width: 100%; height: 100%; overflow: visible; transform: rotate(-90deg); }
.mst-ring__track { fill: none; stroke: var(--mst-line); stroke-width: 8; }
.mst-ring__bar { fill: none; stroke-width: 8; stroke-linecap: round; stroke-dasharray: 100; filter: drop-shadow(0 0 6px rgba(47, 107, 255, .55)); }
.mst-ring__value { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--mst-display); font-size: 30px; font-weight: 600; letter-spacing: -.03em; color: var(--mst-ink); font-variant-numeric: tabular-nums; }
.mst-insights :is(.mst-bars, .mst-growth__legend) { list-style: none; margin-left: 0; padding: 0; }
.mst-insights :is(.mst-bars, .mst-growth__legend) li { margin: 0; }
.mst-bars { flex: 1 1 auto; margin: 10px 0 0; display: grid; align-content: center; gap: 22px; }
/* Beside a chart, the ring cards lie flat (ring left, text right) so both columns end level. */
.mst-insights__aside .mst-insight--ring { display: grid; grid-template-columns: 112px minmax(0, 1fr); align-items: center; align-content: center; column-gap: 24px; row-gap: 4px; }
.mst-insights__aside .mst-insight--ring .mst-ring { grid-row: span 2; width: 112px; height: 112px; margin: 0; }
.mst-insights__aside .mst-insight--ring .mst-ring__value { font-size: 25px; }
.mst-insights__aside .mst-insight--ring .mst-insight__source { margin: 0; padding-top: 6px; align-self: start; }
.mst-bars__row { display: grid; grid-template-columns: 132px minmax(0, 1fr) 76px; align-items: center; gap: 16px; }
.mst-bars__label { font-size: 15px; color: var(--mst-muted); }
.mst-bars__track { height: 12px; overflow: hidden; border-radius: 999px; background: rgba(35, 43, 85, .7); }
.mst-bars__fill { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #22377E 0%, #4A6FD8 100%); }
.mst-bars__row.is-lead .mst-bars__fill { background: linear-gradient(90deg, #2F6BFF 0%, #8DB0FF 100%); box-shadow: 0 0 18px rgba(47, 107, 255, .5); }
.mst-bars__row.is-lead :is(.mst-bars__label, .mst-bars__value) { color: var(--mst-ink); }
.mst-bars__value { font-family: var(--mst-display); font-size: 20px; font-weight: 600; text-align: right; color: var(--mst-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.mst-growth__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.mst-growth__tag { flex: 0 0 auto; padding: 6px 12px; border: 1px solid rgba(141, 176, 255, .35); border-radius: 999px; font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--mst-accent-soft); }
/* The plot stretches to its box (fixed height, any width); strokes keep their thickness. */
.mst-growth__plot { position: relative; height: clamp(200px, 24vw, 300px); }
.mst-growth__plot svg { display: block; width: 100%; height: 100%; overflow: visible; }
.mst-growth__plot :is(line, path) { vector-effect: non-scaling-stroke; }
.mst-growth__grid line { stroke: rgba(35, 43, 85, .9); stroke-width: 1; stroke-dasharray: 3 7; }
.mst-growth__line { fill: none; stroke-width: 4; stroke-linecap: round; }
.mst-growth__line--without { stroke: #56608A; stroke-width: 3; }
.mst-growth__line--with { filter: drop-shadow(0 0 8px rgba(47, 107, 255, .6)); }
@keyframes mst-pulse { 0% { transform: scale(1); opacity: .7; } 100% { transform: scale(3.2); opacity: 0; } }
.mst-growth__dot::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 2px solid #8DB0FF; animation: mst-pulse 2.2s ease-out infinite; }
.mst-growth__dot { position: absolute; right: -8px; width: 16px; height: 16px; margin-top: -8px; border: 4px solid #2F6BFF; border-radius: 50%; background: #fff; box-shadow: 0 0 18px rgba(47, 107, 255, .8); }
.mst-growth__axis { display: flex; justify-content: space-between; margin-top: 4px; font-size: 13px; color: #7C86A8; }
.mst-growth__legend { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px 26px; font-size: 14px; color: var(--mst-muted); }
.mst-growth__legend li { display: flex; align-items: center; gap: 10px; }
.mst-growth__legend i { flex: 0 0 22px; height: 4px; border-radius: 4px; background: #56608A; }
.mst-growth__legend i.is-with { background: linear-gradient(90deg, #2F6BFF, #8DB0FF); }
@media (max-width: 1024px) {
	.mst-insights { padding: 96px 24px; }
	.mst-insights h2.mst-insights__title { font-size: 42px; }
	.mst-insights__split { grid-template-columns: 1fr; }
	.mst-insights__aside { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
}
@media (max-width: 767px) {
	.mst-insights { padding: 72px 20px; }
	.mst-insights__inner { gap: 36px; }
	.mst-insights--stacked .mst-insights__inner > .mst-insight--chart { margin-top: -16px; }
	.mst-insights h2.mst-insights__title { font-size: 32px; line-height: 1.1; }
	.mst-insights__lead { font-size: 17px; }
	.mst-insights__rings, .mst-insights__aside { grid-template-columns: 1fr; gap: 14px; }
	.mst-insight { padding: 24px; border-radius: 22px; }
	.mst-insight--ring, .mst-insights__aside .mst-insight--ring { display: grid; grid-template-columns: 92px minmax(0, 1fr); align-items: center; column-gap: 18px; row-gap: 2px; }
	.mst-insight--ring .mst-ring, .mst-insights__aside .mst-insight--ring .mst-ring { grid-row: span 2; width: 92px; height: 92px; margin: 0; }
	.mst-insight--ring .mst-ring__value, .mst-insights__aside .mst-insight--ring .mst-ring__value { font-size: 21px; }
	.mst-insight--ring .mst-insight__text { font-size: 15px; }
	.mst-insight--ring .mst-insight__source { padding-top: 4px; }
	.mst-insights h3.mst-insight__title { font-size: 19px; }
	.mst-bars { gap: 16px; }
	.mst-bars__row { grid-template-columns: 88px minmax(0, 1fr) 58px; gap: 10px; }
	.mst-bars__label { font-size: 13px; }
	.mst-bars__value { font-size: 16px; }
	.mst-growth__head { flex-direction: column; gap: 10px; }
}

/* Ring cards: a short topic above a sentence that reads on its own. */
.mst-insight__copy { display: flex; flex-direction: column; gap: 8px; }
.mst-insight__topic { margin: 0; font-family: var(--mst-body); font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--mst-accent-soft); }

/* Growth chart: break-even line, a tinted loss zone, and a rose "without a strategy" line. */
.mst-growth__loss { fill: rgba(224, 108, 127, .04); }
.mst-growth__zero { stroke: rgba(238, 241, 250, .4); stroke-width: 1.5; }
.mst-growth__line--without { stroke: #E07A8C; stroke-width: 2.5; stroke-linejoin: round; opacity: .9; }
.mst-growth__legend i.is-without { background: #E07A8C; }
.mst-growth__zone { position: absolute; left: 10px; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; pointer-events: none; }
.mst-growth__zone--profit { top: 6px; color: var(--mst-accent-soft); }
.mst-growth__zone--loss { bottom: 6px; color: #E07A8C; }
.mst-growth__zone--zero { top: 55%; transform: translateY(-120%); color: rgba(238, 241, 250, .6); }
.mst-growth__dot--loss { border-color: #E07A8C; box-shadow: 0 0 14px rgba(224, 122, 140, .7); }
.mst-growth__dot--loss::after { display: none; }

/* ---------- Reviews on the service pages ([mst_reviews]) and the hero proof line ([mst_trust]) ---------- */
.mst-reviews__head { display: flex; flex-direction: column; gap: 14px; }
.mst-reviews__sum { margin: 0; font-size: 17px; color: var(--mst-muted); }
.mst-reviews__sum span, .mst-trust__stars { color: var(--mst-accent-soft); letter-spacing: 3px; }
.mst-reviews__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.mst-reviews__grid .mst-testi__card { flex: none; margin: 0; width: auto; max-width: none; }
@media (max-width: 1024px) { .mst-reviews__grid { grid-template-columns: minmax(0, 1fr); max-width: 560px; } }
.elementor p.mst-trust { margin: 0; font-size: 15px; line-height: 1.4; color: var(--mst-muted); }

/* ---------- "Em resumo" fact sheet on the About page ([mst_facts], inc/geo.php) ---------- */
.mst-facts__list { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 48px; }
.mst-facts__row { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 20px; padding: 20px 0; border-top: 1px solid var(--mst-line); }
.mst-facts__row dt { font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--mst-accent-soft); padding-top: 3px; }
.mst-facts__row dd { margin: 0; font-size: 17px; line-height: 1.6; color: #C9D0E6; }
@media (max-width: 1024px) { .mst-facts__list { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 600px) { .mst-facts__row { grid-template-columns: minmax(0, 1fr); gap: 6px; } }

/* ---------- Footer legal links and the cookie banner (inc/consent.php) ---------- */
.mst-footer__legal { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 20px; }
.mst-footer__legal a { color: var(--mst-muted); text-decoration: none; }
.mst-footer__legal a:hover, .mst-footer__legal a:focus-visible { color: var(--mst-ink); }
.mst-consent { position: fixed; left: 24px; bottom: 24px; z-index: 1100; max-width: 440px; padding: 22px 24px; display: flex; flex-direction: column; gap: 16px; background: rgba(13, 18, 48, .97); border: 1px solid rgba(141, 176, 255, .18); border-radius: 22px; box-shadow: 0 20px 60px rgba(0, 0, 0, .5); color: var(--mst-ink); opacity: 0; transform: translateY(16px); transition: opacity .35s, transform .35s var(--mst-ease); }
.mst-consent.is-open { opacity: 1; transform: none; }
.mst-consent[hidden] { display: none; }
.mst-consent__text { margin: 0; font-size: 15px; line-height: 1.55; color: var(--mst-muted); }
.mst-consent__text a { color: var(--mst-accent-soft); }
.mst-consent__actions { display: flex; gap: 10px; }
.mst-consent .mst-consent__btn { flex: 1; min-height: 44px; padding: 0 18px; border-radius: 999px; border: 1px solid var(--mst-line); background: transparent; color: var(--mst-ink); font: 600 15px var(--mst-body); text-transform: none; letter-spacing: normal; cursor: pointer; }

/* ---------- Design pass (2026-10-15) ---------- */
/* Small print never below 13 px (sources, chart tags and labels, review source). */
.mst-insight__source, .mst-insight__topic, .mst-growth__zone, .mst-testi__source { font-size: 13px; }
.mst-growth__tag { font-size: 12px; }
/* Primary buttons: a touch deeper blue so white text passes AA (4.5:1) at body size; hover stays as it was. */
:root { --mst-cta: #285FEB; }
.elementor a.mst-btn-primary:not(:hover):not(:focus-visible), .mst-header__cta:not(:hover):not(:focus-visible), .mst-btn--primary:not(:hover):not(:focus-visible), .mst-sticky-cta, .mst-consent .mst-consent__btn--accept:not(:hover), .fluentform .ff-btn-submit:not(:hover) { background-color: var(--mst-cta) !important; border-color: var(--mst-cta) !important; }
/* Contact page on phones: the form first, the other contacts after it. */
@media (max-width: 767px) {
	.elementor .e-con:has(> .elementor-widget-shortcode .fluentform) { order: -1; }
}
/* Home hero (PT, EN): the buttons sit under the text, left-aligned with the title, as on the service pages. */
@media (min-width: 768px) {
	body .elementor .e-con:is(.elementor-element-4d4cafe2, .elementor-element-11d601c5) { flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 36px; }
}

/* ---------- Blog: articles (single post) and the article list (Astra markup, the site's type) ---------- */
body.single-post .site-content > .ast-container, body.blog .site-content > .ast-container, body.archive.category .site-content > .ast-container { max-width: 1200px; }
body.single-post #primary { max-width: 780px; margin: 0 auto; }
body.single-post .entry-header .entry-title { margin: 16px 0 12px; font-family: var(--mst-display); font-size: clamp(34px, 4.6vw, 52px); font-weight: 600; line-height: 1.08; letter-spacing: -.03em; text-transform: none; color: var(--mst-ink); }
body.single-post .entry-meta, body.single-post .entry-meta * { font-size: 14px; color: var(--mst-muted); }
body.single-post .entry-meta a { color: var(--mst-accent-soft); text-decoration: none; }
body.single-post .ast-single-post-featured-section img, body.single-post .post-thumb img { width: 100%; height: auto; border-radius: 24px; }
body.single-post .entry-content h2 { margin: 52px 0 14px; font-family: var(--mst-display); font-size: 30px; font-weight: 600; line-height: 1.2; letter-spacing: -.02em; text-transform: none; color: var(--mst-ink); }
body.single-post .entry-content h3 { margin: 32px 0 10px; font-family: var(--mst-display); font-size: 21px; font-weight: 600; line-height: 1.3; text-transform: none; color: var(--mst-ink); }
body.single-post .entry-content :is(p, li) { font-size: 18px; line-height: 1.75; color: #C9D0E6; }
body.single-post .entry-content li + li { margin-top: 8px; }
body.single-post .entry-content a:not(.mst-btn) { color: var(--mst-accent-soft); text-decoration: underline; text-underline-offset: 3px; }
body.single-post .entry-content .mst-lead-answer { padding: 22px 26px; border: 1px solid rgba(141, 176, 255, .2); border-radius: 20px; background: rgba(47, 107, 255, .08); color: var(--mst-ink); }
body.single-post .entry-content table { width: 100%; border-collapse: collapse; margin: 24px 0; font-size: 16px; }
body.single-post .entry-content :is(th, td) { padding: 12px 14px; border: 1px solid var(--mst-line); text-align: left; vertical-align: top; color: #C9D0E6; }
body.single-post .entry-content th { color: var(--mst-ink); background: rgba(141, 176, 255, .06); }
@media (max-width: 767px) { body.single-post .entry-content table { display: block; overflow-x: auto; } }
.mst-article-cta { margin: 56px 0 8px; padding: 32px; border-radius: 28px; background: radial-gradient(120% 120% at 0% 0%, rgba(47, 107, 255, .25) 0%, rgba(16, 22, 56, .96) 60%); border: 1px solid rgba(141, 176, 255, .18); }
.mst-article-cta__label { margin: 0 0 8px; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--mst-accent-soft); }
body.single-post .entry-content .mst-article-cta__title { margin: 0 0 8px; font-family: var(--mst-display); font-size: 26px; font-weight: 600; color: var(--mst-ink); }
body.single-post .entry-content .mst-article-cta__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; margin: 18px 0 0; }
body.single-post .entry-content .mst-article-cta__link { color: var(--mst-ink); }
/* Astra's "separate container" layout paints white boxes behind posts: the site is dark, so no boxes. */
body:is(.single-post, .blog, .category) :is(.ast-article-single, .ast-article-post, .ast-separate-container .ast-article-post, .site-main > article) { background: transparent !important; padding: 0 !important; box-shadow: none !important; border: 0 !important; }
body.single-post .entry-header .entry-title { word-spacing: normal; }
/* Comments under an article: the site's dark card instead of Astra's white box */
body.single-post :is(.comments-area, .ast-separate-container .comments-area, .comment-respond) { background: transparent !important; padding: 0 !important; margin-top: 56px; border: 0 !important; }
body.single-post #respond { padding: 32px !important; border-radius: 28px; background: linear-gradient(160deg, rgba(24, 32, 74, .7) 0%, rgba(16, 22, 56, .7) 100%) !important; border: 1px solid rgba(141, 176, 255, .14) !important; }
body.single-post .comment-reply-title { margin: 0 0 8px; font-family: var(--mst-display); font-size: 26px; font-weight: 600; letter-spacing: -.01em; text-transform: none; color: var(--mst-ink) !important; }
body.single-post .comment-reply-title a { color: var(--mst-accent-soft); font-size: 15px; }
body.single-post .comment-notes, body.single-post .logged-in-as { margin: 0 0 20px; font-size: 15px; line-height: 1.6; color: var(--mst-muted) !important; }
body.single-post .comment-notes a, body.single-post .logged-in-as a { color: var(--mst-accent-soft); }
body.single-post #respond :is(textarea, input[type="text"], input[type="email"]) { width: 100%; padding: 14px 16px; border-radius: 14px; border: 1px solid var(--mst-line) !important; background: rgba(7, 10, 24, .6) !important; color: var(--mst-ink) !important; font: 16px var(--mst-body); box-shadow: none !important; }
body.single-post #respond :is(textarea, input):focus { outline: none; border-color: var(--mst-accent) !important; }
body.single-post #respond ::placeholder { color: #7C86A8; opacity: 1; }
/* Layout: message on top, name and email side by side, then the "remember me" box and the button. */
body.single-post #respond form { display: flex; flex-direction: column; gap: 16px; }
body.single-post #respond form > * { width: 100%; max-width: none; float: none; margin: 0 !important; }
body.single-post #respond .ast-comment-formwrap { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin: 0 !important; padding: 0; }
body.single-post #respond .ast-comment-formwrap > p { width: 100% !important; max-width: none !important; float: none !important; padding: 0 !important; margin: 0 !important; }
body.single-post #respond .form-submit { width: auto; align-self: flex-start; }
body.single-post #respond :is(.comment-textarea, .comment-form-comment) { padding: 0 !important; margin: 0 !important; }
body.single-post #respond .comment-textarea :is(fieldset, .comment-form-textarea, .ast-grid-common-col, [class*="ast-col"]) { padding: 0 !important; margin: 0 !important; border: 0; min-width: 0; width: 100%; }
body.single-post #respond .ast-comment-formwrap > :is(.comment-form-cookies-consent, .form-submit) { grid-column: 1 / -1; }
@media (max-width: 600px) { body.single-post #respond .ast-comment-formwrap { grid-template-columns: minmax(0, 1fr); } body.single-post #respond { padding: 24px !important; } }
body.single-post #respond .comment-form-cookies-consent { display: flex; gap: 10px; align-items: flex-start; }
body.single-post #respond .comment-form-cookies-consent label { color: var(--mst-muted) !important; font-size: 14px; }
body.single-post #respond .comment-form-cookies-consent input { accent-color: var(--mst-accent); margin-top: 4px; }
body.single-post #respond :is(input[type="submit"], .submit) { min-height: 48px; padding: 0 26px; border: 0; border-radius: 999px; background: var(--mst-accent) !important; color: #fff !important; font: 600 16px var(--mst-body); text-transform: none; letter-spacing: normal; cursor: pointer; }
body.single-post #respond :is(input[type="submit"], .submit):hover { background: #4A7FFF !important; }
body.single-post .comments-title { font-family: var(--mst-display); font-size: 24px; color: var(--mst-ink); }
body.single-post .ast-comment-list .ast-comment, body.single-post .comment-list .comment-body { color: #C9D0E6; border-color: var(--mst-line) !important; }

/* Article list */
body.blog .ast-archive-description { margin: 24px 0 40px; padding: 0; background: transparent; }
body.blog .ast-archive-description .ast-archive-title { font-family: var(--mst-display); font-size: clamp(40px, 5vw, 60px); font-weight: 600; letter-spacing: -.03em; word-spacing: normal; color: var(--mst-ink); }
/* The list is our own grid (Astra's flex columns left the cards touching): 3 / 2 / 1 columns, 28 px apart. */
body:is(.blog, .category) .site-main > .ast-row { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; margin: 0 !important; }
@media (max-width: 1024px) { body:is(.blog, .category) .site-main > .ast-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 680px) { body:is(.blog, .category) .site-main > .ast-row { grid-template-columns: minmax(0, 1fr); gap: 20px; } }
body:is(.blog, .category) .site-main > .ast-row > article.ast-article-post { width: auto !important; max-width: none !important; margin: 0 !important; float: none !important; }
/* The whole card reacts on hover (it lifts, its edge lights up, the photo eases in, the title turns blue),
   and the whole card is the link. */
body:is(.blog, .category) article .ast-article-inner { position: relative; overflow: hidden; border-radius: 24px !important; margin: 0 !important; padding: 0 0 26px !important; transition: transform .6s var(--mst-ease), border-color .4s, box-shadow .6s var(--mst-ease); }
body:is(.blog, .category) article .post-content { padding: 0 !important; }
body:is(.blog, .category) article .ast-blog-featured-section { margin: 0 0 22px !important; }
body:is(.blog, .category) article .post-thumb-img-content { margin: 0 !important; overflow: hidden; aspect-ratio: 16 / 10; }
body:is(.blog, .category) article .post-thumb-img-content img { width: 100%; height: 100%; object-fit: cover; border-radius: 0 !important; transform: none; transition: transform 1s var(--mst-ease) !important; }
body:is(.blog, .category) article :is(.cat-links, .entry-title, .entry-header, .ast-excerpt-container, .entry-content) { padding: 0 24px; }
body:is(.blog, .category) article .entry-title a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; z-index: 1; }
body:is(.blog, .category) article .cat-links { position: relative; z-index: 2; }
body:is(.blog, .category) article .entry-title a { transition: color .35s; }
@media (hover: hover) {
	body:is(.blog, .category) article .ast-article-inner:hover { transform: translateY(-6px); border-color: rgba(141, 176, 255, .38); box-shadow: 0 28px 70px rgba(0, 0, 0, .45), 0 0 0 1px rgba(47, 107, 255, .12); }
	body:is(.blog, .category) article .ast-article-inner:hover .post-thumb-img-content img { transform: scale(1.05); }
	body:is(.blog, .category) article .ast-article-inner:hover .entry-title a { color: var(--mst-accent-soft); }
}
.mst-blog-head { margin: 24px 12px 48px; max-width: 760px; }
.mst-blog-head h1.mst-blog-head__title { margin: 12px 0 14px; font-family: var(--mst-display); font-size: clamp(36px, 5vw, 58px); font-weight: 600; line-height: 1.06; letter-spacing: -.03em; word-spacing: normal; text-transform: none; color: var(--mst-ink); }
.mst-blog-head h1.mst-blog-head__title em { font-family: var(--mst-serif); font-style: italic; font-weight: 400; color: var(--mst-accent-soft); }
.mst-blog-head__text { margin: 0; font-size: 18px; line-height: 1.6; color: var(--mst-muted); }
body:is(.blog, .category) article .ast-article-inner { height: 100%; padding: 16px 16px 24px; background: linear-gradient(160deg, rgba(24, 32, 74, .7) 0%, rgba(16, 22, 56, .7) 100%); border: 1px solid rgba(141, 176, 255, .14); border-radius: 24px; overflow: hidden; }
body:is(.blog, .category) article .post-thumb img { border-radius: 16px; }
body:is(.blog, .category) article .entry-title { font-family: var(--mst-display); font-size: 23px; font-weight: 600; line-height: 1.25; letter-spacing: -.01em; word-spacing: normal; text-transform: none; }
body:is(.blog, .category) article .entry-title a { color: var(--mst-ink); text-decoration: none; }
body:is(.blog, .category) article :is(.ast-excerpt-container, .entry-meta, .entry-meta *) { color: var(--mst-muted); }
body:is(.blog, .category, .single-post) :is(.ast-blog-single-element, .ast-taxonomy-container, .cat-links) a { color: var(--mst-accent-soft); text-decoration: none; }

/* Contact forms: the privacy notice above the send button. */
.fluentform .mst-ff-privacy { margin: 4px 0 0; font-size: 14px; line-height: 1.55; color: var(--mst-muted); }
.fluentform .mst-ff-privacy a { color: var(--mst-accent-soft); }

/* Privacy policy: a calm reading column in the site's type (Astra's page defaults were blue and huge). */
body.mst-legal .site-content > .ast-container { max-width: 820px; }
body.mst-legal .entry-header .entry-title { margin: 24px 0 8px; font-family: var(--mst-display); font-size: clamp(36px, 5vw, 54px); font-weight: 600; line-height: 1.06; letter-spacing: -.03em; text-transform: none; word-spacing: normal; color: var(--mst-ink); }
body.mst-legal .entry-content h2 { margin: 48px 0 14px; font-family: var(--mst-display); font-size: 26px; font-weight: 600; line-height: 1.25; letter-spacing: -.015em; text-transform: none; color: var(--mst-ink); }
body.mst-legal .entry-content :is(p, li) { font-size: 17px; line-height: 1.7; color: #C9D0E6; }
body.mst-legal .entry-content li + li { margin-top: 6px; }
body.mst-legal .entry-content a { color: var(--mst-accent-soft); }
body.mst-legal .entry-content code { padding: 1px 6px; border-radius: 6px; background: rgba(141, 176, 255, .12); color: var(--mst-ink); font-size: .9em; }
body.mst-legal .mst-legal__updated { font-size: 14px; color: var(--mst-muted); }
.mst-consent .mst-consent__btn--accept { background: var(--mst-accent); border-color: var(--mst-accent); color: #fff; }
.mst-consent .mst-consent__btn:hover, .mst-consent .mst-consent__btn:focus-visible { border-color: var(--mst-accent-soft); }
@media (max-width: 767px) {
	.mst-consent { left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom)); max-width: none; }
}

/* ---------- 404 (404.php) ---------- */
.mst-404 { padding: 72px 24px 120px; }
.mst-404__inner { max-width: 760px; margin: 0 auto; }
.mst-404 h1.mst-404__title { margin: 12px 0 16px; font-family: var(--mst-display); font-size: clamp(34px, 5vw, 56px); font-weight: 600; line-height: 1.06; letter-spacing: -.03em; color: var(--mst-ink); }
.mst-404 h1.mst-404__title em { font-family: var(--mst-serif); font-style: italic; font-weight: 400; color: var(--mst-accent-soft); }
.mst-404__text { margin: 0 0 24px; font-size: 18px; line-height: 1.6; color: var(--mst-muted); }
.mst-404__links { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.mst-404__links a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border: 1px solid var(--mst-line); border-radius: 999px; color: var(--mst-ink); text-decoration: none; }
.mst-404__links a:hover, .mst-404__links a:focus-visible { border-color: var(--mst-accent); }

/* ---------- Phones: a "request a quote" button that stays at hand once the hero is gone (mst.js) ---------- */
.mst-sticky-cta { display: none; }
@media (max-width: 767px) {
	.mst-sticky-cta { display: flex; position: fixed; left: 16px; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 900; justify-content: center; align-items: center; min-height: 52px; border-radius: 999px; background: var(--mst-accent); color: #fff; font-family: var(--mst-body); font-weight: 600; font-size: 16px; text-decoration: none; box-shadow: 0 10px 30px rgba(7, 10, 24, .55); transform: translateY(140%); transition: transform .45s var(--mst-ease); }
	.mst-sticky-cta.is-visible { transform: none; }
	.mst-menu-open .mst-sticky-cta, .mst-consent-open .mst-sticky-cta { transform: translateY(140%); }
	/* Comfortable tap targets (44 px) for the small text links. */
	.elementor .mst-card > a, .mst-testi__more, .mst-footer__col a { display: inline-flex; align-items: center; min-height: 44px; }
}

/* ---------- Client satisfaction ([mst_satisfaction]) ---------- */
.mst-sat { background: var(--mst-surface); }
.mst-sat__grid { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: 72px; align-items: center; }
.mst-sat__hero { align-items: center; text-align: center; padding: 56px 40px; gap: 18px; background: radial-gradient(120% 90% at 50% 0%, rgba(47, 107, 255, .22) 0%, rgba(20, 27, 63, .92) 55%, rgba(13, 18, 48, .95) 100%); }
.mst-ring--xl { width: 230px; height: 230px; margin: 0 auto 4px; }
.mst-ring--xl .mst-ring__track, .mst-ring--xl .mst-ring__bar { stroke-width: 7; }
.mst-ring--xl .mst-ring__value { font-size: 58px; }
.mst-sat__caption { margin: 0; max-width: 300px; font-size: 18px; line-height: 1.5; color: var(--mst-ink); }
.mst-sat__stars { margin: 0; color: var(--mst-accent-soft); font-size: 18px; letter-spacing: 4px; }
.mst-sat__copy { display: flex; flex-direction: column; align-items: flex-start; gap: 22px; }
.mst-insights ul.mst-sat__points { list-style: none; margin: 4px 0 0; padding: 0; display: grid; gap: 14px; }
.mst-sat__points li { position: relative; margin: 0; padding-left: 40px; font-size: 18px; line-height: 1.5; color: var(--mst-ink); }
.mst-sat__points li::before { content: ""; position: absolute; left: 0; top: 0; width: 26px; height: 26px; border-radius: 50%; background: rgba(47, 107, 255, .22) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238DB0FF' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 13px no-repeat; }
.mst-sat__stats { width: 100%; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 10px; }
.mst-sat__stat { padding: 22px 20px; gap: 6px; }
.mst-sat__num { margin: 0; font-family: var(--mst-display); font-size: 36px; font-weight: 600; line-height: 1; letter-spacing: -.03em; color: var(--mst-ink); font-variant-numeric: tabular-nums; }
.mst-sat__label { margin: 0; font-size: 14px; line-height: 1.45; color: var(--mst-muted); }
@media (max-width: 1024px) { .mst-sat__grid { grid-template-columns: 1fr; gap: 40px; } }
@media (max-width: 767px) {
	.mst-sat__hero { padding: 40px 24px; }
	.mst-ring--xl { width: 180px; height: 180px; }
	.mst-ring--xl .mst-ring__value { font-size: 44px; }
	.mst-sat__points li { font-size: 16.5px; }
	.mst-sat__stats { grid-template-columns: 1fr; }
	.mst-sat__stat { display: grid; grid-template-columns: 74px minmax(0, 1fr); align-items: center; gap: 14px; padding: 18px 20px; }
	.mst-sat__num { font-size: 30px; }
}

/* ---------- Fluent Forms on dark cards ---------- */
.mst-site .fluentform .ff-el-group { margin-bottom: 18px; }
.mst-site .fluentform .ff-el-input--label label { color: var(--mst-ink); font-family: var(--mst-body); font-size: 14px; font-weight: 600; }
.mst-site .fluentform .ff-el-input--label.ff-el-is-required.asterisk-right label::after { color: var(--mst-accent-soft); }
.mst-site .fluentform .ff-el-form-control { background: var(--mst-raised); border: 1px solid var(--mst-line); border-radius: 14px; color: var(--mst-ink); font-family: var(--mst-body); font-size: 16px; padding: 14px 16px; min-height: 52px; transition: border-color .25s, box-shadow .25s; }
.mst-site .fluentform .ff-el-form-control::placeholder { color: #7C86A8; }
.mst-site .fluentform .ff-el-form-control:focus { border-color: var(--mst-accent); box-shadow: 0 0 0 3px rgba(47, 107, 255, .25); outline: none; background: var(--mst-raised); color: var(--mst-ink); }
.mst-site .fluentform select.ff-el-form-control { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--mst-accent-soft) 50%), linear-gradient(135deg, var(--mst-accent-soft) 50%, transparent 50%); background-position: calc(100% - 22px) 50%, calc(100% - 16px) 50%; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 44px; }
.mst-site .fluentform select.ff-el-form-control option { background: var(--mst-surface); color: var(--mst-ink); }
.mst-site .fluentform textarea.ff-el-form-control { min-height: 140px; }
.mst-site .fluentform .ff-btn-submit { background: var(--mst-accent) !important; color: #fff !important; border: 0 !important; border-radius: 999px !important; padding: 16px 30px !important; font-family: var(--mst-body); font-size: 16px; font-weight: 600; letter-spacing: 0; text-transform: none; transition: background-color .3s, transform .3s var(--mst-ease); }
.mst-site .fluentform .ff-btn-submit:hover { background: #4A7FFF !important; transform: translateY(-2px); }
.mst-site .fluentform .error, .mst-site .fluentform .text-danger { color: #FF8A8A; font-size: 13px; }
/* Service choice: pill buttons (checkboxes underneath, so several can be picked). */
.mst-site .fluentform .mst-ff-pills .ff-el-input--content { display: flex; flex-wrap: wrap; gap: 10px; }
.mst-site .fluentform .mst-ff-pills .ff-el-form-check { margin: 0; padding: 0; }
.mst-site .fluentform .mst-ff-pills .ff-el-form-check-label { position: relative; display: inline-flex; align-items: center; gap: 10px; margin: 0; padding: 11px 18px 11px 14px; border: 1px solid var(--mst-line); border-radius: 999px; background: var(--mst-raised); color: var(--mst-muted); font-family: var(--mst-body); font-size: 15px; font-weight: 500; line-height: 1.2; cursor: pointer; user-select: none; transition: border-color .25s, background-color .25s, color .25s, transform .3s var(--mst-ease); }
.mst-site .fluentform .mst-ff-pills .ff-el-form-check-label::before { content: ""; flex: 0 0 18px; width: 18px; height: 18px; border: 1.5px solid #4A5487; border-radius: 50%; transition: background-color .25s, border-color .25s; }
.mst-site .fluentform .mst-ff-pills .ff-el-form-check-input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.mst-site .fluentform .mst-ff-pills .ff-el-form-check-label:hover { border-color: var(--mst-accent-soft); color: var(--mst-ink); transform: translateY(-1px); }
.mst-site .fluentform .mst-ff-pills .ff-el-form-check:has(input:checked) .ff-el-form-check-label { border-color: var(--mst-accent); background: rgba(47, 107, 255, .18); color: #fff; }
.mst-site .fluentform .mst-ff-pills .ff-el-form-check:has(input:checked) .ff-el-form-check-label::before { border-color: var(--mst-accent); background: var(--mst-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 11px no-repeat; }
.mst-site .fluentform .mst-ff-pills .ff-el-form-check:has(input:focus-visible) .ff-el-form-check-label { outline: 2px solid var(--mst-accent-soft); outline-offset: 2px; }
.mst-site .fluentform .ff-el-help-message { margin-top: 2px; font-size: 13px; color: #7C86A8; font-style: normal; }
.mst-site .fluentform .mst-ff-pills .ff-el-help-message { flex-basis: 100%; margin-top: 4px; }
.mst-site .ff-message-success { background: var(--mst-raised); border: 1px solid var(--mst-accent); color: var(--mst-ink); border-radius: 16px; padding: 18px 20px; }

/* Split text: keep line masks from clipping descenders. */
.mst-split-line { padding-bottom: .08em; margin-bottom: -.08em; }

@media (prefers-reduced-motion: reduce) {
	@view-transition { navigation: none; }
	html { scroll-behavior: auto; }
	.mst-marquee, .mst-testi__track, body .elementor .fx-bg, .elementor .fx-bg > img, .mst-growth__dot::after { animation: none !important; }
	.mst-testi__row { overflow-x: auto; }
	.mst-header, .mst-nav__list .sub-menu, .mst-burger__line { transition: none; }
}
