/* Complete adventure: accessible menus, shared goals, and independent seats. */
button:disabled {
  opacity: 0.4;
}
select {
  font: inherit;
  padding: 11px;
  border: 1px solid #bfc7ab;
  border-radius: 7px;
  background: #fffdf2;
  color: #405337;
  width: 100%;
  margin: 6px 0;
}
button small {
  pointer-events: none;
}
#game-hud {
  z-index: 2;
}
#wave-banner {
  z-index: 4;
  pointer-events: none;
  top: 40%;
}
.fine {
  font-size: 10px !important;
  line-height: 1.8;
  color: #8b917d;
}
.menu-button {
  display: block;
  width: 100%;
  border: 1px solid #bdc5ac;
  background: #f4f3e4;
  border-radius: 8px;
  padding: 14px;
  margin: 10px 0;
  font-size: 12px;
}
.text-button {
  display: block;
  margin: 15px auto;
  border: 0;
  background: none;
  color: #899676;
  font-size: 10px;
  text-decoration: underline;
}
.title-seal {
  font:
    60px Georgia,
    serif;
  color: #b69b61;
  width: 96px;
  height: 96px;
  margin: 0 auto 22px;
  border: 1px solid #c4b789;
  border-radius: 45px 45px 15px 15px;
  display: grid;
  place-items: center;
}
.story-portrait {
  font-size: 60px;
  color: #a29164;
  margin-bottom: 20px;
}
.story-dots {
  letter-spacing: 6px;
  color: #a5af8e;
  text-align: center;
  padding: 10px;
}
.save-card {
  display: flex;
  width: 100%;
  align-items: center;
  gap: 17px;
  padding: 19px 14px;
  margin: 12px 0;
  text-align: left;
  border: 1px solid #d4d6bd;
  background: #f7f6e9;
  border-radius: 10px;
}
.save-card > span {
  font-size: 20px;
  color: #a19061;
}
.save-card > div {
  flex: 1;
}
.save-card small {
  display: block;
  font-size: 10px;
  color: #929981;
  margin-top: 7px;
}
.save-card strong {
  color: #9aa781;
}
.save-card b {
  font:
    600 16px "Noto Serif JP",
    serif;
}
.wide-menu {
  width: 850px;
}
.festival-playing #game-hud {
  opacity: 0;
  pointer-events: none;
}
dialog.cinematic-menu {
  width: 420px;
  margin: 0;
  left: auto;
  right: 4vw;
  top: auto;
  bottom: 8vh;
  max-height: 75vh;
  background: #fffcf0ed;
}
dialog.cinematic-menu::backdrop {
  background: transparent;
  backdrop-filter: none;
}
dialog.cinematic-menu h2 { font-size: 22px; letter-spacing: 1px; }
.region-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 13px;
}
.region-card {
  min-height: 162px;
  padding: 20px;
  text-align: left;
  border: 1px solid #c3cbb4;
  border-radius: 12px;
  background: linear-gradient(140deg, #edf1d8, #fdf8e9);
  position: relative;
  overflow: hidden;
}
.region-card > span {
  float: right;
  font-size: 48px;
  color: #a0b579;
  opacity: 0.7;
}
.region-card b {
  display: block;
  font:
    700 18px "Noto Serif JP",
    serif;
  margin: 8px 0;
}
.region-card small {
  display: block;
  font-size: 10px;
  color: #7d8d72;
  line-height: 1.9;
  clear: both;
}
.region-card em {
  display: block;
  font-style: normal;
  font-size: 10px;
  margin: 15px 0 5px;
  color: #607a4e;
}
.region-forest {
  background: linear-gradient(140deg, #d6e5cf, #f2f0de);
}
.region-quarry {
  background: linear-gradient(140deg, #d4e4e3, #f1efe0);
}
.region-ancient {
  background: linear-gradient(140deg, #ded9ec, #ececdb);
}
.region-card:disabled {
  opacity: 0.57;
  filter: grayscale(0.4);
}
.callout {
  padding: 15px;
  background: #edf0d9;
  border: 1px solid #ced8b7;
  border-radius: 8px;
  font-size: 12px;
  line-height: 1.9;
}
.callout button {
  display: block;
  border: 1px solid #a8b997;
  border-radius: 5px;
  padding: 8px;
  margin-top: 8px;
  background: #fffbed;
}
.recipe-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 13px;
}
.recipe {
  position: relative;
  border: 1px solid #d9d9bf;
  border-radius: 10px;
  padding: 18px;
  background: #fffdf4;
}
.recipe-icon {
  font-size: 29px;
  float: right;
  color: #ad985f;
}
.recipe > small {
  font-size: 9px;
  color: #9a9e83;
}
.recipe h3 {
  font-size: 14px;
  margin: 10px 0;
}
.recipe p {
  font-size: 10px;
  min-height: 37px;
}
.cost {
  display: inline-block;
  font-size: 9px;
  padding: 4px 6px;
  margin: 2px 1px;
  background: #eef0df;
  border-radius: 4px;
  color: #687e54;
}
.cost.missing {
  background: #f4e5d9;
  color: #a36f50;
}
.recipe-footer {
  display: flex;
  gap: 7px;
  margin-top: 13px;
}
.recipe-footer button,
.order-card button,
.decor-grid button {
  background: #3b5941;
  color: #fff6db;
  border: 0;
  border-radius: 6px;
  padding: 9px 16px;
  font-size: 11px;
}
.recipe-footer b {
  font-size: 10px;
  color: #87986b;
}
.recipe.locked {
  background: #efeee0;
}
.craft-queue {
  font-size: 11px;
  line-height: 1.7;
  padding: 12px 15px;
  background: #eef0dc;
  border-radius: 8px;
  margin: 15px 0;
}
.material-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin: 15px 0 25px;
}
.material-grid > div {
  border: 1px solid #dbdcc6;
  border-radius: 8px;
  padding: 12px;
  display: grid;
  grid-template-columns: 25px 1fr 25px;
  align-items: center;
}
.material-grid span {
  font-size: 21px;
}
.material-grid b {
  font-size: 10px;
}
.material-grid em {
  font:
    20px Georgia,
    serif;
}
.material-grid small {
  grid-column: span 3;
  font-size: 8px;
  color: #92967d;
  margin-top: 8px;
}
.order-card {
  padding: 20px 0;
  border-bottom: 1px solid #d9ddc5;
}
.order-card small {
  font-size: 9px;
  color: #899d70;
}
.order-card h3 {
  font:
    600 16px "Noto Serif JP",
    serif;
}
.order-card b {
  font-size: 10px;
  color: #aa8b4e;
}
.order-card button {
  float: right;
}
.expansion-preview {
  text-align: center;
  background: #eef0dc;
  border: 1px solid #d9dec2;
  border-radius: 12px;
  padding: 22px;
  margin: 20px 0;
}
.expansion-preview > span {
  display: block;
  font-size: 70px;
  color: #93a47a;
}
.expansion-preview b {
  font-size: 12px;
  color: #9da681;
}
.expansion-preview h3 {
  font:
    600 20px "Noto Serif JP",
    serif;
}
.decor-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 15px;
}
.decor-grid article {
  border: 1px solid #d9dec6;
  padding: 15px;
  border-radius: 8px;
}
.decor-grid p {
  font-size: 10px;
}
.decor-grid select {
  font-size: 10px;
}
.settings-list label {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 10px 0;
}
.settings-list input {
  width: 18px;
  height: 18px;
  accent-color: #66864f;
  margin: 0;
}
.credits {
  text-align: center;
  padding: 15px 0;
}
.credits p {
  margin: 25px 0;
}
.credits b {
  color: #647e52;
}
.festival-icon {
  font-size: 76px;
  text-align: center;
  color: #c6a05c;
  animation: pulse 2s infinite;
}
.festival-caption {
  font-size: 11px !important;
  font-style: italic;
  text-align: center;
}
.records-players p {
  font-size: 10px;
}
.quest-go {
  border: 0;
  background: #e7ecd4;
  border-radius: 5px;
  padding: 9px 14px;
  font-size: 10px;
  color: #657c50;
  width: 100%;
  margin-top: 13px;
}
.quest-panel p {
  font-size: 11px;
}
.field-strip {
  position: absolute;
  left: 50%;
  bottom: 206px;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 16px;
  border: 1px solid #fff7d57a;
  padding: 12px 20px;
  border-radius: 8px;
  background: #35533bdd;
  color: #fff9df;
  white-space: nowrap;
  font-size: 10px;
  box-shadow: 0 4px 20px #29472c22;
  pointer-events: auto;
}
.field-strip span {
  font-size: 9px;
  color: #d9e2c9;
}
.field-strip button {
  border: 0;
  background: #f2e5bc;
  padding: 7px;
  border-radius: 5px;
  font-size: 10px;
}
.game-dock {
  position: absolute;
  bottom: 47px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 8px;
  pointer-events: auto;
}
.game-dock button {
  position: relative;
  min-width: 105px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  font-size: 22px;
  border: 1px solid #c4ccb2;
  border-radius: 9px;
  padding: 12px 13px;
  background: #fffcefec;
  color: #758c60;
}
.game-dock button span {
  font-size: 10px;
  color: #5b6e4c;
  white-space: nowrap;
}
.game-dock button kbd {
  position: absolute;
  right: 6px;
  top: 6px;
  font-size: 7px;
  color: #9da88d;
}
.game-dock button.away {
  background: #f1f3e2dc;
}
.single-actions {
  position: absolute;
  bottom: 140px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 9px;
  pointer-events: auto;
}
.single-actions > button {
  position: relative;
  min-width: 72px;
  height: 64px;
  border: 1px solid #b7c6a4;
  border-radius: 9px;
  background: #fffcedf0;
  color: #758c61;
  font-size: 22px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
}
.single-actions > button span {
  font-size: 8px;
  color: #5f754f;
}
.single-actions kbd {
  position: absolute;
  top: -9px;
  font-size: 7px;
  padding: 2px 5px;
  border: 1px solid #bec9ac;
  background: #f4f4df;
  border-radius: 4px;
}
.single-actions small {
  position: absolute;
  bottom: -15px;
  font-size: 9px;
  white-space: nowrap;
}
.single-actions > button[data-action="skill"] {
  background: #37553e;
  color: #f4e4af;
}
.single-actions > button[data-action="skill"] span {
  color: #f4e4af;
}
.single-actions > button[data-action="ultimate"] {
  background: #f5e9bde8;
  border-color: #c9b581;
}
.mini-health {
  width: 145px;
  position: relative;
  border: 1px solid #d3d8bd;
  border-radius: 8px;
  background: #fffdf0e3;
  padding: 13px;
  overflow: hidden;
  color: #70845c;
  font-size: 16px;
}
.mini-health b {
  font-size: 10px;
  margin-left: 5px;
}
.mini-health span {
  display: block;
  font-size: 9px;
  text-align: right;
  margin: 5px 0 2px;
}
.mini-health i {
  position: absolute;
  left: 0;
  bottom: 0;
  height: 4px;
  background: #87a865;
}
.nearby {
  position: absolute;
  left: 50%;
  top: 55%;
  transform: translate(-50%, 0);
  font-size: 12px;
  color: #fffbe1;
  background: #426548d9;
  border-radius: 8px;
  padding: 10px 17px;
  max-width: 80%;
  text-align: center;
}
.nearby:empty {
  display: none;
}
.combo {
  right: 335px;
  top: 180px;
}
.combo strong {
  font-size: 46px;
}
.combo > span {
  font-size: 9px;
}
.combo small {
  font-size: 9px;
}
.party-panel {
  top: 158px;
}
.joystick {
  bottom: 157px;
}
#split-huds {
  display: none;
}
#game-hud .bottom-hint {
  bottom: 17px;
  font-size: 8px;
}
dialog .jobs {
  flex-wrap: wrap;
}
dialog .inline-actions {
  margin-top: 12px;
}
dialog {
  scrollbar-width: thin;
  scrollbar-color: #bdc6a3 #faf6e7;
}
.modal-close {
  position: sticky;
  display: block;
  float: right;
  top: 0;
  margin: -20px -20px 0 0;
  z-index: 8;
  min-width: 42px;
  height: 42px;
  border-radius: 50%;
  background: #fffcefef;
  box-shadow: 0 1px 8px #354c3722;
}
.modal-close[hidden] {
  display: none;
}
.split-overview {
  display: none;
}
.lan-addresses {
  padding: 12px;
  background: #eff1df;
  border-radius: 8px;
  font-size: 11px;
}
.lan-addresses code {
  display: block;
  margin-top: 9px;
  user-select: all;
  overflow-wrap: anywhere;
}
.split-play .split-overview {
  position: fixed;
  display: flex;
  bottom: 7px;
  left: 18px;
  right: 18px;
  gap: 8px;
  z-index: 5;
}
.split-overview button {
  pointer-events: auto;
  border: 1px solid #bdc6a3;
  background: #fffcefef;
  padding: 8px 12px;
  border-radius: 7px;
  font-size: 11px;
}
#split-objective {
  flex: 1;
  text-align: left;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.split-play .bottom-hint {
  display: none;
}
.seat-nav {
  flex-wrap: wrap;
}
.seat-nav button[hidden] {
  display: none;
}
.split-play #split-huds {
  display: block;
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-left: 1px solid transparent;
}
.split-play #split-huds:before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 2px;
  background: #e8eac8b3;
  box-shadow: 0 0 8px #28433040;
}
.split-play .location,
.split-play .party-panel,
.split-play .quest-panel,
.split-play .field-strip,
.split-play .game-dock,
.split-play .single-actions,
.split-play .nearby {
  display: none;
}
.split-play .resources {
  top: 9px;
  right: 50%;
  transform: translateX(50%);
  padding: 6px;
  z-index: 3;
}
.split-play .resources > div {
  padding: 0 9px;
}
.split-play .resources small {
  display: none;
}
.split-play .resources b {
  font-size: 15px;
}
.seat-hud {
  position: absolute;
  top: 58px;
  bottom: 40px;
  width: 50%;
  padding: 0 18px;
  pointer-events: none;
}
.seat-hud h3 {
  font:
    600 18px "Noto Serif JP",
    serif;
  letter-spacing: 1px;
  margin: 0;
  color: #354c37;
}
.seat-hud p {
  font-size: 10px;
  color: #6c8260;
  margin: 7px 0 13px;
}
.seat-0 {
  left: 0;
}
.seat-1 {
  left: 50%;
}
.seat-nav {
  display: flex;
  gap: 5px;
}
.seat-nav button {
  font-size: 10px;
  pointer-events: auto;
  border: 1px solid #c0c9ad;
  background: #fffcecdb;
  border-radius: 5px;
  padding: 8px;
}
.seat-bottom {
  position: absolute;
  bottom: 12px;
  left: 18px;
  right: 18px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
}
.seat-bottom button {
  font-size: 10px;
  padding: 12px 10px;
  border: 1px solid #b3c09f;
  border-radius: 7px;
  background: #fffae9e8;
  pointer-events: auto;
}
.seat-bottom small {
  flex-basis: 100%;
  text-align: center;
  font-size: 10px;
  color: #536c43;
  padding: 5px;
  background: #fffceabd;
  border-radius: 6px;
}
.split-play #joystick {
  left: 25px;
  bottom: 145px;
}
.split-play #joystick2 {
  left: calc(50% + 25px);
  bottom: 145px;
}
.split-menu {
  position: fixed;
  left: 12px;
  right: auto;
  top: 100px;
  bottom: auto;
  margin: 0;
  width: calc(50vw - 24px);
  max-width: none;
  max-height: calc(100vh - 124px);
  z-index: 12;
  box-shadow: 0 10px 45px #1e362c55;
  pointer-events: auto;
}
.split-menu[data-seat="1"] {
  left: calc(50vw + 12px);
}
.split-menu .recipe-grid,
.split-menu .region-grid {
  grid-template-columns: 1fr;
}
.split-menu .material-grid {
  grid-template-columns: 1fr 1fr;
}
@media (pointer: coarse) {
  .joystick.active {
    display: block;
  }
}
@media (max-width: 1050px) {
  .game-dock {
    gap: 6px;
  }
  .game-dock button {
    min-width: 88px;
    padding: 10px 8px;
  }
  .game-dock button span {
    font-size: 9px;
  }
  .single-actions {
    gap: 7px;
  }
  .single-actions > button {
    min-width: 63px;
  }
  .combo {
    right: 270px;
  }
  .resources > div {
    grid-template-columns: 23px 45px;
  }
  .quest-panel {
    width: 230px;
  }
}
@media (max-width: 900px) {
  .resources {
    top: 104px;
    left: 16px;
    right: auto;
  }
  .resources > div {
    grid-template-columns: 22px 39px;
  }
  .party-panel {
    top: 172px;
    width: 130px;
  }
  .quest-panel {
    top: 172px;
    width: 178px;
    right: 16px;
    padding: 13px;
  }
  .quest-panel h2 {
    font-size: 12px;
  }
  .quest-panel p {
    font-size: 9px;
  }
  .quest-go {
    font-size: 8px;
    padding: 7px;
  }
  .game-dock {
    bottom: 39px;
    gap: 5px;
    width: calc(100% - 30px);
    justify-content: center;
  }
  .game-dock button {
    min-width: 0;
    flex: 1;
    padding: 9px 5px;
    font-size: 19px;
  }
  .game-dock button span {
    font-size: 8px;
    letter-spacing: -0.2px;
  }
  .single-actions {
    bottom: 121px;
  }
  .field-strip {
    bottom: 198px;
    padding: 10px 13px;
    gap: 10px;
    font-size: 9px;
  }
  .field-strip span {
    font-size: 8px;
  }
  .single-actions > button {
    min-width: 58px;
    height: 59px;
  }
  .mini-health {
    width: 124px;
    padding: 10px;
  }
  .combo {
    top: 340px;
    right: 25px;
  }
  .nearby {
    top: 57%;
    font-size: 10px;
    padding: 9px;
  }
  .joystick {
    bottom: 215px;
  }
  .seat-hud {
    top: 52px;
    padding: 0 12px;
  }
  .seat-hud h3 {
    font-size: 14px;
  }
  .seat-nav {
    flex-wrap: wrap;
  }
  .seat-nav button {
    font-size: 9px;
    padding: 7px;
  }
  .seat-bottom {
    left: 9px;
    right: 9px;
  }
  .seat-bottom button {
    font-size: 9px;
    padding: 10px 7px;
  }
  .split-play #joystick,
  .split-play #joystick2 {
    bottom: 166px;
  }
  .split-menu {
    padding: 23px 16px;
    top: 79px;
    max-height: calc(100vh - 100px);
  }
  .split-menu h2 {
    font-size: 20px;
  }
}
@media (max-width: 600px) {
  .game-dock {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    bottom: 33px;
    gap: 5px;
  }
  .game-dock button {
    flex-direction: row;
    font-size: 16px;
    justify-content: center;
    padding: 9px 3px;
    gap: 5px;
  }
  .game-dock button span {
    font-size: 8px;
  }
  .game-dock kbd {
    display: none;
  }
  .single-actions {
    bottom: 129px;
    left: auto;
    right: 14px;
    transform: none;
    gap: 5px;
  }
  .single-actions > button {
    min-width: 49px;
    height: 52px;
    font-size: 19px;
  }
  .single-actions > button span {
    font-size: 6px;
  }
  .single-actions .mini-health {
    position: absolute;
    bottom: 65px;
    right: 0;
    width: 160px;
    height: 34px;
    padding: 5px 10px;
    font-size: 13px;
  }
  .mini-health span {
    display: inline;
    margin-left: 5px;
    font-size: 8px;
  }
  .mini-health b {
    font-size: 8px;
  }
  .single-actions > button[data-action="return"] {
    display: none;
  }
  .single-actions kbd {
    display: none;
  }
  .single-actions small {
    font-size: 7px;
    bottom: -13px;
  }
  .field-strip {
    bottom: 235px;
    max-width: calc(100% - 28px);
    width: max-content;
    white-space: normal;
    gap: 7px;
    left: 50%;
    padding: 9px 12px;
  }
  .field-strip > span {
    font-size: 7px;
  }
  .field-strip > span:last-child {
    display: none;
  }
  .field-strip b {
    font-size: 9px;
  }
  .joystick {
    bottom: 150px;
    left: 18px;
    width: 82px;
    height: 82px;
  }
  .joystick > div {
    left: 23px;
    top: 23px;
  }
  .quest-panel {
    top: 167px;
    width: 175px;
  }
  .quest-panel p {
    display: block;
    font-size: 8px;
    line-height: 1.7;
  }
  .quest-panel h2 {
    font-size: 11px;
  }
  .party-panel {
    top: 172px;
    width: 120px;
  }
  .party-panel #party {
    gap: 5px;
  }
  .party-row {
    height: 37px;
    width: 49px;
  }
  .party-panel .invite {
    font-size: 8px;
  }
  .nearby {
    top: 56%;
    font-size: 9px;
    width: max-content;
    max-width: 90%;
  }
  .combo {
    top: 315px;
    right: 20px;
  }
  .combo strong {
    font-size: 31px;
  }
  .combo > span {
    font-size: 7px;
  }
  .material-grid {
    grid-template-columns: 1fr 1fr;
  }
  .recipe-grid {
    grid-template-columns: 1fr;
  }
  .recipe {
    padding: 15px;
  }
  .recipe p {
    min-height: 0;
  }
  .region-grid {
    grid-template-columns: 1fr;
  }
  .region-card {
    min-height: 128px;
  }
  .region-card b {
    font-size: 16px;
  }
  .region-card > span {
    font-size: 35px;
  }
  .title-seal {
    width: 74px;
    height: 74px;
    font-size: 46px;
    margin-bottom: 16px;
  }
  .decor-grid {
    grid-template-columns: 1fr;
  }
  .resources > div {
    padding: 0 7px;
    grid-template-columns: 19px 40px;
  }
  .resources small {
    font-size: 6px;
  }
  .resources b {
    font-size: 15px;
  }
  .resources .res {
    font-size: 20px;
  }
  .split-play .resources {
    left: 50%;
    right: auto;
    transform: translateX(-50%);
  }
  .split-play .resources > div {
    padding: 0 4px;
    grid-template-columns: 18px 26px;
  }
  .split-play .resources b {
    font-size: 11px;
  }
  .seat-nav {
    gap: 3px;
  }
  .seat-nav button {
    font-size: 8px;
    padding: 5px;
  }
  .seat-bottom button {
    font-size: 8px;
    padding: 8px 5px;
  }
  .seat-bottom small {
    font-size: 8px;
  }
  .split-menu {
    left: 4px;
    width: calc(50vw - 8px);
    padding: 22px 9px;
  }
  .split-menu[data-seat="1"] {
    left: calc(50vw + 4px);
  }
  .split-menu h2 {
    font-size: 16px;
    letter-spacing: 0;
  }
  .split-menu .material-grid {
    grid-template-columns: 1fr;
  }
  .split-menu p {
    font-size: 10px;
  }
  .split-menu .inline-actions {
    flex-wrap: wrap;
  }
  .split-play #joystick {
    left: 16px;
    width: 68px;
    height: 68px;
  }
  .split-play #joystick2 {
    left: calc(50% + 16px);
    width: 68px;
    height: 68px;
  }
  .split-play .joystick > div {
    left: 16px;
    top: 16px;
  }
  .split-play #control-hint {
    font-size: 6px;
  }
  .split-play .bottom-hint > span:last-child {
    display: none;
  }
}
