/* Typography base. Loaded after every other stylesheet, followed by the generated typography-map.css.
   Two faces: a handwritten one for big titles (the game's voice) and a rounded one for everything
   that has to be read at small sizes. Both ship full Vietnamese. */
@font-face{font-family:Nunito;src:url('assets/nunito-vi.woff2') format('woff2');font-weight:400 800;font-style:normal;font-display:swap}
:root{
  --font-display:Patrick,Nunito,'Segoe UI',Tahoma,sans-serif;
  --font-body:Nunito,'Segoe UI',system-ui,-apple-system,Roboto,Tahoma,sans-serif;
}
body,.app-shell,.rotate-note{font-family:var(--font-body);font-weight:500;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3{font-family:var(--font-display)}
/* Nunito has no italic; a slanted fake is harder to read than the upright. */
em,i,cite{font-synthesis-style:none}
input,select,textarea{font-family:var(--font-body)}

/* --- Hand tuning (the build tool never touches this file) --- */
/* Two-line hero greeting: tighter than the general display floor, still clear of ế/ở accents. */
.home-story h2{line-height:1.02}
@media(max-width:1050px),(max-height:600px){.home-story h2{margin-bottom:6px}}
/* Settings: the backup card holds four actions, so they sit in a 2×2 block instead of squeezing the copy. */
.settings-sheet article>div:first-child{min-width:0}
.settings-backup .backup-actions{display:grid;grid-template-columns:repeat(2,minmax(112px,1fr));gap:8px}
.settings-backup .setting-action{min-width:0}
.settings-sheet p em{font-style:normal;font-weight:700;color:#6a4327}
.settings-note{font-style:normal;font-size:14px}
.settings-sheet article{min-height:132px}
/* Counter scene is drawn at 1672px and scaled to the screen, so its small print needs a higher floor. */
.expanded #steps small{font-size:14px}
.expanded #steps p{line-height:1.15}
.rush-panel small,.expanded .rush-panel small{font-size:13px}
.guess-note{font-size:14px}
/* Disabled buttons: cream on tan was 1.8:1. */
.stock-card button:disabled:not(.active),.recipe-card button:disabled:not(.active),.upgrade-item button:disabled:not(.active){color:#4f3c2c}
/* Cream text on the green buttons gets a darker edge so it holds at small sizes. */
.setting-action:not(.secondary),.setting-toggle{text-shadow:0 1px 0 #4b5d2d;font-weight:700}
.setting-action.secondary{font-weight:700}
.settings-note{color:#74553c}
/* Text that sits straight on the dark market backdrop needs a light ink, not the paper-card brown. */
.pet-section-caption small,.lottery-tickets>.empty-note{color:#e6caa0}
/* Locked journey stages stay muted but readable. */
.journey-rank:not(.done){color:#54483c}
.pet-card-footer button:disabled{color:#55634c}
