/* Website sizing shared by marketing, services, MC, and the WordPress theme.
 * Keep invitation artwork and the WordPress administration outside this scope.
 * Belgiano Serif is supplied by the site's custom-font registration.
 */
:root {
  --nvi-web-heading: "Belgiano Serif", Georgia, serif;
  --nvi-web-body: "Poppins", Arial, sans-serif;
  --nvi-web-editorial: "Cormorant Infant", Georgia, serif;
  --nvi-web-logo: 42px;
  --nvi-web-hero: 72px;
  --nvi-web-eyebrow: 20px;
  --nvi-web-section: 36px;
  --nvi-web-description: 24px;
  --nvi-web-about: 20px;
  --nvi-web-subtitle: 20px;
  --nvi-web-button: 14.5px;
  --nvi-web-theme: 16px;
  --nvi-web-footer: 14px;
  --nvi-web-copy: 16px;
  --nvi-web-gutter: 50px;
  --nvi-web-space: 100px;
  --nvi-web-catalog-top: 150px;
  --nvi-web-catalog-gutter: 50px;
  --nvi-web-width: 1140px;
  --nvi-web-about-width: 720px;
}
@media (max-width: 767px) {
  :root {
    --nvi-web-logo: 32px;
    --nvi-web-hero: 36px;
    --nvi-web-eyebrow: 12px;
    --nvi-web-section: 28px;
    --nvi-web-description: 16px;
    --nvi-web-about: 14px;
    --nvi-web-subtitle: 16px;
    --nvi-web-button: 12px;
    --nvi-web-theme: 11px;
    --nvi-web-footer: 11px;
    --nvi-web-copy: 14px;
    --nvi-web-gutter: 25px;
    --nvi-web-space: 75px;
    --nvi-web-catalog-top: 75px;
    --nvi-web-catalog-gutter: 15px;
  }
}

body .nvi-site,
body :is(.nusa-header, .nusa-footer, .nusa-page, .nusa-content, .nusa-single, .nusa-error) {
  font-family: var(--nvi-web-body);
  font-size: var(--nvi-web-copy);
  line-height: 1.7;
  height: auto;
}
body .nvi-site { --nvi-font-heading: var(--nvi-web-heading); --nvi-font-body: var(--nvi-web-body); --nvi-font-editorial: var(--nvi-web-editorial); }
body .nvi-site :is(h1, h2, h3),
body :is(.nusa-page, .nusa-content, .nusa-single, .nusa-error) :is(h1, h2, h3) {
  font-family: var(--nvi-web-heading);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: normal;
  overflow-wrap: anywhere;
}
body .nvi-site .nvi-mc-section :where(p, li, label) { font-family: var(--nvi-web-body); font-size: var(--nvi-web-copy); line-height: 1.8; }
body .nvi-site .nvi-mc-section h3 { font-family: var(--nvi-web-body); font-size: var(--nvi-web-copy); font-weight: 500; line-height: 1.6; }
body .nvi-site :is(.nvi-attari-hero, .nvi-inner-hero, .nvi-service-hero, .nvi-contact-hero, .nvi-mc-hero) h1,
body :is(.nusa-page-head, .nusa-archive-head, .nusa-single header, .nusa-error) h1 {
  font-family: var(--nvi-web-heading);
  font-size: var(--nvi-web-hero);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: normal;
  height: auto;
}
body .nvi-site :is(.nvi-attari-about, .nvi-attari-section-head, .nvi-attari-why, .nvi-attari-cta, .nvi-attari-faq, .nvi-attari-partners, .nvi-attari-popup, .nvi-site-section__head, .nvi-site-cta, .nvi-service-showcase__head, .nvi-demo-showcase__head, .nvi-demo-library__intro, .nvi-mc-section) h2,
body .nvi-site :is(.nvi-catalog-addons__heading h3, .nvi-checkin-login h1, .nvi-checkin-console h1, .nvi-checkin-result h2),
body :is(.nusa-entry-content, .nusa-post-card) h2,
body .nusa-page-content > :is(h2, .wp-block-heading) {
  font-family: var(--nvi-web-heading);
  font-size: var(--nvi-web-section);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: normal;
}
body .nvi-site :is(.nvi-attari-eyebrow, .nvi-site-eyebrow, .nvi-mc-eyebrow, .nvi-mc-kicker),
body :is(.nusa-page-head, .nusa-archive-head, .nusa-single header, .nusa-error) > p {
  font-family: var(--nvi-web-body);
  font-size: var(--nvi-web-eyebrow);
  font-style: normal;
  line-height: 1.5;
}
body .nvi-site .nvi-attari-hero__description,
body .nvi-site .nvi-inner-hero > p:not(.nvi-site-eyebrow),
body .nvi-site :is(.nvi-service-hero, .nvi-contact-hero) > div > p:not(.nvi-site-eyebrow),
body .nvi-site .nvi-mc-hero .nvi-mc-lead {
  font-family: var(--nvi-web-editorial);
  font-size: var(--nvi-web-description);
  font-style: italic;
  font-weight: 400;
  line-height: 1.8;
}
body .nvi-site .nvi-attari-about p,
body .nvi-site .nvi-service-about p:not(.nvi-site-eyebrow),
body .nvi-site .nvi-mc-about p:not(.nvi-mc-eyebrow),
body .nvi-site .nvi-mc-about blockquote {
  font-family: var(--nvi-web-editorial);
  font-size: var(--nvi-web-about);
  font-style: italic;
  font-weight: 400;
  line-height: 1.8;
}
body .nvi-site :is(.nvi-attari-section-head, .nvi-site-section__head, .nvi-service-showcase__head, .nvi-demo-showcase__head, .nvi-demo-library__intro, .nvi-mc-section-head) p:not(.nvi-site-eyebrow):not(.nvi-mc-eyebrow),
body .nvi-site .nvi-catalog-addons__heading > p {
  font-family: var(--nvi-web-editorial);
  font-size: var(--nvi-web-subtitle);
  font-style: italic;
  font-weight: 400;
  line-height: 1.8;
}

