/* NextBonus V1 Typography Foundation
   Apple HIG semantic text styles and semantic colors are the source of truth for App UI.
   Desktop follows macOS defaults; <=780px follows iOS/iPadOS default Large text styles.
   Marketing artwork/posters intentionally stay outside this system. */

:root{
  --nb-font-system:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;

  --nb-large-title-size:26px; --nb-large-title-leading:32px; --nb-large-title-weight:400; --nb-large-title-emphasis:700;
  --nb-title1-size:22px; --nb-title1-leading:26px; --nb-title1-weight:400; --nb-title1-emphasis:700;
  --nb-title2-size:17px; --nb-title2-leading:22px; --nb-title2-weight:400; --nb-title2-emphasis:700;
  --nb-title3-size:15px; --nb-title3-leading:20px; --nb-title3-weight:400; --nb-title3-emphasis:600;
  --nb-headline-size:13px; --nb-headline-leading:16px; --nb-headline-weight:700; --nb-headline-emphasis:700;
  --nb-body-size:13px; --nb-body-leading:16px; --nb-body-weight:400; --nb-body-emphasis:600;
  --nb-callout-size:12px; --nb-callout-leading:15px; --nb-callout-weight:400; --nb-callout-emphasis:600;
  --nb-subheadline-size:11px; --nb-subheadline-leading:14px; --nb-subheadline-weight:400; --nb-subheadline-emphasis:600;
  --nb-footnote-size:10px; --nb-footnote-leading:13px; --nb-footnote-weight:400; --nb-footnote-emphasis:600;
  --nb-caption1-size:10px; --nb-caption1-leading:13px; --nb-caption1-weight:400; --nb-caption1-emphasis:500;
  --nb-caption2-size:10px; --nb-caption2-leading:13px; --nb-caption2-weight:500; --nb-caption2-emphasis:600;

  --nb-display-value-size:24px; --nb-display-value-leading:28px;
  --nb-display-value-compact-size:20px; --nb-display-value-compact-leading:24px;
  --nb-result-value-size:30px; --nb-result-value-leading:34px;

  /* Apple semantic foreground hierarchy for the current light UI. */
  --nb-label-primary:#000000;
  --nb-label-secondary:rgba(60,60,67,.60);
  --nb-label-tertiary:rgba(60,60,67,.30);
  --nb-label-quaternary:rgba(60,60,67,.18);
  --nb-label-placeholder:rgba(60,60,67,.30);
  --nb-label-on-accent:#ffffff;

  /* Apple 2026 default-light adaptable system colors. */
  --nb-system-red:#ff383c;
  --nb-system-orange:#ff8d28;
  --nb-system-yellow:#ffcc00;
  --nb-system-green:#34c759;
  --nb-system-mint:#00c8b3;
  --nb-system-teal:#00c3d0;
  --nb-system-cyan:#00c0e8;
  --nb-system-blue:#0088ff;
  --nb-system-indigo:#6155f5;
  --nb-system-purple:#cb30e0;
  --nb-system-pink:#ff2d55;
  --nb-system-gray:#8e8e93;
  --nb-label-link:var(--nb-system-blue);

  --nb-space-1:4px;
  --nb-space-2:8px;
  --nb-space-3:12px;
  --nb-space-4:16px;
  --nb-space-6:24px;
  --nb-space-8:32px;
  --nb-primary-canvas:1080px;
}

/* Reserved adaptive palette. It activates only if NextBonus explicitly enables
   a dark app surface; OS preference alone does not invert the current light V1 canvas. */
:root[data-nb-appearance="dark"]{
  --nb-label-primary:#ffffff;
  --nb-label-secondary:rgba(235,235,245,.60);
  --nb-label-tertiary:rgba(235,235,245,.30);
  --nb-label-quaternary:rgba(235,235,245,.18);
  --nb-label-placeholder:rgba(235,235,245,.30);
  --nb-label-on-accent:#ffffff;
  --nb-system-red:#ff4245;
  --nb-system-orange:#ff9230;
  --nb-system-yellow:#ffd600;
  --nb-system-green:#30d158;
  --nb-system-mint:#00dac3;
  --nb-system-teal:#00d2e0;
  --nb-system-cyan:#3cd3fe;
  --nb-system-blue:#0091ff;
  --nb-system-indigo:#6d7cff;
  --nb-system-purple:#db34f2;
  --nb-system-pink:#ff375f;
  --nb-system-gray:#98989d;
}

