/* ==========================================================================
   ZMS Dynamics: site-wide presentation layer
   Tokens, fonts, Elementor resets, buttons, header, mobile menu, footer, legal pages.
   Specificity notes:
   - `.zms` is a body class added by the plugin, so `.zms .zms-*` (0,2,0) beats Elementor defaults.
   - Container resets use :where() so component rules always win over them.
   ========================================================================== */

@font-face {
	font-family: "Archivo";
	font-style: normal;
	font-weight: 100 900;
	font-stretch: 62% 125%;
	font-display: swap;
	src: url("../fonts/archivo-latin.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-stretch: 75% 100%;
	font-display: swap;
	src: url("../fonts/instrument-sans-latin.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;
}

:root {
	--zms-ink: #070b12;
	--zms-ink-2: #0c1422;
	--zms-navy: #0d1d35;
	--zms-navy-2: #14294a;
	--zms-blue: #1767ff;
	--zms-blue-deep: #0d4fd1;
	--zms-sky: #7fb0ff;
	--zms-paper: #f2f4f7;
	--zms-paper-2: #e6ebf1;
	--zms-white: #ffffff;
	--zms-text: #0b1220;
	--zms-text-2: #4f5b6c;
	--zms-on-dark: #eef2f8;
	--zms-on-dark-2: rgba(226, 233, 243, 0.7);
	--zms-line-dark: rgba(255, 255, 255, 0.12);
	--zms-line-light: rgba(11, 18, 32, 0.12);

	--zms-font-display: "Archivo", "Helvetica Neue", Arial, sans-serif;
	--zms-font-body: "Instrument Sans", "Helvetica Neue", Arial, sans-serif;

	--zms-radius-sm: 12px;
	--zms-radius: 20px;
	--zms-radius-lg: 30px;
	--zms-gutter: clamp(16px, 4.6vw, 72px);
	--zms-max: 1320px;
	--zms-cols: [full-start] minmax(var(--zms-gutter), 1fr) [main-start] minmax(0, var(--zms-max)) [main-end] minmax(var(--zms-gutter), 1fr) [full-end];
	--zms-sec-y: clamp(84px, 11vw, 168px);
	--zms-header-h: 76px;
	--zms-ease: cubic-bezier(0.22, 0.7, 0.12, 1);
	--zms-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
}

/* ---------------------------------------------------------------- base */

html { scroll-behavior: smooth; scroll-padding-top: 84px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body.zms {
	margin: 0;
	background: var(--zms-ink);
	color: var(--zms-text);
	font-family: var(--zms-font-body);
	font-size: 17px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}
.zms a { color: inherit; }
.zms img { max-width: 100%; height: auto; }
.zms p { margin: 0 0 0.9em; }
.zms p:last-child { margin-bottom: 0; }
.zms ::selection { background: var(--zms-blue); color: #fff; }
.zms :focus-visible { outline: 2px solid var(--zms-sky); outline-offset: 3px; border-radius: 6px; }

.zms-sr {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* Elementor container reset for ZMS components only (low specificity on purpose). */
.zms :where(.e-con[class*="zms-"]) {
	--padding-top: 0; --padding-right: 0; --padding-bottom: 0; --padding-left: 0;
	--padding-block-start: 0; --padding-block-end: 0; --padding-inline-start: 0; --padding-inline-end: 0;
	--gap: 0px; --row-gap: 0px; --column-gap: 0px; --widgets-spacing: 0px; --widgets-spacing-row: 0px; --widgets-spacing-column: 0px;
	--width: auto;
	padding: 0;
	gap: 0;
	min-width: 0;
}
.zms :where([class*="zms-"]).elementor-widget { margin: 0; }
.zms :where([class*="zms-"]) .elementor-heading-title { margin: 0; padding: 0; color: inherit; font: inherit; letter-spacing: inherit; line-height: inherit; }
.zms :where([class*="zms-"]).elementor-widget-text-editor { color: inherit; font: inherit; }
.zms :where([class*="zms-"]).elementor-widget-image { text-align: left; line-height: 0; }
.zms :where([class*="zms-"]).elementor-widget-image a { display: block; }

/* ---------------------------------------------------------------- type */

.zms .zms-h2,
.zms .zms-final__title,
.zms .zms-intro__statement { font-family: var(--zms-font-display); }

.zms .zms-h2 .elementor-heading-title {
	font-family: var(--zms-font-display);
	font-stretch: 112%;
	font-weight: 720;
	font-size: clamp(2.15rem, 1.25rem + 3.5vw, 4.5rem);
	line-height: 0.98;
	letter-spacing: -0.028em;
	text-wrap: balance;
}
.zms .zms-lead {
	font-size: clamp(1.07rem, 0.98rem + 0.42vw, 1.32rem);
	line-height: 1.55;
	color: var(--zms-text-2);
	max-width: 36em;
	text-wrap: pretty;
}
.zms .zms-sub {
	font-family: var(--zms-font-display);
	font-stretch: 108%;
	font-weight: 600;
	font-size: 1rem;
	color: var(--zms-blue);
	display: flex;
	align-items: center;
	gap: 12px;
}
.zms .zms-sub p::before {
	content: "";
	display: inline-block;
	width: 26px;
	height: 2px;
	margin-right: 12px;
	vertical-align: middle;
	background: currentColor;
	border-radius: 2px;
}
.zms .zms-note {
	font-size: 0.92rem;
	color: var(--zms-text-2);
	padding: 12px 16px;
	border: 1px dashed rgba(23, 103, 255, 0.45);
	border-radius: var(--zms-radius-sm);
	background: rgba(23, 103, 255, 0.05);
	max-width: 36em;
}

/* ---------------------------------------------------------------- buttons */

.zms .zms-btn .elementor-button,
.zms .zms-btnlike {
	--btn-bg: var(--zms-blue);
	--btn-fg: #fff;
	--btn-bd: transparent;
	--btn-h: 54px;
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	min-height: var(--btn-h);
	padding: 0 26px;
	border-radius: 999px;
	border: 1px solid var(--btn-bd);
	background: var(--btn-bg);
	color: var(--btn-fg);
	font-family: var(--zms-font-display);
	font-stretch: 106%;
	font-weight: 620;
	font-size: 1rem;
	line-height: 1;
	letter-spacing: -0.005em;
	text-decoration: none;
	white-space: nowrap;
	box-shadow: none;
	transition: background-color 0.35s var(--zms-ease), color 0.35s var(--zms-ease), border-color 0.35s var(--zms-ease), transform 0.35s var(--zms-ease);
	-webkit-tap-highlight-color: transparent;
}
.zms .zms-btn .elementor-button-content-wrapper { display: inline-flex; align-items: center; gap: 12px; }
.zms .zms-btn .elementor-button-text { flex: 0 0 auto; }
.zms .zms-btn .elementor-button::after {
	content: "";
	width: 16px;
	height: 16px;
	flex: 0 0 16px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M1 8h12.2M8.6 3l4.9 5-4.9 5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%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 16 16'%3E%3Cpath d='M1 8h12.2M8.6 3l4.9 5-4.9 5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform 0.35s var(--zms-ease);
}
.zms .zms-btn .elementor-button:hover::after { transform: translateX(4px); }
.zms .zms-btn .elementor-button:hover { --btn-bg: var(--zms-blue-deep); }
.zms .zms-btn .elementor-button:active { transform: scale(0.98); }

.zms .zms-btn--lg .elementor-button { --btn-h: 60px; padding: 0 30px; font-size: 1.05rem; }
.zms .zms-btn--sm .elementor-button { --btn-h: 44px; padding: 0 18px; font-size: 0.94rem; }

.zms .zms-btn--glass .elementor-button {
	--btn-bg: rgba(255, 255, 255, 0.08);
	--btn-bd: rgba(255, 255, 255, 0.28);
	-webkit-backdrop-filter: blur(14px) saturate(140%);
	backdrop-filter: blur(14px) saturate(140%);
}
.zms .zms-btn--glass .elementor-button:hover { --btn-bg: rgba(255, 255, 255, 0.18); --btn-bd: rgba(255, 255, 255, 0.5); }

.zms .zms-btn--light .elementor-button { --btn-bg: #fff; --btn-fg: var(--zms-ink); }
.zms .zms-btn--light .elementor-button:hover { --btn-bg: var(--zms-sky); }

.zms .zms-btn--outline .elementor-button { --btn-bg: transparent; --btn-fg: var(--zms-text); --btn-bd: rgba(11, 18, 32, 0.24); }
.zms .zms-btn--outline .elementor-button:hover { --btn-bg: var(--zms-text); --btn-fg: #fff; --btn-bd: var(--zms-text); }

.zms .zms-btn--quiet .elementor-button,
.zms .zms-btn--quiet-light .elementor-button { --btn-bg: transparent; --btn-fg: currentColor; --btn-bd: transparent; padding: 0 6px; }
.zms .zms-btn--quiet .elementor-button::after,
.zms .zms-btn--quiet-light .elementor-button::after { display: none; }
.zms .zms-btn--quiet .elementor-button:hover,
.zms .zms-btn--quiet-light .elementor-button:hover { --btn-bg: transparent; }
.zms .zms-btn--quiet .elementor-button-text,
.zms .zms-btn--quiet-light .elementor-button-text {
	background: linear-gradient(currentColor, currentColor) 0 100% / 0 1.5px no-repeat;
	padding-bottom: 3px;
	transition: background-size 0.4s var(--zms-ease);
}
.zms .zms-btn--quiet .elementor-button:hover .elementor-button-text,
.zms .zms-btn--quiet-light .elementor-button:hover .elementor-button-text { background-size: 100% 1.5px; }
.zms .zms-btn--quiet-light .elementor-button { --btn-fg: #fff; }

.zms .zms-ctas { display: flex; flex-flow: row wrap; align-items: center; gap: 12px 14px; }

/* Inline text links inside copy */
.zms .zms-hero__login a,
.zms .zms-final__login a,
.zms .zms-faq__head a,
.zms .zms-faq__a a,
.zms .zms-footer__note a {
	color: inherit;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
	text-decoration-color: rgba(127, 176, 255, 0.8);
	transition: text-decoration-color 0.3s;
}
.zms .zms-hero__login a:hover,
.zms .zms-final__login a:hover,
.zms .zms-faq__head a:hover,
.zms .zms-faq__a a:hover { text-decoration-color: currentColor; }

/* ---------------------------------------------------------------- header */

.zms .zms-header {
	position: fixed;
	inset: 0 0 auto 0;
	z-index: 100;
	color: #fff;
	pointer-events: none;
}
.zms.admin-bar .zms-header { top: 32px; }
@media (max-width: 782px) { .zms.admin-bar .zms-header { top: 46px; } }
@media (max-width: 600px) { .zms.admin-bar .zms-header { top: 0; } .zms.admin-bar.zms-scrolled .zms-header { top: 0; } }

.zms .zms-header__bar {
	pointer-events: auto;
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	width: min(calc(100% - 2 * var(--zms-gutter) + 24px), calc(var(--zms-max) + 48px));
	margin: 14px auto 0;
	min-height: 62px;
	padding: 0 10px 0 22px;
	border-radius: 999px;
	border: 1px solid transparent;
	transition: background-color 0.5s var(--zms-ease), border-color 0.5s var(--zms-ease), margin 0.5s var(--zms-ease), box-shadow 0.5s var(--zms-ease), transform 0.5s var(--zms-ease);
}
.zms.zms-scrolled .zms-header__bar,
.zms.zms-menu-open .zms-header__bar,
.zms:not(.zms-has-hero) .zms-header__bar {
	background: rgba(9, 14, 23, 0.78);
	border-color: rgba(255, 255, 255, 0.1);
	-webkit-backdrop-filter: blur(18px) saturate(150%);
	backdrop-filter: blur(18px) saturate(150%);
	box-shadow: 0 18px 50px -24px rgba(0, 0, 0, 0.6);
	margin-top: 10px;
}
.zms.zms-header-hidden:not(.zms-menu-open) .zms-header__bar { transform: translateY(-130%); }

.zms .zms-header__logo { flex: 0 0 auto; }
.zms .zms-header__logo img { width: 168px; height: auto; display: block; }

.zms .zms-header__nav { flex: 1 1 auto; display: flex; justify-content: center; min-width: 0; }
.zms .zms-nav { display: flex; align-items: center; gap: 2px; white-space: nowrap; }
.zms .zms-nav a {
	position: relative;
	padding: 10px 14px;
	border-radius: 999px;
	font-family: var(--zms-font-display);
	font-stretch: 104%;
	font-weight: 520;
	font-size: 0.95rem;
	color: rgba(255, 255, 255, 0.82);
	text-decoration: none;
	transition: color 0.3s, background-color 0.3s;
}
.zms .zms-nav a:hover { color: #fff; background: rgba(255, 255, 255, 0.08); }
.zms .zms-nav a.is-active { color: #fff; }
.zms .zms-nav a.is-active::after {
	content: ""; position: absolute; left: 50%; bottom: 4px; width: 4px; height: 4px; margin-left: -2px;
	border-radius: 50%; background: var(--zms-sky);
}

.zms .zms-header__actions { display: flex; flex-direction: row; align-items: center; gap: 6px; flex: 0 0 auto; }
/* Elementor's mobile container rule sets width:100% and wrapping on every container; the header must stay one row. */
.zms .e-con.zms-header__bar { flex-wrap: nowrap; --flex-wrap: nowrap; }
.zms .e-con.zms-header__actions { --width: auto; width: auto; flex-wrap: nowrap; --flex-wrap: nowrap; margin-left: auto; }
.zms .zms-header__logo { flex: 0 1 auto; min-width: 0; }
.zms .zms-header__login .elementor-button { --btn-h: 44px; font-size: 0.95rem; padding: 0 12px; }

.zms .zms-burger {
	display: none;
	position: relative;
	width: 46px;
	height: 46px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.06);
	color: #fff;
	cursor: pointer;
}
.zms .zms-burger:hover, .zms .zms-burger:focus { background: rgba(255, 255, 255, 0.12); color: #fff; }
.zms .zms-burger__bars { position: absolute; inset: 0; display: grid; place-content: center; gap: 6px; }
.zms .zms-burger__bars span {
	display: block; width: 18px; height: 1.6px; border-radius: 2px; background: currentColor;
	transition: transform 0.45s var(--zms-ease);
}
.zms.zms-menu-open .zms-burger__bars span:first-child { transform: translateY(3.8px) rotate(45deg); }
.zms.zms-menu-open .zms-burger__bars span:last-child { transform: translateY(-3.8px) rotate(-45deg); }

/* Mobile menu panel */
.zms .zms-header__menu { pointer-events: none; }
.zms .zms-menu {
	position: fixed;
	inset: 0;
	z-index: -1;
	display: block;
	background: rgba(7, 11, 18, 0.97);
	-webkit-backdrop-filter: blur(20px);
	backdrop-filter: blur(20px);
	clip-path: inset(0 0 100% 0);
	visibility: hidden;
	transition: clip-path 0.65s var(--zms-ease-out), visibility 0s linear 0.65s;
	overflow-y: auto;
	overscroll-behavior: contain;
}
.zms .zms-menu[hidden] { display: block; }
.zms.zms-menu-open .zms-menu {
	pointer-events: auto;
	clip-path: inset(0 0 0 0);
	visibility: visible;
	transition: clip-path 0.7s var(--zms-ease-out), visibility 0s;
}
.zms .zms-menu__inner {
	min-height: 100%;
	display: flex;
	flex-direction: column;
	gap: 28px;
	padding: calc(var(--zms-header-h) + 34px) var(--zms-gutter) 34px;
	max-width: 640px;
	margin: 0 auto;
}
.zms .zms-menu__nav { display: flex; flex-direction: column; }
.zms .zms-menu__nav a {
	display: block;
	padding: 12px 0;
	border-bottom: 1px solid var(--zms-line-dark);
	font-family: var(--zms-font-display);
	font-stretch: 115%;
	font-weight: 680;
	font-size: clamp(1.6rem, 6.4vw, 2.2rem);
	letter-spacing: -0.02em;
	line-height: 1.1;
	color: #fff;
	text-decoration: none;
	transform: translateY(16px);
	opacity: 0;
	transition: transform 0.6s var(--zms-ease-out), opacity 0.6s var(--zms-ease-out);
}
.zms.zms-menu-open .zms-menu__nav a { transform: none; opacity: 1; }
.zms.zms-menu-open .zms-menu__nav a:nth-child(2) { transition-delay: 0.04s; }
.zms.zms-menu-open .zms-menu__nav a:nth-child(3) { transition-delay: 0.08s; }
.zms.zms-menu-open .zms-menu__nav a:nth-child(4) { transition-delay: 0.12s; }
.zms.zms-menu-open .zms-menu__nav a:nth-child(5) { transition-delay: 0.16s; }
.zms.zms-menu-open .zms-menu__nav a:nth-child(6) { transition-delay: 0.2s; }
.zms .zms-menu__ctas { display: grid; gap: 10px; }
.zms .zms-menu__cta {
	display: grid;
	gap: 4px;
	padding: 18px 20px;
	border-radius: var(--zms-radius);
	border: 1px solid var(--zms-line-dark);
	background: rgba(255, 255, 255, 0.04);
	color: #fff;
	text-decoration: none;
}
.zms .zms-menu__cta span { font-family: var(--zms-font-display); font-stretch: 108%; font-weight: 650; font-size: 1.12rem; }
.zms .zms-menu__cta small { font-size: 0.9rem; color: var(--zms-on-dark-2); }
.zms .zms-menu__cta--primary { background: var(--zms-blue); border-color: var(--zms-blue); }
.zms .zms-menu__cta--primary small { color: rgba(255, 255, 255, 0.82); }
.zms .zms-menu__foot { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: auto; }
.zms .zms-menu__foot a { color: var(--zms-on-dark-2); text-decoration: none; font-size: 0.98rem; }
.zms .zms-menu__foot a:hover { color: #fff; }
.zms.zms-menu-open { overflow: hidden; }

@media (max-width: 1080px) {
	.zms .zms-header__nav { display: none; }
	.zms .zms-burger { display: block; }
}
@media (max-width: 600px) {
	.zms .zms-header__bar { padding: 0 6px 0 16px; min-height: 58px; margin-top: 10px; width: calc(100% - 20px); }
	.zms .zms-header__logo img { width: 138px; }
	.zms .zms-header__login { display: none; }
	.zms .zms-header__book .elementor-button { --btn-h: 42px; padding: 0 16px; }
	.zms .zms-header__book .elementor-button::after { display: none; }
}
@media (max-width: 380px) {
	.zms .zms-header__bar { gap: 10px; padding-left: 14px; }
	.zms .zms-header__logo img { width: 122px; }
	.zms .zms-header__book .elementor-button { padding: 0 14px; font-size: 0.9rem; }
}
@media (min-width: 1081px) {
	.zms .zms-header__menu { display: none; }
}

/* ---------------------------------------------------------------- footer */

.zms .zms-footer {
	display: grid;
	grid-template-columns: var(--zms-cols);
	background: var(--zms-ink);
	color: var(--zms-on-dark);
	padding: clamp(64px, 8vw, 110px) 0 calc(28px + env(safe-area-inset-bottom));
	border-top: 1px solid var(--zms-line-dark);
}
.zms .zms-footer > * { grid-column: main; }
.zms .zms-footer__top {
	display: grid;
	grid-template-columns: 1.4fr repeat(3, 1fr);
	gap: 48px 40px;
	padding-bottom: clamp(40px, 6vw, 72px);
}
.zms .zms-footer__brand { display: flex; flex-direction: column; align-items: flex-start; gap: 22px; }
.zms .zms-footer__logo img { width: 190px; }
.zms .zms-footer__blurb { color: var(--zms-on-dark-2); max-width: 22em; }
.zms .zms-footer__col { display: flex; flex-direction: column; gap: 16px; }
.zms .zms-footer__title .elementor-heading-title {
	font-family: var(--zms-font-display);
	font-stretch: 108%;
	font-weight: 640;
	font-size: 1rem;
	color: #fff;
}
.zms .zms-footer__links ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.zms .zms-footer__links a { color: var(--zms-on-dark-2); text-decoration: none; transition: color 0.25s; }
.zms .zms-footer__links a:hover { color: #fff; }
.zms .zms-footer__bottom {
	display: flex;
	flex-flow: row wrap;
	justify-content: space-between;
	gap: 10px 30px;
	padding-top: 26px;
	border-top: 1px solid var(--zms-line-dark);
	font-size: 0.92rem;
	color: var(--zms-on-dark-2);
}
@media (max-width: 960px) {
	.zms .zms-footer__top { grid-template-columns: 1fr 1fr; }
	.zms .zms-footer__brand { grid-column: 1 / -1; }
}
@media (max-width: 520px) {
	.zms .zms-footer__top { grid-template-columns: 1fr; gap: 36px; }
}

/* ---------------------------------------------------------------- legal / standard pages */

.zms .zms-legal {
	display: grid;
	grid-template-columns: var(--zms-cols);
	background: var(--zms-paper);
	padding: calc(var(--zms-header-h) + clamp(60px, 8vw, 110px)) 0 var(--zms-sec-y);
}
.zms .zms-legal > * { grid-column: main; max-width: 760px; }
.zms .zms-legal__title .elementor-heading-title {
	font-family: var(--zms-font-display);
	font-stretch: 112%;
	font-weight: 720;
	font-size: clamp(2.2rem, 1.4rem + 3vw, 3.8rem);
	line-height: 1;
	letter-spacing: -0.028em;
	color: var(--zms-text);
	margin-bottom: 28px;
}
.zms .zms-legal__body { color: var(--zms-text-2); }
.zms .zms-legal__body h2 { font-family: var(--zms-font-display); font-stretch: 108%; font-weight: 660; font-size: 1.35rem; color: var(--zms-text); margin: 1.8em 0 0.5em; }
.zms .zms-legal__body a { color: var(--zms-blue); }
