@charset "UTF-8";
/* Canonical game viewport: 360 × 640; export at DPR 3 = 1080 × 1920. */
:root {
  --portrait-width: min(100vw, 56.25dvh, 480px);
  --portrait-height: min(100dvh, 177.77777778vw, 853.33333333px);
}
html,body { width: 100%; height: 100%; min-height: 0; overflow: hidden; }
body { display: grid; place-items: center; min-height: 100dvh; }
#app {
  position: relative;
  width: var(--portrait-width);
  height: var(--portrait-height);
  min-height: 0;
  max-width: none;
  margin: 0;
  border: 0;
  overflow: hidden;
  aspect-ratio: 9 / 16;
}
#app .game-shell { height: 100%; min-height: 0; max-height: none; }
#app .start-screen,#app .boot-screen { height: 100%; min-height: 0; }
#app .start-title { margin-top: 12%; }
#app .start-title h1 { font-size: 56px; }
#app .start-actions { padding-bottom: 5%; }
#app .start-animals { bottom: 29%; }
/* Modal and toast roots stay outside #app's inert subtree, but share its
   exact portrait bounds and do not add extra rows to the body grid. */
#modal-root {
  position: fixed;
  top: 50%;
  left: 50%;
  width: var(--portrait-width);
  height: var(--portrait-height);
  transform: translate(-50%, -50%);
  z-index: 50;
  pointer-events: none;
}
#modal-root .modal-shade { position: absolute; inset: 0; padding: 10px; pointer-events: auto; }
#modal-root .modal { max-height: calc(var(--portrait-height) - 20px); }
#modal-root .mother-offline-shade { padding: 6px; }
#modal-root .mother-offline-modal.modal { max-height: calc(var(--portrait-height) - 12px); }
#toast-root {
  width: min(calc(var(--portrait-width) - 20px), 430px);
  bottom: calc((100dvh - var(--portrait-height)) / 2 + 70px);
}
.toast { max-width: 100%; }
.game-shell[data-page="adventure"] .topbar { min-height: 52px; padding: 1px 5px 2px; border-width: 2px 5px 3px; }
.game-shell[data-page="adventure"] .brand-row { top: 3px; right: 6px; }
.game-shell[data-page="adventure"] .wallet-chip { font-size: 8px; }
.game-shell[data-page="adventure"] .wallet-chip b { font-size: 12px; }
.game-shell[data-page="adventure"] .bottom-nav { min-height: 52px; padding: 1px 5px 2px; border-width: 3px 5px 2px; }
.game-shell[data-page="adventure"] .nav-item { min-height: 44px; }
.game-shell[data-page="adventure"] .nav-item .nav-art { width: 22px; height: 21px; }
.game-shell[data-page="adventure"] .mother-adventure { padding: 5px 6px 10px; gap: 4px; }
.game-shell[data-page="adventure"] .mother-route-showcase { min-height: 150px; margin: -5px -6px 0; padding: 49px 4px 0 46px; gap: 4px; }
.game-shell[data-page="adventure"] .mother-expedition-title { top: 3px; left: 5px; width: 112px; height: 45px; }
.game-shell[data-page="adventure"] .mother-expedition-title b { font-size: 19px; }
.game-shell[data-page="adventure"] .mother-expedition-title span { font-size: 10px; }
.game-shell[data-page="adventure"] .route-showcase-card { min-height: 101px; border-width: 5px 5px 6px; grid-template-rows: 58px 16px 16px; }
.game-shell[data-page="adventure"] .route-showcase-art { height: 58px; }
.game-shell[data-page="adventure"] .route-showcase-name { font-size: 11px; }
.game-shell[data-page="adventure"] .route-showcase-risk { font-size: 8px; }
.game-shell[data-page="adventure"] .route-showcase-time { font-size: 11px; }
.game-shell[data-page="adventure"] .route-showcase-card.is-selected { filter: drop-shadow(1px 0 #ffcf35) drop-shadow(-1px 0 #ffcf35) drop-shadow(0 0 4px #ffe16d); }
.game-shell[data-page="adventure"] .mother-party-panel { border-width: 6px 8px; padding: 1px 2px 2px; }
.game-shell[data-page="adventure"] .mother-party-panel .section-title h2 { font-size: 12px; }
.game-shell[data-page="adventure"] .party-showcase-card.party-choice { min-height: 91px; padding: 1px; }
.game-shell[data-page="adventure"] .party-showcase-portrait { height: 48px; min-height: 48px; }
.game-shell[data-page="adventure"] .party-showcase-portrait img.animal-art { height: 48px; max-height: 48px; }
.game-shell[data-page="adventure"] .party-showcase-card > strong { font-size: 10px; }
.game-shell[data-page="adventure"] .party-showcase-card .party-showcase-check { top: 35px; }
.game-shell[data-page="adventure"] .mother-party-pack > img { max-height: 78px; }
.game-shell[data-page="adventure"] .mother-party-pack > b { font-size: 10px; }
.game-shell[data-page="adventure"] .mother-reward-panel,
.game-shell[data-page="adventure"] .mother-growth-panel { border-width: 6px 7px; padding: 1px 2px 2px; }
.game-shell[data-page="adventure"] .mother-decision-grid h3 { font-size: 12px; margin-bottom: 1px; }
.game-shell[data-page="adventure"] .mother-growth-portrait { width: 30px; height: 32px; }
.game-shell[data-page="adventure"] .mother-growth-heading { margin: 0; }
.game-shell[data-page="adventure"] .mother-growth-cost { padding: 0 0 2px; gap: 1px 4px; }
.game-shell[data-page="adventure"] .mother-growth-stats { margin-top: 2px; }
.game-shell[data-page="adventure"] .mother-growth-balance,
.game-shell[data-page="adventure"] .mother-growth-next { margin-top: 2px; font-size: 8px; }
.game-shell[data-page="adventure"] .mother-growth-train.button { min-height: 44px; margin-top: 2px; border-width: 7px 9px 7px 23px; font-size: 12px; }
.game-shell[data-page="adventure"] .mother-departure-row { min-height: 50px; gap: 6px; }
.game-shell[data-page="adventure"] .mother-departure-row { margin-top: 0; margin-bottom: 0; }
.game-shell[data-page="adventure"] .mother-departure.button { min-height: 50px; width: 184px; border-width: 10px 17px 10px 37px; font-size: 19px; }
.game-shell[data-page="adventure"] .mother-adjust-party.button { min-height: 44px; }
/* Compact each companion's art slot, leaving the footnote and departure
   action in their own rows rather than pulling the action over the paper. */
.game-shell[data-page="adventure"] :is(.mother-party-body, .mother-party-pack) { height: 96px; }
.game-shell[data-page="adventure"] .party-showcase-card.party-choice { height: 96px; min-height: 96px; }
.game-shell[data-page="adventure"] .party-showcase-portrait { flex-basis: 48px; height: 48px; min-height: 48px; }
.game-shell[data-page="adventure"] .party-showcase-card.party-choice .party-showcase-portrait > img.animal-art { height: 48px; max-height: 48px; }
.game-shell[data-page="adventure"] .party-showcase-card.party-choice { background: linear-gradient(#7a9a76 0 50px, #fff0c9 50px); }
.game-shell[data-page="adventure"] .party-showcase-card.party-choice.is-selected { background: linear-gradient(#4f7e62 0 50px, #fff0c9 50px); }
.game-shell[data-page="adventure"] .mother-party-pack > img { height: 64px; max-height: 64px; }
.game-shell[data-page="camp"] .camp-tap-hotspot { top: 90%; left: 44%; }