html,body,button,input,select,textarea{font-family:var(--nb-font-system)}
body{
  font-size:var(--nb-body-size)!important;
  line-height:var(--nb-body-leading)!important;
  font-weight:var(--nb-body-weight)!important;
  font-style:normal!important;
  letter-spacing:normal!important;
  color:var(--nb-label-primary)!important;
}

[data-nb-type]{
  font-family:var(--nb-font-system)!important;
  font-style:normal!important;
  letter-spacing:normal!important;
}
[data-nb-type="large-title"]{font-size:var(--nb-large-title-size)!important;line-height:var(--nb-large-title-leading)!important;font-weight:var(--nb-large-title-weight)!important}
[data-nb-type="title1"]{font-size:var(--nb-title1-size)!important;line-height:var(--nb-title1-leading)!important;font-weight:var(--nb-title1-weight)!important}
[data-nb-type="title2"]{font-size:var(--nb-title2-size)!important;line-height:var(--nb-title2-leading)!important;font-weight:var(--nb-title2-weight)!important}
[data-nb-type="title3"]{font-size:var(--nb-title3-size)!important;line-height:var(--nb-title3-leading)!important;font-weight:var(--nb-title3-weight)!important}
[data-nb-type="headline"]{font-size:var(--nb-headline-size)!important;line-height:var(--nb-headline-leading)!important;font-weight:var(--nb-headline-weight)!important}
[data-nb-type="body"]{font-size:var(--nb-body-size)!important;line-height:var(--nb-body-leading)!important;font-weight:var(--nb-body-weight)!important}
[data-nb-type="callout"]{font-size:var(--nb-callout-size)!important;line-height:var(--nb-callout-leading)!important;font-weight:var(--nb-callout-weight)!important}
[data-nb-type="subheadline"]{font-size:var(--nb-subheadline-size)!important;line-height:var(--nb-subheadline-leading)!important;font-weight:var(--nb-subheadline-weight)!important}
[data-nb-type="footnote"]{font-size:var(--nb-footnote-size)!important;line-height:var(--nb-footnote-leading)!important;font-weight:var(--nb-footnote-weight)!important}
[data-nb-type="caption1"]{font-size:var(--nb-caption1-size)!important;line-height:var(--nb-caption1-leading)!important;font-weight:var(--nb-caption1-weight)!important}
[data-nb-type="caption2"]{font-size:var(--nb-caption2-size)!important;line-height:var(--nb-caption2-leading)!important;font-weight:var(--nb-caption2-weight)!important}
[data-nb-type="display-value"]{font-size:var(--nb-display-value-size)!important;line-height:var(--nb-display-value-leading)!important;font-weight:700!important}
[data-nb-type="display-value-compact"]{font-size:var(--nb-display-value-compact-size)!important;line-height:var(--nb-display-value-compact-leading)!important;font-weight:700!important}
[data-nb-type="result-value"]{font-size:var(--nb-result-value-size)!important;line-height:var(--nb-result-value-leading)!important;font-weight:700!important}

[data-nb-emphasis="true"][data-nb-type="large-title"]{font-weight:var(--nb-large-title-emphasis)!important}
[data-nb-emphasis="true"][data-nb-type="title1"]{font-weight:var(--nb-title1-emphasis)!important}
[data-nb-emphasis="true"][data-nb-type="title2"]{font-weight:var(--nb-title2-emphasis)!important}
[data-nb-emphasis="true"][data-nb-type="title3"]{font-weight:var(--nb-title3-emphasis)!important}
[data-nb-emphasis="true"][data-nb-type="headline"]{font-weight:var(--nb-headline-emphasis)!important}
[data-nb-emphasis="true"][data-nb-type="body"]{font-weight:var(--nb-body-emphasis)!important}
[data-nb-emphasis="true"][data-nb-type="callout"]{font-weight:var(--nb-callout-emphasis)!important}
[data-nb-emphasis="true"][data-nb-type="subheadline"]{font-weight:var(--nb-subheadline-emphasis)!important}
[data-nb-emphasis="true"][data-nb-type="footnote"]{font-weight:var(--nb-footnote-emphasis)!important}
[data-nb-emphasis="true"][data-nb-type="caption1"]{font-weight:var(--nb-caption1-emphasis)!important}
[data-nb-emphasis="true"][data-nb-type="caption2"]{font-weight:var(--nb-caption2-emphasis)!important}

