:root {
  --ink: #193d3b;
  --ink-soft: #42635f;
  --ink-faint: #78908a;
  --paper: #f7f3e8;
  --paper-deep: #eee8d9;
  --paper-light: #fffdf7;
  --teal: #2f6d66;
  --teal-deep: #174a48;
  --teal-dark: #102f30;
  --mint: #a9d5bd;
  --mint-soft: #d9eadb;
  --gold: #f0cb85;
  --gold-deep: #c89248;
  --peach: #e9a08a;
  --rose: #c97973;
  --line: rgba(31, 75, 70, .13);
  --shadow-xl: 0 38px 100px rgba(5, 28, 27, .30), 0 4px 22px rgba(20, 57, 51, .13);
  --shadow-card: 0 14px 32px rgba(29, 61, 52, .10);
  --serif: "STKaiti", "KaiTi", "FangSong", "Noto Serif CJK SC", serif;
  --sans: "Avenir Next", "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
}

* {
  box-sizing: border-box;
}

html {
  min-width: 320px;
  min-height: 100%;
  background: #173a38;
}

body {
  min-height: 100vh;
  margin: 0;
  padding: 24px;
  overflow: hidden;
  color: var(--ink);
  background:
    radial-gradient(circle at 8% 8%, rgba(156, 215, 185, .28), transparent 32%),
    radial-gradient(circle at 90% 90%, rgba(232, 184, 117, .22), transparent 34%),
    linear-gradient(135deg, #173c3d 0%, #214e49 48%, #173838 100%);
  font-family: var(--sans);
  -webkit-font-smoothing: antialiased;
}

button,
input {
  font: inherit;
}

button {
  color: inherit;
}

button:focus-visible,
[role="button"]:focus-visible {
  outline: 3px solid rgba(224, 174, 92, .72);
  outline-offset: 3px;
}

svg {
  display: block;
}

.page-glow {
  position: fixed;
  width: 42vw;
  aspect-ratio: 1;
  border-radius: 50%;
  pointer-events: none;
  filter: blur(100px);
  opacity: .35;
}

.page-glow--one {
  left: -22vw;
  top: -24vw;
  background: #9dcdb6;
}

.page-glow--two {
  right: -18vw;
  bottom: -22vw;
  background: #b27f58;
}

.page-grain {
  position: fixed;
  inset: 0;
  z-index: 20;
  opacity: .035;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");
}

.game-shell {
  position: relative;
  z-index: 1;
  width: min(1600px, 100%);
  height: calc(100vh - 48px);
  min-height: 660px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 30px;
  background: var(--paper);
  box-shadow: var(--shadow-xl);
}

.topbar {
  flex: 0 0 78px;
  min-height: 78px;
  padding: 0 22px 0 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  border-bottom: 1px solid rgba(30, 74, 69, .08);
  background: rgba(255, 253, 247, .92);
}

.brand {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 13px;
}

.brand-mark {
  width: 43px;
  height: 43px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 15px 15px 15px 5px;
  color: #f2d495;
  background:
    radial-gradient(circle at 30% 20%, #4f8880, transparent 55%),
    linear-gradient(145deg, #2c6962, #163f3e);
  box-shadow: 0 8px 18px rgba(21, 67, 62, .2), inset 0 1px rgba(255, 255, 255, .2);
}

.brand-mark svg {
  width: 30px;
  height: 30px;
  filter: drop-shadow(0 2px 7px rgba(245, 210, 139, .3));
}

.brand-copy {
  min-width: 0;
}

.brand-title-row {
  display: flex;
  align-items: baseline;
  gap: 10px;
}

.brand h1 {
  margin: 0;
  font-family: var(--serif);
  font-size: 27px;
  line-height: 1;
  font-weight: 700;
  letter-spacing: .08em;
  color: #204943;
}

.brand-title-row > span {
  color: #9a7d4e;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .22em;
  text-transform: uppercase;
}

.brand p {
  margin: 5px 0 0;
  overflow: hidden;
  color: #7a8a82;
  font-family: var(--serif);
  font-size: 12px;
  letter-spacing: .04em;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.resource-rail {
  display: flex;
  align-items: center;
  gap: 8px;
}

.resource-chip {
  height: 43px;
  min-width: 96px;
  padding: 5px 12px 5px 6px;
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid rgba(32, 76, 69, .09);
  border-radius: 15px;
  background: #f3efe3;
  box-shadow: inset 0 1px rgba(255, 255, 255, .85);
}

.resource-icon {
  width: 31px;
  height: 31px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 11px;
}

.resource-icon svg {
  width: 19px;
  height: 19px;
}

.resource-chip--dew .resource-icon {
  color: #438e91;
  background: #dcefee;
}

.resource-chip--moon .resource-icon {
  color: #bd8840;
  background: #f7e8c8;
}

.resource-chip--fame .resource-icon {
  color: #a86d78;
  background: #f4e1e4;
}

.resource-copy {
  display: flex;
  flex-direction: column;
  line-height: 1.05;
}

.resource-copy small {
  color: #84948c;
  font-family: var(--serif);
  font-size: 9px;
  letter-spacing: .08em;
}

.resource-copy strong {
  min-width: 27px;
  margin-top: 2px;
  color: #2c544d;
  font-size: 16px;
  font-variant-numeric: tabular-nums;
  font-weight: 750;
}

.resource-copy strong.is-bumping {
  animation: valueBump .38s ease;
}

.topbar-actions {
  display: flex;
  gap: 5px;
  margin-left: 3px;
}

.icon-button,
.modal-close {
  width: 39px;
  height: 39px;
  padding: 0;
  display: grid;
  place-items: center;
  border: 1px solid rgba(38, 76, 69, .10);
  border-radius: 13px;
  color: #54756e;
  background: #f3efe3;
  cursor: pointer;
  transition: transform .2s ease, background .2s ease, color .2s ease;
}

.icon-button:hover,
.modal-close:hover {
  color: var(--teal-deep);
  background: #fffaf0;
  transform: translateY(-1px);
}

.icon-button svg {
  width: 19px;
  height: 19px;
}

.icon-sound-on {
  display: none;
}

.icon-button.is-on .icon-sound-off {
  display: none;
}

.icon-button.is-on .icon-sound-on {
  display: block;
}

.main-grid {
  min-height: 0;
  flex: 1;
  padding: 0 12px 12px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 398px;
  gap: 12px;
}

.world-panel,
.control-panel {
  min-height: 0;
  border-radius: 23px;
}

.world-panel {
  position: relative;
  overflow: hidden;
  background: #81b7a2;
}

.scene {
  position: relative;
  height: 100%;
  min-height: 560px;
  overflow: hidden;
  isolation: isolate;
  background: linear-gradient(180deg, #82b7b0 0%, #b4d0b1 38%, #e1d49d 73%, #dbc092 100%);
  transition: background 1s ease;
}

.sky-wash {
  position: absolute;
  inset: 0;
  z-index: -4;
  background:
    radial-gradient(circle at 73% 26%, rgba(255, 238, 185, .76), transparent 24%),
    radial-gradient(ellipse at 12% 88%, rgba(223, 178, 111, .35), transparent 42%),
    linear-gradient(180deg, rgba(118, 173, 168, .1), rgba(255, 238, 183, .42));
  transition: opacity .8s ease;
}

.sky-wash::before {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .34;
  background:
    repeating-linear-gradient(112deg, transparent 0 68px, rgba(255, 255, 255, .04) 69px 70px),
    radial-gradient(circle at 40% 30%, transparent, rgba(54, 102, 91, .14));
}

.sun {
  position: absolute;
  top: 15%;
  right: 15%;
  width: 108px;
  aspect-ratio: 1;
  z-index: -2;
  transition: top .8s ease, right .8s ease, opacity .8s ease;
}

.sun-disc {
  position: absolute;
  inset: 20%;
  border-radius: 50%;
  background: #fff7d8;
  box-shadow:
    0 0 25px rgba(255, 246, 200, .95),
    0 0 70px rgba(255, 230, 163, .73),
    0 0 140px rgba(255, 222, 149, .42);
}

.sun-halo {
  position: absolute;
  inset: 0;
  border: 1px solid rgba(255, 250, 219, .35);
  border-radius: 50%;
  animation: sunPulse 7s ease-in-out infinite;
}

.stars {
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}

.stars i {
  position: absolute;
  left: var(--x);
  top: var(--y);
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: rgba(255, 252, 224, .9);
  box-shadow: 0 0 7px 2px rgba(255, 246, 198, .42);
  opacity: .48;
  animation: twinkle var(--d) ease-in-out infinite;
}

.cloud {
  position: absolute;
  width: 210px;
  height: 60px;
  z-index: -1;
  border-radius: 50%;
  filter: blur(1px);
  opacity: .56;
  transition: opacity .8s ease;
}

.cloud i {
  position: absolute;
  display: block;
  border-radius: 50%;
  background: linear-gradient(180deg, rgba(255, 255, 246, .9), rgba(236, 240, 213, .5));
  box-shadow: 0 9px 24px rgba(245, 240, 207, .13);
}

.cloud i:nth-child(1) {
  left: 12%;
  bottom: 0;
  width: 54%;
  height: 50%;
}

.cloud i:nth-child(2) {
  left: 31%;
  bottom: 10%;
  width: 43%;
  height: 90%;
}

.cloud i:nth-child(3) {
  right: 3%;
  bottom: 4%;
  width: 42%;
  height: 48%;
}

.cloud--back {
  opacity: .37;
  filter: blur(2px);
}

.cloud--one {
  left: 10%;
  top: 16%;
  transform: scale(.8);
  animation: cloudDrift 28s ease-in-out infinite alternate;
}

.cloud--two {
  right: 2%;
  top: 33%;
  transform: scale(.58);
  animation: cloudDrift 34s ease-in-out -10s infinite alternate-reverse;
}

.cloud--three {
  left: -4%;
  bottom: 23%;
  transform: scale(1.25);
  animation: cloudDrift 38s ease-in-out -16s infinite alternate;
}

.cloud--four {
  right: -6%;
  bottom: 11%;
  transform: scale(.85);
  animation: cloudDrift 33s ease-in-out -8s infinite alternate-reverse;
}

.distant-hills {
  position: absolute;
  left: -10%;
  right: -10%;
  pointer-events: none;
}

.distant-hills--back {
  bottom: 15%;
  height: 30%;
  opacity: .24;
  background: #648f7f;
  clip-path: polygon(0 100%, 0 68%, 9% 55%, 17% 63%, 27% 27%, 37% 55%, 49% 40%, 60% 68%, 72% 37%, 84% 64%, 93% 48%, 100% 65%, 100% 100%);
  filter: blur(2px);
}

.distant-hills--front {
  bottom: 9%;
  height: 22%;
  opacity: .15;
  background: #315f58;
  clip-path: polygon(0 100%, 0 70%, 11% 40%, 20% 71%, 34% 52%, 49% 75%, 63% 34%, 76% 66%, 91% 48%, 100% 68%, 100% 100%);
  filter: blur(1px);
}

.birds {
  position: absolute;
  top: 30%;
  left: 19%;
  z-index: 1;
  opacity: .45;
}

.birds i {
  position: absolute;
  width: 14px;
  height: 6px;
  border-top: 1.5px solid #365750;
  border-radius: 50%;
  transform: rotate(8deg);
  animation: birdFloat 5s ease-in-out infinite;
}

.birds i:nth-child(2) {
  left: 25px;
  top: 10px;
  transform: scale(.7) rotate(-4deg);
  animation-delay: -1.2s;
}

.birds i:nth-child(3) {
  left: 43px;
  top: 2px;
  transform: scale(.5) rotate(7deg);
  animation-delay: -2.6s;
}

.scene-topbar {
  position: absolute;
  top: 17px;
  left: 18px;
  right: 18px;
  z-index: 12;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  pointer-events: none;
}

.day-card,
.level-card,
.weather-pill {
  pointer-events: auto;
  border: 1px solid rgba(255, 255, 255, .29);
  background: rgba(250, 248, 235, .66);
  box-shadow: 0 10px 30px rgba(39, 80, 67, .12);
  backdrop-filter: blur(14px) saturate(1.15);
}

.day-card {
  width: 118px;
  min-width: 118px;
  padding: 10px 13px 9px;
  border-radius: 16px;
}

.eyebrow {
  display: block;
  color: #907954;
  font-size: 8px;
  font-weight: 800;
  letter-spacing: .22em;
  line-height: 1.2;
  text-transform: uppercase;
}

.day-card strong {
  display: block;
  margin-top: 4px;
  color: #244d47;
  font-family: var(--serif);
  font-size: 17px;
  font-weight: 700;
  letter-spacing: .03em;
}

.day-card strong b {
  font-size: 22px;
}

.day-card small {
  display: block;
  margin-top: 1px;
  color: #738a82;
  font-size: 9px;
}

.level-card {
  width: min(260px, 26vw);
  padding: 10px 13px;
  border-radius: 16px;
}

.level-card-row {
  display: flex;
  align-items: center;
  gap: 9px;
}

.level-glyph {
  width: 30px;
  height: 30px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 10px;
  color: #f7dfa7;
  background: #315f58;
}

.level-glyph svg {
  width: 19px;
  height: 19px;
}

.level-card-row > div {
  min-width: 0;
}

.level-card small {
  display: block;
  overflow: hidden;
  color: #738a82;
  font-family: var(--serif);
  font-size: 9px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.level-card strong {
  display: block;
  color: #214740;
  font-size: 12px;
}

.level-card strong b {
  font-size: 15px;
}

.level-progress-copy {
  margin-left: auto;
  color: #738982;
  font-size: 9px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.level-track {
  height: 4px;
  margin-top: 7px;
  overflow: hidden;
  border-radius: 99px;
  background: rgba(46, 91, 81, .12);
}

.level-track span {
  display: block;
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #5e9a86, #e2b96f);
  box-shadow: 0 0 8px rgba(224, 184, 107, .35);
  transition: width .6s cubic-bezier(.2, .8, .2, 1);
}

.weather-pill {
  min-width: 150px;
  margin-left: auto;
  padding: 8px 10px;
  display: grid;
  grid-template-columns: 32px 1fr;
  align-items: center;
  column-gap: 8px;
  border-radius: 16px;
}

.weather-icon {
  grid-row: span 2;
  width: 32px;
  height: 32px;
  position: relative;
  display: grid;
  place-items: center;
}

.weather-icon::before {
  content: "";
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #f6d389;
  box-shadow: 0 0 15px rgba(243, 203, 122, .66);
}

.weather-icon::after {
  content: "";
  position: absolute;
  bottom: 4px;
  right: 3px;
  width: 19px;
  height: 8px;
  border-radius: 99px;
  background: rgba(239, 244, 229, .86);
  box-shadow: -6px -3px 0 -1px rgba(239, 244, 229, .86);
}

.weather-icon[data-weather="rain"]::before {
  width: 22px;
  height: 10px;
  border-radius: 99px;
  background: #c7d8d3;
  box-shadow: -5px -4px 0 -1px #c7d8d3, 0 0 12px rgba(219, 240, 231, .34);
}

.weather-icon[data-weather="rain"]::after {
  right: 6px;
  bottom: 3px;
  width: 15px;
  height: 7px;
  border-radius: 0;
  background: repeating-linear-gradient(105deg, transparent 0 3px, #a8d2d3 4px 5px, transparent 6px 8px);
  box-shadow: none;
}

.weather-icon[data-weather="breeze"]::before {
  width: 21px;
  height: 2px;
  border-radius: 99px;
  background: rgba(244, 245, 224, .83);
  box-shadow: 3px 6px 0 -0.5px rgba(244, 245, 224, .65), -1px -6px 0 -0.5px rgba(244, 245, 224, .5);
}

.weather-icon[data-weather="breeze"]::after {
  right: 2px;
  bottom: 7px;
  width: 12px;
  height: 8px;
  border: solid rgba(239, 245, 223, .82);
  border-width: 1.5px 0 0 1.5px;
  border-radius: 50%;
  background: transparent;
  box-shadow: none;
  transform: rotate(8deg);
}

.weather-icon[data-weather="mist"]::before {
  width: 23px;
  height: 11px;
  background: rgba(238, 238, 222, .75);
  box-shadow: -2px 4px 10px rgba(248, 247, 229, .55);
  filter: blur(.5px);
}

.weather-icon[data-weather="mist"]::after {
  right: 4px;
  bottom: 3px;
  width: 24px;
  height: 3px;
  border-radius: 99px;
  background: rgba(235, 239, 224, .7);
  box-shadow: -4px -5px 0 -1px rgba(235, 239, 224, .56);
  filter: blur(.4px);
}

.weather-pill small {
  align-self: end;
  color: #758b82;
  font-size: 8px;
}

.weather-pill strong {
  align-self: start;
  color: #294f49;
  font-family: var(--serif);
  font-size: 14px;
}

.weather-pill em {
  grid-column: 2;
  margin-top: 2px;
  overflow: hidden;
  color: #87958e;
  font-size: 8px;
  font-style: normal;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.scene[data-weather="rain"] {
  background: linear-gradient(180deg, #698f99 0%, #93aba3 43%, #c8c7a6 74%, #b8ae8e 100%);
}

.scene[data-weather="rain"] .sun {
  top: 25%;
  right: 24%;
  opacity: .15;
}

.scene[data-weather="rain"] .cloud {
  opacity: .7;
  filter: blur(3px);
}

.scene[data-weather="rain"] .weather-icon::after {
  background: #b8ced0;
  box-shadow: -6px -3px 0 -1px #b8ced0;
}

.scene[data-weather="breeze"] {
  background: linear-gradient(180deg, #8bbbb2 0%, #bcd6b8 38%, #efdbb1 72%, #e5bd92 100%);
}

.scene[data-weather="breeze"] .cloud {
  animation-duration: 17s;
}

.scene[data-weather="mist"] {
  background: linear-gradient(180deg, #a7bcb5 0%, #c0cec1 40%, #e3dbbf 75%, #d3c5aa 100%);
}

.scene[data-weather="mist"] .sun {
  opacity: .32;
  filter: blur(3px);
}

.scene[data-weather="mist"] .weather-icon::before {
  background: #e8e4cf;
  box-shadow: 0 0 19px rgba(249, 245, 223, .72);
}

.weather-layer {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
}

.scene[data-weather="rain"] .weather-layer {
  opacity: .34;
  background: repeating-linear-gradient(104deg, transparent 0 9px, rgba(227, 245, 243, .8) 10px 11px, transparent 12px 24px);
  background-size: 110px 210px;
  animation: rainFall .52s linear infinite;
}

.scene[data-weather="mist"] .weather-layer::before,
.scene[data-weather="mist"] .weather-layer::after {
  content: "";
  position: absolute;
  left: -10%;
  width: 120%;
  height: 25%;
  border-radius: 50%;
  background: linear-gradient(90deg, transparent, rgba(245, 246, 229, .6), transparent);
  filter: blur(13px);
  animation: mistFlow 15s ease-in-out infinite alternate;
}

.scene[data-weather="mist"] .weather-layer::before {
  top: 34%;
}

.scene[data-weather="mist"] .weather-layer::after {
  bottom: 22%;
  opacity: .6;
  animation-delay: -7s;
  animation-direction: alternate-reverse;
}

.island-scene {
  position: absolute;
  inset: 98px 0 86px;
  z-index: 4;
  display: grid;
  place-items: center;
  perspective: 1300px;
}

.island-shadow {
  position: absolute;
  left: 50%;
  bottom: 2%;
  width: 58%;
  height: 8%;
  border-radius: 50%;
  opacity: .22;
  filter: blur(18px);
  background: #1d473e;
  transform: translateX(-50%);
}

.floating-island {
  position: relative;
  width: min(80%, 720px);
  height: 100%;
  min-width: 0;
  max-height: 640px;
  aspect-ratio: 1.22;
  animation: islandFloat 8s ease-in-out infinite;
  filter: drop-shadow(0 28px 22px rgba(23, 61, 53, .19));
  transform-origin: 50% 47%;
}

.island-underside {
  position: absolute;
  left: 1%;
  top: 24%;
  width: 98%;
  height: 74%;
  z-index: -1;
  opacity: .98;
  filter: drop-shadow(0 18px 23px rgba(13, 48, 44, .17));
}

.island-underside svg {
  width: 100%;
  height: 100%;
}

.island-surface {
  position: absolute;
  left: 2%;
  top: 1%;
  width: 96%;
  height: 76%;
  overflow: visible;
  border-radius: 48% 48% 42% 42% / 25% 25% 72% 72%;
  background:
    radial-gradient(ellipse at 41% 38%, rgba(237, 227, 166, .27), transparent 27%),
    radial-gradient(ellipse at 70% 62%, rgba(238, 226, 170, .2), transparent 23%),
    linear-gradient(155deg, #b3ce9e 0%, #7fac85 40%, #557e64 76%, #3c6153 100%);
  box-shadow:
    inset 0 5px 0 rgba(242, 239, 196, .35),
    inset 0 -17px 28px rgba(21, 64, 54, .18),
    0 14px 30px rgba(32, 76, 61, .2);
}

.island-surface::before {
  content: "";
  position: absolute;
  inset: 4% 5% 8%;
  z-index: -1;
  border-radius: 50%;
  background:
    repeating-radial-gradient(ellipse at 50% 58%, transparent 0 21px, rgba(238, 235, 181, .04) 22px 23px),
    radial-gradient(ellipse at 48% 64%, rgba(243, 223, 158, .12), transparent 50%);
}

.grass-rim {
  position: absolute;
  left: 2%;
  right: 2%;
  border-radius: 50%;
  pointer-events: none;
}

.grass-rim--one {
  top: 4%;
  height: 27%;
  border-top: 2px dashed rgba(238, 236, 185, .18);
  transform: rotate(-1.2deg);
}

.grass-rim--two {
  bottom: 9%;
  height: 18%;
  border-bottom: 5px solid rgba(37, 81, 62, .19);
  filter: blur(1px);
}

.field-frame {
  position: absolute;
  left: 50%;
  top: 48.5%;
  width: min(62%, 446px);
  min-width: 0;
  padding: 10px;
  border: 1px solid rgba(243, 231, 190, .38);
  border-radius: 22px;
  background:
    linear-gradient(135deg, rgba(65, 85, 63, .83), rgba(42, 72, 58, .9)),
    #345949;
  box-shadow:
    0 18px 32px rgba(23, 60, 47, .26),
    inset 0 1px rgba(255, 255, 255, .16);
  transform: translate(-50%, -48%) rotateX(1.5deg);
}

.field-frame::before {
  content: "";
  position: absolute;
  inset: -5px;
  z-index: -1;
  border: 1px solid rgba(237, 215, 165, .22);
  border-radius: 26px;
}

.field-sign {
  height: 46px;
  margin: -1px 2px 8px;
  padding: 0 5px 0 8px;
  display: flex;
  align-items: center;
  gap: 8px;
  color: #f2e8cd;
}

.field-sign-moon {
  width: 21px;
  height: 21px;
  display: grid;
  place-items: center;
  border-radius: 7px;
  color: #f1d38e;
  background: rgba(255, 255, 255, .08);
  font-size: 16px;
}

.field-sign div {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.field-sign strong {
  font-family: var(--serif);
  font-size: 16px;
  letter-spacing: .1em;
}

.field-sign small {
  overflow: hidden;
  color: rgba(240, 231, 207, .57);
  font-family: var(--serif);
  font-size: 8px;
  letter-spacing: .03em;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.field-sign em {
  margin-left: auto;
  color: rgba(240, 220, 172, .55);
  font-size: 8px;
  font-style: normal;
  letter-spacing: .13em;
}

.garden {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
  aspect-ratio: 1;
}

.plot {
  position: relative;
  min-width: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(229, 211, 166, .25);
  border-radius: 12px;
  background: #aa875f;
  box-shadow:
    inset 0 2px 3px rgba(255, 244, 205, .12),
    inset 0 -5px 8px rgba(50, 43, 31, .17);
  cursor: pointer;
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease, filter .2s ease;
}

.plot::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(circle at 22% 30%, rgba(232, 204, 146, .18) 0 1px, transparent 2px),
    radial-gradient(circle at 73% 63%, rgba(232, 204, 146, .13) 0 1px, transparent 2px),
    repeating-linear-gradient(17deg, transparent 0 12px, rgba(67, 47, 33, .14) 13px 15px),
    linear-gradient(145deg, #ac8964, #795b45);
}

.plot::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px rgba(255, 245, 208, .06);
  pointer-events: none;
}

.plot:hover {
  z-index: 2;
  border-color: rgba(247, 220, 160, .7);
  box-shadow:
    0 7px 15px rgba(17, 47, 38, .25),
    inset 0 0 0 1px rgba(255, 243, 195, .24);
  transform: translateY(-2px);
}

.plot.is-selected {
  z-index: 3;
  border-color: #f2d68f;
  box-shadow:
    0 0 0 2px rgba(246, 211, 134, .55),
    0 8px 20px rgba(18, 50, 38, .35),
    inset 0 0 16px rgba(255, 227, 159, .18);
  transform: translateY(-2px);
}

.plot.is-locked {
  border-color: rgba(222, 218, 182, .2);
  background:
    repeating-linear-gradient(45deg, rgba(39, 74, 59, .1) 0 7px, transparent 7px 14px),
    linear-gradient(145deg, #668573, #4c705f);
  cursor: pointer;
  filter: saturate(.7);
}

.plot.is-locked::before {
  opacity: .36;
}

.plot.is-withered::before {
  filter: grayscale(1) brightness(.8);
}

.soil-marker {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 2;
  width: 24px;
  height: 24px;
  display: grid;
  place-items: center;
  border: 1px dashed rgba(249, 239, 202, .35);
  border-radius: 50%;
  color: rgba(255, 247, 216, .48);
  font-size: 15px;
  font-weight: 300;
  transform: translate(-50%, -50%);
  transition: transform .2s ease, background .2s ease;
}

.plot:hover .soil-marker {
  background: rgba(248, 231, 188, .08);
  transform: translate(-50%, -50%) scale(1.08);
}

.plot-index {
  position: absolute;
  top: 5px;
  left: 6px;
  z-index: 4;
  color: rgba(250, 237, 198, .35);
  font-size: 6px;
  font-variant-numeric: tabular-nums;
  letter-spacing: .04em;
}

.crop-plant {
  position: absolute;
  left: 50%;
  bottom: 8%;
  z-index: 3;
  width: 88%;
  height: 88%;
  pointer-events: none;
  transform-origin: 50% 100%;
  transition: transform .3s cubic-bezier(.2, .8, .2, 1), filter .3s ease;
}

.crop-plant svg {
  width: 100%;
  height: 100%;
  overflow: visible;
  filter: drop-shadow(0 5px 5px rgba(32, 43, 31, .2));
}

.plant-stage-0 {
  transform: translateX(-50%) translateY(20%) scale(.34);
  opacity: .82;
}

.plant-stage-1 {
  transform: translateX(-50%) translateY(9%) scale(.56);
  opacity: .92;
}

.plant-stage-2 {
  transform: translateX(-50%) translateY(2%) scale(.8);
}

.plant-stage-3 {
  transform: translateX(-50%) scale(1);
  animation: plantSway 3.8s ease-in-out infinite;
}

.plot.is-growing .crop-plant {
  animation: sproutBreath 3s ease-in-out infinite;
}

.plot[data-crop="dewberry"] .crop-plant {
  filter: drop-shadow(0 3px 8px rgba(238, 159, 122, .17));
}

.plot[data-crop="moonbell"] .crop-plant {
  filter: drop-shadow(0 3px 9px rgba(194, 151, 217, .24));
}

.plot[data-crop="sunwheat"] .crop-plant {
  filter: drop-shadow(0 3px 8px rgba(242, 207, 120, .22));
}

.plot[data-crop="starflower"] .crop-plant {
  filter: drop-shadow(0 3px 10px rgba(245, 191, 100, .26));
}

.plant-progress {
  position: absolute;
  left: 7px;
  right: 7px;
  bottom: 5px;
  z-index: 4;
  height: 3px;
  overflow: hidden;
  border-radius: 99px;
  background: rgba(24, 46, 34, .31);
}

.plant-progress span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #dceab0, #f4d381);
  transition: width .5s ease;
}

.plot-badge {
  position: absolute;
  right: 5px;
  top: 5px;
  z-index: 5;
  min-width: 17px;
  height: 17px;
  padding: 0 4px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, .35);
  border-radius: 7px;
  color: #f7f5e7;
  background: rgba(28, 82, 83, .8);
  box-shadow: 0 3px 8px rgba(10, 41, 38, .2);
  font-size: 9px;
  font-weight: 700;
  backdrop-filter: blur(6px);
}

.plot-badge.badge-dry {
  color: #fff4d1;
  background: rgba(165, 104, 66, .84);
  animation: dryPulse 2.5s ease-in-out infinite;
}

.plot-badge.badge-mature {
  color: #173e3a;
  background: rgba(250, 223, 156, .95);
  box-shadow: 0 0 13px rgba(248, 214, 132, .44);
}

.plot-health {
  position: absolute;
  left: 6px;
  top: 6px;
  z-index: 5;
  display: flex;
  gap: 2px;
}

.plot-health i {
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: rgba(235, 242, 203, .7);
}

.plot-health i.is-low {
  background: rgba(238, 167, 116, .92);
}

.plot-lock {
  position: absolute;
  inset: 0;
  z-index: 4;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  color: rgba(240, 237, 203, .57);
  font-size: 7px;
  letter-spacing: .04em;
}

.plot-lock svg {
  width: 14px;
  height: 14px;
  opacity: .72;
}

.mini-house {
  position: absolute;
  left: 4.5%;
  top: 3%;
  z-index: 2;
  width: 15%;
  height: 28%;
  filter: drop-shadow(0 10px 8px rgba(23, 57, 44, .21));
}

.house-wall {
  position: absolute;
  left: 16%;
  right: 12%;
  bottom: 0;
  height: 57%;
  border-radius: 4px 4px 8px 8px;
  background:
    linear-gradient(90deg, transparent 48%, rgba(108, 91, 65, .14) 49% 51%, transparent 52%),
    linear-gradient(145deg, #e9d9b4, #b99d76);
  box-shadow: inset -5px -5px 10px rgba(86, 72, 52, .16);
}

.house-wall span {
  position: absolute;
  top: 31%;
  width: 21%;
  aspect-ratio: 1;
  border: 2px solid #896f54;
  background: #f2dfa8;
  box-shadow: 0 0 7px rgba(253, 221, 139, .5);
}

.house-wall span:first-child {
  left: 20%;
}

.house-wall span:last-child {
  right: 17%;
}

.house-door {
  position: absolute;
  left: 43%;
  bottom: 0;
  width: 17%;
  height: 35%;
  border-radius: 7px 7px 0 0;
  background: #705b48;
}

.house-roof {
  position: absolute;
  left: 3%;
  top: 17%;
  width: 90%;
  height: 34%;
  border-radius: 52% 52% 15% 15%;
  background: linear-gradient(145deg, #7d7f5b, #4d5f4b);
  clip-path: polygon(0 100%, 11% 48%, 51% 0, 92% 48%, 100% 100%);
  box-shadow: inset 0 3px rgba(255, 255, 255, .08);
}

.house-roof i {
  position: absolute;
  left: 47%;
  top: -12%;
  width: 6%;
  height: 50%;
  background: #d2b985;
  transform: rotate(5deg);
}

.house-chimney {
  position: absolute;
  right: 14%;
  top: 6%;
  width: 13%;
  height: 29%;
  border-radius: 2px;
  background: #6d7356;
}

.house-smoke {
  position: absolute;
  right: 16%;
  top: 0;
  width: 28%;
  height: 30%;
}

.house-smoke i {
  position: absolute;
  bottom: 0;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(243, 239, 211, .35);
  animation: smokeRise 5s ease-in infinite;
}

.house-smoke i:nth-child(2) {
  animation-delay: -1.7s;
}

.house-smoke i:nth-child(3) {
  animation-delay: -3.5s;
}

.island-tree {
  position: absolute;
  z-index: 2;
  width: 17%;
  height: 33%;
  filter: drop-shadow(0 12px 10px rgba(26, 65, 48, .18));
}

.island-tree--left {
  left: 14%;
  top: 24%;
  transform: scale(.8);
}

.island-tree--right {
  right: 2%;
  top: 12%;
}

.tree-trunk {
  position: absolute;
  left: 47%;
  bottom: 2%;
  width: 10%;
  height: 48%;
  border-radius: 70% 30% 15% 20%;
  background: linear-gradient(90deg, #695844, #947b59);
  transform: rotate(3deg);
}

.tree-crown {
  position: absolute;
  display: block;
  border-radius: 50%;
  background:
    radial-gradient(circle at 35% 26%, rgba(227, 240, 177, .26), transparent 34%),
    linear-gradient(145deg, #6e9d6f, #3e7359);
  box-shadow: inset -8px -10px 14px rgba(32, 73, 51, .18);
}

.tree-crown--a {
  left: 15%;
  top: 2%;
  width: 72%;
  height: 45%;
}

.tree-crown--b {
  left: 0;
  top: 21%;
  width: 60%;
  height: 37%;
}

.tree-crown--c {
  right: 0;
  top: 19%;
  width: 57%;
  height: 39%;
}

.island-tree--right .tree-crown {
  background:
    radial-gradient(circle at 35% 26%, rgba(237, 226, 165, .22), transparent 34%),
    linear-gradient(145deg, #789a65, #4f7452);
}

.lantern {
  position: absolute;
  z-index: 4;
  width: 4px;
  height: 58px;
  border-radius: 99px;
  background: #7c674b;
}

.lantern::before {
  content: "";
  position: absolute;
  top: -6px;
  left: -3px;
  width: 10px;
  height: 5px;
  border-radius: 50%;
  background: #5c5942;
}

.lantern i {
  position: absolute;
  top: 5px;
  left: -7px;
  width: 18px;
  height: 24px;
  border: 1px solid rgba(255, 231, 166, .6);
  border-radius: 7px;
  background: linear-gradient(180deg, rgba(255, 230, 157, .9), rgba(227, 168, 86, .72));
  box-shadow: 0 0 15px rgba(255, 205, 126, .62);
}

.lantern--left {
  left: 7%;
  bottom: 28%;
  transform: scale(.8);
}

.lantern--right {
  right: 7%;
  bottom: 17%;
  transform: scale(.68);
}

.path-stones {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.path-stones i {
  position: absolute;
  border-radius: 50%;
  background: rgba(220, 212, 168, .24);
  box-shadow: inset 1px 1px rgba(255, 255, 225, .1);
}

.path-stones i:nth-child(1) {
  left: 23%;
  top: 75%;
  width: 18px;
  height: 8px;
  transform: rotate(-12deg);
}

.path-stones i:nth-child(2) {
  left: 18%;
  top: 80%;
  width: 14px;
  height: 7px;
  transform: rotate(18deg);
}

.path-stones i:nth-child(3) {
  left: 28%;
  top: 84%;
  width: 12px;
  height: 6px;
  transform: rotate(7deg);
}

.path-stones i:nth-child(4) {
  right: 25%;
  top: 74%;
  width: 15px;
  height: 7px;
  transform: rotate(-10deg);
}

.path-stones i:nth-child(5) {
  right: 19%;
  top: 79%;
  width: 10px;
  height: 5px;
  transform: rotate(13deg);
}

.grass-tufts {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.grass-tufts i {
  position: absolute;
  width: 12px;
  height: 10px;
  border-top: 1px solid rgba(226, 236, 174, .35);
  border-radius: 50%;
}

.grass-tufts i::before,
.grass-tufts i::after {
  content: "";
  position: absolute;
  top: -5px;
  width: 1px;
  height: 11px;
  background: rgba(219, 234, 172, .28);
  transform-origin: bottom;
}

.grass-tufts i::before {
  left: 3px;
  transform: rotate(-24deg);
}

.grass-tufts i::after {
  right: 3px;
  transform: rotate(31deg);
}

.grass-tufts i:nth-child(1) {
  left: 4%;
  top: 54%;
}

.grass-tufts i:nth-child(2) {
  left: 27%;
  top: 89%;
}

.grass-tufts i:nth-child(3) {
  left: 42%;
  top: 94%;
}

.grass-tufts i:nth-child(4) {
  right: 14%;
  top: 71%;
}

.grass-tufts i:nth-child(5) {
  right: 3%;
  top: 54%;
}

.grass-tufts i:nth-child(6) {
  left: 8%;
  top: 22%;
}

.island-mascot {
  position: absolute;
  left: 0;
  bottom: 16%;
  z-index: 8;
  width: 94px;
  height: 120px;
  cursor: pointer;
  filter: drop-shadow(0 10px 9px rgba(20, 49, 39, .23));
  transition: transform .3s cubic-bezier(.2, .8, .2, 1);
  animation: mascotBob 4.7s ease-in-out infinite;
}

.island-mascot:hover {
  transform: translateY(-4px) scale(1.02);
}

.mascot-art {
  position: absolute;
  inset: auto 0 0;
  width: 100%;
  height: 100%;
}

.mascot-aura {
  position: absolute;
  left: 14%;
  right: 14%;
  bottom: 5%;
  height: 35%;
  border-radius: 50%;
  background: rgba(227, 255, 220, .33);
  filter: blur(18px);
}

.mascot-bubble {
  position: absolute;
  left: 63%;
  bottom: 72%;
  width: 164px;
  padding: 10px 12px;
  border: 1px solid rgba(255, 255, 255, .55);
  border-radius: 15px 15px 15px 4px;
  color: #315952;
  background: rgba(253, 250, 234, .86);
  box-shadow: 0 8px 22px rgba(30, 66, 55, .13);
  font-family: var(--serif);
  font-size: 10px;
  line-height: 1.55;
  backdrop-filter: blur(11px);
  transition: opacity .25s ease, transform .25s ease;
}

.island-mascot:hover .mascot-bubble {
  transform: translateY(-2px);
}

.island-motes {
  position: absolute;
  inset: 10% 15%;
  z-index: 7;
  pointer-events: none;
}

.island-motes i {
  position: absolute;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: #fff2bb;
  box-shadow: 0 0 8px 2px rgba(255, 232, 171, .55);
  animation: moteFloat 5.5s ease-in-out infinite;
}

.island-motes i:nth-child(1) {
  left: 12%;
  top: 67%;
}

.island-motes i:nth-child(2) {
  left: 30%;
  top: 22%;
  animation-delay: -1.2s;
}

.island-motes i:nth-child(3) {
  right: 17%;
  top: 41%;
  animation-delay: -2.7s;
}

.island-motes i:nth-child(4) {
  right: 37%;
  top: 84%;
  animation-delay: -3.8s;
}

.island-motes i:nth-child(5) {
  left: 7%;
  top: 45%;
  animation-delay: -4.4s;
}

.scene-bottom {
  position: absolute;
  left: 18px;
  right: 18px;
  bottom: 15px;
  z-index: 14;
  min-height: 58px;
  padding: 8px 9px 8px 13px;
  display: flex;
  align-items: center;
  gap: 16px;
  border: 1px solid rgba(255, 255, 255, .28);
  border-radius: 18px;
  background: rgba(21, 67, 62, .75);
  box-shadow: 0 13px 30px rgba(19, 55, 49, .16);
  color: #edf2df;
  backdrop-filter: blur(16px) saturate(1.15);
}

.day-status {
  min-width: 184px;
  display: flex;
  align-items: center;
  gap: 10px;
}

.status-orb {
  position: relative;
  width: 32px;
  height: 32px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255, 243, 203, .23);
  border-radius: 50%;
  background: rgba(255, 255, 255, .05);
}

.status-orb::before {
  content: "";
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #f1d28c;
  box-shadow: 0 0 12px rgba(244, 210, 136, .45);
}

.status-orb i {
  position: absolute;
  inset: 4px;
  border: 1px dashed rgba(229, 227, 181, .25);
  border-radius: 50%;
  animation: slowSpin 18s linear infinite;
}

.day-status div {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.day-status small {
  color: rgba(223, 235, 210, .55);
  font-size: 8px;
}

.day-status strong {
  overflow: hidden;
  margin-top: 3px;
  color: #f2f2de;
  font-family: var(--serif);
  font-size: 12px;
  font-weight: 500;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.energy-meter {
  margin-left: auto;
  min-width: 146px;
}

.energy-heading {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  color: rgba(225, 238, 211, .58);
  font-size: 8px;
}

.energy-heading strong {
  color: #eee9c9;
  font-size: 9px;
}

.energy-heading b {
  font-size: 12px;
}

.energy-pips {
  margin-top: 6px;
  display: flex;
  gap: 3px;
}

.energy-pips i {
  width: 10px;
  height: 5px;
  border-radius: 99px;
  background: rgba(255, 255, 255, .11);
  transition: background .25s ease, box-shadow .25s ease;
}

.energy-pips i.is-filled {
  background: linear-gradient(90deg, #d9c783, #f1d38e);
  box-shadow: 0 0 7px rgba(239, 207, 131, .2);
}

.energy-pips i.is-spent {
  background: rgba(255, 255, 255, .09);
}

.end-day-button {
  min-width: 166px;
  height: 46px;
  padding: 0 12px 0 17px;
  display: flex;
  align-items: center;
  gap: 12px;
  border: 1px solid rgba(255, 248, 209, .3);
  border-radius: 13px;
  color: #244943;
  background: linear-gradient(135deg, #f5dfa5, #ddbd7e);
  box-shadow:
    0 7px 16px rgba(11, 38, 33, .18),
    inset 0 1px rgba(255, 255, 255, .5);
  cursor: pointer;
  transition: transform .2s ease, filter .2s ease, box-shadow .2s ease;
}

.end-day-button:hover {
  filter: brightness(1.04);
  transform: translateY(-1px);
  box-shadow: 0 10px 22px rgba(11, 38, 33, .24);
}

.end-day-button:active {
  transform: translateY(1px);
}

.end-day-button:disabled {
  cursor: wait;
  opacity: .7;
}

.end-day-button > span:nth-child(2) {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  line-height: 1.05;
}

.end-day-button small {
  color: #7c7458;
  font-size: 7px;
}

.end-day-button strong {
  margin-top: 4px;
  font-family: var(--serif);
  font-size: 14px;
  letter-spacing: .06em;
}

.end-day-button > svg {
  width: 18px;
  height: 18px;
  margin-left: auto;
}

.button-spark {
  position: relative;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #3e7569;
}

.button-spark::before,
.button-spark::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  background: #f5f1cf;
}

.button-spark::before {
  left: 4px;
  top: 4px;
  width: 6px;
  height: 6px;
  box-shadow: 0 0 8px #fff7c9;
}

.button-spark::after {
  left: 10px;
  top: 1px;
  width: 2px;
  height: 2px;
}

.toast-stack {
  position: absolute;
  left: 50%;
  top: 90px;
  z-index: 40;
  width: min(360px, calc(100% - 32px));
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  pointer-events: none;
  transform: translateX(-50%);
}

.toast {
  max-width: 100%;
  padding: 9px 14px 9px 11px;
  display: flex;
  align-items: center;
  gap: 9px;
  border: 1px solid rgba(255, 255, 255, .46);
  border-radius: 12px;
  color: #2d554e;
  background: rgba(255, 252, 238, .92);
  box-shadow: 0 10px 28px rgba(17, 53, 48, .18);
  font-size: 11px;
  line-height: 1.4;
  backdrop-filter: blur(11px);
  animation: toastIn .3s ease both;
}

.toast.is-leaving {
  animation: toastOut .25s ease both;
}

.toast-icon {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 7px;
  color: #345f57;
  background: #e3eddc;
  font-size: 11px;
}

.toast.toast--gold .toast-icon {
  color: #916933;
  background: #f8e9bd;
}

.control-panel {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(26, 73, 66, .10);
  background:
    radial-gradient(circle at 90% 9%, rgba(239, 207, 142, .16), transparent 25%),
    var(--paper);
}

.control-panel::before {
  content: "";
  position: absolute;
  right: -32px;
  top: -30px;
  width: 110px;
  height: 110px;
  border: 1px solid rgba(198, 158, 93, .13);
  border-radius: 50%;
  pointer-events: none;
}

.panel-scroll {
  position: relative;
  height: 100%;
  padding: 19px 19px 18px;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(64, 103, 93, .2) transparent;
}

.panel-scroll::-webkit-scrollbar {
  width: 5px;
}

.panel-scroll::-webkit-scrollbar-thumb {
  border-radius: 9px;
  background: rgba(64, 103, 93, .2);
}

.panel-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.panel-heading h2 {
  margin: 5px 0 0;
  color: #204a43;
  font-family: var(--serif);
  font-size: 23px;
  line-height: 1.25;
  font-weight: 650;
  letter-spacing: .01em;
}

.date-seal {
  width: 47px;
  height: 47px;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(181, 137, 74, .26);
  border-radius: 50%;
  color: #9f7a44;
  background: rgba(250, 241, 217, .64);
  transform: rotate(4deg);
}

.date-seal span {
  font-family: var(--serif);
  font-size: 17px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.date-seal small {
  margin-top: 2px;
  font-size: 6px;
  letter-spacing: .12em;
}

.inspector {
  margin-top: 13px;
  padding: 13px;
  border: 1px solid rgba(30, 75, 67, .10);
  border-radius: 18px;
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .58), rgba(247, 241, 225, .73));
  box-shadow: 0 8px 22px rgba(38, 69, 58, .045);
}

.inspector-placeholder {
  display: flex;
  align-items: center;
  gap: 11px;
}

.inspector-placeholder-icon {
  width: 42px;
  height: 42px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 14px;
  color: #527d6c;
  background: linear-gradient(145deg, #e5efdd, #d5e6d4);
}

.inspector-placeholder-icon svg {
  width: 23px;
  height: 23px;
}

.inspector-placeholder strong {
  display: block;
  color: #345c53;
  font-family: var(--serif);
  font-size: 14px;
}

.inspector-placeholder p {
  margin: 3px 0 0;
  color: #81928a;
  font-size: 9px;
  line-height: 1.5;
}

.selection-head {
  display: flex;
  align-items: center;
  gap: 10px;
}

.selection-token {
  width: 44px;
  height: 44px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: 14px;
  color: #4e7768;
  background:
    radial-gradient(circle at 30% 25%, rgba(255, 255, 255, .55), transparent 42%),
    var(--token-bg, #dfead7);
}

.selection-token svg {
  width: 35px;
  height: 38px;
  overflow: visible;
}

.selection-token.is-empty {
  border: 1px dashed rgba(53, 101, 87, .24);
  background: rgba(220, 233, 215, .65);
}

.selection-copy {
  min-width: 0;
  flex: 1;
}

.selection-copy small {
  display: block;
  color: #8b998f;
  font-size: 8px;
  letter-spacing: .04em;
}

.selection-copy strong {
  display: block;
  margin-top: 2px;
  overflow: hidden;
  color: #2b554c;
  font-family: var(--serif);
  font-size: 16px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.selection-copy p {
  margin: 2px 0 0;
  color: #7e8d85;
  font-size: 9px;
  line-height: 1.4;
}

.selection-meta {
  flex: 0 0 auto;
  text-align: right;
}

.selection-meta strong {
  display: block;
  color: #385f56;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}

.selection-meta small {
  color: #8f9b93;
  font-size: 8px;
}

.selection-progress {
  height: 5px;
  margin-top: 11px;
  overflow: hidden;
  border-radius: 99px;
  background: rgba(45, 82, 72, .1);
}

.selection-progress span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--crop-accent, #7ca283), #ebce8c);
  transition: width .5s ease;
}

.selection-metrics {
  margin-top: 9px;
  display: flex;
  gap: 14px;
}

.metric {
  display: flex;
  align-items: baseline;
  gap: 4px;
}

.metric span {
  color: #8a978f;
  font-size: 8px;
}

.metric strong {
  color: #496b61;
  font-size: 10px;
  font-weight: 650;
}

.metric strong.is-alert {
  color: #b26c56;
}

.inspector-actions {
  margin-top: 10px;
  display: flex;
  gap: 7px;
}

.action-button,
.primary-button,
.secondary-button,
.text-button {
  border: 0;
  cursor: pointer;
  transition: transform .18s ease, background .18s ease, box-shadow .18s ease, opacity .18s ease;
}

.action-button {
  min-height: 33px;
  padding: 0 13px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border-radius: 11px;
  color: #4f7267;
  background: #e8ecde;
  font-size: 10px;
  font-weight: 700;
}

.action-button:hover {
  background: #dfe8d7;
  transform: translateY(-1px);
}

.action-button svg {
  width: 13px;
  height: 13px;
}

.action-button--primary {
  color: #f8f3dc;
  background: linear-gradient(135deg, #3a746a, #245951);
  box-shadow: 0 5px 12px rgba(30, 81, 72, .15);
}

.action-button--primary:hover {
  background: linear-gradient(135deg, #438176, #2a655b);
}

.action-button--gold {
  color: #5b482d;
  background: linear-gradient(135deg, #f4dfa8, #e4c27d);
}

.action-button--gold:hover {
  background: linear-gradient(135deg, #fae8b8, #eccf91);
}

.action-button--ghost {
  margin-left: auto;
  color: #8f9a93;
  background: transparent;
}

.action-button--ghost:hover {
  color: #9c6859;
  background: rgba(199, 127, 106, .08);
}

.action-button:disabled {
  cursor: not-allowed;
  opacity: .48;
  transform: none;
}

.unlock-panel p {
  margin: 5px 0 8px;
  color: #7d8e85;
  font-size: 9px;
  line-height: 1.5;
}

.unlock-need {
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: #9c7b4d;
  font-size: 9px;
}

.unlock-need strong {
  font-size: 11px;
}

.wish-card {
  position: relative;
  min-height: 106px;
  margin-top: 9px;
  padding: 13px 13px 12px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .08);
  border-radius: 18px;
  color: #e6ecd7;
  background:
    radial-gradient(circle at 93% 9%, rgba(239, 204, 129, .22), transparent 28%),
    linear-gradient(140deg, #315f58, #214b49 70%);
  box-shadow: 0 11px 24px rgba(27, 66, 59, .12);
}

.wish-card::before {
  content: "✦";
  position: absolute;
  right: 14px;
  bottom: -9px;
  color: rgba(242, 215, 153, .1);
  font-family: var(--serif);
  font-size: 73px;
  line-height: 1;
}

.wish-card::after {
  content: "";
  position: absolute;
  right: -14px;
  top: -27px;
  width: 85px;
  height: 85px;
  border: 1px solid rgba(239, 216, 164, .1);
  border-radius: 50%;
}

.wish-top {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 8px;
}

.wish-avatar {
  width: 27px;
  height: 27px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, .25);
  border-radius: 50%;
  color: #294f49;
  background: #e2d6ae;
  font-family: var(--serif);
  font-size: 12px;
}

.wish-top div {
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.wish-top strong {
  color: #f4eed6;
  font-family: var(--serif);
  font-size: 12px;
  font-weight: 500;
}

.wish-top small {
  margin-top: 1px;
  color: rgba(225, 234, 207, .52);
  font-size: 7px;
}

.wish-time {
  margin-left: auto;
  padding: 3px 7px;
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 99px;
  color: rgba(242, 228, 185, .65);
  background: rgba(255, 255, 255, .05);
  font-size: 7px;
  white-space: nowrap;
}

.wish-copy {
  position: relative;
  z-index: 1;
  margin: 8px 0 9px;
  color: rgba(241, 239, 220, .84);
  font-size: 10px;
  line-height: 1.5;
}

.wish-copy b {
  color: #f2d58d;
  font-weight: 700;
}

.wish-footer {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 8px;
}

.wish-progress-wrap {
  flex: 1;
  min-width: 0;
}

.wish-progress-label {
  display: flex;
  justify-content: space-between;
  color: rgba(231, 237, 216, .54);
  font-size: 7px;
}

.wish-progress-label strong {
  color: #f0e3b8;
  font-size: 8px;
  font-variant-numeric: tabular-nums;
}

.wish-progress {
  height: 4px;
  margin-top: 4px;
  overflow: hidden;
  border-radius: 99px;
  background: rgba(255, 255, 255, .1);
}

.wish-progress span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #9bc5a5, #f0ce86);
  transition: width .45s ease;
}

.wish-reward {
  color: rgba(240, 227, 186, .68);
  font-size: 7px;
  white-space: nowrap;
}

.wish-claim {
  min-width: 61px;
  height: 27px;
  padding: 0 10px;
  border: 1px solid rgba(255, 246, 208, .35);
  border-radius: 9px;
  color: #36554d;
  background: linear-gradient(135deg, #f8e3ac, #e2bf79);
  font-size: 9px;
  font-weight: 700;
  cursor: pointer;
}

.wish-claim:disabled {
  color: rgba(229, 235, 210, .42);
  background: rgba(255, 255, 255, .08);
  border-color: rgba(255, 255, 255, .06);
  cursor: default;
}

.wish-card.is-claimed {
  background: linear-gradient(140deg, #4f6f5d, #36594f);
}

.panel-tabs {
  position: relative;
  margin-top: 12px;
  padding: 4px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3px;
  border: 1px solid rgba(35, 75, 66, .08);
  border-radius: 14px;
  background: #ece7d9;
}

.panel-tab {
  height: 41px;
  padding: 0 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  border: 0;
  border-radius: 10px;
  color: #71827a;
  background: transparent;
  cursor: pointer;
  transition: color .2s ease, background .2s ease, box-shadow .2s ease;
}

.panel-tab span {
  font-family: var(--serif);
  font-size: 12px;
  font-weight: 700;
}

.panel-tab small {
  color: #98a29a;
  font-size: 7px;
}

.panel-tab.is-active {
  color: #2e5c53;
  background: #fffcf4;
  box-shadow: 0 3px 10px rgba(35, 69, 60, .08);
}

.panel-tab.is-active small {
  color: #a0875d;
}

.tab-content {
  padding: 12px 1px 0;
  animation: panelFade .28s ease both;
}

.section-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 7px;
}

.section-label strong {
  color: #45685f;
  font-family: var(--serif);
  font-size: 12px;
}

.section-label small {
  color: #98a29a;
  font-size: 7px;
}

.seed-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 7px;
}

.seed-card {
  position: relative;
  min-height: 118px;
  padding: 9px;
  overflow: hidden;
  border: 1px solid rgba(35, 76, 67, .1);
  border-radius: 15px;
  color: inherit;
  background: rgba(255, 253, 246, .76);
  box-shadow: 0 5px 14px rgba(41, 72, 62, .035);
  cursor: pointer;
  text-align: left;
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease, opacity .2s ease;
}

.seed-card:hover:not(:disabled) {
  border-color: rgba(200, 154, 80, .34);
  box-shadow: 0 8px 18px rgba(41, 72, 62, .07);
  transform: translateY(-2px);
}

.seed-card::after {
  content: "";
  position: absolute;
  right: -16px;
  bottom: -24px;
  width: 70px;
  height: 70px;
  border-radius: 50%;
  background: var(--seed-glow, rgba(174, 206, 171, .16));
}

.seed-card:disabled {
  cursor: not-allowed;
}

.seed-card.is-locked {
  filter: saturate(.6);
  opacity: .68;
}

.seed-card.is-unaffordable {
  opacity: .56;
}

.seed-top {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: flex-start;
  gap: 7px;
}

.seed-art {
  width: 42px;
  height: 43px;
  flex: 0 0 auto;
  display: grid;
  place-items: end center;
  overflow: hidden;
  border-radius: 12px;
  background:
    radial-gradient(circle at 50% 85%, var(--seed-soil, #bba47c) 0 37%, transparent 38%),
    linear-gradient(160deg, rgba(229, 241, 219, .8), rgba(202, 221, 197, .32));
}

.seed-art svg {
  width: 38px;
  height: 43px;
  transform: translateY(4px);
}

.seed-copy {
  min-width: 0;
  padding-top: 1px;
}

.seed-copy strong {
  display: block;
  overflow: hidden;
  color: #355e55;
  font-family: var(--serif);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.seed-copy small {
  display: block;
  margin-top: 2px;
  color: #9b9c91;
  font-size: 6px;
  letter-spacing: .08em;
}

.seed-card p {
  position: relative;
  z-index: 1;
  margin: 7px 0 0;
  color: #7c8d84;
  font-size: 9px;
  line-height: 1.42;
}

.seed-bottom {
  position: relative;
  z-index: 1;
  margin-top: 8px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.seed-cost {
  padding: 3px 6px;
  border-radius: 6px;
  color: #44756f;
  background: #e4efea;
  font-size: 9px;
  font-weight: 700;
}

.seed-days {
  color: #959d96;
  font-size: 8px;
}

.seed-lock {
  margin-left: auto;
  color: #9d8054;
  font-size: 8px;
}

.seed-ready {
  margin-left: auto;
  color: #b07f3e;
  font-size: 8px;
}

.tip-strip {
  margin-top: 8px;
  padding: 8px 10px;
  display: flex;
  align-items: center;
  gap: 7px;
  border-radius: 11px;
  color: #788b82;
  background: rgba(221, 230, 213, .5);
  font-size: 9px;
  line-height: 1.45;
}

.tip-strip::before {
  content: "✦";
  color: #bd9659;
}

.spirit-hero {
  position: relative;
  min-height: 96px;
  padding: 11px;
  overflow: hidden;
  display: flex;
  align-items: center;
  gap: 11px;
  border: 1px solid rgba(45, 82, 71, .1);
  border-radius: 16px;
  background:
    radial-gradient(circle at 11% 10%, rgba(255, 255, 255, .72), transparent 33%),
    linear-gradient(135deg, #e1eddc, #cddfcf);
}

.spirit-hero::after {
  content: "✦";
  position: absolute;
  right: 9px;
  bottom: -11px;
  color: rgba(66, 111, 95, .08);
  font-size: 66px;
}

.spirit-hero-avatar {
  width: 60px;
  height: 66px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 19px;
  background: rgba(255, 255, 255, .38);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .45);
}

.spirit-hero-avatar svg {
  width: 52px;
  height: 58px;
}

.spirit-hero-copy {
  position: relative;
  z-index: 1;
  min-width: 0;
}

.spirit-hero-copy small {
  color: #83978b;
  font-size: 7px;
  letter-spacing: .09em;
}

.spirit-hero-copy strong {
  display: block;
  margin-top: 2px;
  color: #315b51;
  font-family: var(--serif);
  font-size: 16px;
}

.spirit-hero-copy p {
  margin: 4px 0 0;
  color: #70867c;
  font-size: 8px;
  line-height: 1.45;
}

.spirit-hero-state {
  margin-left: auto;
  padding: 3px 7px;
  border: 1px solid rgba(62, 112, 94, .16);
  border-radius: 99px;
  color: #517d6d;
  background: rgba(255, 255, 255, .42);
  font-size: 7px;
  white-space: nowrap;
}

.spirit-list {
  margin-top: 7px;
  display: grid;
  gap: 7px;
}

.spirit-card {
  min-height: 73px;
  padding: 9px 10px;
  display: flex;
  align-items: center;
  gap: 9px;
  border: 1px solid rgba(40, 79, 69, .09);
  border-radius: 14px;
  background: rgba(255, 253, 246, .66);
  transition: border-color .2s ease, background .2s ease;
}

.spirit-card.is-active {
  border-color: rgba(190, 147, 78, .34);
  background: #fbf4e2;
}

.spirit-mini {
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 13px;
  background: var(--spirit-bg, #dce9d9);
}

.spirit-mini svg {
  width: 32px;
  height: 34px;
}

.spirit-card-copy {
  min-width: 0;
  flex: 1;
}

.spirit-card-copy strong {
  display: flex;
  align-items: center;
  gap: 5px;
  color: #3d6158;
  font-family: var(--serif);
  font-size: 12px;
}

.spirit-card-copy strong small {
  padding: 2px 5px;
  border-radius: 99px;
  color: #9a7947;
  background: #f6e8c7;
  font-family: var(--sans);
  font-size: 6px;
  font-weight: 500;
}

.spirit-card-copy p {
  margin: 3px 0 0;
  overflow: hidden;
  color: #89968e;
  font-size: 8px;
  line-height: 1.4;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.spirit-action {
  min-width: 55px;
  height: 25px;
  padding: 0 8px;
  border: 1px solid rgba(49, 93, 81, .12);
  border-radius: 8px;
  color: #4a7266;
  background: #e7eee1;
  font-size: 8px;
  cursor: pointer;
}

.spirit-action:hover:not(:disabled) {
  background: #dcead9;
}

.spirit-action.is-active {
  color: #7e633b;
  background: #f5e9ca;
  border-color: rgba(170, 126, 63, .18);
  cursor: default;
}

.spirit-action:disabled {
  cursor: not-allowed;
  opacity: .48;
}

.upgrade-grid {
  display: grid;
  gap: 7px;
}

.upgrade-card {
  min-height: 77px;
  padding: 9px 10px;
  display: flex;
  align-items: center;
  gap: 9px;
  border: 1px solid rgba(40, 79, 69, .09);
  border-radius: 14px;
  background: rgba(255, 253, 246, .66);
}

.upgrade-icon {
  width: 39px;
  height: 39px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: #5e7f6e;
  background: var(--upgrade-bg, #e6ecdc);
}

.upgrade-icon svg {
  width: 22px;
  height: 22px;
}

.upgrade-copy {
  min-width: 0;
  flex: 1;
}

.upgrade-copy strong {
  display: block;
  color: #3e6158;
  font-family: var(--serif);
  font-size: 11px;
}

.upgrade-copy p {
  margin: 3px 0 0;
  color: #89958d;
  font-size: 8px;
  line-height: 1.35;
}

.upgrade-levels {
  margin-top: 4px;
  display: flex;
  gap: 3px;
}

.upgrade-levels i {
  width: 16px;
  height: 3px;
  border-radius: 99px;
  background: rgba(48, 85, 74, .1);
}

.upgrade-levels i.is-filled {
  background: #d7b06c;
}

.upgrade-action {
  min-width: 60px;
  height: 28px;
  padding: 0 8px;
  border: 1px solid rgba(168, 124, 61, .16);
  border-radius: 9px;
  color: #765a32;
  background: #f6e9ca;
  font-size: 8px;
  cursor: pointer;
}

.upgrade-action:hover:not(:disabled) {
  background: #fbefd2;
}

.upgrade-action:disabled {
  cursor: not-allowed;
  opacity: .5;
}

.journal-stats {
  margin-bottom: 8px;
  padding: 10px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  border-radius: 14px;
  background: rgba(224, 232, 215, .54);
}

.journal-stat {
  text-align: center;
}

.journal-stat strong {
  display: block;
  color: #3b6157;
  font-family: var(--serif);
  font-size: 16px;
  font-variant-numeric: tabular-nums;
}

.journal-stat small {
  display: block;
  margin-top: 1px;
  color: #8b998f;
  font-size: 7px;
}

.collection-row {
  margin-top: 9px;
  padding: 10px;
  border: 1px solid rgba(39, 78, 68, .08);
  border-radius: 14px;
  background: rgba(255, 253, 246, .55);
}

.collection-heading {
  display: flex;
  justify-content: space-between;
  color: #667d73;
  font-size: 8px;
}

.collection-heading strong {
  color: #9f7c49;
  font-weight: 500;
}

.collection-dots {
  margin-top: 7px;
  display: flex;
  gap: 5px;
}

.collection-dot {
  width: 24px;
  height: 24px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  color: #8a9d90;
  background: #e9ebe0;
  font-family: var(--serif);
  font-size: 9px;
}

.collection-dot.is-found {
  color: #7e5f34;
  background: #f5e7c2;
  box-shadow: inset 0 0 0 1px rgba(190, 146, 73, .12);
}

.modal-layer {
  position: fixed;
  inset: 0;
  z-index: 100;
  padding: 24px;
  display: none;
  align-items: center;
  justify-content: center;
  overflow-y: auto;
  background: rgba(10, 38, 36, .59);
  backdrop-filter: blur(12px) saturate(.85);
}

.modal-layer.is-open {
  display: flex;
  animation: modalFade .28s ease both;
}

.welcome-card {
  position: relative;
  width: min(910px, 100%);
  min-height: 520px;
  display: grid;
  grid-template-columns: .92fr 1.08fr;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .2);
  border-radius: 30px;
  background: #f9f5e9;
  box-shadow: 0 45px 120px rgba(3, 23, 22, .44);
  animation: modalRise .55s cubic-bezier(.2, .8, .2, 1) both;
}

.modal-close {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 5;
  border: 0;
  border-radius: 50%;
  color: #6c8279;
  background: rgba(248, 246, 234, .7);
  font-size: 22px;
  font-weight: 300;
  backdrop-filter: blur(8px);
}

.welcome-close {
  color: #d8dfce;
  background: rgba(31, 66, 61, .4);
}

.welcome-visual {
  position: relative;
  overflow: hidden;
  border-radius: 24px;
  margin: 10px;
  background:
    radial-gradient(circle at 72% 23%, rgba(252, 232, 174, .42), transparent 29%),
    linear-gradient(160deg, #5b9891 0%, #8eb8a2 42%, #d5c391 100%);
}

.welcome-visual::before {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .4;
  background:
    radial-gradient(ellipse at 30% 85%, #d9c28f 0 10%, transparent 11%),
    radial-gradient(ellipse at 65% 92%, #a9bea0 0 16%, transparent 17%),
    linear-gradient(180deg, transparent 60%, rgba(42, 85, 71, .35));
}

.welcome-orbit {
  position: absolute;
  border: 1px solid rgba(247, 230, 187, .2);
  border-radius: 50%;
}

.orbit-one {
  width: 360px;
  height: 360px;
  left: 50%;
  top: 44%;
  transform: translate(-50%, -50%);
}

.orbit-two {
  width: 280px;
  height: 280px;
  left: 50%;
  top: 44%;
  transform: translate(-50%, -50%) rotate(24deg);
  border-style: dashed;
}

.welcome-moon {
  position: absolute;
  right: 17%;
  top: 12%;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  background: #fff2c5;
  box-shadow: 0 0 46px 12px rgba(255, 234, 173, .34);
}

.welcome-island {
  position: absolute;
  left: 50%;
  top: 48%;
  width: 76%;
  aspect-ratio: 1.15;
  border-radius: 50% 50% 43% 43% / 30% 30% 70% 70%;
  background:
    radial-gradient(ellipse at 45% 35%, rgba(237, 228, 164, .3), transparent 28%),
    linear-gradient(150deg, #adc894, #6c987a 52%, #416b5a);
  box-shadow:
    0 22px 36px rgba(31, 62, 50, .22),
    inset 0 5px rgba(243, 237, 188, .3);
  transform: translate(-50%, -43%);
}

.welcome-island::before {
  content: "";
  position: absolute;
  left: 9%;
  right: 9%;
  top: 30%;
  bottom: -52%;
  z-index: -1;
  border-radius: 12% 12% 47% 47%;
  background:
    linear-gradient(145deg, rgba(87, 111, 86, .5), transparent 55%),
    linear-gradient(180deg, #567566, #263f3d 80%);
  clip-path: polygon(0 0, 100% 0, 88% 50%, 74% 61%, 67% 88%, 48% 100%, 36% 83%, 25% 74%, 8% 45%);
}

.welcome-island::after {
  content: "";
  position: absolute;
  inset: 8%;
  border: 1px dashed rgba(247, 236, 190, .18);
  border-radius: 50%;
}

.welcome-tree {
  position: absolute;
  width: 21%;
  height: 35%;
  border-radius: 50%;
  background: linear-gradient(145deg, #719875, #3d6a55);
  box-shadow: inset -8px -9px 12px rgba(35, 70, 51, .17);
}

.welcome-tree::after {
  content: "";
  position: absolute;
  left: 47%;
  top: 66%;
  z-index: -1;
  width: 9%;
  height: 55%;
  background: #77634b;
}

.welcome-tree--one {
  left: 6%;
  top: 25%;
  transform: scale(.75);
}

.welcome-tree--two {
  right: 5%;
  top: 15%;
}

.welcome-house {
  position: absolute;
  left: 20%;
  bottom: 17%;
  width: 28%;
  height: 28%;
  border-radius: 4px;
  background: #e0caa2;
  box-shadow: inset -8px -7px 12px rgba(97, 77, 50, .12);
}

.welcome-house::before {
  content: "";
  position: absolute;
  left: -12%;
  right: -12%;
  top: -43%;
  height: 55%;
  background: #566c56;
  clip-path: polygon(0 100%, 10% 40%, 50% 0, 90% 40%, 100% 100%);
}

.welcome-house::after {
  content: "";
  position: absolute;
  left: 38%;
  bottom: 0;
  width: 24%;
  height: 50%;
  border-radius: 5px 5px 0 0;
  background: #715c46;
}

.welcome-spirit {
  position: absolute;
  left: 55%;
  bottom: 15%;
  width: 21%;
  aspect-ratio: .82;
  border-radius: 46% 46% 38% 38%;
  background: linear-gradient(150deg, #eff9e7, #c3e4c7);
  box-shadow: 0 10px 18px rgba(34, 71, 52, .16);
}

.welcome-spirit::before,
.welcome-spirit::after {
  content: "";
  position: absolute;
  top: 33%;
  width: 9%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: #2e554a;
}

.welcome-spirit::before {
  left: 31%;
}

.welcome-spirit::after {
  right: 31%;
}

.welcome-spirit span {
  position: absolute;
  top: -25%;
  width: 27%;
  height: 51%;
  border-radius: 70% 8%;
  background: #d1ead1;
}

.welcome-spirit span:first-child {
  left: 6%;
  transform: rotate(-17deg);
}

.welcome-spirit span:nth-child(2) {
  right: 6%;
  transform: scaleX(-1) rotate(-17deg);
}

.welcome-spirit i {
  position: absolute;
  left: 50%;
  top: -5%;
  width: 13%;
  height: 36%;
  background: #f1d58c;
  clip-path: polygon(50% 0, 63% 35%, 100% 50%, 63% 65%, 50% 100%, 37% 65%, 0 50%, 37% 35%);
  transform: translateX(-50%);
  box-shadow: 0 0 14px rgba(245, 215, 145, .42);
}

.welcome-cloud {
  position: absolute;
  width: 130px;
  height: 36px;
  border-radius: 50%;
  background: rgba(250, 248, 222, .36);
  filter: blur(3px);
}

.welcome-cloud::before,
.welcome-cloud::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  background: inherit;
}

.welcome-cloud::before {
  left: 20%;
  bottom: 20%;
  width: 52%;
  height: 110%;
}

.welcome-cloud::after {
  right: 3%;
  bottom: 5%;
  width: 44%;
  height: 70%;
}

.welcome-cloud.cloud-a {
  left: 4%;
  bottom: 23%;
  animation: cloudDrift 9s ease-in-out infinite alternate;
}

.welcome-cloud.cloud-b {
  right: -8%;
  top: 38%;
  transform: scale(.68);
  animation: cloudDrift 12s ease-in-out -4s infinite alternate-reverse;
}

.welcome-star {
  position: absolute;
  color: #fff1bd;
  font-size: 13px;
  text-shadow: 0 0 14px rgba(255, 237, 178, .55);
  animation: twinkle 4s ease-in-out infinite;
}

.welcome-star.s-one {
  left: 18%;
  top: 17%;
}

.welcome-star.s-two {
  right: 12%;
  top: 48%;
  font-size: 9px;
  animation-delay: -1.7s;
}

.welcome-star.s-three {
  left: 29%;
  bottom: 13%;
  font-size: 8px;
  animation-delay: -2.4s;
}

.welcome-copy {
  padding: 50px 48px 37px 34px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.welcome-kicker {
  color: #a7834b;
  font-size: 8px;
  font-weight: 800;
  letter-spacing: .29em;
}

.welcome-copy h2 {
  margin: 14px 0 0;
  color: #204c45;
  font-family: var(--serif);
  font-size: clamp(31px, 3.3vw, 43px);
  line-height: 1.33;
  font-weight: 600;
  letter-spacing: .015em;
}

.welcome-copy > p {
  max-width: 400px;
  margin: 14px 0 0;
  color: #72857c;
  font-family: var(--serif);
  font-size: 13px;
  line-height: 1.8;
}

.welcome-features {
  margin-top: 23px;
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.welcome-features span {
  padding: 7px 9px;
  border: 1px solid rgba(49, 96, 82, .09);
  border-radius: 9px;
  color: #637d73;
  background: rgba(226, 235, 218, .56);
  font-size: 8px;
}

.welcome-features i {
  margin-right: 4px;
  color: #b18a50;
  font-style: normal;
}

.primary-button {
  min-height: 48px;
  padding: 0 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  border: 1px solid rgba(255, 248, 218, .35);
  border-radius: 14px;
  color: #f6f1db;
  background: linear-gradient(135deg, #306d64, #204f4a);
  box-shadow: 0 10px 25px rgba(25, 72, 63, .21), inset 0 1px rgba(255, 255, 255, .15);
  font-family: var(--serif);
  font-size: 14px;
  letter-spacing: .04em;
}

.primary-button:hover {
  background: linear-gradient(135deg, #397a70, #245a54);
  box-shadow: 0 14px 28px rgba(25, 72, 63, .26);
  transform: translateY(-1px);
}

.primary-button svg {
  width: 19px;
  height: 19px;
}

.welcome-start {
  align-self: flex-start;
  min-width: 175px;
  margin-top: 24px;
}

.welcome-note {
  margin-top: 11px;
  color: #a0aaa3;
  font-size: 8px;
}

.summary-card {
  position: relative;
  width: min(540px, 100%);
  padding: 31px;
  border-radius: 27px;
  background:
    radial-gradient(circle at 94% 2%, rgba(242, 211, 151, .24), transparent 24%),
    #f9f5e9;
  box-shadow: 0 35px 100px rgba(5, 28, 26, .35);
  animation: modalRise .45s cubic-bezier(.2, .8, .2, 1) both;
}

.summary-heading {
  text-align: center;
}

.summary-symbol {
  width: 65px;
  height: 65px;
  margin: 0 auto 12px;
  color: #385f58;
}

.summary-symbol svg {
  width: 100%;
  height: 100%;
}

.summary-heading .eyebrow {
  color: #aa8750;
}

.summary-heading h2 {
  margin: 9px auto 0;
  max-width: 390px;
  color: #214b44;
  font-family: var(--serif);
  font-size: 23px;
  line-height: 1.4;
  font-weight: 600;
}

.summary-heading p {
  margin: 7px 0 0;
  color: #8b998f;
  font-size: 9px;
}

.summary-list {
  margin-top: 21px;
  padding: 4px 13px;
  border: 1px solid rgba(35, 76, 67, .09);
  border-radius: 16px;
  background: rgba(255, 253, 246, .7);
}

.summary-item {
  min-height: 47px;
  display: flex;
  align-items: center;
  gap: 10px;
  border-bottom: 1px solid rgba(38, 78, 68, .07);
}

.summary-item:last-child {
  border-bottom: 0;
}

.summary-item-icon {
  width: 27px;
  height: 27px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 8px;
  color: #5f8072;
  background: #e9eee1;
  font-size: 11px;
}

.summary-item div {
  flex: 1;
}

.summary-item strong {
  display: block;
  color: #41645a;
  font-size: 10px;
  font-weight: 600;
}

.summary-item p {
  margin: 2px 0 0;
  color: #97a198;
  font-size: 8px;
}

.summary-item em {
  color: #a67d43;
  font-size: 9px;
  font-style: normal;
  font-weight: 700;
}

.next-day-preview {
  margin-top: 13px;
  padding: 10px 12px;
  display: flex;
  align-items: center;
  gap: 9px;
  border-radius: 12px;
  color: #6f857b;
  background: rgba(222, 232, 216, .55);
  font-size: 8px;
  line-height: 1.45;
}

.preview-weather-icon {
  width: 27px;
  height: 27px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 9px;
  color: #886b3d;
  background: #f5e7c7;
  font-family: var(--serif);
  font-size: 11px;
}

.next-day-preview strong {
  color: #537367;
}

.summary-continue {
  width: 100%;
  margin-top: 16px;
}

.help-card {
  position: relative;
  width: min(760px, 100%);
  padding: 31px;
  border-radius: 27px;
  background: #f9f5e9;
  box-shadow: 0 35px 100px rgba(5, 28, 26, .35);
  animation: modalRise .45s cubic-bezier(.2, .8, .2, 1) both;
}

.help-card > h2 {
  margin: 7px 0 19px;
  color: #204b44;
  font-family: var(--serif);
  font-size: 25px;
  font-weight: 600;
}

.help-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.help-grid article {
  min-height: 110px;
  padding: 13px 14px;
  border: 1px solid rgba(35, 76, 67, .08);
  border-radius: 14px;
  background: rgba(255, 253, 246, .68);
}

.help-grid article > span {
  color: #b78e51;
  font-size: 8px;
  font-weight: 800;
  letter-spacing: .1em;
}

.help-grid h3 {
  margin: 5px 0 4px;
  color: #43675d;
  font-family: var(--serif);
  font-size: 13px;
  font-weight: 650;
}

.help-grid p {
  margin: 0;
  color: #83928a;
  font-size: 9px;
  line-height: 1.55;
}

.help-footer {
  margin-top: 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.text-button {
  padding: 7px 2px;
  color: #a37763;
  background: transparent;
  font-size: 9px;
}

.text-button:hover {
  color: #8f5948;
}

.secondary-button {
  min-height: 37px;
  padding: 0 17px;
  border: 1px solid rgba(43, 88, 76, .13);
  border-radius: 11px;
  color: #43675d;
  background: #e8eddf;
  font-size: 10px;
  font-weight: 650;
}

.secondary-button:hover {
  background: #dfe8d8;
}

.confetti {
  position: absolute;
  z-index: 90;
  width: 5px;
  height: 9px;
  border-radius: 2px;
  pointer-events: none;
  animation: confettiBurst .9s cubic-bezier(.1, .7, .2, 1) both;
}

@keyframes islandFloat {
  0%, 100% { transform: translateY(0) rotate(-.18deg); }
  50% { transform: translateY(-7px) rotate(.24deg); }
}

@keyframes mascotBob {
  0%, 100% { translate: 0 0; }
  50% { translate: 0 -5px; }
}

@keyframes cloudDrift {
  from { margin-left: -15px; }
  to { margin-left: 18px; }
}

@keyframes sunPulse {
  0%, 100% { transform: scale(1); opacity: .4; }
  50% { transform: scale(1.08); opacity: .65; }
}

@keyframes twinkle {
  0%, 100% { opacity: .25; transform: scale(.7); }
  50% { opacity: .8; transform: scale(1.2); }
}

@keyframes birdFloat {
  0%, 100% { translate: 0 0; }
  50% { translate: 4px -5px; }
}

@keyframes rainFall {
  from { background-position: 0 0; }
  to { background-position: -34px 210px; }
}

@keyframes mistFlow {
  from { transform: translateX(-5%) scaleX(.95); opacity: .32; }
  to { transform: translateX(5%) scaleX(1.06); opacity: .62; }
}

@keyframes plantSway {
  0%, 100% { transform: translateX(-50%) rotate(-.8deg); }
  50% { transform: translateX(-50%) rotate(.8deg); }
}

@keyframes sproutBreath {
  0%, 100% { translate: 0 0; }
  50% { translate: 0 -2px; }
}

@keyframes dryPulse {
  0%, 100% { opacity: .7; }
  50% { opacity: 1; transform: scale(1.04); }
}

@keyframes smokeRise {
  0% { opacity: 0; transform: translate(0, 3px) scale(.6); }
  30% { opacity: .5; }
  100% { opacity: 0; transform: translate(7px, -18px) scale(1.5); }
}

@keyframes moteFloat {
  0%, 100% { transform: translate(0, 3px); opacity: .2; }
  50% { transform: translate(5px, -7px); opacity: .9; }
}

@keyframes slowSpin {
  to { transform: rotate(360deg); }
}

@keyframes valueBump {
  0%, 100% { transform: translateY(0); color: #2c544d; }
  45% { transform: translateY(-3px); color: #b17e36; }
}

@keyframes toastIn {
  from { opacity: 0; transform: translateY(-6px) scale(.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes toastOut {
  to { opacity: 0; transform: translateY(-7px) scale(.97); }
}

@keyframes panelFade {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes modalFade {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes modalRise {
  from { opacity: 0; transform: translateY(16px) scale(.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes confettiBurst {
  from { opacity: 1; transform: translate(0, 0) rotate(0); }
  to { opacity: 0; transform: translate(var(--tx), var(--ty)) rotate(240deg); }
}

@media (max-width: 1250px) {
  .main-grid {
    grid-template-columns: minmax(0, 1fr) 370px;
  }

  .brand p {
    max-width: 315px;
  }

  .level-card {
    width: 224px;
  }

  .day-status {
    min-width: 160px;
  }

  .scene-bottom {
    gap: 11px;
  }
}

@media (max-width: 1080px) {
  body {
    padding: 14px;
  }

  .game-shell {
    height: calc(100vh - 28px);
  }

  .brand p {
    display: none;
  }

  .brand-title-row > span {
    display: none;
  }

  .resource-chip {
    min-width: 79px;
    padding-right: 8px;
  }

  .main-grid {
    grid-template-columns: minmax(0, 1fr) 350px;
  }

  .level-card {
    width: 190px;
  }

  .level-progress-copy {
    display: none;
  }

  .weather-pill {
    min-width: 132px;
  }

  .weather-pill em {
    display: none;
  }

  .field-frame {
    width: min(67%, 430px);
  }

  .mascot-bubble {
    display: none;
  }

  .day-status {
    display: none;
  }
}

@media (max-width: 900px) {
  body {
    padding: 0;
    overflow: auto;
  }

  .game-shell {
    width: 100%;
    height: auto;
    min-height: 100vh;
    border: 0;
    border-radius: 0;
    overflow: visible;
  }

  .topbar {
    position: sticky;
    top: 0;
    z-index: 50;
    min-height: 70px;
    padding-inline: 16px;
    backdrop-filter: blur(16px);
  }

  .brand-mark {
    width: 38px;
    height: 38px;
  }

  .brand h1 {
    font-size: 24px;
  }

  .resource-chip {
    min-width: 69px;
    height: 39px;
  }

  .resource-icon {
    width: 27px;
    height: 27px;
  }

  .resource-copy strong {
    font-size: 14px;
  }

  .main-grid {
    padding: 8px;
    display: grid;
    grid-template-columns: 1fr;
  }

  .world-panel {
    min-height: 650px;
    border-radius: 22px;
  }

  .scene {
    min-height: 650px;
  }

  .control-panel {
    overflow: visible;
    border-radius: 22px;
  }

  .panel-scroll {
    height: auto;
    overflow: visible;
    padding: 18px 20px 24px;
  }

  .island-scene {
    inset: 105px 0 83px;
  }

  .floating-island {
    width: min(76%, 660px);
    max-height: 535px;
  }

  .seed-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .spirit-list {
    grid-template-columns: repeat(3, 1fr);
  }

  .spirit-card {
    min-width: 0;
    flex-wrap: wrap;
  }

  .spirit-card-copy {
    flex-basis: calc(100% - 50px);
  }

  .spirit-action {
    margin-left: 49px;
  }

  .upgrade-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  .upgrade-card {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .upgrade-copy {
    flex-basis: calc(100% - 50px);
  }

  .upgrade-action {
    margin-left: 48px;
  }
}

@media (max-width: 720px) {
  .topbar {
    flex-wrap: wrap;
    gap: 8px;
    padding: 10px 12px;
  }

  .brand-copy {
    display: none;
  }

  .brand-mark {
    margin-right: auto;
  }

  .resource-rail {
    flex: 1;
    justify-content: flex-end;
    gap: 5px;
  }

  .resource-chip {
    min-width: 58px;
    height: 37px;
    padding: 4px 7px 4px 4px;
    gap: 5px;
    border-radius: 12px;
  }

  .resource-icon {
    width: 26px;
    height: 26px;
    border-radius: 9px;
  }

  .resource-icon svg {
    width: 16px;
    height: 16px;
  }

  .resource-copy small {
    display: none;
  }

  .resource-copy strong {
    margin: 0;
    font-size: 12px;
  }

  .topbar-actions .icon-button:first-child {
    display: none;
  }

  .icon-button {
    width: 37px;
    height: 37px;
    border-radius: 12px;
  }

  .world-panel,
  .scene {
    min-height: 610px;
  }

  .scene-topbar {
    top: 10px;
    left: 10px;
    right: 10px;
  }

  .day-card {
    width: 86px;
    min-width: 86px;
    padding: 8px 10px;
    border-radius: 13px;
  }

  .day-card strong {
    font-size: 13px;
  }

  .day-card strong b {
    font-size: 18px;
  }

  .day-card small,
  .day-card .eyebrow {
    font-size: 7px;
  }

  .level-card {
    width: auto;
    flex: 1;
    min-width: 116px;
    max-width: 170px;
    padding: 8px 10px;
    border-radius: 13px;
  }

  .level-glyph {
    display: none;
  }

  .level-track {
    margin-top: 5px;
  }

  .weather-pill {
    min-width: 52px;
    width: 52px;
    padding: 7px;
    grid-template-columns: 1fr;
    border-radius: 13px;
  }

  .weather-icon {
    grid-row: auto;
    width: 32px;
    height: 28px;
    margin: auto;
  }

  .weather-pill > span:nth-child(2) {
    display: none;
  }

  .island-scene {
    inset: 88px 0 81px;
  }

  .floating-island {
    width: 89%;
    max-height: 470px;
  }

  .field-frame {
    width: 68%;
    padding: 8px;
    border-radius: 18px;
  }

  .field-sign {
    height: 37px;
    margin-bottom: 6px;
  }

  .field-sign strong {
    font-size: 13px;
  }

  .field-sign small {
    display: none;
  }

  .garden {
    gap: 4px;
  }

  .plot {
    border-radius: 9px;
  }

  .plot-index {
    display: none;
  }

  .mascot-bubble {
    display: none;
  }

  .island-mascot {
    width: 63px;
    height: 81px;
    left: 5%;
    bottom: 9%;
  }

  .mini-house {
    width: 14%;
  }

  .scene-bottom {
    left: 10px;
    right: 10px;
    bottom: 9px;
    padding: 7px;
    gap: 8px;
  }

  .day-status {
    display: none;
  }

  .energy-meter {
    min-width: 0;
    flex: 1;
    margin-left: 4px;
  }

  .energy-pips {
    gap: 2px;
    flex-wrap: wrap;
  }

  .energy-pips i {
    width: 8px;
  }

  .end-day-button {
    min-width: 150px;
    padding-left: 13px;
  }

  .seed-grid {
    grid-template-columns: 1fr 1fr;
  }

  .spirit-list,
  .upgrade-grid {
    grid-template-columns: 1fr;
  }

  .spirit-card {
    flex-wrap: nowrap;
  }

  .spirit-card-copy {
    flex-basis: auto;
  }

  .spirit-action {
    margin-left: 0;
  }

  .upgrade-card {
    flex-wrap: nowrap;
    align-items: center;
  }

  .upgrade-copy {
    flex-basis: auto;
  }

  .upgrade-action {
    margin-left: 0;
  }

  .modal-layer {
    padding: 12px;
  }

  .welcome-card {
    max-width: 520px;
    grid-template-columns: 1fr;
    min-height: 0;
  }

  .welcome-visual {
    min-height: 205px;
    margin-bottom: 0;
    border-radius: 20px 20px 8px 8px;
  }

  .welcome-island {
    width: 52%;
    top: 53%;
  }

  .welcome-moon {
    width: 42px;
    height: 42px;
    right: 14%;
  }

  .welcome-copy {
    padding: 25px 24px 23px;
  }

  .welcome-copy h2 {
    margin-top: 8px;
    font-size: 30px;
  }

  .welcome-copy > p {
    font-size: 11px;
  }

  .welcome-features {
    margin-top: 15px;
  }

  .welcome-start {
    margin-top: 18px;
  }

  .summary-card,
  .help-card {
    padding: 24px 18px;
    border-radius: 22px;
  }

  .summary-heading h2 {
    font-size: 20px;
  }

  .help-grid {
    grid-template-columns: 1fr;
  }

  .help-grid article {
    min-height: 90px;
  }
}

@media (max-width: 430px) {
  .topbar-actions {
    display: flex;
  }

  .resource-chip {
    min-width: 54px;
  }

  .world-panel,
  .scene {
    min-height: 580px;
  }

  .island-scene {
    inset: 84px 0 75px;
  }

  .floating-island {
    width: 97%;
    max-height: 435px;
  }

  .field-frame {
    width: 70%;
  }

  .island-tree--left {
    left: 5%;
  }

  .mini-house {
    left: 1%;
  }

  .scene-bottom {
    min-height: 52px;
  }

  .end-day-button {
    min-width: 134px;
    height: 42px;
  }

  .end-day-button small {
    display: none;
  }

  .end-day-button > svg {
    width: 15px;
  }

  .panel-scroll {
    padding-inline: 13px;
  }

  .panel-heading h2 {
    font-size: 20px;
  }

  .welcome-visual {
    min-height: 170px;
  }

  .welcome-copy h2 {
    font-size: 27px;
  }

  .welcome-copy > p {
    line-height: 1.65;
  }

  .welcome-features span {
    font-size: 7px;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
