@charset "UTF-8";
/* One forest stage fills the first screen. The live growth board sits over
   that same canvas; no second forest image or repeated horizontal strips. */
#app .game-shell[data-page="camp"] .mother-camp {
  display: block; height: 100%; padding: 0; background: #244533;
}
#app .game-shell[data-page="camp"] .screen-scroll {
  overflow: hidden; scrollbar-width: none;
}
#app .game-shell[data-page="camp"] .mother-camp-overview {
  position: relative; height: 100%;
  isolation: isolate; overflow: hidden;
}
#app .game-shell[data-page="camp"] .mother-camp-scene {
  position: absolute; inset: 0; width: 100%; height: 100%; margin: 0;
}
#app .game-shell[data-page="camp"] .mother-camp-overview > .mother-upgrade-split {
  position: absolute; z-index: 3; bottom: 2px; left: 3px; right: 3px;
  margin: 0; min-height: 0; max-height: 43%; overflow-y: auto;
  grid-template-columns: minmax(0,1.4fr) minmax(0,.9fr);
  border-width: 12px 14px !important; padding: 2px 3px !important;
  box-shadow: none;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split h2 { font-size: 12px; line-height: 1.2; margin-bottom: 3px; }
#app .game-shell[data-page="camp"] .mother-upgrade-split h3 { font-size: 9px; line-height: 1.2; margin-bottom: 2px; }
#app .game-shell[data-page="camp"] .mother-upgrade-split :is(.resource-value,.stat-row,.mother-payment,.mother-next-shortfall) { font-size: 9px; line-height: 1.3; }
#app .game-shell[data-page="camp"] .mother-upgrade-split :is(.resource-value b,.stat-row b) { font-size: 12px; }
#app .game-shell[data-page="camp"] .mother-upgrade-split .stat-row { margin: 1px 0; gap: 0 2px; }
#app .game-shell[data-page="camp"] .mother-upgrade-split .stat-row small { font-size: 8px; }
#app .game-shell[data-page="camp"] .mother-upgrade-split .mother-payment { margin: 2px 0; padding-top: 2px; }
#app .game-shell[data-page="camp"] .mother-upgrade-split .mother-payment .resource-list { gap: 1px 3px; }
#app .game-shell[data-page="camp"] .mother-upgrade-split .mother-payment .resource-value > span { font-size: 0; }
#app .game-shell[data-page="camp"] .mother-upgrade-split .mother-payment .resource-value b { font-size: 12px; }
#app .game-shell[data-page="camp"] .mother-upgrade-split :is(.sufficient,.deficit) { font-size: 9px; margin: 1px 0; padding: 0; }
#app .game-shell[data-page="camp"] .mother-upgrade-split .button { min-height: 44px; margin: 0; font-size: 12px; }
#app .game-shell[data-page="camp"] .mother-workshop-sign { top: 30%; }
#app .game-shell[data-page="camp"] .camp-tap-hotspot { top: 51%; left: 43%; }
#app .game-shell[data-page="camp"] .camp-journal-shortcut {
  position: absolute; z-index: 4; top: 57px; left: 6px;
  width: 100px; min-height: 48px; padding: 1px 0;
  border: solid transparent; border-width: 6px 8px;
  border-image: url(../assets/ui/button-secondary-wood-plank.png) 62 78 62 78 fill stretch;
  background: none; color: #fff0cd; text-shadow: 0 1px #483017;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  cursor: pointer;
}
#app .game-shell[data-page="camp"] .camp-journal-shortcut strong { font-size: 12px; }
#app .game-shell[data-page="camp"] .camp-journal-shortcut small { font-size: 9px; line-height: 1.4; }
.camp-journal-content .feature-grid { margin: 0 0 12px; gap: 8px; }
.camp-journal-content .feature-button {
  min-height: 76px; border: solid transparent; border-width: 9px 11px;
  border-image: url(../assets/ui/ui-upgrade-recipe-frame.png) 100 125 95 125 fill stretch;
  border-radius: 0; background: none; box-shadow: none; padding: 4px;
}
.camp-journal-content .feature-button small { margin-top: 4px; }
.camp-journal-content .mother-upgrade-inventory { padding: 6px; border: 1px solid #c9a96d; }
.camp-journal-content .mother-upgrade-inventory summary { min-height: 44px; display: flex; align-items: center; font-size: 12px; cursor: pointer; }
#app .game-shell[data-page="camp"] .bottom-nav { grid-template-columns: 1fr 1fr 1.8fr 1fr 1fr; }
#app .game-shell[data-page="camp"] .bottom-nav .camp-main-departure {
  display: flex; align-items: center; justify-content: center;
  border-image: url(../assets/ui/button-depart-gold-footprints.png) 62 78 62 165 fill stretch;
  border-width: 11px 10px 11px 28px; color: #4e3216; text-shadow: 0 1px #ffeabd;
}
#app .game-shell[data-page="camp"] .bottom-nav .camp-main-departure b { font-size: 13px; letter-spacing: 0; white-space: nowrap; }

