/**
 * TRESSO - Shared marketing navigation
 * ONE file. Linked from every marketing page.
 * Built from LLV menu.css - proven stable approach.
 *
 * KEY DESIGN: position:fixed (not sticky).
 * Fixed nav is viewport-locked - page content/scroll/layout cannot affect it.
 * Body gets padding-top to compensate. Logo stays put. Always.
 */

:root {
  --nav-height: 92px;
  --nav-bg: rgba(7, 26, 47, 1);
  --nav-font: 'Poppins', system-ui, -apple-system, sans-serif;

  /* Site-wide color system */
  --bg:    #071A2F;
  --bg-1:  #0B1C35;
  --bg-2:  #081525;
  --card:  #0F2342;
  --card-2:#0F2038;

  --text-main:  #F5F5F3;
  --text-muted: #A9BFD5;

  /* Legacy aliases */
  --bg-primary:   #071A2F;
  --bg-secondary: #0B1C35;
  --panel:        #0F2342;
  --panel-soft:   #0F2038;
  --blue:   #60A5FA;
  --blue-h: #4F8DFF;
  --purple: #A855F7;
  --brand-blue: #4F8DFF;
  --brand-blue-h: #60A5FA;
  --green: #60A5FA;
  --green-bg: rgba(96,165,250,0.08);
  --success: #60A5FA;
  --success-surface: rgba(79, 141, 255, 0.14);
  --text:   #F5F5F3;
  --text-b: #DCEBFF;
  --text-m: #A9BFD5;
  --text-s: #6A8AAA;
}

/* Stable viewport - scrollbar always present, width never changes */
html {
  scroll-padding-top: var(--nav-height);
  scrollbar-gutter: stable;
  overflow-y: scroll;
  background: #0C1D3A !important;
}

html,
body,
.page-shell,
.marketing-page,
.pricing-page,
.features-page,
.about-page,
.faq-page,
.download-page {
  background: #0C1D3A !important;
}

body {
  padding-top: var(--nav-height) !important;
  margin: 0;
  min-height: 100vh;
  color: var(--text-main);
  font-family: var(--nav-font);
  overflow-anchor: none;
  scrollbar-gutter: auto !important;
  overflow-x: hidden;
  overflow-y: visible;
}

#scroll-bar {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1001;
  height: 2px;
  background: linear-gradient(90deg, rgba(79, 141, 255, 0.35), rgba(143, 99, 255, 0.28));
  width: 0;
  transition: width 0.1s linear;
}

/* No-flash placeholder until marketing-nav.js renders (same height/bg as approved nav) */
#marketing-nav-root:empty {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: var(--nav-height);
  min-height: var(--nav-height);
  background: var(--nav-bg);
  z-index: 1000;
}

#marketing-nav-root:not(:empty) {
  height: 0;
  overflow: visible;
}

/* No body animation - individual page heroes handle their own entry animations */

/* ── Nav bar - fixed, GPU-promoted, isolated ─────────────────────── */
header.site-nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  height: var(--nav-height);
  min-height: var(--nav-height);
  max-height: var(--nav-height);
  background: var(--nav-bg);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  /* GPU layer - nav is promoted permanently, never repainted with page content */
  transform: translateZ(0);
  will-change: transform;
  backface-visibility: hidden;
  /* Isolated stacking context - page animations cannot cause nav repaints */
  contain: layout;
  isolation: isolate;
  /* No animation on the bar itself, ever */
  animation: none !important;
  transition: none !important;
}

/* ── Nav inner - grid locks logo column; center/right cannot push logo ─ */
.nav-inner {
  height: var(--nav-height);
  width: 100%;
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 32px;
  box-sizing: border-box;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  grid-template-areas: "logo links right";
  align-items: center;
  column-gap: 24px;
  background: transparent;
}

/* ── Logo - fixed slot, same pixel position on every page ───────── */
.nav-logo {
  grid-area: logo;
  justify-self: start;
  align-self: center;
  display: flex;
  align-items: center;
  width: 190px;
  min-width: 190px;
  max-width: 190px;
  height: 68px;
  flex-shrink: 0;
  text-decoration: none;
  transform: none !important;
  animation: none !important;
  transition: none !important;
}

