@charset "UTF-8";
:root {
  --ink:#1c333c;
  --navy:#172c35;
  --cream:#faf5e9;
  --paper:#eee9dd;
  --orange:#f58a50;
  --orange-light:#ffb376;
  --muted:#859395;
  --teal:#72baa2;
  --line:#344951;
  --display:"Bahnschrift","Yu Gothic","Meiryo",sans-serif;
  --body:"Yu Gothic","Meiryo",sans-serif;
  color-scheme:dark;
  font-family:var(--body);
  font-synthesis:none
}
* {
  box-sizing:border-box
}
body {
  margin:0;
  background:#11242d;
  color:var(--cream);
  min-width:330px;
  background-image:radial-gradient(ellipse at 50% -10%,#28434b 0%,transparent 65%)
}
button,a {
  -webkit-tap-highlight-color:transparent
}
button {
  font:inherit;
  cursor:pointer
}
button:disabled {
  cursor:not-allowed
}
button:focus-visible,a:focus-visible {
  outline:3px solid #ffe28c;
  outline-offset:4px
}
button {
  touch-action:manipulation
}
svg.icon {
  width:22px;
  height:22px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.75;
  stroke-linecap:round;
  stroke-linejoin:round;
  flex-shrink:0
}
.icon-defs {
  position:absolute;
  width:0;
  height:0;
  overflow:hidden
}
[hidden] {
  display:none!important
}
.app-shell {
  width:min(1480px,100%);
  margin:0 auto;
  padding:0 40px
}
.masthead {
  min-height:105px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px
}
.brand {
  display:flex;
  gap:13px;
  align-items:center;
  text-decoration:none;
  color:var(--cream)
}
.brand-mark {
  width:48px;
  height:48px;
  background:var(--orange);
  color:var(--ink);
  border-radius:13px;
  display:grid;
  place-items:center;
  transform:rotate(-6deg);
  box-shadow:3px 4px 0 #0e1d24
}
.brand-mark .icon {
  width:29px;
  height:29px;
  transform:rotate(6deg)
}
.brand small {
  display:block;
  font:700 10px var(--display);
  letter-spacing:2.8px;
  color:var(--orange-light);
  margin:0 0 5px
}
.brand strong {
  font-size:21px;
  font-weight:800;
  letter-spacing:1px;
  white-space:nowrap
}
.brand strong span {
  font-size:16px;
  letter-spacing:.6px;
  margin-left:7px
}
.header-tools {
  display:flex;
  align-items:center;
  gap:10px
}
.edition {
  color:#aebdbb;
  font-size:10px;
  letter-spacing:1.1px;
  margin-right:14px;
  white-space:nowrap
}
.edition i {
  display:inline-block;
  width:4px;
  height:4px;
  border-radius:100%;
  background:var(--orange);
  margin:0 10px
}
.tool-button {
  display:grid;
  place-items:center;
  width:36px;
  height:36px;
  padding:0;
  background:#ffffff05;
  border:1px solid #496067;
  color:#c3cdc9;
  border-radius:9px;
  transition:background .15s,color .15s
}
.tool-button:hover {
  background:#ffffff12;
  color:white
}
.tool-button[aria-pressed=true] {
  color:var(--orange-light);
  border-color:#bc8055
}
.tool-button:disabled {
  opacity:.35
}
.tool-button.compact {
  width:31px;
  height:31px
}
.tool-button.compact .icon {
  width:18px;
  height:18px
}
.resource-bar {
  display:grid;
  grid-template-columns:1.2fr 1.5fr 1.18fr 1.15fr;
  min-height:99px;
  border:1px solid var(--line);
  border-radius:13px;
  background:#1d343dc9;
  margin-bottom:20px;
  overflow:hidden
}
.round-stat,.resource {
  padding:18px 25px;
  position:relative
}
.round-stat:after,.resource:not(:last-child):after {
  content:"";
  position:absolute;
  right:0;
  top:23px;
  bottom:23px;
  width:1px;
  background:#41545a
}
.eyebrow {
  display:block;
  font-size:10px;
  color:#a7b4b4;
  letter-spacing:1px;
  margin-bottom:5px
}
.round-stat>div {
  display:flex;
  gap:5px;
  align-items:baseline
}
.round-stat strong {
  font:500 30px var(--display);
  letter-spacing:-1px
}
.round-stat>div>span:not(.status-tag) {
  color:#91a3a6;
  font:15px var(--display)
}
.status-tag {
  background:#728f8429;
  color:#b4d5c3;
  border:1px solid #708d7e40;
  font-size:9px;
  line-height:18px;
  padding:0 7px;
  border-radius:4px;
  margin-left:12px;
  white-space:nowrap
}
.resource {
  display:flex;
  gap:13px;
  align-items:center
}
.resource-symbol {
  width:39px;
  height:39px;
  display:grid;
  place-items:center;
  border-radius:11px;
  background:#eeb46913;
  color:#f4bd7b
}
.resource-symbol .icon {
  width:24px;
  height:24px
}
.resource strong {
  font:500 27px var(--display);
  white-space:nowrap;
  letter-spacing:.2px
}
.resource strong em {
  font:normal 11px var(--body);
  color:#9db0b1;
  letter-spacing:0
}
.resource small {
  color:#8fad99;
  font:11px var(--display);
  white-space:nowrap;
  margin-left:auto;
  padding-top:18px
}
.power .resource-symbol {
  color:#9acdb0;
  background:#74c59714
}
.happiness .resource-symbol {
  color:#ee9790;
  background:#eb858414
}
.health-track {
  height:3px;
  width:110px;
  background:#f29b8e1a;
  border-radius:3px;
  margin-top:7px;
  overflow:hidden
}
.health-track i {
  display:block;
  height:100%;
  background:#e4a29a;
  border-radius:3px;
  transition:width .3s
}
.game-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr) 276px;
  gap:20px;
  align-items:start
}
.game-panel {
  border:1px solid #4c5b5c;
  border-radius:13px;
  overflow:hidden;
  background:#20363c;
  box-shadow:0 12px 35px #07161b29
}
.map-toolbar {
  height:51px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 17px;
  gap:10px;
  background:#21373f
}
.map-title {
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0
}
.map-title strong {
  font-size:12px;
  letter-spacing:.5px;
  white-space:nowrap
}
.live-dot {
  width:6px;
  height:6px;
  display:block;
  background:#c9e1aa;
  border-radius:50%;
  box-shadow:0 0 0 4px #b5ce9f0b
}
.map-subtitle {
  font-size:10px;
  color:#99aaa8;
  padding-left:10px;
  border-left:1px solid #536165;
  margin-left:4px;
  white-space:nowrap
}
.play-tools {
  display:flex;
  align-items:center;
  gap:7px
}
.speed-button {
  color:#d7e0d9;
  background:none;
  border:0;
  font:600 17px var(--display);
  padding:5px 8px
}
.speed-button span {
  font-size:13px;
  margin-left:2px;
  color:#9ab0b4
}
.speed-button.fast {
  color:var(--orange-light)
}
.arena {
  width:100%;
  aspect-ratio:1000/680;
  position:relative;
  isolation:isolate;
  overflow:hidden;
  background:#d6dfcb;
  color:var(--ink)
}
.map-art {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:contain;
  pointer-events:none;
  user-select:none
}
.map-layer {
  position:absolute;
  inset:0;
  pointer-events:none
}
.district-label {
  position:absolute;
  left:3.1%;
  top:4%;
  font:800 clamp(13px,1.65vw,23px) var(--display);
  letter-spacing:3px;
  line-height:1.1;
  color:#3f5b577d;
  pointer-events:none
}
.district-label span {
  display:block;
  font:600 7px var(--display);
  letter-spacing:3.5px;
  margin-top:5px
}
.map-stamp {
  position:absolute;
  bottom:8%;
  left:4%;
  border:2px solid #5c797865;
  border-radius:50%;
  width:100px;
  height:100px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  transform:rotate(-14deg);
  color:#4d727482;
  pointer-events:none
}
.map-stamp span {
  font-size:11px
}
.map-stamp strong {
  font-size:12px;
  margin:4px 0
}
.map-stamp i {
  font:bold 17px var(--display);
  font-style:normal;
  letter-spacing:3px
}
.shop-marker {
  position:absolute;
  width:27px;
  height:27px;
  margin:-13px 0 0 -13px;
  background:#faf6e9ad;
  border:1px dashed #889c8890;
  border-radius:50%;
  display:grid;
  place-items:center;
  font:500 11px var(--display);
  color:#526b6880;
  transition:opacity .2s
}
.shop-marker.occupied {
  opacity:0
}
.character {
  position:absolute;
  left:80%;
  top:86.765%;
  width:10%;
  height:16%;
  transform:translate(-50%,-92%);
  z-index:10;
  pointer-events:none;
  will-change:left,top
}
.sprite {
  background-image:url("assets/mekakure-spritesheet.webp");
  background-size:800% 900%;
  background-repeat:no-repeat;
  background-position:0% 0%;
  width:100%;
  aspect-ratio:192/208;
  position:relative
}
.character>.sprite {
  position:absolute;
  bottom:0
}
.character-shadow {
  width:52%;
  height:9%;
  position:absolute;
  bottom:0;
  left:24%;
  border-radius:50%;
  background:#25414e2f;
  filter:blur(1px)
}
.character-bubble {
  position:absolute;
  bottom:96%;
  left:50%;
  transform:translateX(-50%);
  border-radius:8px;
  background:#fffbea;
  color:var(--ink);
  padding:7px 10px;
  font-size:10px;
  white-space:nowrap;
  box-shadow:0 2px 0 #30474228
}
.character-bubble:after {
  content:"";
  position:absolute;
  bottom:-5px;
  left:45%;
  border-left:5px solid transparent;
  border-right:5px solid transparent;
  border-top:6px solid #fffbea
}
.enemy {
  position:absolute;
  width:112px;
  max-width:16%;
  transform:translate(-50%,-65%);
  border:0;
  background:none;
  color:var(--ink);
  padding:0;
  pointer-events:auto;
  z-index:4;
  filter:drop-shadow(0 4px 2px #334a5125);
  transition:filter .15s;
  --kind:#557f76;
  animation:pop-in .3s cubic-bezier(.15,1.4,.6,1)
}
.enemy:hover {
  filter:drop-shadow(0 4px 5px #e78a5066);
  z-index:6
}
.enemy:focus-visible {
  outline:3px solid #f37d3e;
  outline-offset:5px;
  border-radius:6px
}
.enemy-art {
  width:49px;
  height:34px;
  background:var(--kind);
  border:1.7px solid #25454b;
  border-radius:4px;
  position:relative;
  margin:0 auto 3px;
  display:grid;
  place-items:center;
  transform:rotate(-5deg)
}
.enemy-art svg {
  width:44px;
  height:29px
}
.enemy.laptop {
  --kind:#637f9c
}
.enemy.gpu {
  --kind:#b28258
}
.enemy.laptop .enemy-art {
  transform:rotate(5deg)
}
.enemy.gpu .enemy-art {
  transform:rotate(-4deg);
  width:55px
}
.enemy-card {
  display:block;
  border:1.5px solid #627474;
  background:#fffbea;
  border-radius:6px;
  padding:6px 7px 5px;
  position:relative
}
.enemy-name {
  font-size:9px;
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-weight:700;
  line-height:1.4
}
.enemy-price {
  display:block;
  font:700 19px var(--display);
  letter-spacing:-.5px;
  margin:2px 0
}
.enemy-price small {
  font:9px var(--body);
  margin-right:3px;
  color:#697b75
}
.enemy-time {
  display:block;
  height:3px;
  background:#dae0d4;
  border-radius:2px;
  overflow:hidden
}
.enemy-time>i {
  display:block;
  width:100%;
  height:100%;
  background:#77a991;
  transform-origin:left
}
.enemy.urgent .enemy-time>i {
  background:#e47357
}
.enemy.urgent .enemy-card {
  border-color:#c85c41
}
.enemy-priority {
  position:absolute;
  top:-16px;
  right:-5px;
  display:none;
  color:#fffaf1;
  font-size:9px;
  font-weight:bold;
  line-height:20px;
  padding:0 6px;
  background:#e77539;
  border-radius:5px;
  box-shadow:0 1px 0 #b35f34
}
.enemy.selected {
  z-index:7
}
.enemy.selected .enemy-card {
  border:2px solid #ef824b;
  background:#fff5dc;
  box-shadow:0 0 0 3px #e7884820
}
.enemy.selected .enemy-priority {
  display:block
}
.enemy.targeting:not(.selected) .enemy-card {
  border-color:#386764;
  border-width:2px
}
.target-marker {
  position:absolute;
  width:65px;
  height:22px;
  border:2px dashed #e38241;
  border-radius:50%;
  transform:translate(-50%,-20%);
  z-index:3;
  animation:target-glow 1s ease-in-out infinite
}
.effect {
  position:absolute;
  transform:translate(-50%,-50%);
  font:800 14px var(--display);
  z-index:20;
  white-space:nowrap;
  pointer-events:none;
  animation:float-away 1.05s ease-out forwards;
  color:#294b50;
  text-shadow:0 1px 0 #fff9e9
}
.effect.payment {
  color:#f08036;
  font-size:17px;
  text-shadow:0 1px 1px #fff;
  animation:pay-away .55s ease-out forwards
}
.effect.purchase {
  padding:7px 10px;
  background:#2e685b;
  color:#fffbea;
  border:1px solid #ffffcc80;
  border-radius:7px;
  text-shadow:none;
  animation:float-away 1.4s ease-out forwards;
  font-size:12px;
  box-shadow:0 3px 0 #203e3329
}
.effect.miss {
  color:#9e3f30;
  background:#fff5e3dd;
  padding:4px 7px;
  border-radius:5px
}
.effect.spark {
  width:7px;
  height:7px;
  background:var(--orange);
  animation:spark-out .7s ease-out forwards
}
.wave-banner {
  position:absolute;
  top:10%;
  left:50%;
  transform:translateX(-50%);
  background:#1d3d3ce8;
  color:#f7f3df;
  border:1px solid #afc6a7;
  border-radius:7px;
  padding:13px 23px;
  font-weight:800;
  font-size:15px;
  letter-spacing:1px;
  z-index:30;
  box-shadow:0 6px 20px #183b4929;
  white-space:nowrap
}
.intro-card {
  position:absolute;
  left:6%;
  top:23%;
  width:390px;
  max-width:67%;
  padding:27px 29px 22px;
  background:#fbf6e8f5;
  border:1px solid #536b5a52;
  box-shadow:6px 7px 0 #38504326,0 8px 40px #38504321;
  border-radius:4px 20px 20px 20px;
  z-index:25;
  transform:rotate(-1deg);
  animation:card-appear .6s ease-out
}
.intro-kicker {
  color:#7e7158;
  font-size:10px;
  font-weight:700;
  letter-spacing:.9px
}
.intro-card h1 {
  font-size:clamp(24px,2.7vw,37px);
  letter-spacing:1px;
  line-height:1.55;
  margin:12px 0 10px;
  font-weight:900
}
.intro-card p {
  font-size:11px;
  color:#5a6962;
  line-height:1.9;
  margin:0 0 18px
}
.primary-button {
  width:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:13px;
  background:var(--orange);
  color:#213640;
  border:1px solid #c16d3c;
  border-bottom-width:3px;
  border-radius:8px;
  font-weight:800;
  font-size:12px;
  padding:13px 15px;
  box-shadow:0 3px 0 #713d1510;
  transition:background .15s,transform .15s
}
.primary-button:hover {
  background:#ffa165;
  transform:translateY(-1px)
}
.primary-button:active {
  transform:translateY(1px);
  border-bottom-width:1px;
  margin-bottom:2px
}
.primary-button .icon {
  width:20px;
  height:20px
}
.intro-note {
  font-size:9px;
  letter-spacing:.3px;
  color:#859086;
  display:block;
  text-align:center;
  margin-top:11px
}
.pause-overlay {
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  background:#18383a87;
  backdrop-filter:blur(5px);
  z-index:40;
  color:var(--cream);
  text-align:center
}
.pause-overlay h2 {
  font-size:23px;
  margin:15px 0 24px
}
.pause-overlay .eyebrow {
  color:#d2e4d6
}
.pause-overlay .primary-button {
  max-width:230px;
  margin:auto
}
.map-footer {
  min-height:42px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:10px 17px;
  color:#adc0b9;
  font-size:10px;
  line-height:1.6
}
.map-footer b {
  font:600 12px var(--display);
  color:#f2eddb
}
.legend-dot {
  width:6px;
  height:6px;
  border:1px solid #98bca6;
  background:#698f7d;
  border-radius:50%;
  display:inline-block;
  margin-right:6px;
  vertical-align:1px
}
.footer-divider {
  color:#617f83;
  margin:0 9px
}
.geography-note {
  font-size:9px;
  color:#758f90;
  white-space:nowrap
}
.side-panel {
  display:grid;
  gap:15px
}
.character-card {
  position:relative;
  overflow:hidden;
  background:#e9ecdb;
  color:var(--ink);
  border:1px solid #d7ddc8;
  border-radius:13px;
  padding:17px 18px 0
}
.character-card-top {
  display:flex;
  align-items:center;
  justify-content:space-between
}
.character-card-top .eyebrow {
  font:700 9px var(--display);
  color:#6b8075;
  letter-spacing:1.7px;
  margin:0
}
.level-tag {
  font:600 10px var(--display);
  padding:3px 6px;
  color:#3b5952;
  border:1px solid #b6c4b1;
  border-radius:4px;
  background:#fcfae571
}
.profile-art {
  height:145px;
  position:relative;
  margin:0 auto
}
.profile-sprite {
  width:143px;
  position:absolute;
  bottom:-3px;
  left:50%;
  transform:translateX(-50%);
  z-index:2
}
.profile-orbit {
  position:absolute;
  border:1px solid #6c907932;
  border-radius:50%;
  width:133px;
  height:133px;
  left:50%;
  top:11px;
  transform:translateX(-50%)
}
.orbit-two {
  width:160px;
  height:160px;
  top:0;
  border-style:dashed;
  border-color:#8da68a28
}
.profile-spark {
  position:absolute;
  color:#b28a43
}
.spark-one {
  left:24px;
  top:37px;
  transform:rotate(13deg);
  width:16px!important;
  height:16px!important
}
.spark-two {
  right:29px;
  bottom:28px;
  width:16px!important;
  height:16px!important;
  color:#729886
}
.profile-badge {
  position:absolute;
  right:0;
  top:22px;
  font:800 9px var(--display);
  letter-spacing:1.5px;
  color:#b28e5b;
  transform:rotate(11deg);
  border-top:1px solid #bca57188;
  border-bottom:1px solid #bca57188;
  padding:5px 2px;
  line-height:1.4
}
.character-name {
  text-align:center;
  margin-top:5px
}
.character-name h2 {
  font-size:18px;
  font-weight:900;
  letter-spacing:1px;
  margin:0
}
.character-name>span {
  font-size:9px;
  letter-spacing:1.1px;
  color:#849184;
  display:block;
  margin-top:5px
}
.character-quote {
  font-size:10px;
  text-align:center;
  color:#617366;
  margin:10px 0 15px;
  min-height:16px
}
.purchase-tally {
  border-top:1px solid #bcc8b35c;
  padding:12px 0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-size:10px;
  color:#576e60
}
.purchase-tally>span {
  display:flex;
  align-items:center;
  gap:6px
}
.purchase-tally .icon {
  width:15px;
  height:15px
}
.purchase-tally strong {
  font:700 23px var(--display);
  color:#34574a
}
.purchase-tally small {
  font:10px var(--body)
}
.section-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin:0 1px 10px
}
.section-heading h2 {
  margin:0;
  font-size:12px;
  letter-spacing:.3px
}
.section-heading>span {
  font:600 8px var(--display);
  color:#8aa5a5;
  letter-spacing:1.5px
}
.upgrade-list {
  display:grid;
  gap:7px
}
.upgrade-button {
  width:100%;
  background:#243c45;
  border:1px solid #3c5760;
  border-radius:8px;
  display:flex;
  align-items:center;
  gap:10px;
  padding:11px 10px;
  color:var(--cream);
  text-align:left;
  min-height:65px;
  transition:border-color .15s,background .15s,transform .15s
}
.upgrade-button:not(:disabled):hover {
  background:#2c484c;
  border-color:#dda163;
  transform:translateX(-2px)
}
.upgrade-button:not(:disabled) {
  border-color:#88704b
}
.upgrade-icon {
  color:#97b4ae;
  width:33px;
  height:33px;
  display:grid;
  place-items:center;
  background:#94b3a90d;
  border-radius:7px
}
.upgrade-icon .icon {
  width:21px;
  height:21px
}
.upgrade-button:not(:disabled) .upgrade-icon {
  color:#f3bd75
}
.upgrade-copy {
  min-width:0;
  flex:1
}
.upgrade-copy>strong {
  font-size:11px;
  letter-spacing:.3px;
  display:block;
  margin-bottom:5px
}
.upgrade-copy small {
  display:block;
  font:9px var(--body);
  color:#9cb0b0;
  line-height:1.4
}
.upgrade-cost {
  font:600 16px var(--display);
  color:#f4c283;
  white-space:nowrap;
  text-align:right
}
.upgrade-cost small {
  font:8px var(--body);
  margin-left:2px
}
.upgrade-levels {
  display:flex;
  gap:3px;
  margin-top:6px;
  justify-content:flex-end
}
.upgrade-levels i {
  display:block;
  width:6px;
  height:3px;
  background:#567078;
  border-radius:1px
}
.upgrade-levels i.filled {
  background:#f0b777
}
.upgrade-button:disabled {
  background:#1c333d;
  border-color:#334d56
}
.upgrade-button:disabled .upgrade-cost {
  color:#708b91
}
.upgrade-note {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:4px;
  font-size:9px;
  color:#849e9e;
  margin:11px 0 0
}
.upgrade-note .icon {
  width:11px;
  height:11px
}
.receipt-strip {
  display:flex;
  align-items:center;
  gap:20px;
  border:1px solid #3a5159;
  background:#1b333c;
  border-radius:11px;
  min-height:85px;
  margin-top:20px;
  padding:16px 20px
}
.receipt-heading {
  display:flex;
  align-items:center;
  gap:10px;
  color:#c6d6cb;
  flex-shrink:0
}
.receipt-heading>.icon {
  width:25px;
  height:25px;
  color:#90ac9e
}
.receipt-heading>span {
  font-size:11px;
  font-weight:700
}
.receipt-heading small {
  display:block;
  font:8px var(--display);
  letter-spacing:1.5px;
  color:#7c9798;
  margin-top:5px
}
.purchase-log {
  display:flex;
  gap:9px;
  flex:1;
  min-width:0;
  overflow:hidden;
  padding:3px 0
}
.empty-log {
  color:#829a9b;
  font-size:10px;
  padding-left:15px;
  border-left:1px solid #3a5159;
  line-height:1.7
}
.receipt-item {
  display:flex;
  align-items:center;
  gap:7px;
  padding:9px 11px;
  border:1px dashed #58776c;
  border-radius:5px;
  background:#71998a09;
  white-space:nowrap;
  animation:pop-in .25s ease-out
}
.receipt-item svg {
  width:24px;
  height:19px
}
.receipt-item strong {
  display:block;
  font-size:9px;
  font-weight:600;
  color:#c3d2c9
}
.receipt-item small {
  font:9px var(--display);
  color:#90b497
}
.best-score {
  border-left:1px solid #3b535a;
  padding-left:18px;
  flex-shrink:0;
  display:flex;
  gap:5px;
  align-items:baseline
}
.best-score>span {
  font:8px var(--display);
  letter-spacing:1px;
  color:#7e9b9b;
  align-self:center;
  margin-right:3px
}
.best-score strong {
  font:500 23px var(--display);
  color:#c1c9b3
}
.best-score small {
  font-size:9px;
  color:#85a1a0
}
.page-footer {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  color:#789094;
  min-height:55px;
  font:8px var(--display);
  letter-spacing:1.2px
}
.page-footer b {
  font-weight:500;
  color:#a3b4b1
}
.page-footer i {
  font-style:normal;
  margin:0 9px;
  color:#cf975f
}
.game-dialog {
  color:var(--ink);
  background:#faf5e9;
  border:1px solid #c0cebc;
  border-radius:19px;
  width:min(450px,calc(100% - 32px));
  padding:30px;
  text-align:center;
  box-shadow:0 20px 100px #06181d70;
  max-height:calc(100dvh - 40px);
  overflow:auto
}
.game-dialog::backdrop {
  background:#0e252fc4;
  backdrop-filter:blur(5px)
}
.dialog-kicker {
  font:700 10px var(--display);
  color:#7a936f;
  letter-spacing:2.3px
}
.game-dialog h2 {
  font-size:24px;
  margin:15px 0 12px;
  letter-spacing:.2px;
  line-height:1.5
}
.game-dialog>p,.game-dialog .notice-dialog-content>p {
  font-size:12px;
  line-height:1.9;
  color:#6a796d
}
.result-icon {
  width:65px;
  height:65px;
  border-radius:50%;
  background:#e5ecd7;
  color:#527a5b;
  display:grid;
  place-items:center;
  margin:24px auto 8px
}
.result-icon .icon {
  width:32px;
  height:32px
}
.challenge-cutin[hidden] {
  display:none
}
.game-dialog.challenge-result-dialog {
  --result-accent:#f1c96b;
  --result-deep:#16363a;
  width:min(720px,calc(100% - 40px));
  max-height:calc(100dvh - 40px);
  padding:0;
  overflow:hidden;
  border-color:#d6b65e;
  text-align:left;
  background:#fbf5e7
}
.challenge-cutin {
  position:relative;
  height:246px;
  overflow:hidden;
  isolation:isolate;
  color:#fff9dd;
  background:
    radial-gradient(circle at 80% 25%,#f7df8490 0 13%,transparent 45%),
    linear-gradient(112deg,#102a31 0 45%,#2b695e 72%,#d4a850 100%)
}
.challenge-cutin:before {
  content:"";
  position:absolute;
  z-index:-1;
  inset:-40% 47% -40% -18%;
  transform:skewX(-17deg);
  border-right:1px solid #fff0a380;
  background:linear-gradient(100deg,#081e26f5,#1d4145e8)
}
.challenge-cutin-lines {
  position:absolute;
  z-index:-1;
  inset:0;
  opacity:.26;
  background:repeating-linear-gradient(164deg,transparent 0 19px,#fff3bd 20px 21px,transparent 22px 39px)
}
.challenge-cutin-copy {
  position:absolute;
  z-index:3;
  left:38px;
  top:50%;
  width:52%;
  transform:translateY(-50%);
  text-shadow:0 3px 18px #06181dc7
}
.challenge-cutin-copy span {
  display:block;
  margin-bottom:12px;
  color:var(--result-accent);
  font:800 11px var(--display);
  letter-spacing:3.2px
}
.challenge-cutin-copy strong {
  display:block;
  font:900 45px/1.05 var(--display);
  letter-spacing:1px
}
.challenge-cutin-portrait {
  position:absolute;
  z-index:2;
  top:0;
  right:0;
  width:52%;
  height:100%;
  overflow:hidden
}
.challenge-cutin-portrait:after {
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,var(--result-deep) 0,transparent 35%,transparent 100%);
  pointer-events:none
}
.challenge-cutin-sprite {
  position:absolute;
  top:-22px;
  right:-10px;
  width:350px;
  aspect-ratio:192/208;
  background-image:url("assets/mekakure-spritesheet.webp");
  background-size:800% 900%;
  background-repeat:no-repeat;
  filter:drop-shadow(-13px 12px 12px #06181d7a)
}
.challenge-result-dialog[data-result="success"] .challenge-cutin-sprite {
  top:-48px;
  right:0;
  width:354px;
  aspect-ratio:1;
  background-image:url("assets/mekakure-challenge-success.png");
  background-size:contain;
  background-position:center;
  background-repeat:no-repeat
}
.challenge-result-dialog[data-result="failure"] {
  --result-accent:#eab775;
  --result-deep:#1a2a35;
  border-color:#8ea1a5
}
.challenge-result-dialog[data-result="failure"] .challenge-cutin {
  background:
    radial-gradient(circle at 80% 25%,#9db0b466 0 13%,transparent 45%),
    linear-gradient(112deg,#162631 0 48%,#405965 75%,#8d725d 100%)
}
.challenge-result-dialog[data-result="failure"] .challenge-cutin-sprite {
  top:-14px;
  width:338px;
  background-position:42.857143% 62.5%;
  filter:saturate(.78) drop-shadow(-13px 12px 12px #06181d85)
}
.challenge-result-dialog .notice-dialog-content {
  padding:27px 34px 30px;
  text-align:left
}
.challenge-result-dialog .dialog-kicker,.challenge-result-dialog .result-icon {
  display:none
}
.challenge-result-dialog h2 {
  margin:0 0 5px;
  font-size:25px
}
.challenge-result-dialog .notice-dialog-content>p {
  margin:0;
  color:#65756c
}
.notice-detail {
  margin:18px 0
}
.challenge-result-dialog .notice-detail {
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:18px;
  min-height:50px;
  padding:13px 16px;
  border-left:4px solid var(--result-accent);
  border-radius:4px 10px 10px 4px;
  background:#e8eadc
}
.challenge-result-dialog[data-result="failure"] .notice-detail {
  background:#e5e5dc
}
.challenge-result-dialog .notice-detail strong {
  color:#254b45;
  font:800 17px var(--display)
}
.challenge-result-dialog .notice-detail small {
  color:#6a796d;
  font-size:10px;
  line-height:1.6;
  text-align:right
}
.challenge-result-dialog #notice-done {
  width:100%
}
.challenge-result-dialog[open] .challenge-cutin-sprite {
  animation:challenge-portrait-in .46s cubic-bezier(.2,.8,.2,1) both
}
.challenge-result-dialog[open] .challenge-cutin-copy {
  animation:challenge-copy-in .38s .08s cubic-bezier(.2,.8,.2,1) both
}
.result-stats {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
  margin:22px 0
}
.result-stat {
  background:#eaeede;
  border:1px solid #d6deca;
  border-radius:7px;
  padding:12px 5px
}
.result-stat small {
  display:block;
  font-size:9px;
  color:#7b8b73
}
.result-stat strong {
  display:block;
  font:600 24px var(--display);
  margin-top:7px
}
.result-tip {
  font-size:11px!important;
  min-height:22px
}
.text-button {
  border:0;
  color:#6c816c;
  font-size:11px;
  background:none;
  padding:14px;
  text-decoration:underline;
  text-underline-offset:4px
}
.help-dialog {
  text-align:left;
  width:min(580px,calc(100% - 30px));
  padding:32px
}
.dialog-close {
  position:absolute;
  top:17px;
  right:17px;
  border-color:#b7c4b6;
  color:#607b71
}
.help-dialog h2 {
  font-size:22px;
  margin-top:20px
}
.help-steps {
  list-style:none;
  padding:0;
  margin:24px 0
}
.help-steps li {
  display:flex;
  gap:15px;
  margin-bottom:19px
}
.help-steps li>b {
  font:600 17px var(--display);
  color:#d68e50;
  padding-top:1px
}
.help-steps li strong {
  font-size:12px
}
.help-steps li p {
  font-size:11px;
  line-height:1.85;
  color:#6a7b6e;
  margin:5px 0 0
}
.help-shortcuts {
  display:flex;
  gap:20px;
  font-size:10px;
  color:#6b7d6b;
  border-top:1px solid #cfdbc7;
  padding-top:15px;
  flex-wrap:wrap
}
kbd {
  font:10px var(--display);
  display:inline-block;
  padding:3px 6px;
  background:#e4e9d9;
  border:1px solid #c9d1bd;
  border-radius:3px
}
.save-note {
  font-size:10px!important;
  margin:18px 0
}
.toast {
  position:fixed;
  bottom:28px;
  left:50%;
  transform:translate(-50%,15px);
  padding:12px 22px;
  border:1px solid #94bfa4;
  background:#e4edd7;
  color:#304f42;
  border-radius:9px;
  z-index:100;
  font-size:12px;
  box-shadow:0 5px 20px #0004;
  opacity:0;
  transition:opacity .2s,transform .2s;
  pointer-events:none;
  max-width:90vw;
  white-space:normal;
  text-align:center
}
.toast.show {
  opacity:1;
  transform:translate(-50%,0)
}
.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  margin:-1px;
  padding:0;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0
}
@keyframes pop-in {
  from {
    opacity:0;
    scale:.7
  }
  to {
    opacity:1;
    scale:1
  }
}
@keyframes challenge-portrait-in {
  from {
    opacity:0;
    transform:translateX(46px) scale(1.04)
  }
  to {
    opacity:1;
    transform:translateX(0) scale(1)
  }
}
@keyframes challenge-copy-in {
  from {
    opacity:0;
    transform:translate(-28px,-50%)
  }
  to {
    opacity:1;
    transform:translate(0,-50%)
  }
}
@keyframes card-appear {
  from {
    opacity:0;
    translate:0 12px
  }
  to {
    opacity:1;
    translate:0 0
  }
}
@keyframes target-glow {
  50% {
    opacity:.5
  }
}
@keyframes float-away {
  0% {
    opacity:0;
    translate:0 8px
  }
  15% {
    opacity:1
  }
  70% {
    opacity:1
  }
  100% {
    opacity:0;
    translate:0 -40px
  }
}
@keyframes pay-away {
  0% {
    opacity:1;
    translate:-12px 10px
  }
  100% {
    opacity:0;
    translate:8px -22px
  }
}
@keyframes spark-out {
  from {
    opacity:1;
    translate:0 0;
    rotate:0deg
  }
  to {
    opacity:0;
    translate:var(--dx) var(--dy);
    rotate:150deg
  }
}
@media(min-width:1500px) {
  .app-shell {
    padding:0 45px
  }
  .profile-art {
    height:170px
  }
  .profile-sprite {
    width:165px
  }
  .upgrade-button {
    padding:13px 11px;
    min-height:72px
  }
  .character-card {
    padding-top:21px
  }
  .character-quote {
    margin-bottom:19px
  }
  .map-stamp {
    width:110px;
    height:110px
  }
}
@media(max-width:1150px) {
  .app-shell {
    padding:0 25px
  }
  .masthead {
    min-height:93px
  }
  .edition {
    display:none
  }
  .game-layout {
    grid-template-columns:minmax(0,1fr) 235px;
    gap:15px
  }
  .resource-bar {
    grid-template-columns:1.05fr 1.3fr 1.1fr 1fr
  }
  .round-stat,.resource {
    padding:15px 17px
  }
  .resource {
    gap:9px
  }
  .resource-symbol {
    width:30px;
    height:35px;
    background:none
  }
  .resource small {
    font-size:9px
  }
  .resource strong {
    font-size:24px
  }
  .status-tag {
    margin-left:5px;
    font-size:8px;
    padding:0 4px
  }
  .resource-bar {
    min-height:91px
  }
  .profile-art {
    height:116px
  }
  .profile-sprite {
    width:121px
  }
  .profile-orbit {
    width:105px;
    height:105px
  }
  .orbit-two {
    width:120px;
    height:120px
  }
  .character-card {
    padding:14px 14px 0
  }
  .character-name h2 {
    font-size:16px
  }
  .character-name>span {
    margin-top:4px
  }
  .character-quote {
    margin:7px 0 10px;
    font-size:9px
  }
  .purchase-tally {
    padding:9px 0
  }
  .upgrade-button {
    min-height:59px;
    padding:9px 9px;
    gap:6px
  }
  .upgrade-icon {
    width:28px
  }
  .upgrade-copy>strong {
    font-size:10px
  }
  .upgrade-copy small {
    font-size:8px
  }
  .upgrade-cost {
    font-size:14px
  }
  .side-panel {
    gap:13px
  }
  .map-subtitle {
    display:none
  }
  .intro-card {
    padding:22px 23px 19px;
    top:19%
  }
  .intro-card p {
    font-size:10px
  }
  .intro-note {
    font-size:8px
  }
  .intro-card h1 {
    margin:9px 0
  }
  .map-stamp {
    width:77px;
    height:77px
  }
  .map-stamp strong {
    font-size:10px
  }
  .map-stamp i {
    font-size:13px
  }
  .map-stamp span {
    font-size:9px
  }
  .enemy {
    width:99px
  }
  .enemy-name {
    font-size:8px
  }
  .enemy-price {
    font-size:17px
  }
  .enemy-art {
    width:43px;
    height:29px
  }
  .enemy-art svg {
    width:36px;
    height:24px
  }
  .enemy.gpu .enemy-art {
    width:47px
  }
  .enemy-card {
    padding:4px 5px
  }
  .map-footer {
    font-size:9px;
    padding:8px 12px
  }
  .geography-note {
    display:none
  }
  .page-footer>span:nth-child(2) {
    font-size:7px;
    letter-spacing:.6px
  }
  .receipt-strip {
    gap:13px
  }
  .receipt-heading>span {
    font-size:10px
  }
}
@media(max-width:900px) {
  .app-shell {
    padding:0 18px
  }
  .brand strong {
    font-size:18px
  }
  .brand strong span {
    font-size:13px
  }
  .brand-mark {
    width:43px;
    height:43px
  }
  .resource-bar {
    grid-template-columns:1fr 1.3fr 1.15fr 1.1fr
  }
  .round-stat,.resource {
    padding:14px 13px
  }
  .resource-symbol {
    display:none
  }
  .resource strong {
    font-size:24px
  }
  .resource small {
    font-size:8px
  }
  .game-layout {
    grid-template-columns:minmax(0,1fr) 205px;
    gap:12px
  }
  .character-card {
    padding:12px 11px 0
  }
  .profile-art {
    height:96px
  }
  .profile-sprite {
    width:106px
  }
  .profile-orbit {
    height:90px;
    width:90px
  }
  .orbit-two {
    width:100px;
    height:100px
  }
  .profile-badge {
    font-size:8px;
    right:-2px;
    top:17px
  }
  .spark-one {
    left:13px;
    top:25px
  }
  .spark-two {
    right:17px
  }
  .character-name h2 {
    font-size:14px
  }
  .character-name>span {
    font-size:8px
  }
  .character-quote {
    font-size:8px
  }
  .purchase-tally {
    font-size:8px
  }
  .purchase-tally strong {
    font-size:20px
  }
  .section-heading h2 {
    font-size:11px
  }
  .section-heading>span {
    font-size:7px;
    letter-spacing:1px
  }
  .upgrade-button {
    min-height:53px;
    padding:8px;
    gap:5px
  }
  .upgrade-copy small {
    font-size:7px
  }
  .upgrade-icon {
    width:23px
  }
  .upgrade-icon .icon {
    width:18px
  }
  .upgrade-cost {
    font-size:12px
  }
  .upgrade-copy>strong {
    margin-bottom:4px
  }
  .upgrade-note {
    font-size:8px
  }
  .intro-card {
    left:5%;
    top:15%;
    padding:18px 19px 15px;
    max-width:72%
  }
  .intro-kicker {
    font-size:8px
  }
  .intro-card h1 {
    font-size:25px;
    margin:7px 0 8px
  }
  .intro-card p {
    font-size:9px;
    line-height:1.7;
    margin-bottom:12px
  }
  .primary-button {
    padding:11px 12px;
    font-size:11px;
    gap:7px
  }
  .intro-note {
    font-size:7px;
    margin-top:8px
  }
  .map-toolbar {
    height:44px;
    padding:0 11px
  }
  .map-title strong {
    font-size:10px
  }
  .enemy {
    max-width:18%
  }
  .enemy-price {
    font-size:15px
  }
  .enemy-name {
    font-size:7px
  }
  .enemy-priority {
    font-size:7px;
    line-height:16px;
    top:-13px
  }
  .enemy-art {
    height:25px;
    margin-bottom:1px
  }
  .enemy-art svg {
    height:21px
  }
  .character-bubble {
    font-size:8px;
    padding:5px 7px
  }
  .map-stamp {
    display:none
  }
  .map-footer {
    font-size:8px
  }
  .receipt-strip {
    padding:13px;
    min-height:76px
  }
  .receipt-heading .icon {
    display:none
  }
  .best-score {
    padding-left:12px
  }
  .page-footer>span:nth-child(2) {
    display:none
  }
  .status-tag {
    display:none
  }
}
@media(max-width:700px) {
  .app-shell {
    padding:0 12px
  }
  .masthead {
    min-height:82px;
    gap:8px
  }
  .brand {
    gap:9px
  }
  .brand-mark {
    width:37px;
    height:37px;
    border-radius:10px
  }
  .brand-mark .icon {
    width:23px;
    height:23px
  }
  .brand small {
    font-size:7px;
    letter-spacing:2px;
    margin-bottom:5px
  }
  .brand strong {
    font-size:15px;
    letter-spacing:.5px
  }
  .brand strong span {
    font-size:10px;
    display:block;
    margin:3px 0 0;
    letter-spacing:1.5px
  }
  .header-tools {
    gap:6px
  }
  .header-tools .tool-button {
    width:32px;
    height:32px
  }
  .header-tools .icon {
    width:18px
  }
  .resource-bar {
    grid-template-columns:1fr 1.12fr 1fr 1fr;
    min-height:77px;
    margin-bottom:12px;
    border-radius:10px
  }
  .round-stat,.resource {
    padding:12px 9px
  }
  .eyebrow {
    font-size:8px;
    letter-spacing:0;
    margin-bottom:6px
  }
  .round-stat strong {
    font-size:25px
  }
  .round-stat>div>span:not(.status-tag) {
    font-size:11px
  }
  .resource strong {
    font-size:20px;
    letter-spacing:0
  }
  .resource strong em {
    font-size:8px
  }
  .resource small {
    display:none
  }
  .health-track {
    width:65px;
    height:2px;
    margin-top:4px
  }
  .round-stat:after,.resource:not(:last-child):after {
    top:15px;
    bottom:15px
  }
  .game-layout {
    display:flex;
    flex-direction:column;
    gap:13px
  }
  .game-panel {
    width:100%;
    border-radius:10px
  }
  .map-toolbar {
    height:44px;
    padding:0 12px
  }
  .map-title strong {
    font-size:11px
  }
  .map-subtitle {
    display:inline;
    font-size:8px
  }
  .arena {
    min-height:0
  }
  .intro-card {
    max-width:66%;
    left:6%;
    top:16%;
    padding:17px 19px 14px
  }
  .intro-card h1 {
    font-size:26px;
    line-height:1.4;
    margin:8px 0 9px
  }
  .intro-kicker {
    font-size:8px
  }
  .intro-card p {
    font-size:9px;
    margin-bottom:11px
  }
  .intro-card .primary-button {
    padding:10px;
    font-size:10px
  }
  .intro-note {
    font-size:7px
  }
  .district-label {
    font-size:15px
  }
  .map-footer {
    font-size:9px;
    min-height:37px
  }
  .enemy {
    max-width:17%;
    width:105px
  }
  .enemy-price {
    font-size:16px
  }
  .enemy-name {
    font-size:7px
  }
  .side-panel {
    width:100%;
    display:grid;
    grid-template-columns:156px 1fr;
    gap:12px
  }
  .character-card {
    padding:12px 10px 0;
    border-radius:10px
  }
  .character-card-top .eyebrow {
    font-size:7px;
    letter-spacing:.7px
  }
  .level-tag {
    font-size:8px;
    padding:2px 4px
  }
  .profile-art {
    height:90px
  }
  .profile-sprite {
    width:100px
  }
  .profile-orbit {
    width:83px;
    height:83px;
    top:7px
  }
  .orbit-two {
    width:95px;
    height:95px;
    top:0
  }
  .profile-badge {
    font-size:6px;
    letter-spacing:.8px;
    right:0;
    top:13px
  }
  .spark-one {
    left:4px;
    top:26px;
    width:12px!important
  }
  .spark-two {
    right:6px;
    width:12px!important;
    bottom:20px
  }
  .character-name h2 {
    font-size:12px;
    letter-spacing:.3px
  }
  .character-name>span {
    display:none
  }
  .character-quote {
    font-size:7px;
    margin:7px 0 8px;
    min-height:20px;
    line-height:1.5
  }
  .purchase-tally {
    font-size:7px;
    padding:8px 0;
    gap:3px
  }
  .purchase-tally>span {
    gap:3px
  }
  .purchase-tally .icon {
    width:12px
  }
  .purchase-tally strong {
    font-size:18px
  }
  .purchase-tally small {
    font-size:7px
  }
  .upgrade-panel {
    padding:1px 0
  }
  .section-heading {
    margin-bottom:8px
  }
  .section-heading h2 {
    font-size:10px
  }
  .section-heading>span {
    font-size:7px
  }
  .upgrade-list {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:7px
  }
  .upgrade-button {
    min-height:78px;
    padding:9px 8px;
    flex-wrap:wrap;
    gap:5px;
    border-radius:7px;
    position:relative
  }
  .upgrade-icon {
    width:22px;
    height:23px
  }
  .upgrade-icon .icon {
    width:18px
  }
  .upgrade-copy {
    flex:1;
    min-width:54px
  }
  .upgrade-copy>strong {
    font-size:9px;
    white-space:nowrap
  }
  .upgrade-copy small {
    font-size:7px;
    white-space:nowrap
  }
  .upgrade-cost {
    font-size:13px;
    margin-left:auto;
    display:flex;
    align-items:center;
    gap:2px
  }
  .upgrade-cost small {
    font-size:7px
  }
  .upgrade-levels {
    margin:0 0 0 5px;
    gap:2px
  }
  .upgrade-levels i {
    width:4px;
    height:3px
  }
  .upgrade-note {
    font-size:7px;
    margin:8px 0 0
  }
  .receipt-strip {
    margin-top:13px;
    gap:10px;
    min-height:68px;
    padding:12px
  }
  .receipt-heading>span {
    font-size:9px
  }
  .receipt-heading small {
    font-size:6px;
    letter-spacing:.8px
  }
  .empty-log {
    font-size:8px;
    padding-left:8px
  }
  .best-score {
    gap:3px;
    padding-left:8px
  }
  .best-score>span {
    font-size:7px;
    margin-right:1px
  }
  .best-score strong {
    font-size:20px
  }
  .best-score small {
    font-size:8px
  }
  .receipt-item {
    padding:7px 9px
  }
  .receipt-item strong {
    font-size:8px
  }
  .receipt-item svg {
    width:20px
  }
  .page-footer {
    min-height:45px;
    font-size:6px;
    letter-spacing:.8px
  }
  .game-dialog {
    padding:25px 22px
  }
  .help-dialog {
    padding:28px 23px
  }
  .help-dialog h2 {
    font-size:19px;
    margin-top:25px
  }
  .help-steps li {
    gap:12px;
    margin-bottom:17px
  }
  .help-steps li strong {
    font-size:11px
  }
  .help-steps li p {
    font-size:10px
  }
  .help-shortcuts {
    gap:10px;
    font-size:9px
  }
  .pause-overlay h2 {
    font-size:19px
  }
  .wave-banner {
    font-size:12px;
    padding:10px 16px
  }
}
@media(max-width:420px) {
  .map-subtitle {
    display:none
  }
  .side-panel {
    grid-template-columns:133px 1fr;
    gap:8px
  }
  .upgrade-button {
    padding:8px 6px;
    gap:3px;
    min-height:78px
  }
  .upgrade-icon {
    display:none
  }
  .upgrade-copy {
    min-width:0;
    flex-basis:100%
  }
  .upgrade-copy>strong {
    font-size:9px
  }
  .upgrade-copy small {
    font-size:7px
  }
  .upgrade-cost {
    margin-left:0
  }
  .upgrade-levels {
    margin-left:7px
  }
  .intro-card {
    padding:15px 15px 12px;
    top:14%;
    max-width:68%
  }
  .intro-card h1 {
    font-size:22px
  }
  .intro-card p {
    font-size:8px;
    line-height:1.65;
    margin-bottom:9px
  }
  .intro-card .primary-button {
    font-size:9px;
    padding:8px 7px;
    gap:5px
  }
  .intro-card .primary-button .icon {
    width:16px
  }
  .intro-kicker {
    font-size:6.5px;
    letter-spacing:.4px
  }
  .intro-note {
    font-size:6px;
    margin-top:6px
  }
  .district-label {
    font-size:12px;
    letter-spacing:2px
  }
  .district-label span {
    font-size:5px;
    letter-spacing:2px
  }
  .resource strong {
    font-size:18px
  }
  .eyebrow {
    font-size:7px
  }
  .round-stat strong {
    font-size:23px
  }
  .resource strong em {
    font-size:7px
  }
  .enemy-price {
    font-size:13px
  }
  .enemy-name {
    font-size:6px
  }
  .enemy-card {
    padding:3px
  }
  .enemy-art {
    width:33px;
    height:22px
  }
  .enemy-art svg {
    width:29px;
    height:18px
  }
  .enemy.gpu .enemy-art {
    width:37px
  }
  .map-footer {
    font-size:8px
  }
  .footer-divider {
    margin:0 5px
  }
  .character-bubble {
    font-size:7px
  }
  .best-score>span {
    display:none
  }
  .character-card-top .eyebrow {
    font-size:6px
  }
  .character-name h2 {
    font-size:11px
  }
}
.next-wave-button {
  background:#eb9b5d;
  border:1px solid #cd8752;
  border-radius:6px;
  color:#233b42;
  padding:6px 10px;
  font-size:10px;
  font-weight:800;
  white-space:nowrap
}
.next-wave-button:hover {
  background:#ffb97d
}
.carried-bag {
  position:absolute;
  left:66%;
  bottom:7%;
  color:#c48644;
  background:#f2d598;
  border:1px solid #775737;
  border-radius:3px;
  display:grid;
  place-items:center;
  width:25%;
  aspect-ratio:4/5;
  transform:rotate(-10deg)
}
.carried-bag .icon {
  width:85%;
  height:85%;
  stroke-width:1.4
}
.wave-banner {
  pointer-events:none
}
@media(min-width:1000px) and (max-height:950px) {
  .app-shell {
    max-width:calc((100dvh - 265px)*1.4706 + 279px);
    padding:0 20px
  }
  .masthead {
    min-height:72px
  }
  .brand-mark {
    width:37px;
    height:37px;
    border-radius:10px
  }
  .brand-mark .icon {
    width:24px;
    height:24px
  }
  .brand small {
    font-size:8px;
    letter-spacing:2px
  }
  .brand strong {
    font-size:16px
  }
  .brand strong span {
    font-size:12px
  }
  .edition {
    font-size:8px;
    letter-spacing:.5px;
    margin-right:5px
  }
  .header-tools {
    gap:7px
  }
  .header-tools .tool-button {
    width:31px;
    height:31px
  }
  .resource-bar {
    min-height:70px;
    margin-bottom:12px
  }
  .round-stat,.resource {
    padding:12px 15px
  }
  .resource {
    gap:8px
  }
  .resource-symbol {
    width:27px;
    height:30px;
    background:none
  }
  .resource-symbol .icon {
    width:20px;
    height:20px
  }
  .eyebrow {
    font-size:8px;
    margin-bottom:4px
  }
  .resource strong,.round-stat strong {
    font-size:24px
  }
  .resource strong em {
    font-size:8px
  }
  .resource small {
    font-size:8px;
    padding-top:11px
  }
  .round-stat>div>span:not(.status-tag) {
    font-size:11px
  }
  .status-tag {
    font-size:7px;
    line-height:16px;
    margin-left:5px
  }
  .health-track {
    width:83px;
    height:2px;
    margin-top:5px
  }
  .game-layout {
    grid-template-columns:minmax(0,1fr) 225px;
    gap:14px
  }
  .map-toolbar {
    height:44px;
    padding:0 12px
  }
  .map-title {
    gap:7px
  }
  .map-title strong {
    font-size:10px
  }
  .map-subtitle {
    font-size:8px;
    padding-left:7px;
    margin-left:0
  }
  .map-footer {
    min-height:35px;
    font-size:8px;
    padding:8px 12px
  }
  .geography-note {
    display:none
  }
  .side-panel {
    gap:12px
  }
  .character-card {
    padding:13px 14px 0
  }
  .character-card-top .eyebrow {
    font-size:8px;
    letter-spacing:1px
  }
  .profile-art {
    height:clamp(90px,calc(100dvh - 625px),155px)
  }
  .profile-sprite {
    width:clamp(105px,calc(100dvh - 615px),150px)
  }
  .profile-orbit {
    width:100px;
    height:100px;
    top:4px
  }
  .orbit-two {
    width:120px;
    height:120px;
    top:-5px
  }
  .profile-badge {
    font-size:7px;
    top:18px
  }
  .spark-one {
    left:15px;
    top:27px
  }
  .spark-two {
    right:17px;
    bottom:20px
  }
  .character-name h2 {
    font-size:15px
  }
  .character-name>span {
    font-size:8px;
    margin-top:3px
  }
  .character-quote {
    font-size:8px;
    margin:8px 0 10px;
    min-height:13px
  }
  .purchase-tally {
    font-size:9px;
    padding:9px 0
  }
  .purchase-tally strong {
    font-size:21px
  }
  .section-heading {
    margin-bottom:9px
  }
  .section-heading h2 {
    font-size:11px
  }
  .section-heading>span {
    font-size:7px
  }
  .upgrade-list {
    gap:6px
  }
  .upgrade-button {
    min-height:58px;
    padding:9px 8px;
    gap:7px
  }
  .upgrade-icon {
    width:27px;
    height:28px
  }
  .upgrade-icon .icon {
    width:19px;
    height:19px
  }
  .upgrade-copy>strong {
    font-size:10px;
    margin-bottom:4px
  }
  .upgrade-copy small {
    font-size:8px
  }
  .upgrade-cost {
    font-size:14px
  }
  .upgrade-note {
    font-size:8px;
    margin-top:9px
  }
  .intro-card {
    padding:20px 23px 18px;
    top:18%;
    max-width:66%
  }
  .intro-card h1 {
    font-size:clamp(24px,2.3vw,32px);
    line-height:1.45;
    margin:10px 0
  }
  .intro-card p {
    font-size:10px;
    margin-bottom:14px
  }
  .intro-kicker {
    font-size:8px
  }
  .intro-note {
    font-size:8px
  }
  .intro-card .primary-button {
    font-size:11px;
    padding:11px
  }
  .enemy {
    max-width:17%;
    width:102px
  }
  .enemy-name {
    font-size:8px
  }
  .enemy-price {
    font-size:17px
  }
  .enemy-card {
    padding:4px 5px
  }
  .enemy-art {
    width:43px;
    height:29px
  }
  .enemy-art svg {
    width:37px;
    height:25px
  }
  .enemy.gpu .enemy-art {
    width:48px
  }
  .map-stamp {
    width:78px;
    height:78px
  }
  .map-stamp strong {
    font-size:10px
  }
  .map-stamp i {
    font-size:13px
  }
  .receipt-strip {
    margin-top:12px;
    min-height:66px;
    padding:11px 14px;
    gap:13px
  }
  .receipt-heading>span {
    font-size:10px
  }
  .receipt-heading .icon {
    width:20px
  }
  .receipt-heading small {
    font-size:7px
  }
  .empty-log {
    font-size:9px
  }
  .page-footer {
    min-height:35px;
    font-size:7px
  }
  .page-footer>span:nth-child(2) {
    display:none
  }
}
@media(prefers-reduced-motion:reduce) {
  *,*:before,*:after {
    animation:none!important;
    transition:none!important
  }
  .effect {
    display:none
  }
  .character {
    will-change:auto
  }
}