/* An unclaimed offline package stays on the forest as a small paper shortcut.
   A full extra flex row would push the first-screen upgrade board under nav. */
#app .game-shell[data-page="camp"] > .offline-notice {
  position: absolute; z-index: 6; top: 60px; right: 6px; width: 94px;
  display: flex; flex-direction: column; gap: 0; padding: 0;
  border: solid transparent; border-width: 5px 7px;
  border-image: url(../assets/ui/ui-upgrade-recipe-frame.png) 100 125 95 125 fill stretch;
  background: none; color: #614626; font-size: 0; line-height: 1.3;
  text-align: center; filter: drop-shadow(0 2px 1px #19332388);
}
#app .game-shell[data-page="camp"] > .offline-notice .text-button {
  width: 100%; min-height: 44px; padding: 2px; font-size: 11px;
}

/* Keep the next material deficit above the frame at the 320px phone width. */
#app .game-shell[data-page="camp"] .mother-camp-overview > .mother-upgrade-split { max-height: max(234px,43%); }
#app .game-shell[data-page="camp"] .mother-next-upgrade .stat-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 0 2px; align-items: baseline; }
#app .game-shell[data-page="camp"] .mother-next-upgrade .stat-row > span { grid-column: 1; grid-row: 1; font-size: 10px; white-space: nowrap; }
#app .game-shell[data-page="camp"] .mother-next-upgrade .stat-row > b { grid-column: 2; grid-row: 1; font-size: 12px; }
#app .game-shell[data-page="camp"] .mother-next-upgrade .stat-row > small { grid-column: 1 / -1; grid-row: 2; font-size: 10px; justify-self: end; }
#app .game-shell[data-page="camp"] .mother-current-upgrade .stat-row > small { font-size: 10px; }

@media (max-width: 340px) {
  #app .game-shell[data-page="camp"] .mother-workshop-sign { top: 20%; }
  #app .game-shell[data-page="camp"] .camp-tap-hotspot { top: 43%; }
}

/* Readable live recipes: keep every cost, unit, payment preview and next goal.
   The original forest canvas and all image aspect ratios remain unchanged. */