/* Semantic tones are independent from type size. */
[data-nb-tone="primary"]{color:var(--nb-label-primary)!important}
[data-nb-tone="secondary"]{color:var(--nb-label-secondary)!important}
[data-nb-tone="tertiary"]{color:var(--nb-label-tertiary)!important}
[data-nb-tone="quaternary"]{color:var(--nb-label-quaternary)!important}
[data-nb-tone="link"],[data-nb-tone="info"]{color:var(--nb-system-blue)!important}
[data-nb-tone="success"]{color:var(--nb-system-green)!important}
[data-nb-tone="warning"]{color:var(--nb-system-orange)!important}
[data-nb-tone="critical"]{color:var(--nb-system-red)!important}
[data-nb-tone="on-accent"]{color:var(--nb-label-on-accent)!important}
[data-nb-type][aria-disabled="true"],button[data-nb-type]:disabled{color:var(--nb-label-tertiary)!important}
input::placeholder,textarea::placeholder{color:var(--nb-label-placeholder)!important;opacity:1}

/* Legacy color migration -------------------------------------------------
   Old component files still contain historical color literals so the PR can stay
   low-risk, but every current user-visible text state below is re-bound here to an
   Apple semantic role. Marketing/poster artwork is deliberately not included. */

/* App shell and common controls */
.nav-item{color:var(--nb-label-primary)!important}
.nav-item:hover{color:var(--nb-label-primary)!important}
.nav-item.active{color:var(--nb-system-blue)!important}
.nav-item.login-item,.nav-item.login-item:hover,.nav-badge{color:var(--nb-label-on-accent)!important}
.btn{color:var(--nb-label-primary)!important}
.btn.primary,.mock-add-btn{color:var(--nb-label-on-accent)!important}
.btn.ghost,.link-btn,.mock-link{color:var(--nb-system-blue)!important}
.btn.danger{color:var(--nb-system-red)!important}
.btn:disabled{color:var(--nb-label-tertiary)!important}
.search-icon,.search-clear,.close-btn{color:var(--nb-label-secondary)!important}
.pill{color:var(--nb-label-primary)!important}
.pill-icon{color:rgba(60,60,67,.68)!important}
.pill.active,.pill.active .pill-icon,.mock-bookmark.saved{color:var(--nb-system-blue)!important}
.page-title,.section-title,.collapse-head,.confirm-copy,.product-name,.overview-name,.benefit-title,.timeline-copy,.label,.option-title,.category-title,.task-head,.success h2,.report h3{color:var(--nb-label-primary)!important}
.eyebrow,.page-subtitle,.count-soft,.muted,.decision-note,.login-card p,.attention-compact-empty,.product-meta,.benefit-short,.benefit-detail,.hint,.option-sub,.category-sub,.success p,.report p{color:var(--nb-label-secondary)!important}
.benefit-detail dt,.legal,.prototype-note{color:var(--nb-label-tertiary)!important}
.timeline-item.clickable .timeline-copy,.show-more,.option-tag{color:var(--nb-system-blue)!important}
.tab{color:var(--nb-label-secondary)!important}.tab.active{color:var(--nb-label-primary)!important}
.success-icon{color:var(--nb-system-green)!important}
.toast{color:var(--nb-label-on-accent)!important}.toast button{color:var(--nb-system-blue)!important}

/* Discover / Offer cards
   Offer Card text size/leading/weight come only from semantic text styles.
   Layout and visual framing remain owned by offer-card.css. */
.nb-offer-card .nb-brand-art{font-size:17px;font-weight:850;letter-spacing:-.4px}

.nb-offer-card .nb-provider-text,.fallback-offer-card .provider{color:var(--nb-label-secondary)!important}
.nb-offer-card .nb-offer-name,.fallback-offer-card .offer-name,.nb-offer-card .nb-primary-value,.fallback-offer-card .primary-value{color:var(--nb-label-primary)!important}
.nb-offer-card .nb-requirement,.fallback-offer-card .requirement,.nb-offer-card .nb-tag,.fallback-offer-card .soft-tag{color:var(--nb-label-secondary)!important}
.nb-offer-card .nb-status-tag,.fallback-offer-card .status-tag{color:var(--nb-system-orange)!important}
.nb-offer-card .nb-tag.value,.nb-offer-card .nb-tag.attribute{color:var(--nb-label-secondary)!important}

