/* Shared typography, loaded LAST on every page, including the staff pages.
   Self-hosted Latin font subsets. Licenses/sources: assets/fonts/README.md.
   Variable faces cover the weights used by the shared components. */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/archivo-normal-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: 'Chivo';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url(/assets/fonts/chivo-normal-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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-normal-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: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-sans-normal-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 Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/instrument-serif-italic-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: 'Source Sans 3';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/source-sans-3-italic-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: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/source-sans-3-normal-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;
}

/* Keep mobile browsers from independently enlarging individual text blocks.
   No fixed root size or zoom restriction: rem sizes follow reader settings. */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  overflow-wrap: break-word;
}

/* Native controls do not consistently inherit a page's typeface. */
body :is(input, textarea, select, button) {
  font-family: inherit;
}

@media (max-width: 48rem) {
  body.revamp {
    font-size: 1rem;
    line-height: 1.6;
  }

  /* Specificity intentionally beats the older, per-page desktop headings. */
  body.revamp[data-page] :is(h1, h2, h3, h4) {
    line-height: 1.25;
    letter-spacing: -.015em;
    overflow-wrap: anywhere;
    word-break: normal;
    hyphens: manual;
    text-wrap: pretty;
  }

  body.revamp[data-page] h1,
  body.revamp[data-page] .hero h1 {
    font-size: clamp(2rem, 1.375rem + 3vw, 2.625rem);
    font-weight: 700;
    line-height: 1.18;
    letter-spacing: -.025em;
    max-width: 100%;
  }

  body.revamp[data-page] h2,
  body.revamp[data-page] section h2,
  body.revamp[data-page] .portal-panel h2 {
    font-size: clamp(1.5rem, 1.125rem + 2vw, 2rem);
    font-weight: 600;
    line-height: 1.25;
    max-width: 100%;
  }

  body.revamp[data-page] h3 {
    font-size: 1.25rem;
    font-weight: 600;
  }

  body.revamp[data-page] :is(h1, h2) em {
    line-height: inherit;
    letter-spacing: 0;
  }

  body.revamp[data-page] :is(.lede, .hero .lede, .hero > .lede) {
    font-size: 1.125rem;
    line-height: 1.65;
  }

  body.revamp :is(p, li, dd, label, summary) {
    overflow-wrap: anywhere;
  }

  body.revamp :is(.hero-copy, .hero-panel, .cols > div, .contactgrid > *,
    .finder-grid > *, .workflow-tabs button > *, .portal-shortcuts > *,
    .guide-top > div, .ai-path > *, .pricing-cards > *, .pa-split > *) {
    min-width: 0;
  }

  /* Inputs remain legible at their normal size; pinch zoom stays available.
     The narrow important override also covers older ID/inline form styles. */
  body.revamp :is(input, textarea, select) {
    font-size: 1rem !important;
    line-height: 1.5;
    min-width: 0;
    max-width: 100%;
  }

  body.revamp :is(label, legend, summary) {
    font-size: .875rem;
    line-height: 1.5;
  }

  body.revamp :is(button, .cta, .buy, .portal-new) {
    font-size: 1rem;
    line-height: 1.4;
    white-space: normal;
    overflow-wrap: anywhere;
    max-width: 100%;
    height: auto;
    min-height: 2.75rem;
  }

  /* The nav and compact studio controls retain a smaller, readable scale. */
  body.revamp :is(.navr a, .topbar > a, .top > a, .model-tools button,
    .model-projects button, .model-layer-control button, .portal-nav button,
    .scene-toggle, .guide-examples button, #location-tour, #location-skip) {
    font-size: .875rem;
    line-height: 1.4;
  }

  body.revamp :is(.mark, .brand) {
    line-height: 1.3;
    letter-spacing: 0;
  }

  body.revamp :is(.model-projects, .model-tools, .portal-nav, .workflow-card-top) {
    flex-wrap: wrap;
  }

  body.revamp .model-projects button {
    flex: 1 1 5.5rem;
  }

  body.revamp :is(.model-ai-link, .ai-inline) {
    font-size: .9375rem;
    line-height: 1.5;
    min-width: 0;
    overflow-wrap: anywhere;
  }

  body.revamp :is(.offer-ribbon strong, .offer-ribbon a, .hero-speed,
    .workflow-tabs strong, .status, .guide-status, .pa-fact) {
    font-size: 1rem;
    line-height: 1.5;
  }

  body.revamp :is(.offer-ribbon div > span, .model-tag, .location-kicker,
    .stage-heading, .portal-kicker) {
    font-size: .75rem;
    line-height: 1.5;
    letter-spacing: .06em;
  }

  body.revamp .offer-ribbon > .wrap {
    flex-wrap: wrap;
  }

  body.revamp .offer-ribbon a {
    white-space: normal;
    max-width: 100%;
  }

  body.revamp[data-page="pricing"] :is(.rate-num, .tier-price),
  body.revamp .result-price strong {
    font-size: clamp(2rem, 1.5rem + 2vw, 2.5rem);
    line-height: 1.2;
    letter-spacing: -.02em;
    font-variant-numeric: lining-nums tabular-nums;
  }

  body.revamp[data-page="pricing"] .tier-price span,
  body.revamp[data-page="pricing"] .rate-num::after {
    font-size: .875rem;
    line-height: 1.5;
  }

  body.revamp[data-page="pricing"] .pricing-cards .buy {
    font-size: 1rem;
    line-height: 1.4;
  }

  body.revamp :is(.bigcall, .first-free .bigcall) {
    font-size: clamp(1.375rem, 1rem + 2.5vw, 2rem);
    line-height: 1.4;
    letter-spacing: -.015em;
    overflow-wrap: anywhere;
  }

  body.revamp[data-page="account"].portal-signed-in .intro h1 {
    font-size: 1.25rem;
    font-weight: 500;
  }

  body.revamp :is(.pa-msg, .guide-answer p) {
    font-size: 1rem;
    line-height: 1.6;
    overflow-wrap: anywhere;
  }

  body.revamp :is(.pa-review-sec h5, .pa-review-sec dl, .vault-card label,
    .vault-card button, .guide-privacy, .guide-disclaimer) {
    font-size: .875rem;
    line-height: 1.5;
  }

  body.revamp .pa-log {
    height: 22rem;
    max-height: 65dvh;
  }

  body.revamp .guide-top h2 {
    font-size: 1.375rem;
  }

  body.revamp .guide-close {
    width: 2.75rem;
    height: 2.75rem;
    font-size: 1.75rem;
    line-height: 1;
  }

  /* Captions grow in normal flow when the reader enlarges text. */
  body.revamp .location-map-wrap {
    overflow: visible;
    contain: layout;
    margin-bottom: 4.5rem;
  }

  body.revamp .location-map-caption {
    top: calc(100% - 2.75rem);
    bottom: auto;
    flex-wrap: wrap;
  }

  body.revamp #location-map-label {
    font-size: .875rem;
    line-height: 1.5;
    letter-spacing: .02em;
    overflow-wrap: anywhere;
  }

  body.revamp #location-continue {
    font-size: 1rem;
    line-height: 1.45;
  }
}