#app .game-shell[data-page="camp"] { container-type: inline-size; }
#app .game-shell[data-page="camp"] .mother-camp-overview > .mother-upgrade-split {
  grid-template-columns: minmax(0,1.5fr) minmax(0,1fr);
  max-height: min(66%, 310px);
  gap: 5px;
  background-color: #f5e7c6;
  background-clip: padding-box;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split h2 {
  font-size: 13px; line-height: 1.25; margin-bottom: 4px;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split h3,
#app .game-shell[data-page="camp"] .mother-upgrade-split :is(.resource-value,.stat-row,.mother-payment,.mother-next-shortfall,.muted,.deficit,.sufficient) {
  font-size: 11px; line-height: 1.2;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split :is(.resource-value b,.stat-row b) {
  font-size: 13px; line-height: 1.15;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .stat-row {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0 2px;
  margin: 1px 0;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .stat-row > span {
  order: 1; flex-basis: auto; font-size: 11px; white-space: nowrap;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .stat-row > b {
  order: 3; flex-basis: 100%;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .stat-row > small {
  order: 2; font-size: 11px; line-height: 1.2; white-space: nowrap;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .mother-columns {
  grid-template-columns: minmax(0,.8fr) minmax(0,1.2fr);
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .resource-list {
  gap: 1px 4px;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .resource-value {
  gap: 1px; white-space: nowrap;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .resource-icon {
  width: 14px; height: 16px;
}
#app .game-shell[data-page="camp"] .mother-upgrade-cost > .sufficient {
  position: static; margin-top: 3px;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .mother-payment {
  margin: 4px 0; padding-top: 4px;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .mother-payment .resource-value > span {
  font-size: 11px;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .mother-payment .resource-value b {
  font-size: 13px;
}
#app .game-shell[data-page="camp"] .mother-upgrade-split .mother-next-shortfall {
  margin-top: 2px; padding-top: 2px;
}
#app .game-shell[data-page="camp"] .mother-next-shortfall .deficit-label,
#app .game-shell[data-page="camp"] .mother-next-shortfall .deficit::before { display: none; }
#app .game-shell[data-page="camp"] .mother-upgrade-split :is(.deficit,.sufficient) {
  word-break: keep-all; overflow-wrap: normal;
}
.material-term { display: inline-block; white-space: nowrap; }
#app .game-shell[data-page="camp"] .mother-upgrade-split .button {
  min-height: 44px; font-size: 13px;
  background-color: #496d32 !important;
  background-clip: padding-box !important;
}
@container (min-width: 350px) {
  #app .game-shell[data-page="camp"] .mother-upgrade-split .stat-row > small { font-size: 12px; }
}

/* Feedback stays in the upper forest, away from the recipe and its action. */
body:has(#app .game-shell[data-page="camp"]) #toast-root {
  top: calc((100dvh - var(--portrait-height)) / 2 + 162px);
  bottom: auto;
}
body:has(#app .game-shell[data-page="camp"]) #toast-root .toast {
  font-size: 12px; line-height: 1.5; padding: 8px 10px;
}

/* Texture-independent first paint; nine-slice artwork covers these solid
   content backings once ready, without adding a second scene or new frame. */
#app .game-shell[data-page="camp"] .mother-workshop-sign {
  background-color: #f5e7c6; background-clip: padding-box;
}
#app .game-shell[data-page="camp"] :is(.mother-scene-heading,.camp-journal-shortcut,.wallet-chip,.bottom-nav .nav-item) {
  background-color: #674526; background-clip: padding-box;
}
#app .game-shell[data-page="camp"] .bottom-nav .camp-main-departure {
  background-color: #e2b75c;
}

/* Narrow home only: use full-width material rows instead of nested columns.
   Both views read the same live preview; display:none removes the unused view
   from layout and keyboard/accessibility navigation. */
#app .game-shell[data-page="camp"] .camp-upgrade-compact { display: none; }
@container (max-width: 380px) {
  #app .game-shell[data-page="camp"] .mother-camp-overview:has(.camp-upgrade-compact) > .mother-upgrade-split { display: none; }
  #app .game-shell[data-page="camp"] .mother-camp-overview > .camp-upgrade-compact {
    display: grid; gap: 1px; position: absolute; z-index: 3;
    bottom: 2px; left: 3px; right: 3px; margin: 0; min-width: 0;
    border-width: 12px 14px !important; padding: 2px 3px !important;
    background-color: #f5e7c6; background-clip: padding-box; box-shadow: none;
    font-size: 11px; line-height: 1.2;
  }
  #app .game-shell[data-page="camp"] .camp-upgrade-compact h2 {
    margin: 0 0 2px; font-size: 13px; line-height: 1.25;
    display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1px 6px;
  }
  #app .game-shell[data-page="camp"] .camp-compact-stats {
    display: flex; flex-wrap: wrap; gap: 1px 8px; padding-bottom: 2px;
  }
  #app .game-shell[data-page="camp"] .camp-compact-stats .stat-row {
    display: inline-flex; flex-wrap: wrap; justify-content: start;
    align-items: baseline; gap: 0 3px; margin: 0;
    font-size: 11px; line-height: 1.2;
  }
  #app .game-shell[data-page="camp"] .camp-compact-stats .stat-row > small {
    font-size: 11px; line-height: 1.2; white-space: nowrap;
  }
  #app .game-shell[data-page="camp"] .camp-compact-row {
    display: grid; grid-template-columns: max-content minmax(0,1fr);
    align-items: baseline; gap: 0 5px; min-width: 0;
  }
  #app .game-shell[data-page="camp"] .camp-compact-label { color: #79613f; white-space: nowrap; }
  #app .game-shell[data-page="camp"] .camp-upgrade-compact .resource-list { gap: 1px 5px; }
  #app .game-shell[data-page="camp"] .camp-upgrade-compact .resource-value { gap: 1px; font-size: 11px; }
  #app .game-shell[data-page="camp"] .camp-upgrade-compact :is(.resource-value b,.stat-row b) {
    font-size: 13px; line-height: 1.15;
  }
  #app .game-shell[data-page="camp"] .camp-upgrade-compact .resource-icon { width: 14px; height: 16px; }
  #app .game-shell[data-page="camp"] .camp-upgrade-compact :is(.deficit,.sufficient,.muted) {
    font-size: 11px; line-height: 1.2; margin: 0; padding: 0;
    word-break: keep-all; overflow-wrap: normal;
  }
  #app .game-shell[data-page="camp"] .camp-upgrade-compact .deficit-label { display: none; }
  #app .game-shell[data-page="camp"] .camp-upgrade-compact .button {
    min-height: 44px; margin: 2px 0 0; font-size: 13px;
    padding-top: 0 !important; padding-bottom: 0 !important;
  }
}