.nav-logo img,
.nav-logo-img {
  display: block;
  /* Bigger for presence + a readable tagline. Fixed width reserves the space so
     the logo never reflows ("flips") on load. 196 = 68 x the ~2.9:1 aspect. */
  height: 68px;
  width: 181px;
  max-width: 181px;
  object-fit: contain;
  object-position: left center;
  flex-shrink: 0;
  /* Fade ONLY the top/bottom dark bands so the box melts into the header without
     clipping the icon (left) or tagline (right), which reach the side edges. */
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 14%, #000 86%, transparent 100%);
  mask-image: linear-gradient(180deg, transparent 0%, #000 14%, #000 86%, transparent 100%);
  transform: none !important;
  animation: none !important;
  transition: none !important;
  will-change: auto;
}
/* The <picture> wrapper is transparent to layout - the <img> remains the flex
   child so sizing/positioning is unchanged whether WebP or PNG is served. */
.nav-logo picture { display: contents; }

/* Page styles must never affect nav chrome */
.site-nav a.nav-logo,
.site-nav a.nav-logo:hover,
.site-nav a.nav-logo:focus,
.site-nav a.nav-logo.active {
  height: 68px;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  background: none !important;
  color: inherit !important;
  transform: none !important;
  box-shadow: none !important;
  font-weight: inherit !important;
}

.site-nav a.nav-logo::before,
.site-nav a.nav-logo::after {
  display: none !important;
  content: none !important;
}

/* ── Nav links ───────────────────────────────────────────────────── */
nav.nav-links {
  grid-area: links;
  justify-self: center;
  display: flex;
  align-items: center;
  gap: 30px;
  min-width: 0;
}

nav.nav-links a {
  /* Fixed dimensions - nothing changes on hover/active */
  position: relative;
  display: inline-flex;
  align-items: center;
  height: var(--nav-height);
  padding: 0;
  margin: 0;
  /* Typography - identical on all states, no shift */
  color: #C9D2E3;
  font-family: var(--nav-font);
  font-size: 13px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0;
  white-space: nowrap;
  text-decoration: none;
  /* No layout-affecting transitions */
  border: 0;
  background: none !important;
  transform: none;
  transition: color 140ms ease;
}

/* Underline indicator - top-level nav links only (not dropdown rows) */
nav.nav-links .nav-link-wrap > a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 22px;
  height: 2px;
  background: rgba(96, 165, 250, 0.45);
  border-radius: 999px;
  opacity: 0;
  /* Only opacity transitions - zero layout impact */
  transition: opacity 140ms ease;
}

/* Active/hover - only color and underline opacity change. Nothing else. */
nav.nav-links .nav-link-wrap > a:hover,
nav.nav-links .nav-link-wrap > a.active,
nav.nav-links .nav-link-wrap > a[aria-current="page"] {
  color: #F5F5F3;
  font-weight: 500;  /* SAME as default - no width change */
  padding: 0;        /* SAME as default */
  margin: 0;         /* SAME as default */
  transform: none;
}

nav.nav-links .nav-link-wrap > a:hover::after,
nav.nav-links .nav-link-wrap > a.active::after,
nav.nav-links .nav-link-wrap > a[aria-current="page"]::after {
  opacity: 1;
}

/* ── Right section ───────────────────────────────────────────────── */
.nav-right {
  grid-area: right;
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 16px;
  flex-shrink: 0;
}

