/* BILSTORE typography: IBM Plex Sans Condensed, 2026-09-26.
   Compatibility filename: every existing page already loads this stylesheet last.
   Official @ibm/plex-sans-condensed 2.0.0; SIL OFL in the adjacent fonts directory. */
@font-face {
  font-family: 'IBM Plex Sans Condensed'; font-style: normal; font-weight: 400;
  src: url('/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Regular.woff2') format('woff2'); font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Sans Condensed'; font-style: normal; font-weight: 500;
  src: url('/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Medium.woff2') format('woff2'); font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Sans Condensed'; font-style: normal; font-weight: 600;
  src: url('/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-SemiBold.woff2') format('woff2'); font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Sans Condensed'; font-style: normal; font-weight: 700;
  src: url('/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Bold.woff2') format('woff2'); font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Sans Condensed'; font-style: italic; font-weight: 400;
  src: url('/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Italic.woff2') format('woff2'); font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Sans Condensed'; font-style: italic; font-weight: 500;
  src: url('/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-MediumItalic.woff2') format('woff2'); font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Sans Condensed'; font-style: italic; font-weight: 600;
  src: url('/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-SemiBoldItalic.woff2') format('woff2'); font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Sans Condensed'; font-style: italic; font-weight: 700;
  src: url('/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-BoldItalic.woff2') format('woff2'); font-display: swap;
}
:root {
  --bilstore-font: 'IBM Plex Sans Condensed', 'Arial Narrow', Arial, sans-serif;
  --display-font: var(--bilstore-font);
  font-size: 100%; font-synthesis: none;
}
html, body, body *, body::before, body::after, body *::before, body *::after,
input::placeholder, textarea::placeholder, input::file-selector-button {
  font-family: 'IBM Plex Sans Condensed', 'Arial Narrow', Arial, sans-serif !important;
}
body { font-size: 1rem; font-weight: 400; line-height: 1.6; letter-spacing: normal; }
h1, h2, h3, h4, h5, h6 { font-weight: 600; line-height: 1.3; letter-spacing: normal; }
h1 { font-size: clamp(1.75rem, 3vw, 2.5rem); font-weight: 700; }
h2 { font-size: 1.5rem; }
h3 { font-size: 1.125rem; }
h1, h2, h3, p, label, .product-name, .pack, .pay { overflow-wrap: break-word; }
button, input, select, textarea { line-height: 1.5; }
button, .button, .pill, .pay { font-weight: 600; letter-spacing: normal; }
button, .button, .pill { font-size: .9375rem; }
input:not([type=checkbox]):not([type=radio]), select, textarea,
.field, .catalog .search, #authModal .field { font-size: 1rem !important; }
label, .label { font-size: .875rem; font-weight: 500; }
.help, .small, .notice, .confirm, .sandbox-note { font-size: .875rem; line-height: 1.6; }
.eyebrow { font-size: .75rem; font-weight: 600; letter-spacing: .06em; }

/* Navigation and storefront. */
.brand, .brand-wordmark { font-weight: 700; letter-spacing: .045em; }
.brand-wordmark { font-size: 1.25rem; }
.links a, .quick-tool, .store-tab { font-size: 1rem; font-weight: 500; letter-spacing: normal; }
.account-nav .pill, .header-actions, .header-actions .button { font-size: .9375rem; }
.header-actions { flex-wrap: wrap; }
.hero h1 { font-size: clamp(1.875rem, 3.5vw, 3rem); font-weight: 700; line-height: 1.15; letter-spacing: -.015em; }
.hero-desc, .hero-copy p { font-size: 1rem; line-height: 1.6; }
.banner-link { font-size: .9375rem; font-weight: 600; }
.hero-tags span, .event-panel small, .mini-card span { font-size: .8125rem; }
.section-head h2, .catalog .section-head h2, .poster-showcase-head h2 {
  font-size: clamp(1.375rem, 2.2vw, 1.75rem); font-weight: 600; line-height: 1.3; letter-spacing: normal;
}
.section-head p, .catalog .section-head p, .poster-showcase-head p { font-size: 1rem; line-height: 1.6; }
.game-name, .product-name, .reference-card .product-name, #games .poster-title {
  font-size: 1rem !important; font-weight: 600; line-height: 1.35; letter-spacing: normal;
}
.game-price, .product-availability, .reference-card .product-availability { font-size: .875rem; line-height: 1.45; font-weight: 400; }
.reference-card.topup-game-card .product-name { font-size: .875rem !important; }
.reference-card.topup-game-card .product-availability { font-size: .8125rem; }
.product-subtitle, .product-hook, .product-cta { font-size: .8125rem; line-height: 1.4; letter-spacing: normal; }
.step h3, .article h3 { font-size: 1.125rem; font-weight: 600; }
.step p { font-size: 1rem; line-height: 1.6; }
.footer, footer, .whatsapp-float, .toast { font-size: .875rem; line-height: 1.6; }