/* Primary pages / Wallet / Attention */
.mock-page-title,.mock-section-title,.owned-product-copy strong,.v4-pp-product,.att-product-copy strong,.att-action-cell strong{color:var(--nb-label-primary)!important}
.mock-page-count,.section-count,.owned-product-copy small,.v4-pp-action,.v4-pp-time,.att-product-copy small,.att-action-cell small{color:var(--nb-label-secondary)!important}
.v4-pp-time.tone-urgent{color:var(--nb-system-red)!important}
.v4-pp-time.tone-soon{color:var(--nb-system-orange)!important}
.attention-count-dot,.success-dot{color:var(--nb-label-on-accent)!important}
.success-empty{color:var(--nb-label-primary)!important}
.success-empty span{color:var(--nb-label-secondary)!important}
.att-time-due{color:var(--nb-system-red)!important}
.att-time-info,.mock-tabs .tab.active,.active-filter-chip,.att-thumb{color:var(--nb-system-blue)!important}
.att-time-soft,.mock-tabs .tab,.attention-summary,.key-card .muted,.attention-row .chev{color:var(--nb-label-secondary)!important}
.mock-filter-select,.mock-status-select,.product-sort-menu button{color:var(--nb-label-primary)!important}
.history-status{color:var(--nb-label-secondary)!important}
.history-status.used{color:var(--nb-system-green)!important}
.history-status.skipped{color:var(--nb-system-orange)!important}
.history-status.expired{color:var(--nb-label-tertiary)!important}
.history-status.stopped{color:var(--nb-system-red)!important}

/* Watchlist */
.nb-watchlist-copy strong,.nb-watchlist-value,.nb-watchlist-history-head{color:var(--nb-label-primary)!important}
.nb-watchlist-header p,.nb-watchlist-provider,.nb-watchlist-copy small,.nb-watchlist-status,.nb-watchlist-history-head small{color:var(--nb-label-secondary)!important}
.nb-watchlist-section-head p,.nb-watchlist-section-empty,.nb-watchlist-empty p,.nb-watchlist-chevron,.nb-watchlist-history-chevron{color:var(--nb-label-tertiary)!important}
.nb-watchlist-status.tone-active{color:var(--nb-system-blue)!important}
.nb-watchlist-status.tone-pending{color:var(--nb-system-orange)!important}
.nb-watchlist-status.tone-success{color:var(--nb-system-green)!important}
.nb-watchlist-status.tone-danger{color:var(--nb-system-red)!important}

/* Product detail */
.v4-pd-title-row h1,.pd-name,.overview-name,.v4-pd-earning b{color:var(--nb-label-primary)!important}
.detail-back,.mock-back,.v4-pd-status,.pd-status-strip,.pd-id,.pd-inline-note{color:var(--nb-label-secondary)!important}
.detail-back:hover,.pd-status-strip strong,.fact-value,.v4-pd-facts strong{color:var(--nb-label-primary)!important}
.v4-pd-status>strong{color:var(--nb-system-green)!important}
.v4-pd-status>b.past+strong,.v4-pd-status.is-past>strong{color:var(--nb-label-tertiary)!important}
.v4-pd-actions button,.pd-quick-actions button,.v4-pd-edit,.pd-edit,.official-link{color:var(--nb-system-blue)!important}
.fact-label,.v4-pd-facts small,.v4-pd-att-copy small,.v4-pd-att-time,.v4-feature-benefit small,.v4-benefit-row small,.timeline-date,.v4-pd-earning small{color:var(--nb-label-secondary)!important}
.v4-pd-facts.credit-card-facts small,.v4-pd-facts.credit-card-facts strong{color:var(--nb-label-primary)!important}
.v4-pd-att-time.urgent{color:var(--nb-system-red)!important}
.v4-pp-chevron,.v4-pd-att-chevron,.v4-feature-benefit>b,.v4-benefit-row>b,.owned-product-chevron{color:var(--nb-label-secondary)!important}

/* Offer Detail decision rail */
.decision-brand-title,.mock-result-block .recommendation,.v4-recommendation,.recommendation{color:var(--nb-system-blue)!important}
.decision-brand-copy,.decision-sub,.result-meta,.v4-result-meta,.metric-label,.v4-metric .metric-label,.v4-no-action-note{color:var(--nb-label-secondary)!important}
.metric-value,.v4-metric .metric-value{color:var(--nb-label-primary)!important}
.tone-green{color:var(--nb-system-green)!important}.tone-blue{color:var(--nb-system-blue)!important}.tone-orange{color:var(--nb-system-orange)!important}
.v4-metric-icon{color:var(--nb-system-blue)!important}
.v4-metric .metric-sub,.result-disclaimer,.v4-result-note,.v4-security-line,.detail-trust-row span,.v4-trust-row b,.v4-trust-row small{color:var(--nb-label-tertiary)!important}
.detail-save.saved,.v4-detail-save.saved{color:var(--nb-system-blue)!important}