.nav-signin {
  font-size: 13px;
  font-weight: 500;
  color: #A8B3C7;
  text-decoration: none;
  transition: color 140ms ease;
  white-space: nowrap;
}
.nav-signin:hover { color: #F5F5F3; }

/* ── Nav CTA button ──────────────────────────────────────────────── */
.nav-cta-btn {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  padding: 9px 18px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  color: #F5F5F3;
  text-decoration: none;
  background: linear-gradient(90deg, #4F8DFF, #8F63FF);
  box-shadow: 0 6px 20px rgba(80,140,255,0.28), 0 0 16px rgba(143,99,255,0.18);
  transition: opacity 140ms ease, box-shadow 140ms ease;
  flex-shrink: 0;
}
.nav-cta-btn:hover {
  opacity: 0.90;
  box-shadow: 0 8px 28px rgba(80,140,255,0.36), 0 0 24px rgba(143,99,255,0.24);
  color: #F5F5F3;
}

/* ── Nav link wrappers ──────────────────────────────────────────── */
.nav-link-wrap {
  display: flex;
  align-items: center;
  height: var(--nav-height);
}
.nav-link-wrap > a {
  display: inline-flex;
  align-items: center;
}

/* Dropdown panels removed - top-level links only (no chevron mega-menu) */
.nav-dropdown {
  display: none !important;
}

/* ── Mobile CTA in drawer ───────────────────────────────────────── */
.mob-drawer a.mob-cta {
  display: block;
  margin-top: 12px;
  padding: 14px 18px;
  border-radius: 12px;
  text-align: center;
  background: linear-gradient(90deg, #4F8DFF, #8F63FF);
  color: #F5F5F3;
  font-weight: 600;
  font-size: 15px;
  border-bottom: none;
}

/* ── Mobile ──────────────────────────────────────────────────────── */
.nav-mob {
  grid-area: right;
  justify-self: end;
  display: none;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.hamburger { display: flex; flex-direction: column; gap: 5px; background: none; border: none; cursor: pointer; padding: 5px; }
.hamburger span { display: block; width: 22px; height: 2px; background: #A8B3C7; border-radius: 2px; transition: all 0.22s; }
.hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2) { opacity: 0; }
.hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.mob-drawer {
  display: none;
  position: fixed;
  top: var(--nav-height);
  left: 0; right: 0; bottom: 0;
  background: rgba(7,26,47,0.98);
  padding: 28px;
  z-index: 999;
  overflow-y: auto;
}
.mob-drawer.open { display: block; }
.mob-drawer a {
  display: block; font-size: 17px; font-weight: 500; color: #C9D2E3;
  padding: 14px 0; border-bottom: 1px solid rgba(148,163,184,0.10);
  text-decoration: none;
}
.mob-drawer a:hover { color: #F5F5F3; }

@media (max-width: 900px) {
  .nav-inner {
    grid-template-columns: minmax(120px, auto) minmax(0, 1fr) auto;
    column-gap: 12px;
  }
  .nav-logo {
    width: auto;
    min-width: 0;
    max-width: 160px;
  }
  .nav-logo img,
  .nav-logo-img {
    width: 139px;
    max-width: 139px;
    height: 52px;
  }
  nav.nav-links, .nav-right { display: none; }
  .nav-mob { display: flex; }
}

/* Entrance visibility: see CONTENT VISIBILITY GUARANTEE at end of this file */

/* ── Plain page title labels (no pills, dots, or icons) ─────────── */
.eyebrow,
.hero-eyebrow,
.article-eyebrow,
.article-tag,
.policy-eyebrow,
.legal-eyebrow,
.signin-eyebrow,
.welcome-eyebrow {
  display: block !important;
  align-items: unset !important;
  gap: 0 !important;
  background: none !important;
  border: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: #8BAAC4 !important;
  margin-bottom: 40px !important;
  opacity: 1 !important;
}
.eyebrow .dot,
.welcome-eyebrow .dot-pulse {
  display: none !important;
}
.eyebrow svg,
.hero-eyebrow svg,
.article-eyebrow svg,
.welcome-eyebrow svg {
  display: none !important;
}

/* General gradient-text utility - brand blue->purple. Works in body copy, list
   items, and anywhere <span class="grad"> appears. Heading-scoped rules below use
   !important and still win where they apply. */
.grad {
  background: linear-gradient(125deg, #60A5FA 0%, #A855F7 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  color: transparent;
}

/* Visited links must never fall back to the browser's hard-to-read default
   purple on the dark theme. Keep them in the readable brand blue. */
a:visited { color: var(--blue-h); }

/* Gradient brand word inside plain uppercase labels */
.eyebrow .grad,
.hero-eyebrow .grad,
.article-eyebrow .grad,
.welcome-eyebrow .grad,
.signin-eyebrow .grad {
  display: inline !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  letter-spacing: inherit !important;
  line-height: inherit !important;
  margin: 0 !important;
  padding: 0 !important;
  background: linear-gradient(125deg, #60A5FA 0%, #A855F7 100%) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  color: transparent !important;
}

/* ── Shared top-level page hero titles (information pages) ───────── */
.page-hero h1,
.page-hero .hero-h1,
.getting-started-hero h1,
.pricing-hero h1,
.creator-guides-hero h1,
.cg-hero h1,
.gt-hero h1,
.about-hero h1,
.confirm-hero h1,
.confirm-hero .hero-h1,
.welcome-hero h1,
.welcome-hero .hero-h1,
.hero h1,
.hero .hero-h1,
.acct-left-headline.hero-h1 {
  font-size: clamp(32px, 3.8vw, 48px);
  line-height: 1.25;
  letter-spacing: 0.02em;
  font-weight: 800;
  margin-top: 0;
  margin-bottom: 32px;
  color: #F5F5F3;
  max-width: 920px;
  margin-left: auto;
  margin-right: auto;
  text-align: center;
  text-wrap: balance;
}

/* Gradient phrase inside H1 - same size/line box as surrounding text */
.page-hero h1 .grad,
.confirm-hero h1 .grad,
.welcome-hero h1 .grad {
  display: inline-block;
  margin-top: 0.12em;
  padding-bottom: 0.12em;
  margin-bottom: -0.06em;
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  background: linear-gradient(125deg, #60A5FA 0%, #A855F7 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

/* ── Shared page hero vertical rhythm ────────────────────────────── */
.page-hero,
.confirm-hero,
.welcome-hero {
  padding: 104px 0 88px;
}

@media (max-width: 640px) {
  .page-hero,
  .confirm-hero,
  .welcome-hero {
    padding: 72px 0 64px;
  }
}

.page-hero .eyebrow,
.page-hero .hero-eyebrow,
.hero-eyebrow,
.section-kicker {
  margin-bottom: 40px;
}

/* Premium hero subtitles - comfortable line length on centered pages */
.page-hero p,
.page-hero .hero-sub,
.confirm-hero p,
.welcome-hero p {
  line-height: 1.72;
  margin-top: 0;
  max-width: 700px;
  margin-left: auto;
  margin-right: auto;
}

/* ── Shared marketing page background ────────────────────────────── */
.sec-alt { background: transparent; }

.page-hero,
.about-hero,
.pricing-hero,
.features-hero,
.getting-started-hero,
.creator-guides-hero,
.article-hero {
  position: relative;
  overflow-x: clip;
  overflow-y: visible;
  background: transparent;
  border-bottom: none;
}

.about-hero::before,
.pricing-hero::before,
.features-hero::before,
.getting-started-hero::before,
.creator-guides-hero::before,
.article-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 50% 18%, rgba(80, 150, 255, 0.22), transparent 40%),
    radial-gradient(circle at 50% 42%, rgba(155, 108, 255, 0.15), transparent 42%);
  -webkit-mask-image:
    linear-gradient(90deg, transparent 0%, #000 12%, #000 88%, transparent 100%),
    linear-gradient(180deg, #000 0%, #000 62%, transparent 100%);
  mask-image:
    linear-gradient(90deg, transparent 0%, #000 12%, #000 88%, transparent 100%),
    linear-gradient(180deg, #000 0%, #000 62%, transparent 100%);
  -webkit-mask-composite: source-in;
  mask-composite: intersect;
}

.page-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 50% 18%, rgba(80, 150, 255, 0.22), transparent 40%),
    radial-gradient(circle at 50% 42%, rgba(155, 108, 255, 0.15), transparent 42%);
  -webkit-mask-image:
    linear-gradient(90deg, transparent 0%, #000 12%, #000 88%, transparent 100%),
    linear-gradient(180deg, #000 0%, #000 62%, transparent 100%);
  mask-image:
    linear-gradient(90deg, transparent 0%, #000 12%, #000 88%, transparent 100%),
    linear-gradient(180deg, #000 0%, #000 62%, transparent 100%);
  -webkit-mask-composite: source-in;
  mask-composite: intersect;
}

.page-hero::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 1px;
  pointer-events: none;
  background: linear-gradient(90deg, transparent, rgba(79, 141, 255, 0.08), transparent);
}

.page-hero > .wrap,
.page-hero > .wrap-wide {
  position: relative;
  z-index: 1;
}

/* ── Section glow - centered blue/violet behind every content band ── */
.section-glow {
  position: relative;
}

.section-glow::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 50% 18%, rgba(80, 150, 255, 0.16), transparent 34%),
    radial-gradient(circle at 50% 42%, rgba(155, 108, 255, 0.12), transparent 38%);
  z-index: 0;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 10%, #000 90%, transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0%, #000 10%, #000 90%, transparent 100%);
}

.section-glow > * {
  position: relative;
  z-index: 1;
}

.section-glow.subtle::before {
  background:
    radial-gradient(circle at 50% 20%, rgba(80, 150, 255, 0.10), transparent 34%),
    radial-gradient(circle at 50% 44%, rgba(155, 108, 255, 0.08), transparent 38%);
}

/* ── Glow containment: hero glow only, solid content below ──────── */
.gs-page {
  position: relative;
  background: #0C1D3A;
}

.gs-page::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: min(1200px, 100vw);
  height: min(720px, 92vh);
  background:
    radial-gradient(ellipse at 50% 14%, rgba(59, 130, 246, 0.22) 0%, transparent 62%),
    radial-gradient(ellipse at 50% 38%, rgba(168, 85, 247, 0.08) 0%, transparent 58%);
  pointer-events: none;
  z-index: 0;
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 36%, rgba(0, 0, 0, 0.72) 58%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 0%, #000 36%, rgba(0, 0, 0, 0.72) 58%, transparent 100%);
}

.page-body,
.guide-content,
.gt-body {
  position: relative;
  z-index: 1;
  background: #0C1D3A;
}

.gs-page .page-body,
.gs-page .guide-content {
  background: transparent;
}

.gs-page .page-hero::after {
  display: none;
}

.page-body.section-glow::before,
.guide-content.section-glow::before,
.gt-body.section-glow::before {
  display: none;
}

.sec {
  position: relative;
  background: #0C1D3A;
}

.hub-section-hdr h2,
.sec-hdr h2,
.faq-hdr h2 {
  color: #F5F5F3;
  -webkit-text-fill-color: #F5F5F3;
}

.hub-section-hdr h2 .grad,
.sec-hdr h2 .grad,
.faq-hdr h2 .grad {
  -webkit-text-fill-color: transparent;
  color: transparent;
}

/* ── Global card / panel ─────────────────────────────────────────── */
.card,
.panel,
.pricing-card,
.feature-card,
.faq-card {
  background:
    radial-gradient(circle at 50% 0%, rgba(80, 150, 255, 0.14), transparent 42%),
    #0E2744;
  border: 1px solid rgba(116, 176, 255, 0.18);
  box-shadow:
    0 0 0 1px rgba(116, 176, 255, 0.06),
    0 28px 80px rgba(0, 0, 0, 0.34),
    0 0 70px rgba(80, 150, 255, 0.10);
}

/* ── Global buttons ──────────────────────────────────────────────── */
.btn-primary,
.cta-button,
.button-primary {
  background: linear-gradient(90deg, #4F8DFF, #8F63FF);
  box-shadow:
    0 14px 36px rgba(80, 150, 255, 0.30),
    0 0 32px rgba(143, 99, 255, 0.22);
  color: #F5F5F3fff;
}

/* ── Global typography ───────────────────────────────────────────── */
h1, h2, h3, h4 { color: #F5F5F3; }
p, li          { color: var(--text-muted); }
.muted, .subhead { color: var(--text-muted); }

/* ── Hero glow for secondary/policy pages (no .page-hero wrapper) ── */
.policy-wrap,
.supp-wrap,
.legal-wrap,
.a11y-wrap,
.account-wrap {
  position: relative;
  background: #0C1D3A;
}
.policy-wrap::before,
.supp-wrap::before,
.legal-wrap::before,
.a11y-wrap::before,
.account-wrap::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: min(480px, 72vh);
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(circle at 50% 18%, rgba(80, 150, 255, 0.18), transparent 40%),
    radial-gradient(circle at 50% 42%, rgba(155, 108, 255, 0.12), transparent 44%);
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 12%, #000 88%, transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0%, #000 12%, #000 88%, transparent 100%);
}
.policy-wrap > *,
.supp-wrap > *,
.legal-wrap > *,
.a11y-wrap > *,
.account-wrap > * {
  position: relative;
  z-index: 1;
}
.policy-main {
  min-width: 0;
}

/* ── Unified entry motion (all marketing pages) ───────────────────── */
:root {
  --entry-duration: 0.85s;
  --entry-easing: cubic-bezier(0.22, 1, 0.36, 1);
  --entry-stagger: 0.14s;
  --entry-drift-stagger: 0.07s;
  --entry-offset: 22px;
}

@keyframes tresso-fade-in-up {
  from { opacity: 0; transform: translateY(var(--entry-offset)); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes tresso-slide-in-left {
  from { opacity: 0; transform: translateX(-36px); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes tresso-slide-in-right {
  from { opacity: 0; transform: translateX(36px); }
  to { opacity: 1; transform: translateX(0); }
}

/* Default: visible without JS */
.reveal-card,
.fu,
.drift-word,
.a0, .a1, .a2, .a3, .a4,
.page-hero h1, .page-hero .hero-h1, .page-hero p, .page-hero .hero-sub,
.page-hero .eyebrow, .page-hero .hero-actions, .page-hero .hero-fine,
.hero-visual, .hero-sub, .hero-sub--mob, .hero-sub--desk,
.article-hero h1, .gt-hero h1, .gt-hero-sub, .gt-hero-trust,
.welcome-hero h1, .confirm-hero h1, .confirm-hero .hero-h1,
[class*="sec-hdr"].fu .eyebrow,
[class*="sec-hdr"].fu h2 .drift-word,
[class*="sec-hdr"].fu p,
.faq-hdr.fu .eyebrow,
.faq-hdr.fu h2 .drift-word {
  opacity: 1;
  visibility: visible;
  transform: none;
}

html.motion-on .page-hero h1,
html.motion-on .page-hero .hero-h1,
html.motion-on .hero-h1,
html.motion-on .article-hero h1,
html.motion-on .gt-hero h1,
html.motion-on .welcome-hero h1,
html.motion-on .confirm-hero h1,
html.motion-on .confirm-hero .hero-h1 {
  animation: tresso-fade-in-up var(--entry-duration) var(--entry-easing) both !important;
}

html.motion-on .page-hero .eyebrow,
html.motion-on .page-hero .hero-eyebrow,
html.motion-on .article-eyebrow,
html.motion-on .welcome-eyebrow,
html.motion-on .signin-eyebrow {
  animation: tresso-fade-in-up var(--entry-duration) var(--entry-easing) both !important;
  animation-delay: 0s !important;
}

html.motion-on .page-hero .hero-sub,
html.motion-on .page-hero p,
html.motion-on .gt-hero-sub,
html.motion-on .welcome-hero p {
  animation: tresso-fade-in-up var(--entry-duration) var(--entry-easing) both !important;
  animation-delay: calc(var(--entry-stagger) * 2) !important;
}

html.motion-on .welcome-hero h1 {
  animation-delay: var(--entry-stagger) !important;
}

html.motion-on .page-hero .hero-actions,
html.motion-on .gt-hero-trust {
  animation: tresso-fade-in-up var(--entry-duration) var(--entry-easing) both !important;
  animation-delay: calc(var(--entry-stagger) * 2) !important;
}

html.motion-on .page-hero .hero-fine {
  animation: tresso-fade-in-up var(--entry-duration) var(--entry-easing) both !important;
  animation-delay: calc(var(--entry-stagger) * 3) !important;
}

html.motion-on .a0 { animation: tresso-slide-in-left var(--entry-duration) var(--entry-easing) both !important; animation-delay: 0s !important; opacity: 0; }
html.motion-on .a1 { animation: tresso-slide-in-left var(--entry-duration) var(--entry-easing) both !important; animation-delay: var(--entry-stagger) !important; opacity: 0; }
html.motion-on .a2 { animation: tresso-slide-in-left var(--entry-duration) var(--entry-easing) both !important; animation-delay: calc(var(--entry-stagger) * 2) !important; opacity: 0; }
html.motion-on .a3 { animation: tresso-slide-in-left var(--entry-duration) var(--entry-easing) both !important; animation-delay: calc(var(--entry-stagger) * 3) !important; opacity: 0; }
html.motion-on .a4 { animation: tresso-slide-in-left var(--entry-duration) var(--entry-easing) both !important; animation-delay: calc(var(--entry-stagger) * 4) !important; opacity: 0; }

html.motion-on .hero-visual {
  animation:
    tresso-slide-in-right var(--entry-duration) var(--entry-easing) var(--entry-stagger) both,
    tresso-float-y 7s ease-in-out calc(var(--entry-duration) + var(--entry-stagger) + 0.1s) infinite !important;
  opacity: 0;
}

@keyframes tresso-float-y {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

html.motion-on .reveal-card {
  opacity: 0;
  transform: translateY(var(--entry-offset));
  transition:
    opacity var(--entry-duration) var(--entry-easing),
    transform var(--entry-duration) var(--entry-easing);
  transition-delay: calc(var(--reveal-i, 0) * var(--entry-stagger));
}
html.motion-on .reveal-card.vis {
  opacity: 1;
  transform: translateY(0);
}

html.motion-on .fu:not(.vis):not([class*="sec-hdr"]):not(.faq-hdr) {
  opacity: 0;
  transform: translateY(var(--entry-offset));
  transition:
    opacity var(--entry-duration) var(--entry-easing),
    transform var(--entry-duration) var(--entry-easing);
}
html.motion-on .fu.vis {
  opacity: 1;
  transform: translateY(0);
}

html.motion-on .sec-hdr.fu,
html.motion-on .faq-hdr.fu,
html.motion-on [class*="sec-hdr"].fu {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

/* Section-header parts self-reveal on load via CSS animation (animation-fill-mode:both
   leaves them at opacity:1). This must NOT depend on the JS .vis class - on mobile the
   IntersectionObserver can miss tall headers, which previously left words stuck at
   opacity:0 ("missing words"). Self-animating guarantees text always ends up visible. */
html.motion-on [class*="sec-hdr"].fu .eyebrow,
html.motion-on .faq-hdr.fu .eyebrow {
  animation: tresso-fade-in-up var(--entry-duration) var(--entry-easing) both !important;
}

html.motion-on [class*="sec-hdr"].fu h2 .drift-word,
html.motion-on .faq-hdr.fu h2 .drift-word {
  display: inline-block;
  animation: tresso-fade-in-up var(--entry-duration) var(--entry-easing) both !important;
  animation-delay: calc(var(--drift-i, 0) * var(--entry-drift-stagger) + var(--entry-stagger)) !important;
}

html.motion-on [class*="sec-hdr"].fu p,
html.motion-on .faq-hdr.fu p {
  animation: tresso-fade-in-up var(--entry-duration) var(--entry-easing) both !important;
  animation-delay: calc(var(--entry-stagger) * 3) !important;
}

@media (prefers-reduced-motion: reduce) {
  html.motion-on *,
  html.motion-on *::before,
  html.motion-on *::after {
    animation-duration: 0.01ms !important;
    animation-delay: 0s !important;
    transition-duration: 0.01ms !important;
    transition-delay: 0s !important;
  }
  html.motion-on .reveal-card,
  html.motion-on .fu,
  html.motion-on .a0,
  html.motion-on .a1,
  html.motion-on .a2,
  html.motion-on .a3,
  html.motion-on .a4,
  html.motion-on .hero-visual {
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ── Shared site footer (all marketing pages) ─────────────────────── */
.site-footer {
  border-top: 1px solid rgba(148, 163, 184, 0.10);
  padding: 48px 0 36px;
  background: rgba(4, 8, 16, 0.80);
}
.site-footer .wrap,
.site-footer .wrap-wide {
  max-width: 1160px;
  margin: 0 auto;
  padding: 0 28px;
}
.footer-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: 48px;
  align-items: start;
  margin-bottom: 36px;
}
.footer-brand-tagline {
  font-size: 13px;
  color: var(--text-muted);
  margin-top: 8px;
  max-width: 300px;
  line-height: 1.6;
}
.footer-links {
  display: flex;
  flex-direction: column;
  gap: 10px;
  text-align: left;
  align-items: flex-start;
}
.footer-links h4 {
  font-size: 10px;
  font-weight: 700;
  color: var(--text-s);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  margin-bottom: 4px;
}
.footer-links a {
  font-size: 13px;
  color: var(--text-muted);
  text-decoration: none;
  transition: color 0.2s;
}
.footer-links a:hover {
  color: var(--text-main);
}
.footer-bottom {
  border-top: 1px solid rgba(148, 163, 184, 0.10);
  padding-top: 20px;
}
.footer-copy {
  font-size: 12px;
  color: var(--text-s);
  line-height: 1.7;
}
.footer-trademark {
  font-size: 11px;
  color: #4A6A8A;
  margin-top: 3px;
}
.footer-proprietary {
  font-size: 11px;
  color: #3A5A7A;
  margin-top: 2px;
}
@media (max-width: 700px) {
  /* !important so this always beats per-page footer-grid rules that some pages
     declare AFTER their own mobile media query (which would otherwise re-expand
     the footer to 4 columns and overflow the viewport on phones). */
  .footer-grid {
    grid-template-columns: 1fr !important;
    gap: 28px !important;
  }
}
