/* Self-hosted real font faces; demo balances and chart axis labels are untouched. */
@font-face{font-family:'Bull Bowlby';src:url('/fonts/BowlbyOne-Card-v2.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Bull Archivo';src:url('/fonts/ArchivoBlack-Card-v2.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Bull Japanese Black';src:url('/fonts/NotoSansJP-Card-Black-v1.woff2') format('woff2');font-weight:900;font-style:normal;font-display:swap}
html body :is(#coinGrid,#referenceGrid,#stock-app) :is(.coin-card,.market-card) :is(.change,.price,.market-change,.market-price){font-family:'Bull Bowlby',var(--font-display);font-weight:400;font-style:normal;font-synthesis:none;transform:skewX(-10deg);transform-origin:center;letter-spacing:0;-webkit-text-stroke:0}
html body :is(#coinGrid,#referenceGrid,#stock-app) :is(.coin-card,.market-card) .coin-symbol,
html body :is(.pulse-entry-copy>strong,.market-pulse-entry-copy>strong,.compare-entry-copy>strong,.feature-cta-title,.stock-feature-link strong,#demoTradeTitle,#stock-demo-title,#gainersToggleLabel){font-family:'Bull Archivo','Bull Japanese Black',var(--font-ui);font-weight:900;font-style:normal;font-synthesis:none;transform:skewX(-10deg);transform-origin:center;letter-spacing:-.025em;-webkit-text-stroke:0}
html body :is(.pulse-entry-copy>strong,.market-pulse-entry-copy>strong,.compare-entry-copy>strong,.feature-cta-title,.stock-feature-link strong,#demoTradeTitle,#stock-demo-title,#gainersToggleLabel){display:block;max-width:100%;white-space:nowrap}
html body :is(.coin-card,.market-card) :is(.card-price-row,.market-price-row){align-items:flex-end!important;padding-bottom:.7cqw;box-sizing:border-box}
html body :is(.coin-card,.market-card) :is(.price,.market-price){line-height:.95}

/* Latin capitals have a smaller painted height than the Japanese heading. */
html body #gainersToggleLabel .gainers-top10{font-size:1.2em;line-height:1;vertical-align:baseline}

/* Numeral side bearings and Latin cap height are normalized in the card font assets. */
html body :is(#coinGrid,#referenceGrid,#stock-app) :is(.price,.market-price) .bull-card-currency{display:inline-block;margin-right:.10em}
html body :is(#coinGrid,#referenceGrid,#stock-app) :is(.coin-card,.market-card) .coin-symbol{font-family:'Bull Title Numerals','Bull Archivo','Bull Japanese Black',var(--font-ui)}

/* Tall Latin outlines extend beyond a one-em line box. Never clip the glyph ink. */
html body :is(#coinGrid,#referenceGrid,#stock-app) :is(.coin-card,.market-card) .coin-symbol{overflow:visible;transform:skewX(-13deg)}
/* Every card title shares the same Bowlby numeral face. */
@font-face{font-family:'Bull Title Numerals';src:url('/fonts/BowlbyOne-Card-v2.woff2') format('woff2');font-weight:400;font-style:normal;size-adjust:112%;font-display:swap;unicode-range:U+0030-0039}
html body #stock-app .market-card.yield-card .coin-symbol{font-family:'Bull Title Numerals','Bull Archivo','Bull Japanese Black',var(--font-ui)}

/* S&P 500 keeps its letters, with a distinct Aoboshi ampersand and shared Bowlby numerals. */
@font-face{font-family:'Bull Aoboshi Ampersand';src:url('/fonts/AoboshiOne-Ampersand-v1.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;size-adjust:112%;unicode-range:U+0026,U+FF06}
html body #stock-app .market-card[data-id="sp500"] .coin-symbol{font-family:'Bull Aoboshi Ampersand','Bull Title Numerals','Bull Archivo','Bull Japanese Black',var(--font-ui)}

/* Shared icon/text columns align the start of the two button columns. */
html body :is(.comparison-entry-row>a,.feature-cta,.stock-feature-link){grid-template-columns:44px minmax(0,1fr) 24px;column-gap:12px;padding-inline:14px}
html body :is(.comparison-entry-row .pulse-entry-icon,.comparison-entry-row .market-pulse-entry-icon,.compare-entry-icon,.feature-cta-icon,.stock-feature-icon){width:40px;height:40px;margin-right:0;justify-self:center}
html body :is(.demo-trade-toggle,.stock-demo-toggle){grid-template-columns:44px minmax(0,1fr) minmax(0,48%) 24px;column-gap:12px;padding-inline:14px}
html body :is(.demo-trade-toggle-icon,.stock-demo-icon-shell,.stock-demo-icon-content){width:40px;height:40px;justify-self:center}
html body :is(.pulse-entry-copy,.market-pulse-entry-copy,.compare-entry-copy,.feature-cta-copy,.stock-demo-copy,.demo-trade-toggle-copy){min-width:0;text-align:left;justify-items:start}
html body #gainersToggleLabel{text-align:center;justify-self:stretch;white-space:nowrap}
@media(max-width:720px){
 html body :is(.comparison-entry-row>a,.feature-cta,.stock-feature-link){grid-template-columns:34px minmax(0,1fr) 16px!important;column-gap:8px!important;padding-inline:9px!important}
 html body :is(.comparison-entry-row .pulse-entry-icon,.comparison-entry-row .market-pulse-entry-icon,.compare-entry-icon,.feature-cta-icon,.stock-feature-icon){width:32px;height:32px;margin-right:0}
 html body :is(.demo-trade-toggle,.stock-demo-toggle){grid-template-columns:34px minmax(0,1fr) minmax(0,44%) 16px;column-gap:8px;padding-inline:9px}
 html body :is(.demo-trade-toggle-icon,.stock-demo-icon-shell,.stock-demo-icon-content){width:32px;height:32px}
}

/* A consistent two-line hierarchy for every primary feature entry. */
html body :is(#stock-app,.topbar) :is(.pulse-entry-copy,.market-pulse-entry-copy,.compare-entry-copy,.feature-cta-copy,.demo-trade-toggle-copy,.stock-demo-copy,.stock-feature-link>span:nth-child(2)){display:grid;grid-template-rows:auto auto;align-content:center;justify-items:stretch;gap:3px;line-height:1.1}
html body :is(#stock-app,.topbar) :is(.pulse-entry-copy,.market-pulse-entry-copy,.compare-entry-copy,.feature-cta-copy,.demo-trade-toggle-copy,.stock-demo-copy,.stock-feature-link>span:nth-child(2))>strong{display:block;margin:0;line-height:1.1;white-space:nowrap;transform-origin:left bottom}
html body :is(#stock-app,.topbar) :is(.pulse-entry-copy,.market-pulse-entry-copy,.compare-entry-copy,.feature-cta-copy,.demo-trade-toggle-copy,.stock-demo-copy,.stock-feature-link>span:nth-child(2))>small{display:block;margin:0;padding:0;border:0;border-radius:0;min-height:0;background:none;box-shadow:none;color:#fff;opacity:1;font-family:var(--font-ui);font-weight:900;font-style:normal;line-height:1.15;letter-spacing:.04em;text-align:left;justify-self:stretch;white-space:nowrap}
html body :is(#demoTradeStatus,#stock-demo-status){display:none!important}

/* Preserve a large two-line title hierarchy within the narrow phone columns. */
@media(max-width:720px){
 html body :is(.comparison-entry-row>a,.feature-cta,.stock-feature-link){grid-template-columns:28px minmax(0,1fr) 12px!important;column-gap:6px!important;padding-inline:8px!important}
 html body :is(.comparison-entry-row .pulse-entry-icon,.comparison-entry-row .market-pulse-entry-icon,.compare-entry-icon,.feature-cta-icon,.stock-feature-icon){width:28px;height:28px}
 html body :is(.demo-trade-toggle,.stock-demo-toggle){grid-template-columns:28px minmax(0,1fr) minmax(0,44%) 12px;column-gap:6px;padding-inline:8px}
 html body :is(.demo-trade-toggle-icon,.stock-demo-icon-shell,.stock-demo-icon-content){width:28px;height:28px}
 html body :is(.pulse-entry-copy,.market-pulse-entry-copy,.compare-entry-copy,.feature-cta-copy,.demo-trade-toggle-copy,.stock-demo-copy,.stock-feature-link>span:nth-child(2)){row-gap:4px!important}
 html body :is(.pulse-entry-copy>strong,.market-pulse-entry-copy>strong,.compare-entry-copy>strong,.feature-cta-title,.stock-feature-link strong,#demoTradeTitle,#stock-demo-title){font-size:18px;white-space:nowrap;line-height:1.2!important;overflow:visible}
 html body :is(.comparison-entry-row .pulse-entry-status>span,.comparison-entry-row .stock-flow-arrow,.compare-entry-arrow,.feature-cta-arrow,.stock-feature-link>.stock-flow-arrow){width:12px!important;justify-self:end}
}

/* TOP10 numerals use the same real face as chart-card prices and changes.
   The parent supplies the shared slant; do not skew the digits twice. */
html body #gainersToggleLabel .gainers-digits{font-family:'Bull Bowlby',var(--font-display);font-weight:400;font-style:normal;font-synthesis:none;font-size:1em;line-height:1;letter-spacing:0}

/* Match the existing currency gap for trailing percent/point units. */
html body :is(.coin-card,.market-card) :is(.change,.price,.market-change,.market-price) .bull-card-unit{display:inline-block;margin-left:.10em}

/* Give held instruments more presence while preserving the demo button height. */
html body :is(.demo-trade,.stock-demo-trade).has-position :is(.demo-trade-toggle,.stock-demo-toggle){grid-template-columns:50px minmax(0,1fr) minmax(0,48%) 24px}
html body :is(.demo-trade,.stock-demo-trade).has-position :is(.demo-trade-toggle-icon,.stock-demo-icon-shell,.stock-demo-icon-content){width:47px;height:47px;flex-basis:47px}
@media(max-width:720px){
 html body :is(.demo-trade,.stock-demo-trade).has-position :is(.demo-trade-toggle,.stock-demo-toggle){grid-template-columns:34px minmax(0,1fr) minmax(0,44%) 12px}
 html body :is(.demo-trade,.stock-demo-trade).has-position :is(.demo-trade-toggle-icon,.stock-demo-icon-shell,.stock-demo-icon-content){width:33px;height:33px;flex-basis:33px}
}

/* Align commodity units to the card edge; place the amount as near center as fits. */
html body #stock-app .market-card .right-unit-price-row{justify-content:flex-start}
html body #stock-app .market-card .right-unit-price-row .market-price{position:relative}
html body #stock-app .market-card .right-unit-price-row>small{position:absolute;right:0;bottom:.7cqw;text-align:right;white-space:nowrap}