/* Bank-bonus right rail */
.nb-bank-brand strong,.nb-bank-reward-label,.nb-bank-reward-value,.nb-bank-tier,.nb-bank-tier strong,.nb-bank-flow h2,.nb-bank-step-title{color:var(--nb-label-primary)!important}
.nb-bank-brand small,.nb-bank-save,.nb-bank-tier-head,.nb-bank-step-card ul,.nb-bank-eligibility-copy{color:var(--nb-label-secondary)!important}
.nb-bank-save.saved,.nb-bank-reward-value b,.nb-bank-step-time{color:var(--nb-system-blue)!important}
.nb-bank-tier.best strong{color:var(--nb-system-orange)!important}
.nb-best-pill,.nb-bank-step-num,.nb-bank-cta{color:var(--nb-label-on-accent)!important}
.nb-bank-deadline{color:var(--nb-label-tertiary)!important}

/* Deal / remaining Offer rails. Reward branding is normalized to Label;
   urgency/status and interactive accents use system semantic colors. */
.deal-brand strong,.deal-value,.deal-value-card.pink .deal-value,.deal-value-card.orange .deal-value,.deal-section-title,.deal-time-card,.deal-step-copy b,.deal-terms summary,
.remaining-head strong,.remaining-reward-value,.remaining-reward-top.green .remaining-reward-value,.remaining-section-title,.remaining-tier,.remaining-tier.best strong,.remaining-step-title,.remaining-eligibility summary{color:var(--nb-label-primary)!important}
.deal-brand small,.deal-save,.deal-value-label,.deal-value-sub,.deal-step-copy small,.deal-terms-copy,
.remaining-head small,.remaining-save,.remaining-reward-label,.remaining-reward-sub,.remaining-tier-head,.remaining-step-card ul,.remaining-eligibility-copy{color:var(--nb-label-secondary)!important}
.deal-save.saved,.remaining-save.saved,.remaining-time{color:var(--nb-system-blue)!important}
.deal-urgent{color:var(--nb-system-red)!important}
.deal-step-num,.deal-step-num.pink,.deal-step-num.orange,.deal-cta,.remaining-num,.remaining-num.green,.remaining-cta,.remaining-cta.green{color:var(--nb-label-on-accent)!important}
.remaining-deadline{color:var(--nb-label-tertiary)!important}

/* Account detail */
.nb-account-section .v4-section-head h2,.nb-account-notice .v4-section-head h2,.nb-account-row strong{color:var(--nb-label-primary)!important}
.nb-account-row span,.nb-account-notice p{color:var(--nb-label-secondary)!important}
.nb-account-source{color:var(--nb-label-tertiary)!important}

/* Assessment visual layer */
.assessment-choice,.assessment-subq-title,.v5-tip-list strong,.assessment-result-reasons h3{color:var(--nb-label-primary)!important}
.assessment-help,.assessment-footnote,.v5-short-summary,.v5-reassess,.v5-report-summary,.v5-tip-list p,.assessment-inline-number label,.assessment-result-reasons p{color:var(--nb-label-secondary)!important}
.assessment-subq-title>span,.v5-reassess:hover{color:var(--nb-system-blue)!important}
.v5-primary-alert{color:var(--nb-system-red)!important}
.assessment-choice.selected .assessment-mark,.add-progress span.done{color:var(--nb-label-on-accent)!important}

/* Assessment chart text */
.nb-oh-stat-value,.nb-oh-title,.nb-oh-details{color:var(--nb-label-primary)!important}
.nb-oh-stat-name,.nb-oh-ranges button,.nb-oh-note,.nb-oh-empty{color:var(--nb-label-secondary)!important}
.nb-oh-ranges button.active{color:var(--nb-system-blue)!important}

