/* Shared typography for the portal, forum and common shell. */
:root {
  --cs-font-body: Inter, system-ui, sans-serif;
  --cs-font-heading: "Space Grotesk", Inter, system-ui, sans-serif;
  --cs-font-mono: "JetBrains Mono", ui-monospace, monospace;
  --cs-text-body: 14px; --cs-leading-body: 22px;
  --cs-text-reading: 16px; --cs-leading-reading: 26px;
  --cs-text-meta: 12px; --cs-leading-meta: 18px;
  --cs-text-badge: 11px; --cs-leading-badge: 16px;
  --cs-text-card: 17px; --cs-leading-card: 24px;
  --cs-text-section: 20px; --cs-leading-section: 28px;
  --cs-text-title: 32px; --cs-leading-title: 40px;
}
:is(body.portal-page, body.ipsApp_front) { font-family:var(--cs-font-body); font-size:var(--cs-text-body); line-height:var(--cs-leading-body); }
.portal-page main h1, .ipsApp_front #ipsLayout__main h1 { font-family:var(--cs-font-heading);font-size:var(--cs-text-title);line-height:var(--cs-leading-title);font-weight:600;letter-spacing:-.01em; }
.portal-page main h2, .ipsApp_front :is(.ipsWidget__header,.ipsBox__header,.evsb__title) { font-family:var(--cs-font-heading);font-size:var(--cs-text-section);line-height:var(--cs-leading-section);font-weight:600; }
.portal-page main h3, .ipsApp_front .ipsData__title { font-family:var(--cs-font-heading);font-size:var(--cs-text-card);line-height:var(--cs-leading-card);font-weight:600; }
.portal-page [data-latest-topics]>a { flex-direction:column;align-items:stretch; }
.portal-page [data-latest-topics] h3 { white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical; }
.portal-page [data-latest-news] article p, .ipsApp_front .ipsRichText:not(.ipsData__desc) { font-family:var(--cs-font-body);font-size:var(--cs-text-reading);line-height:var(--cs-leading-reading); }
.portal-page #shoutbox-messages p, .ipsApp_front .evsb__messageText { font-family:var(--cs-font-body);font-size:var(--cs-text-body);line-height:var(--cs-leading-body); }
.portal-page #shoutbox-messages a.font-label-md, .ipsApp_front .evsb__author { font-family:var(--cs-font-body);font-size:14px;line-height:20px;font-weight:600; }
.portal-page [data-chat-compose]>span, .ipsApp_front .evsb__guestLogin { font-family:var(--cs-font-body);font-size:var(--cs-text-body);line-height:var(--cs-leading-body); }
.portal-page [data-chat-compose]>a, .ipsApp_front .evsb__guestLogin a, .ipsApp_front .evsb__send { font-family:var(--cs-font-mono);font-size:14px;line-height:20px;font-weight:700; }
.ipsApp_front :is(.ipsData__meta,.ipsData__desc,.ipsData__lastPoster,.ipsBreadcrumb), .inbox-meta { font-size:var(--cs-text-meta);line-height:var(--cs-leading-meta); }
.ipsApp_front .evsb__time { font-family:var(--cs-font-mono);font-size:var(--cs-text-meta);line-height:var(--cs-leading-meta); }
.ipsApp_front .evsb__connection, .portal-page [data-chat-connection] { font-family:var(--cs-font-mono);font-size:12px;line-height:18px; }
.ipsApp_front .evsb__author::before { font-size:var(--cs-text-badge);line-height:var(--cs-leading-badge); }
.ipsApp_front .evsb__announcement { font-size:14px;line-height:22px; }
.ipsApp_front .evsb__quote { font-size:12px;line-height:18px; }
.ipsApp_front .ipsButton, .inbox-action, .inbox-foot { font-size:14px;line-height:20px; }
.inbox-title { font-size:14px;line-height:20px; }
.inbox-snippet { font-size:14px;line-height:22px; }
/* Explicit tiny text in dynamic templates must not bypass the shared scale. */
:is(.portal-page,.cswos-shell) :is([class~="text-[8px]"],[class~="text-[9px]"],[class~="text-[10px]"],[class~="text-[11px]"]):not(.material-symbols-outlined) { font-size:12px;line-height:18px; }
:is(.portal-page,.cswos-shell) .font-mono { font-family:var(--cs-font-mono); }
:is(.portal-page,.cswos-shell) :is(input:not([type=checkbox]):not([type=radio]),textarea), .ipsApp_front :is(.ipsInput,.evsb__input) { font-family:var(--cs-font-body);font-size:14px;line-height:22px; }
.cswos-shell [data-auth-root] :is(label,a,button), .portal-page [data-auth-root] :is(label,a,button) { font-size:12px;line-height:18px; }
.monitor-address,.monitor-info,.monitor-group,.monitor-player-score,.monitor-player-time { font-size:12px;line-height:18px; }
.monitor-actions :is(button,a) { font-family:var(--cs-font-body);font-size:14px;line-height:20px; }
.monitor-cover h3 { font-size:20px;line-height:28px; }
.monitor-status,.monitor-game,.monitor-list-labels,.monitor-players summary small { font-size:11px;line-height:16px; }
.monitor-join-hint,.monitor-sample-note,.monitor-unavailable,.monitor-population div>small { font-size:12px;line-height:18px; }
.drawer-login label,.drawer-profile-stats span,.drawer-profile-quick a,.drawer-footer>span,.mobile-navigation h3,.drawer-account h3 { font-size:12px;line-height:18px; }
.mobile-navigation a,.drawer-login button[type=submit] { font-size:14px;line-height:20px; }
@media(max-width:767px) {
  :root { --cs-text-title:26px; --cs-leading-title:34px; }
  :is(.portal-page,.cswos-shell) :is(input:not([type=checkbox]):not([type=radio]),textarea), .ipsApp_front :is(.ipsInput,.evsb__input) { font-size:16px;line-height:24px; }
}