/* Buttons and labels share sizes; touch targets remain comfortably tappable. */
body .nvi-site :is(.nvi-button, .nvi-mc-button, .nvi-attari-order, .nvi-text-link, .nvi-attari-hero__actions a, .nvi-attari-cta a, .nvi-attari-popup__dialog a, .nvi-attari-product__actions a, .nvi-filter-tabs button, .nvi-attari-tabs button, .nvi-demo-filters button, .nvi-mc-filters button, [data-nvi-features-toggle]),
body .nvi-site :is(.nvi-demo-card__body, .nvi-service-demo-card__body) > a,
body :is(.nusa-error > div > a, .nusa-post-card > div > a, .nusa-page-content .wp-block-button__link) {
  font-family: var(--nvi-web-body);
  font-size: var(--nvi-web-button);
  line-height: 1.5;
  min-height: 44px;
  white-space: normal;
  text-align: center;
}
body .nvi-site :is(.nvi-attari-product h3, .nvi-attari-product__price, .nvi-attari-product__price strong, .nvi-attari-product__price del, .nvi-portfolio-card > div > h2, .nvi-portfolio-card__price, .nvi-portfolio-card__price strong, .nvi-demo-card__body h3, .nvi-demo-library-card__body h2, .nvi-service-demo-card__body h3, .nvi-price-card h3, .nvi-price strong, .nvi-price small, .nvi-mc-package-card h3, .nvi-mc-package-card > strong) {
  font-family: var(--nvi-web-body);
  font-size: var(--nvi-web-theme);
  line-height: 1.5;
  letter-spacing: normal;
}
body .nvi-site :is(.nvi-attari-service h3, .nvi-feature-card h3, .nvi-service-features h3, .nvi-checkin-flow h3, .nvi-mc-service-card h3, .nvi-mc-partner-card h3, .nvi-mc-highlight-grid h3) {
  font-family: var(--nvi-web-body);
  font-size: var(--nvi-web-copy);
  line-height: 1.6;
  font-weight: 500;
}
body .nvi-site :is(.nvi-attari-service p, .nvi-feature-card p, .nvi-service-demo-card__description, .nvi-attari-faq summary, .nvi-attari-faq details > p, .nvi-attari-why__list summary, .nvi-attari-why__list p, .nvi-mc-faq-list summary, .nvi-mc-faq-list p, .nvi-contact-details, .nvi-contact-form label),
body :is(.nusa-entry-content, .nusa-post-card p) {
  font-family: var(--nvi-web-body);
  font-size: var(--nvi-web-copy);
  line-height: 1.8;
}
body .nvi-site :is(input, select, textarea) { font-family: var(--nvi-web-body); max-width: 100%; box-sizing: border-box; }