/* Application handoff */
#nb-application-handoff-root .nb-ah-banner strong,#nb-application-handoff-root .nb-ah-title,#nb-application-handoff-root .nb-ah-field label,#nb-application-handoff-root .nb-ah-result{color:var(--nb-label-primary)!important}
#nb-application-handoff-root .nb-ah-banner p,#nb-application-handoff-root .nb-ah-success p,#nb-application-handoff-root .nb-ah-sub,#nb-application-handoff-root .nb-ah-note,#nb-application-handoff-root .nb-ah-close{color:var(--nb-label-secondary)!important}
#nb-application-handoff-root .nb-ah-success strong,#nb-application-handoff-root [data-result="approved"]{color:var(--nb-system-green)!important}
#nb-application-handoff-root [data-result="pending"]{color:var(--nb-system-orange)!important}
#nb-application-handoff-root [data-result="denied"]{color:var(--nb-system-red)!important}
#nb-application-handoff-root .nb-ah-btn.primary{color:var(--nb-label-on-accent)!important}
#nb-application-handoff-root .nb-ah-btn.secondary{color:var(--nb-label-primary)!important}
#nb-application-handoff-root .nb-ah-btn.ghost{color:var(--nb-label-secondary)!important}

.discover-page,
.wishlist-page.nb-watchlist-page,
.v4-products-page,
.attention-page.content.narrow{
  width:100%;
  max-width:var(--nb-primary-canvas)!important;
  margin-left:0!important;
  margin-right:auto!important;
}
.wishlist-page.nb-watchlist-page{padding-left:0!important;padding-right:0!important}
.nb-primary-page-head,
.nb-watchlist-header,
.v4-products-head,
.attention-page .mock-page-top{
  gap:var(--nb-space-4)!important;
  margin-bottom:var(--nb-space-6)!important;
}
.nb-primary-page-head{display:flex;align-items:flex-start;justify-content:space-between}
.nb-primary-page-head h1,
.nb-watchlist-header h1,
.v4-products-head h1,
.attention-page .mock-page-title{margin:0!important}
.nb-watchlist-header p,
.v4-products-head>div>div,
.mock-page-subtitle{margin-top:var(--nb-space-1)!important}

.nb-watchlist-section-head,
.v4-section-head,
.mock-section-title-row{margin-bottom:var(--nb-space-2)!important}
.nb-watchlist-section-head p,
.nb-watchlist-copy small,
.v10-info-copy small,
.v4-pd-att-copy small,
.v4-feature-benefit small,
.option-sub,
.category-sub{margin-top:var(--nb-space-1)!important}
.form-group .label{margin-bottom:var(--nb-space-2)!important}
.form-group .hint{margin-top:var(--nb-space-1)!important}

[data-nb-type="callout"]{text-decoration-thickness:from-font;text-underline-offset:.14em}
[data-nb-typography-exempt="marketing"]{font-family:inherit;font-style:inherit;letter-spacing:inherit}

@media(max-width:780px){
  :root{
    --nb-large-title-size:34px; --nb-large-title-leading:41px; --nb-large-title-weight:400; --nb-large-title-emphasis:700;
    --nb-title1-size:28px; --nb-title1-leading:34px; --nb-title1-weight:400; --nb-title1-emphasis:700;
    --nb-title2-size:22px; --nb-title2-leading:28px; --nb-title2-weight:400; --nb-title2-emphasis:700;
    --nb-title3-size:20px; --nb-title3-leading:25px; --nb-title3-weight:400; --nb-title3-emphasis:600;
    --nb-headline-size:17px; --nb-headline-leading:22px; --nb-headline-weight:600; --nb-headline-emphasis:600;
    --nb-body-size:17px; --nb-body-leading:22px; --nb-body-weight:400; --nb-body-emphasis:600;
    --nb-callout-size:16px; --nb-callout-leading:21px; --nb-callout-weight:400; --nb-callout-emphasis:600;
    --nb-subheadline-size:15px; --nb-subheadline-leading:20px; --nb-subheadline-weight:400; --nb-subheadline-emphasis:600;
    --nb-footnote-size:13px; --nb-footnote-leading:18px; --nb-footnote-weight:400; --nb-footnote-emphasis:600;
    --nb-caption1-size:12px; --nb-caption1-leading:16px; --nb-caption1-weight:400; --nb-caption1-emphasis:600;
    --nb-caption2-size:11px; --nb-caption2-leading:13px; --nb-caption2-weight:400; --nb-caption2-emphasis:600;
    --nb-display-value-size:28px; --nb-display-value-leading:32px;
    --nb-display-value-compact-size:22px; --nb-display-value-compact-leading:26px;
    --nb-result-value-size:34px; --nb-result-value-leading:41px;
  }

  .discover-page,
  .wishlist-page.nb-watchlist-page,
  .v4-products-page,
  .attention-page.content.narrow{max-width:100%!important}
  .wishlist-page.nb-watchlist-page{padding-top:0!important;padding-bottom:40px!important}
  .nb-primary-page-head,
  .nb-watchlist-header,
  .v4-products-head,
  .attention-page .mock-page-top{margin-bottom:var(--nb-space-6)!important}

  .btn,
  .assessment-choice,
  .option-row,
  .nb-ah-btn,
  .deal-cta,
  .remaining-cta,
  .nb-bank-cta{min-height:44px}
}