/* A readable baseline for public pages, customer tools and the staff consoles.
   Load this stylesheet last. Text scales with the reader's browser settings. */
body[class] {
  font-family: 'Source Sans 3', 'Segoe UI', system-ui, sans-serif;
  font-size: 1.0625rem;
  line-height: 1.65;
}
body[class] :is(h1, h2, h3, h4) {
  font-family: 'Chivo', 'Segoe UI', system-ui, sans-serif;
  font-stretch: normal;
  overflow-wrap: break-word;
  font-weight: 600;
}
body[class] :is(h1, h2, h3) em { font-family: inherit; font-style: normal; }
body[class] :is(p, li, dd) { font-size: max(1rem, 1em); line-height: 1.65; }
body[class] :is(label, legend, summary, small, th, td) { font-size: .9375rem; line-height: 1.55; }
body[class] :is(button, input, select, textarea) { font-family: 'Source Sans 3', 'Segoe UI', system-ui, sans-serif; font-size: 1rem; line-height: 1.5; }
body[class] :is(button, input, select) { min-height: 2.75rem; }
body[class] :is(input[type="checkbox"], input[type="radio"]) { min-height: 0; }
body[class] :is(.fine, .jo-note, .jo-meta, .pc-note, .rate-disclosure, .offer-terms, .pricing-access-note, .guide-privacy, .guide-disclaimer, .workflow-disclosure, .location-terms) { font-size: .9375rem !important; line-height: 1.65; }
body[class] :is(.eyebrow, .kicker, .jo-kicker, .pc-kicker, .jo-badge, .portal-kicker, .rate-tag, .tier-flag) { font-family: inherit; font-size: .875rem; letter-spacing: .045em; line-height: 1.5; }
body[class] :is(.jo-note, .jo-meta, .fine, .rate-disclosure, .service-access, .pricing-access-note) { color: #415e72; }
body[class] :is(.navr a, .menupanel a, .portal-nav button, .jo-tabs button) { font-size: 1rem; line-height: 1.5; }
body.revamp[data-page] :is(.portal-nav button, .navr a, .menupanel a) { font-size: 1rem; line-height: 1.5; }
body[class] header :is(.brand span, .mark span) { font-size: .875rem; line-height: 1.45; }
body[class] footer { font-size: .9375rem; line-height: 1.6; }
body.revamp.immersive-site .hero .eyebrow { color: #144863; background: #e6f3fc; border-color: #b0d1e4; }
body[class] :is(a, button, input, select, textarea, summary):focus-visible { outline: 3px solid #1685c2; outline-offset: 4px; }
body[class] :is(.portal-panel, .jo-card, .jo-opportunity, .pc-card, .service-cards article) { min-width: 0; }
.portal-health { background: #f1f7fc; color: #17364c; border: 1px solid #bfd4e3; border-radius: 12px; padding: 14px 20px; margin: 0 0 24px; }
.portal-health summary { cursor: pointer; font-weight: 600; }
.portal-health summary span { display: inline-block; margin-left: 12px; font-weight: 400; color: #49657a; font-size: .875rem; }
.portal-health p { margin: 12px 0; }
.portal-health button { border: 1px solid #0d659f; padding: 9px 18px; border-radius: 8px; background: #075c99; color: #fff; cursor: pointer; }
.portal-health button:disabled { opacity: .65; cursor: progress; }
.portal-health a { color: #075c99; text-underline-offset: 3px; }
.tool-load-warning { margin: 20px auto; padding: 16px 22px; background: #fff2d7; color: #583e0c; border: 1px solid #d3af6d; max-width: 1100px; }
.tool-load-warning[hidden] { display: none !important; }
.service-summary { max-width: 1280px; margin: 0 auto; padding: 32px max(24px, 4vw); border-top: 1px solid #c7d8e5; background: #edf4f9; color: #193d57; display: grid; grid-template-columns: minmax(0, 2fr) minmax(210px, 1fr); gap: 24px; text-align: left; }
.service-summary strong { font-size: 1.125rem; font-weight: 600; }
.service-summary p { margin: 8px 0 0; max-width: 72ch; }
.service-summary nav { display: flex; flex-wrap: wrap; align-content: center; gap: 10px 20px; }
.service-summary a { color: #075b94; font-size: 1rem; text-underline-offset: 4px; padding: 5px 0; }
.service-summary-compact { display: flex; align-items: center; flex-wrap: wrap; }
.service-summary-compact p { flex: 1 1 400px; }
.service-overview { background: #edf5fb; color: #193d57; }
.service-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin: 32px 0; }
.service-cards article { padding: 26px; border: 1px solid #c5d9e7; border-radius: 14px; background: #fff; }
.service-cards article span { color: #176ca0; font-size: .875rem; font-weight: 600; letter-spacing: .04em; }
.service-cards article h3 { font-size: 1.35rem; line-height: 1.35; margin: 16px 0; }
.service-cards article p { color: #3e596c; }
.service-cards article a { display: inline-block; padding-block: 6px; color: #075b94; font-weight: 600; text-underline-offset: 4px; }
.service-access { max-width: 88ch; }
.hero-paths { display: flex; flex-wrap: wrap; gap: 8px 20px; }
.hero-paths a { font-size: 1rem; text-underline-offset: 4px; }
.pricing-access-note { max-width: 90ch; padding: 18px 0 0; }
@media (max-width: 60rem) { .service-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 40rem) {
  .service-cards, .service-summary { grid-template-columns: minmax(0, 1fr); }
  .service-cards article { padding: 22px; }
  .portal-health { padding: 14px; }
  .portal-health summary span { display: block; margin: 5px 0 0; }
  body[data-page="account"].portal-signed-in .intro { padding-block: 18px; margin-block: 0; }
  body[data-page="account"] .install { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 12px; }
  body[data-page="account"] .install[hidden] { display: none; }
  body[data-page="account"] .install p { margin: 0; }
  body[data-page="account"] .install button { grid-column: 2; justify-self: start; }
}

.portal-welcome-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.portal-welcome-actions a{min-height:44px;white-space:normal}
