/* Shared cinematic footer. Its static presentation has no homepage dependency. */
.jf-public-footer.site-end {
  --footer-curve-height: clamp(32px, 5vw, 64px);
  --footer-surface: var(--ui-night, #08031a);
  --footer-gutter: var(--ui-gutter, clamp(20px, 4vw, 72px));
  --footer-copy: var(--ui-dim, #d8cfe6);
  --footer-accent: var(--ui-lavender, #c4b5fd);
  --footer-line: #c4b5fd40;
  position: relative;
  isolation: isolate;
  width: 100%;
  margin: var(--footer-curve-height) 0 0;
  padding: 22px var(--footer-gutter) max(12px, env(safe-area-inset-bottom));
  background: var(--footer-surface);
  color: var(--ui-paper, #f5f2fa);
  font-family: inherit;
  font-size: var(--ui-small, 14px);
  line-height: 1.9;
  text-align: start;
}
.jf-public-footer, .jf-public-footer * { box-sizing: border-box; }
.jf-public-footer.site-end::before {
  content: "";
  position: absolute;
  inset: auto 0 100%;
  height: calc(var(--footer-curve-height) + 1px);
  background: var(--footer-edge-background, var(--ui-paper, #f5f2fa));
  pointer-events: none;
  z-index: -2;
}
.jf-public-footer :where(p, h2, h3, ul) { margin: 0; }
.jf-public-footer :where(a) { color: inherit; text-decoration: none; }
.jf-public-footer :where(button) { font: inherit; }
.jf-public-footer :is(a, button):focus-visible,
.jf-public-footer [tabindex]:focus-visible { outline: 2px solid var(--footer-accent); outline-offset: 5px; }
.jf-public-footer :is(a, button):hover { color: var(--footer-accent); }
.jf-public-footer .footer-horizon {
  position: absolute;
  inset: auto 0 100%;
  height: var(--footer-curve-height);
  pointer-events: none;
  z-index: -1;
}
.jf-public-footer .footer-horizon svg { display: block; width: 100%; height: calc(100% + 1px); overflow: visible; }
.jf-public-footer .footer-horizon__surface { fill: var(--footer-surface); }
.jf-public-footer .footer-field {
  position: absolute;
  inset: calc(-1 * var(--footer-curve-height)) 0 0;
  overflow: clip;
  pointer-events: none;
  z-index: -1;
}
.jf-public-footer .footer-field canvas { display: block; width: 100%; height: 100%; }
.jf-public-footer.has-footer-field .footer-horizon { visibility: hidden; }
.jf-public-footer :is(.footer-top, .jf-reference-legal, .tr-final__accreditations, .footer-policies, .footer-bottom) {
  position: relative;
  width: 100%;
  max-width: var(--ui-width, 1440px);
  margin-inline: auto;
}
.jf-public-footer .footer-top { display: grid; grid-template-columns: 1.2fr .7fr .85fr 1.15fr; gap: clamp(24px, 3vw, 48px); }
.jf-public-footer .footer-top > * { min-width: 0; }
.jf-public-footer .footer-kicker { margin: 0 0 10px; color: var(--footer-copy); font-size: var(--ui-label, 12px); font-weight: 400; line-height: 1.8; letter-spacing: .035em; }
.jf-public-footer .footer-intro { display: block; }
.jf-public-footer .footer-intro h2 { margin: 0; color: var(--ui-paper, #f5f2fa); font-size: 24px; font-weight: 700; line-height: 1.6; letter-spacing: 0; }
.jf-public-footer .footer-intro h2 em { color: var(--footer-accent); font-style: normal; }
.jf-public-footer .footer-intro > p:last-child { margin-top: 12px; color: var(--footer-copy); font-size: var(--ui-small, 14px); line-height: 1.9; }
.jf-public-footer .heading-line { display: block; margin: -.08em -.025em -.18em; padding: .08em .025em .18em; overflow: clip; }
.jf-public-footer .heading-line__text { display: block; transform-origin: 0 100%; }
.jf-public-footer .type-ready .heading-line__text { opacity: 0; transform: translateY(115%) rotate(1.4deg); transition: transform .92s cubic-bezier(.22, .75, .2, 1), opacity .65s; transition-delay: var(--type-delay, 0s); }
.jf-public-footer .type-ready.is-type-visible .heading-line__text { opacity: 1; transform: none; }
.jf-public-footer.footer-reveal [data-reveal] { opacity: 0; translate: 0 22px; transition: opacity .7s, translate .85s cubic-bezier(.22, .75, .2, 1); }
.jf-public-footer.footer-reveal [data-reveal].is-revealed,
.jf-public-footer.footer-reveal [data-reveal]:focus-within { opacity: 1; translate: none; }
.jf-public-footer .footer-nav { display: flex; flex-direction: column; align-items: flex-start; }
.jf-public-footer .footer-nav .footer-kicker { margin-bottom: 10px; }
.jf-public-footer .footer-nav > a { position: relative; display: flex; align-items: center; min-height: 36px; padding-block: 4px; color: var(--footer-copy); font-size: var(--ui-small, 14px); font-weight: 400; line-height: 1.9; letter-spacing: 0; transition: color .2s; }
.jf-public-footer .footer-nav > a::after { content: ""; position: absolute; inset: auto 0 6px; height: 1px; background: var(--footer-accent); transform: scaleX(0); transform-origin: right; transition: transform .25s; }
.jf-public-footer .footer-nav > a:is(:hover, :focus-visible)::after { transform: scaleX(1); }
.jf-public-footer .footer-contact > .footer-email { display: flex; justify-content: space-between; align-items: center; gap: 12px; width: fit-content; max-width: 100%; min-height: 36px; padding-bottom: 4px; border-bottom: 1px solid var(--footer-line); color: var(--footer-copy); font-size: var(--ui-small, 14px); line-height: 1.9; letter-spacing: 0; }
.jf-public-footer .footer-email bdi { overflow-wrap: anywhere; }
.jf-public-footer .footer-contact .footer-location { margin-top: 12px; color: var(--footer-copy); font-size: var(--ui-small, 14px); line-height: 1.9; }
.jf-public-footer .link-signal { display: inline-flex; flex: 0 0 25px; width: 25px; height: 18px; color: var(--footer-accent); }
.jf-public-footer .link-signal svg { display: block; width: 100%; height: 100%; stroke: currentColor; stroke-width: 1.1px; }
.jf-public-footer .link-signal circle { fill: currentColor; stroke: none; }
.jf-public-footer .link-signal path { opacity: .6; }
.jf-public-footer .footer-contact-links { display: grid; margin-top: 8px; }
.jf-public-footer .footer-contact-links a { display: flex; align-items: center; gap: 18px; width: fit-content; min-height: 36px; color: var(--footer-copy); }
.jf-public-footer .footer-contact-links a span { color: var(--footer-accent); font-size: var(--ui-label, 12px); }
.jf-public-footer .jf-reference-socials { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.jf-public-footer .jf-reference-socials a { display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid var(--footer-line); border-radius: 50%; color: var(--footer-copy); transition: color .2s, border-color .2s; }
.jf-public-footer .jf-reference-socials a:hover { border-color: var(--footer-accent); color: var(--footer-accent); }
.jf-public-footer .jf-reference-socials svg { display: block; width: 18px; height: 18px; }
.jf-public-footer .jf-reference-apps { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 8px; }
.jf-public-footer .jf-reference-apps a { display: inline-flex; align-items: center; gap: 9px; min-height: 36px; color: var(--footer-copy); }
.jf-public-footer .jf-reference-apps svg { width: 16px; height: 16px; }
.jf-public-footer :is(.footer-nav, .footer-contact-links, .jf-reference-apps) a:is(:hover, :focus-visible),
.jf-public-footer .footer-contact > .footer-email:is(:hover, :focus-visible) { color: var(--footer-accent); }
.jf-public-footer .jf-reference-legal { margin-top: 16px; padding: 12px 0 0; border-top: 1px solid var(--footer-line); }
.jf-public-footer .tr-registry-cluster { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; align-items: stretch; }
.jf-public-footer .tr-registry-owner { grid-column: 1 / -1; margin: 0 0 3px; padding: 0; color: var(--footer-copy); font-family: inherit; font-size: var(--ui-small, 14px); font-weight: 400; line-height: 1.9; }
.jf-public-footer .tr-registry-cluster > :is(a, div) { display: flex; align-items: center; gap: 12px; min-width: 0; min-height: 78px; margin: 0; padding: 12px 16px; border: 1px solid var(--footer-line); border-radius: 10px; background: #ffffff03; color: var(--footer-copy); box-shadow: none; }
.jf-public-footer :is(.tr-commerce-reg__mark, .tr-business-license__mark) { display: grid; flex: 0 0 38px; place-items: center; width: 38px; height: 40px; padding: 0; border: 0; background: transparent; }
.jf-public-footer .tr-registry-cluster img { display: block; width: 38px; height: 40px; max-width: 100%; object-fit: contain; }
.jf-public-footer :is(.tr-commerce-reg__body, .tr-business-license__body) { min-width: 0; }
.jf-public-footer .tr-registry-cluster strong { display: block; margin-bottom: 4px; color: var(--ui-paper, #f5f2fa); font-size: 13px; font-weight: 500; line-height: 1.8; }
.jf-public-footer :is(.tr-commerce-reg__body, .tr-business-license__body) > span { display: block; color: var(--footer-copy); font-size: 13px; line-height: 1.8; }
.jf-public-footer .tr-commerce-reg__go { flex-shrink: 0; margin-inline-start: auto; color: var(--footer-accent); }
.jf-public-footer .tr-commerce-reg__go svg { display: block; width: 18px; height: 18px; }
.jf-public-footer .tr-final__accreditations { display: grid; grid-template-columns: 170px minmax(0, 1fr); align-items: center; gap: 16px; margin-top: 12px; padding: 10px 0; border-top: 1px solid var(--footer-line); }
.jf-public-footer .tr-final__accreditations-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; }
.jf-public-footer .tr-final__accreditations-head h3 { margin: 0; color: var(--footer-copy); font-family: inherit; font-size: var(--ui-small, 14px); font-weight: 400; line-height: 1.9; }
.jf-public-footer .tr-final__accreditations-head .t-mono { color: var(--footer-copy); font-family: inherit; font-size: var(--ui-label, 12px); font-variant-numeric: tabular-nums; opacity: 1; }
.jf-public-footer .tr-final__badges { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin: 0; padding: 0; list-style: none; }
.jf-public-footer .tr-final__badge { display: grid; flex: 0 0 44px; place-items: center; width: 44px; height: 44px; inline-size: 44px; block-size: 44px; padding: 6px; border: 1px solid var(--footer-line); background: #ffffff0a; }
.jf-public-footer .tr-final__badge img { display: block; width: 100%; height: 100%; inline-size: 100%; block-size: 100%; object-fit: contain; }
.jf-public-footer.site-end .footer-brand { display: block; width: 120px; max-width: 100%; min-height: 0; height: auto; margin: 0 0 12px; padding: 0; pointer-events: none; }
.jf-public-footer.site-end .footer-brand svg { display: block; width: 100%; max-width: 100%; height: auto; max-height: none; margin: 0; opacity: 1; visibility: visible; }
.jf-public-footer .footer-policies { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 24px; border-top: 1px solid var(--footer-line); padding-top: 6px; }
.jf-public-footer .footer-policies :is(a, button) { display: inline-flex; align-items: center; min-height: 32px; margin: 0; padding: 4px 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; color: var(--footer-copy); font-family: inherit; font-size: var(--ui-label, 12px); font-weight: 400; line-height: 1.9; text-align: start; cursor: pointer; }
.jf-public-footer .footer-policies :is(a, button):is(:hover, :focus-visible) { color: var(--footer-accent); text-decoration: underline; text-underline-offset: 5px; }
.jf-public-footer .footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 2px; padding-top: 6px; border-top: 1px solid var(--footer-line); color: var(--footer-copy); font-size: var(--ui-label, 12px); line-height: 1.9; }
.jf-public-footer .footer-bottom p { margin: 0; }
.jf-public-footer .footer-top-link { display: flex; flex-shrink: 0; align-items: center; gap: 16px; min-height: 36px; color: var(--footer-copy); }
.jf-public-footer .footer-top-link > span { display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid var(--footer-line); border-radius: 5px; color: var(--footer-accent); font-size: 18px; line-height: 1; transition: background .2s, color .2s; }
.jf-public-footer .footer-top-link:hover > span { background: var(--footer-accent); color: var(--footer-surface); }
/* Compact type is shared by the homepage and every public-page wrapper. */
body.jf-unified .jf-public-footer.site-end .tr-final__badge { min-width: 44px; max-width: 44px; inline-size: 44px; block-size: 44px; min-height: 44px; }
body.jf-unified .jf-public-footer.site-end .tr-final__badge img { width: 100%; height: 100%; inline-size: 100%; block-size: 100%; object-fit: contain; }
body.jf-unified .jf-public-footer.site-end .footer-bottom p { font-size: 12px; line-height: 1.9; }

body.jf-unified .jf-public-footer.site-end .footer-intro h2 { font-size: 13px; line-height: 1.8; font-weight: 600; }
.jf-public-footer .footer-summary { color: var(--footer-copy); font-size: 13px; line-height: 1.8; margin: 6px 0 0; max-width: 32ch; }
body.jf-unified .jf-public-footer.site-end .footer-top .footer-kicker { color: var(--footer-accent); font-size: 13px; font-weight: 600; line-height: 1.8; }
.jf-public-footer .jf-reference-apps { border-top: 0; gap: 4px 16px; margin-top: 8px; }
.jf-public-footer.site-end .tr-final__accreditations-head { flex-wrap: wrap; gap: 4px 12px; padding: 0; border: 0; }
.jf-public-footer .tr-final__badges { flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-inline: contain; scrollbar-width: thin; scrollbar-color: var(--footer-accent) transparent; padding-block: 4px; }
@media (max-width: 1100px) and (min-width: 761px) {
  .jf-public-footer .footer-top { grid-template-columns: 1fr .75fr .9fr 1.2fr; gap: 20px; }
  .jf-public-footer .jf-reference-socials { max-width: 160px; }
  .jf-public-footer .tr-registry-cluster > :is(a, div) { padding: 10px; gap: 8px; }
}
@media (max-width: 760px) {
  .jf-public-footer.site-end { padding-top: 16px; }
  body.jf-unified .jf-public-footer.site-end .footer-top { grid-template-columns: 1fr 1fr; gap: 12px 24px; }
  .jf-public-footer .footer-intro { display: grid; grid-column: 1 / -1; grid-template-columns: minmax(0, 1fr) 96px; gap: 0 16px; align-items: center; }
  .jf-public-footer .footer-intro > .footer-kicker { grid-column: 1; margin-bottom: 4px; }
  .jf-public-footer .footer-intro h2 { grid-column: 1; }
  .jf-public-footer.site-end .footer-brand { grid-column: 2; grid-row: 1 / 3; width: 96px; margin: 0; }
  .jf-public-footer .footer-intro .footer-summary { grid-column: 1; margin-top: 4px; }
  .jf-public-footer .footer-nav { padding-top: 10px; border-top: 1px solid var(--footer-line); }
  .jf-public-footer .footer-nav > a { padding-inline: 0; }
  .jf-public-footer .jf-reference-apps { grid-column: 1 / -1; flex-direction: row; gap: 4px 20px; margin-top: 4px; padding-top: 0; }
  .jf-public-footer .footer-contact { display: grid; grid-column: 1 / -1; grid-template-columns: 1fr 1fr; column-gap: 20px; padding-top: 10px; border-top: 1px solid var(--footer-line); }
  .jf-public-footer .footer-contact > .footer-kicker { grid-column: 1; margin: 0; align-self: center; }
  .jf-public-footer .footer-contact > .footer-email { grid-column: 2; width: 100%; justify-content: flex-end; padding: 0; border: 0; }
  .jf-public-footer .footer-email .link-signal { display: none; }
  .jf-public-footer .footer-contact .footer-location { grid-column: 1 / -1; margin-top: 0; font-size: 13px; }
  .jf-public-footer .footer-contact-links { grid-column: 1 / -1; grid-template-columns: 1fr 1fr; grid-row: 3; margin-top: 0; }
  .jf-public-footer .footer-contact-links a { gap: 10px; }
  .jf-public-footer .jf-reference-socials { grid-column: 1 / -1; margin-top: 6px; }
  .jf-public-footer .jf-reference-legal { margin-top: 12px; padding-top: 10px; }
  .jf-public-footer .tr-registry-cluster { gap: 8px; }
  .jf-public-footer .tr-registry-cluster > :is(a, div) { flex-direction: column; align-items: flex-start; gap: 6px; padding: 8px; }
  body.jf-unified .jf-public-footer.site-end .tr-registry-cluster strong { font-size: 12px; line-height: 1.65; }
  body.jf-unified .jf-public-footer.site-end :is(.tr-commerce-reg__body, .tr-business-license__body) > span { font-size: 11px; line-height: 1.8; }
  .jf-public-footer .tr-commerce-reg__go { position: absolute; top: 12px; inset-inline-end: 8px; }
  .jf-public-footer .tr-commerce-reg { position: relative; }
  .jf-public-footer :is(.tr-commerce-reg__mark, .tr-business-license__mark) { flex-basis: 32px; width: 32px; height: 32px; }
  .jf-public-footer .tr-registry-cluster img { width: 32px; height: 32px; }
  .jf-public-footer .tr-final__accreditations { grid-template-columns: 1fr; gap: 4px; margin-top: 10px; padding-top: 8px; }
  .jf-public-footer .tr-final__badges { scroll-snap-type: inline proximity; padding-block: 4px 8px; }
  .jf-public-footer .tr-final__badge { scroll-snap-align: start; }
  .jf-public-footer .footer-policies { gap: 0 18px; }
  .jf-public-footer .footer-bottom { flex-wrap: wrap; gap: 4px 20px; }
  .jf-public-footer .footer-bottom > p:nth-child(2) { display: none; }
  .jf-public-footer .footer-top-link { margin-inline-start: auto; }
}
@media (prefers-reduced-motion: reduce) {
  .jf-public-footer *, .jf-public-footer *::after { transition: none !important; }
  .jf-public-footer .type-ready .heading-line__text { opacity: 1; transform: none; }
  .jf-public-footer.footer-reveal [data-reveal] { opacity: 1; translate: none; }
}

/* Interior pages do not need the cinematic reveal controller. */
body.jf-unified:not(.jf-reference-home) .jf-public-footer [data-reveal] {opacity:1;transform:none;translate:none}
