/* Viewport-based floors keep small UI text readable as a desktop zooms out.
   Keep native browser font hinting; never rasterize or scale the text layer. */
:root{--reading-floor:max(16px,1vw);--label-floor:max(14px,.9vw);--band-reading-floor:max(20px,1.2vw)}
html{text-size-adjust:100%;-webkit-text-size-adjust:100%;text-rendering:auto}
body{font-size:var(--reading-floor)}
:where(p,li,dt,dd,figcaption,label,input,textarea,select,summary,button,small):not(.chat-room *){font-size:max(var(--reading-floor),1em)!important;line-height:1.6;text-shadow:none}
.profile-font-page :where(p,li,dt,dd,figcaption,label,input,textarea,select,summary,button,small){font-size:max(var(--band-reading-floor),1em)!important}
.profile-font-page .account-page input,.profile-font-page .account-page textarea{font-size:max(22px,1.3vw)!important}
header nav a,.wordmark,.nav-toggle,.nav-toggle span,.eyebrow,.small,.number,.back,.link-label,.arrow-link,footer,footer span,footer a,.chat-topbar,.chat-feedbar,.chat-entry time,.chat-status,.chat-loaded,.chat-note,.chat-disclosure,.voice-peer-state{font-size:var(--label-floor)!important;line-height:1.6;text-shadow:none}
.chat-entry-meta strong,.chat-author,.chat-entry p,.chat-form label,.chat-form input,.chat-form button{font-size:var(--reading-floor)!important}
.profile-font-page .account-page label,.profile-font-page .account-page button,.profile-font-page .account-xp,.profile-font-page .account-rules,.profile-font-page [data-account-status],.profile-font-page .account-avatar-tools small,.profile-font-page .account-background-tools small,.profile-font-page .account-icon-selected,.profile-font-page .account-own-link{font-size:var(--band-reading-floor)!important;line-height:1.65}
.achievement-badge h3{font-size:max(22px,1.3vw)!important;line-height:1.3}
.achievement-badge p,.achievement-badge small,.achievement-refresh{font-size:var(--band-reading-floor)!important}
.reaction-add{font-size:max(12px,.75vw)!important;line-height:1.2!important}
.page-title h1,.hero h1,.feature-copy h3,.outline h2{ text-shadow:none }
/* Discrete, whole-pixel motion avoids continually resampling chat letters. */
.chat-entry p{animation-timing-function:steps(1,end)}
@keyframes chat-message-vibration{0%,100%{transform:translate(0,0)}25%{transform:translate(-1px,0)}50%{transform:translate(1px,0)}75%{transform:translate(0,-1px)}}
.chat-heading .chat-haunted{text-shadow:none}
.voice-controls input,.voice-device-grid select,.account-page input,.account-page textarea{min-width:0}
.chat-form,.voice-controls,.voice-console-head,.chat-topbar,.chat-feedbar,.chat-bottom{flex-wrap:wrap}
.chat-entry p,.account-rules,.voice-note,.pet-notes,figcaption{overflow-wrap:anywhere}
.account-page .achievement-grid{grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr))}
.chat-entry-meta{flex-wrap:wrap;min-width:0}.chat-author,.voice-person{overflow-wrap:anywhere;min-width:0}

/* Chat keeps its original scale. Native hinting and discrete motion keep letters sharp. */
.chat-room .chat-entry p{font-size:13px!important;line-height:1.7}
.chat-room .chat-author,.chat-room .chat-entry-meta strong{font-size:12px!important}
.chat-room .chat-form label{font-size:10px!important}
.chat-room .chat-form input,.chat-room .chat-form button{font-size:13px!important}
.chat-room .chat-topbar,.chat-room .chat-feedbar,.chat-room .chat-entry time,.chat-room .chat-status,.chat-room .chat-loaded,.chat-room .chat-note,.chat-room .chat-disclosure,.chat-room .small{font-size:10px!important}