/* Apple-light hierarchy pass ---------------------------------------------
   Keep Apple text-style size and leading, but use emphasized weight sparingly.
   The interface should be mostly Regular/Medium; only real focal content gets
   Semibold, while reward/result display values retain Bold. */
[data-nb-emphasis="true"][data-nb-type="title1"]{font-weight:400!important}
[data-nb-emphasis="true"][data-nb-type="title2"]{font-weight:500!important}
[data-nb-emphasis="true"][data-nb-type="title3"]{font-weight:500!important}
[data-nb-type="headline"]{font-weight:500!important}
[data-nb-emphasis="true"][data-nb-type="headline"]{font-weight:600!important}
[data-nb-emphasis="true"][data-nb-type="body"]{font-weight:500!important}
[data-nb-emphasis="true"][data-nb-type="callout"]{font-weight:500!important}
[data-nb-emphasis="true"][data-nb-type="subheadline"]{font-weight:500!important}
[data-nb-emphasis="true"][data-nb-type="footnote"]{font-weight:500!important}
[data-nb-type="caption2"]{font-weight:400!important}
[data-nb-emphasis="true"][data-nb-type="caption2"]{font-weight:500!important}

/* Navigation uses tint and selection state instead of permanent boldness. */
.nav-item:not(.login-item)[data-nb-type]{font-weight:400!important;color:var(--nb-label-secondary)!important}
.nav-item:not(.login-item).active[data-nb-type]{font-weight:500!important;color:var(--nb-system-blue)!important}

/* Pills and low-level filters stay quiet until selected. */
.discover-page .pill[data-nb-type],
.add-product-modal .pill[data-nb-type],
.add-more-filter button[data-nb-type]{font-weight:400!important;color:var(--nb-label-secondary)!important}
.discover-page .pill.active[data-nb-type],
.add-product-modal .pill.active[data-nb-type],
.add-more-filter button.active[data-nb-type]{font-weight:500!important;color:var(--nb-system-blue)!important}

/* Buttons are Medium by default; only primary actions rise to Semibold. */
.btn[data-nb-type],
#nb-application-handoff-root .nb-ah-btn[data-nb-type],
.deal-cta[data-nb-type],
.remaining-cta[data-nb-type],
.nb-bank-cta[data-nb-type]{font-weight:500!important}
.btn.primary[data-nb-type],
.mock-add-btn[data-nb-type],
#nb-application-handoff-root .nb-ah-btn.primary[data-nb-type],
.deal-cta[data-nb-type],
.remaining-cta[data-nb-type],
.nb-bank-cta[data-nb-type]{font-weight:600!important}

/* Metadata and tags should read as supporting information, not mini-headlines. */
.nb-offer-card .nb-provider-text[data-nb-type],
.nb-offer-card .nb-tag[data-nb-type],
.fallback-offer-card .provider[data-nb-type],
.fallback-offer-card .soft-tag[data-nb-type],
.nb-watchlist-provider[data-nb-type],
.nb-watchlist-status[data-nb-type],
.nb-watchlist-count[data-nb-type],
.att-time[data-nb-type],
.history-status[data-nb-type],
.mock-page-count[data-nb-type],
.section-count[data-nb-type]{font-weight:400!important}
.nb-offer-card .nb-status-tag[data-nb-type],
.fallback-offer-card .status-tag[data-nb-type]{font-weight:500!important}

/* Tabs rely on selection color/indicator, not heavy text. */
.tab[data-nb-type],.mock-tabs .tab[data-nb-type]{font-weight:400!important}
.tab.active[data-nb-type],.mock-tabs .tab.active[data-nb-type]{font-weight:500!important}

/* Offer Detail overlay close control typography stays centralized. */
.nb-offer-detail-close{
  color:#5f6876;
  font-size:22px;
  line-height:1;
}

/* Product Detail overlay close control typography stays centralized. */
.nb-product-detail-close{
  color:#5f6876;
  font-size:22px;
  line-height:1;
}