/* Header and footer apply even when rendered outside the home widget. */
body .nvi-site :is(.nvi-attari-header .nvi-attari-brand, .nvi-site-header .nvi-site-brand > span, .nvi-mc-subnav__brand > span),
body .nusa-header .nusa-brand > span {
  font-family: var(--nvi-web-heading);
  font-size: var(--nvi-web-logo);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: normal;
}
body .nvi-site :is(.nvi-attari-brand, .nvi-site-brand, .nvi-mc-subnav__brand),
body .nusa-header .nusa-brand { min-width: 0; overflow-wrap: anywhere; }
body .nvi-site .nvi-attari-header .nvi-attari-brand img,
body .nusa-header .custom-logo { max-height: var(--nvi-web-logo); width: auto; }
body .nvi-site :is(.nvi-attari-nav a, .nvi-site-nav a, .nvi-nav-group > button, .nvi-mc-subnav__links a),
body .nusa-header .nusa-nav a {
  font-family: var(--nvi-web-body);
  font-size: var(--nvi-web-button);
  line-height: 1.5;
}
body .nvi-site :is(.nvi-site-brand > small, .nvi-mc-subnav__brand > small),
body .nusa-header .nusa-brand > small { font-family: var(--nvi-web-body); font-size: var(--nvi-web-footer); line-height: 1.5; letter-spacing: .04em; }
body .nvi-site :is(.nvi-attari-header, .nvi-site-header, .nvi-mc-subnav),
body .nusa-header .nusa-header__inner {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  height: auto;
  min-height: 86px;
  gap: 20px;
  padding: 14px max(var(--nvi-web-gutter), calc((100% - var(--nvi-web-width)) / 2));
}
body .nvi-site :is(.nvi-attari-footer, .nvi-site-footer),
body .nusa-footer {
  padding-inline: max(var(--nvi-web-gutter), calc((100% - var(--nvi-web-width)) / 2));
  height: auto;
}
body .nvi-site :is(.nvi-attari-footer, .nvi-site-footer) :is(p, a, span, h2, strong, small),
body .nusa-footer :is(p, a, span, h2, strong, small) {
  font-family: var(--nvi-web-body);
  font-size: var(--nvi-web-footer);
  line-height: 1.8;
  overflow-wrap: anywhere;
}
body .nvi-site .nvi-attari-footer .nvi-attari-footer__brand,
body .nvi-site .nvi-site-footer .nvi-site-brand > span,
body .nusa-footer > div > strong {
  font-family: var(--nvi-web-heading);
  font-size: var(--nvi-web-logo);
  font-weight: 400;
  line-height: 1.2;
}
body .nvi-site .nvi-attari-footer__brand > span { font: inherit; }
body .nvi-site .nvi-attari-footer__brand img { max-height: var(--nvi-web-logo); width: auto; }

/* Full-bleed backgrounds, with content kept to 1,140 px. */
body .nvi-site :is(.nvi-site-section, .nvi-service-showcase, .nvi-demo-library, .nvi-demo-showcase, .nvi-attari-why, .nvi-attari-services, .nvi-attari-faq, .nvi-attari-partners, .nvi-attari-cta, .nvi-site-cta, .nvi-mc-section) {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  height: auto;
  min-height: 0;
  margin-inline: auto;
  padding: var(--nvi-web-space) max(var(--nvi-web-gutter), calc((100% - var(--nvi-web-width)) / 2));
}
body .nvi-site :is(.nvi-attari-hero, .nvi-inner-hero, .nvi-service-hero, .nvi-contact-hero, .nvi-mc-hero) {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  height: auto;
  min-height: 100vh;
  padding-inline: max(var(--nvi-web-gutter), calc((100% - var(--nvi-web-width)) / 2));
}
body .nvi-site .nvi-attari-hero__content { width: 100%; max-width: var(--nvi-web-width); margin-inline: auto; }
body .nvi-site .nvi-inner-hero { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; }
body .nvi-site :is(.nvi-service-hero, .nvi-contact-hero, .nvi-mc-hero) {
  grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
  gap: 48px;
  padding-block: var(--nvi-web-space);
  align-items: center;
}
body .nvi-site :is(.nvi-service-hero, .nvi-contact-hero, .nvi-mc-hero, .nvi-attari-why, .nvi-mc-about) > * { min-width: 0; }
body .nvi-site .nvi-attari-why { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); }
body .nvi-site :is(.nvi-attari-about, .nvi-service-about, .nvi-mc-about) {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  height: auto;
  min-height: 0;
  padding: var(--nvi-web-space) max(50px, calc((100% - var(--nvi-web-about-width)) / 2));
}
body .nvi-site .nvi-about-inner { max-width: var(--nvi-web-about-width); width: 100%; margin-inline: auto; }
body .nvi-site .nvi-mc-about { grid-template-columns: minmax(0, 1fr); gap: 36px; }
body .nvi-site :is(.nvi-attari-catalog, .nvi-portfolio, .nvi-demo-library, .nvi-service-showcase, .nvi-mc-portfolio, .nvi-mc-packages) {
  padding: var(--nvi-web-catalog-top) max(var(--nvi-web-catalog-gutter), calc((100% - var(--nvi-web-width)) / 2)) var(--nvi-web-space);
  max-width: none;
  height: auto;
  min-height: 0;
}
body .nvi-site :is(.nvi-checkin-login, .nvi-checkin-console) { box-sizing: border-box; width: 100%; max-width: var(--nvi-web-width); margin-inline: auto; padding-inline: var(--nvi-web-gutter); }
body .nvi-site.nvi-mc {
  --nvi-mc-content: var(--nvi-web-width);
  --nvi-mc-shell: var(--nvi-web-width);
  --nvi-mc-shell-wide: var(--nvi-web-width);
  --nvi-mc-gutter: var(--nvi-web-gutter);
  --nvi-mc-space-y: var(--nvi-web-space);
}
body .nvi-site .nvi-mc-subnav__links { min-width: 0; flex-wrap: wrap; gap: 10px 16px; }
body .nvi-site .nvi-mc-subnav__brand { white-space: normal; }
body .nvi-site .nvi-mc-subnav > .nvi-mc-button { white-space: normal; }