/* Every game uses the same catalog route and responsive type scale. */
.purchase-route .purchase-back { font-size: .9375rem; font-weight: 500; line-height: 1.5; }
.purchase-route-brand { font-size: .8125rem; letter-spacing: .04em; }
.purchase-game-eyebrow { font-size: .75rem; font-weight: 500; letter-spacing: .06em; }
.purchase-game-heading h1, .purchase-route-banner-copy h1 {
  font-size: clamp(1.5rem, 2.6vw, 2.25rem); font-weight: 600; line-height: 1.25; letter-spacing: normal;
}
.purchase-game-heading p, .purchase-route-banner-copy p { font-size: .9375rem; line-height: 1.55; }
.purchase-game-benefits span, .route-benefit { font-size: .8125rem; line-height: 1.45; }
.purchase-game-benefits b { font-size: .75rem; }
.purchase-route .purchase-game-cover-name { font-size: 1rem; font-weight: 600; line-height: 1.35; }
.route-step-title { font-size: .875rem; font-weight: 600; line-height: 1.5; }
.route-step-title b { font-size: 1rem; font-weight: 600; }
.purchase-route-form #topupForm > .label { font-size: .875rem; font-weight: 500; line-height: 1.5; }
.pack-group-title, .purchase-route-form .pack-group-title, .purchase-shell .pack-group-title {
  font-size: .9375rem; font-weight: 600; line-height: 1.5; letter-spacing: normal;
}
.pack, .purchase-route-form .pack, .purchase-shell .pack {
  font-size: .875rem; font-weight: 500; line-height: 1.45; white-space: normal; min-width: 0;
}
.pack small, .purchase-route-form .pack small, .purchase-shell .pack small { font-size: .875rem; font-weight: 600; line-height: 1.5; }
.purchase-route-form .help, .purchase-route-form #checkoutNote, .purchase-route-form .confirm { font-size: .8125rem; line-height: 1.6; }
.route-rating small, .route-rating em, .route-help, .route-help span { font-size: .8125rem; line-height: 1.5; }
.route-rating strong { font-size: 2rem; font-weight: 600; }
.route-summary-heading, .purchase-summary-head { font-size: 1rem; font-weight: 600; letter-spacing: normal; }
.route-summary-card > p, .purchase-summary-product strong { font-size: .9375rem; font-weight: 500; line-height: 1.5; }
.route-summary-card dt, .route-summary-card dd, .route-summary-total,
.purchase-summary dt, .purchase-summary dd, .purchase-summary-total { font-size: .875rem; line-height: 1.5; }
.route-summary-total strong, .purchase-summary-total strong { font-size: 1.125rem; font-weight: 600; }
.purchase-summary-help, .purchase-summary-game { font-size: .8125rem; letter-spacing: normal; }
.pay, .purchase-route .route-summary-card #payButton { font-size: 1rem; font-weight: 600; line-height: 1.5; white-space: normal; }

/* Sign in, member account, and account notices. */
#authModal h3 { font-size: 1.5rem; font-weight: 600; line-height: 1.3; letter-spacing: normal; }
#authModal .auth-intro { font-size: .9375rem; }
#authModal .label { font-size: .875rem; font-weight: 500; }
#authModal .auth-hint, #authModal .terms-consent, #authModal .auth-message,
#authModal .auth-switch, #authModal .auth-support, #authModal .forgot-link { font-size: .8125rem; line-height: 1.5; }
#authModal .auth-divider, #authModal .recaptcha-notice { font-size: .75rem; line-height: 1.6; }
#authModal .pay { font-size: 1rem; height: auto; min-height: 46px; padding: 10px 14px; }
.account-order strong { font-size: 1rem; font-weight: 600; }
.account-order small { font-size: .875rem; }

/* Admin and legal pages also load this same stylesheet. */
.page-heading h1 { font-size: clamp(1.75rem, 3vw, 2.5rem); }
.card h2, .product-section h2, .section-heading h2 { font-size: 1.25rem; font-weight: 600; }
.stats strong { font-size: 2rem; font-weight: 600; }
.stats article span, .game-summary span, .badge, .live-badge { font-size: .8125rem; }
table { font-size: .875rem; line-height: 1.5; }
th { font-size: .75rem; font-weight: 600; letter-spacing: .03em; }
td small, #emailRows .button, .mail-addresses dt { font-size: .8125rem; }
.product-section code, .supplier-serial { font-size: .875rem; line-height: 1.6; }
article p, article li { line-height: 1.75; }
.date { font-size: .875rem; }

@media (max-width: 600px) {
  .brand-wordmark { font-size: 1.125rem; }
  .links a, .quick-tool, .store-tab { font-size: .875rem; }
  .account-nav .pill { font-size: .875rem; }
  .reference-card.topup-game-card .product-name { font-size: .8125rem !important; }
  .reference-card.topup-game-card .product-availability { font-size: .75rem; }
  .purchase-game-heading h1 { font-size: 1.375rem; }
  .purchase-game-eyebrow { font-size: .6875rem; }
  .purchase-game-heading p, .purchase-game-benefits span { font-size: .8125rem; }
  .purchase-route .purchase-game-cover-name { font-size: .75rem; }
  .purchase-route-brand { font-size: .75rem; }
  .purchase-route .purchase-back { font-size: .875rem; }
  .route-step-title { padding-block: 8px; }
  .topbar-inner { flex-wrap: wrap; gap: 12px; padding: 16px 0; }
  .page-heading { flex-wrap: wrap; }
  #adminIdentity { font-size: .8125rem; }
  .section-heading .button { font-size: .875rem; }
}
@media (max-width: 480px) {
  #authModal[data-mode=register] .auth-passwords,
  #authModal[data-mode=reset] .auth-passwords { grid-template-columns: 1fr; }
}