/* Product Detail non-text glyph presentation. */
.fact-icon{color:#5b72a4!important;font-size:17px!important}
.earn-icon{font-size:25px!important}
.earn-icon.blue{color:#0877ff!important}
.earn-icon.purple{color:#8b2cff!important}
.earn-icon.green{color:#12be77!important}
.v4-pd-att-icon{color:#0877ff!important;font-size:16px!important}
.v4-pd-att-chevron{font-size:23px!important}
.v4-feature-benefit>b{font-size:22px!important}
.v4-benefit-row>b{font-size:20px!important}
.v4-benefit-icon{font-size:14px!important;color:var(--nb-label-primary)!important}

/* Assessment modal control typography. */
.canonical-close{font-size:26px!important;line-height:1!important;color:var(--nb-label-secondary)!important}
.canonical-error{color:var(--nb-system-red)!important}

/* Detail navigation semantic text style. */
.detail-back-button{color:#3f6fd8;font-size:14px;font-weight:600}


/* Offer Detail decision-first surface typography.
   Layout remains page-owned; text metrics stay centralized here. */
.nb-credit-offer-meta{font-size:12px;line-height:1.4}
.nb-credit-offer-name{font-size:17px;font-weight:760;letter-spacing:-.2px}
.nb-credit-offer-provider{font-size:11px;font-weight:650;letter-spacing:.05em}
.nb-current-offer-label,.nb-offer-section-label{font-size:11px;font-weight:720;letter-spacing:.02em}
.nb-current-offer-value{font-size:32px;font-weight:820;line-height:1.08;letter-spacing:-.7px}
.nb-current-offer.is-ended .nb-current-offer-value{font-size:25px}
.nb-current-offer-requirement{font-size:13px;line-height:1.55}
.nb-offer-value-head h2{font-size:17px;line-height:1.25;font-weight:760;letter-spacing:-.2px}
.nb-offer-value-head small{font-size:8px;line-height:1.2;font-weight:650;letter-spacing:.28em}
.nb-offer-value-grid span{font-size:10px;font-weight:650}
.nb-offer-value-grid b{font-size:23px;line-height:1.15;font-weight:720;letter-spacing:-.25px}
.nb-offer-value-grid small{font-size:10px;line-height:1.45}
.nb-offer-apply-primary .btn{font-size:14px;font-weight:760}
.nb-assessment-kicker{font-size:10px;font-weight:760;letter-spacing:.03em}
.nb-assessment-entry h2{font-size:18px;line-height:1.25;letter-spacing:-.25px}
.nb-assessment-entry p{font-size:12px;line-height:1.6}
.nb-assessment-preview-link{font-size:11px;font-weight:680}
.nb-assessment-result-card .v4-recommendation{font-size:28px}
.nb-assessment-result-actions .btn{font-size:12px}
.nb-assessment-preview-close{font-size:20px;line-height:1}
.nb-assessment-preview-kicker{font-size:11px;font-weight:760}
.nb-assessment-preview-body h2{font-size:22px;letter-spacing:-.35px}
.nb-assessment-preview-intro{font-size:12px;line-height:1.55}
.nb-assessment-preview-meta{font-size:10px;font-weight:680}
.nb-assessment-preview-result>strong{font-size:27px}
.nb-assessment-preview-result>p{font-size:12px;line-height:1.5}
.nb-assessment-preview-grid span{font-size:9px}
.nb-assessment-preview-grid b{font-size:14px}
.nb-assessment-preview-foot{font-size:11px;line-height:1.55}

@media(max-width:780px){
  .nb-current-offer-value{font-size:28px}
}

/* NextBonus dynamic Deals: central text styles shared by existing page owners. */
.nb-dynamic-deal-card .nb-deal-merchant{font-size:12px}
.nb-dynamic-deal-card .nb-deal-discount{font-size:12px}
.nb-dynamic-deal-card .nb-deal-was{font-size:12px}
.nb-dynamic-deal-card .nb-deal-summary{font-size:12px;line-height:1.45}
.nb-deals-status{font-size:13px}
.nb-deals-status button{font-size:12px}
.nb-dynamic-deal-panel .deal-brand strong{font-size:20px;line-height:1.3}
.nb-dynamic-deal-panel .deal-value{font-size:30px;font-weight:800}
.nb-dynamic-description h2{font-size:15px}
.nb-dynamic-description p{font-size:14px;line-height:1.65}
.nb-dynamic-promo span{font-size:12px}
.nb-dynamic-promo strong{font-family:ui-monospace,monospace;font-size:15px}
.nb-dynamic-deal-panel .deal-cta{font-weight:750}
.nb-dynamic-disclosure{font-size:11px;line-height:1.5}