/* Native pages, articles, archives and 404 share the same sizing system. */
body :is(.nusa-page-head, .nusa-archive-head, .nusa-single header, .nusa-error) {
  box-sizing: border-box;
  padding: var(--nvi-web-space) max(var(--nvi-web-gutter), calc((100% - var(--nvi-web-width)) / 2));
  height: auto;
}
body :is(.nusa-content__inner, .nusa-single__inner),
body .nusa-page .nusa-page-content {
  box-sizing: border-box;
  max-width: calc(var(--nvi-web-width) + 2 * var(--nvi-web-gutter));
  margin-inline: auto;
  padding: var(--nvi-web-space) var(--nvi-web-gutter);
}
body :is(.nusa-archive-head, .nusa-single header) { margin: 0 0 50px; }
body .nusa-page .nusa-page-content:has(.elementor, .nvi-site) { max-width: none; padding: 0; }
body .nusa-error { min-height: 100vh; }
body .nusa-error > div { max-width: var(--nvi-web-width); }
body .nusa-footer > div { max-width: var(--nvi-web-width); margin-inline: auto; }

/* Keep all supplied words in one grid cell to reserve the tallest title. */
body .nvi-site .nvi-attari-hero [data-nvi-typewriter] { display: grid; min-height: 1.2em; text-wrap: initial; }
body .nvi-site .nvi-attari-hero [data-nvi-typewriter] > span {
  grid-area: 1 / 1;
  position: relative;
  inset: auto;
  width: 100%;
  padding-inline: .18em;
  box-sizing: border-box;
  font: inherit;
  white-space: normal;
}
body .nvi-site .nvi-attari-hero [data-nvi-typewriter].has-typewriter > .nvi-hero-title-option {
  visibility: hidden;
  opacity: 0;
  transition: none;
  transform: none;
}
body .nvi-site .nvi-attari-hero [data-nvi-typewriter] > .nvi-typewriter-output {
  visibility: visible;
  opacity: 1;
  transition: none;
  transform: none;
}
.nvi-typewriter-output::after { content: ""; display: inline-block; width: 0; height: .85em; border-right: 2px solid currentColor; vertical-align: -.04em; margin-left: .05em; animation: nvi-typing-caret 700ms steps(1) infinite; }
.nvi-attari-hero.is-paused .nvi-typewriter-output::after { visibility: hidden; animation: none; }
@keyframes nvi-typing-caret { 50% { opacity: 0; } }

@media (max-width: 1024px) {
  body .nvi-site :is(.nvi-service-hero, .nvi-contact-hero, .nvi-mc-hero) { grid-template-columns: minmax(0, 1fr); gap: 36px; }
  body .nvi-site .nvi-attari-why { grid-template-columns: minmax(0, 1fr); }
  body .nvi-site .nvi-site-footer { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
  body .nvi-site .nvi-site-footer__copy { grid-column: 1 / -1; }
}
@media (max-width: 767px) {
  body .nvi-site :is(.nvi-attari-header, .nvi-site-header, .nvi-mc-subnav),
  body .nusa-header .nusa-header__inner { min-height: 74px; gap: 14px; padding-block: 12px; }
  body .nvi-site .nvi-site-footer { grid-template-columns: minmax(0, 1fr); }
  body .nvi-site .nvi-service-features { grid-template-columns: minmax(0, 1fr); }
  body .nvi-site .nvi-contact-form { padding: 24px 20px; }
  body .nvi-site .nvi-contact-details strong { font-size: 14px; overflow-wrap: anywhere; }
  body .nvi-site .nvi-mc-subnav__brand { max-width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .nvi-typewriter-output::after { display: none; animation: none; }
}
