/* Forca dos Solos — depende de css/tokens.css (carregado antes). */

body {
  margin: 0;
  min-height: 100vh;
  color: var(--ink);
  font-family: var(--font-sans);
  background: var(--paper);
}

button {
  font: inherit;
}

.app {
  width: min(1240px, calc(100% - 28px));
  min-height: 100vh;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 18px;
  align-items: center;
  padding: 22px 0;
}

.game,
.side {
  min-width: 0;
}

.game {
  display: grid;
  gap: 14px;
}

.hero,
.word-panel,
.keyboard,
.panel,
.ranking-dialog {
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}

.hero {
  min-height: 96px;
  padding: 18px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.eyebrow {
  margin: 0 0 6px;
  color: var(--clay-strong);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

h1,
h2,
p {
  margin-top: 0;
  font-family: var(--font-display);
  color: var(--forest-strong);
}

h1 {
  margin-bottom: 0;
  font-size: clamp(2rem, 5vw, 3.6rem);
  line-height: 1.04;
  letter-spacing: -0.01em;
}

h2 {
  margin-bottom: 12px;
  font-size: 1.02rem;
}

.scoreboard {
  display: grid;
  grid-template-columns: repeat(2, minmax(88px, 1fr));
  gap: 8px;
}

.scoreboard span {
  min-height: 52px;
  padding: 8px 12px;
  border-radius: var(--radius-sm);
  color: var(--surface);
  background: var(--forest-strong);
  display: grid;
  align-content: center;
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: 0.82rem;
}

.scoreboard strong {
  font-family: var(--font-mono);
  font-size: 1.25rem;
}

.field {
  position: relative;
  min-height: 340px;
  overflow: hidden;
  border-radius: var(--radius-md);
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #dde9e1 0%, #dde9e1 44%, var(--surface-sunken) 68%);
  box-shadow: var(--shadow-sm);
}

.soil-profile {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 52%;
  z-index: 1;
  display: grid;
  grid-template-rows: 20% 26% 29% 25%;
}

.horizon {
  padding-left: 18px;
  color: rgba(245, 243, 236, 0.85);
  font-family: var(--font-mono);
  font-weight: 600;
  display: flex;
  align-items: center;
  border-top: 1px solid rgba(245, 243, 236, 0.14);
}

.horizon-o {
  background: #2f241c;
}

.horizon-a {
  background: #513a29;
}

.horizon-b {
  background: #7a5638;
}

.horizon-c {
  background: #93694a;
}

.gallows {
  position: absolute;
  left: 50%;
  top: 24px;
  z-index: 5;
  width: min(300px, 62vw);
  height: 270px;
  transform: translateX(-50%);
}

.frame {
  position: absolute;
  left: 24px;
  bottom: 0;
  width: 11px;
  height: 240px;
  border-radius: 6px;
  background: linear-gradient(180deg, #ac8358, #7a5638);
  box-shadow: inset -2px 0 rgba(0, 0, 0, 0.14);
}

.frame::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 105px;
  height: 11px;
  border-radius: 6px;
  background: linear-gradient(90deg, #ac8358, #7a5638);
}

.frame::after {
  content: "";
  position: absolute;
  left: 6px;
  top: 22px;
  width: 78px;
  height: 8px;
  border-radius: 4px;
  background: linear-gradient(90deg, #ac8358, #7a5638);
  transform: rotate(28deg);
  transform-origin: left center;
}

.rope {
  position: absolute;
  left: 122px;
  top: 11px;
  width: 3px;
  height: 34px;
  border-radius: var(--radius-sm);
  background: var(--ink-faint);
}

.character {
  --cloth: #3f6a52;
  --accent: #a97a2e;
  --skin: #c99566;
  position: absolute;
  left: 76px;
  top: 40px;
  width: 100px;
  height: 195px;
  transition: filter 200ms ease;
  animation: charIdle 2.8s ease-in-out infinite;
}

.character.variant-1 {
  --cloth: #2d6b78;
  --accent: #a8592f;
  --skin: #d19b6c;
}

.character.variant-2 {
  --cloth: #6b5636;
  --accent: #46705a;
  --skin: #c48a58;
}

.character.variant-3 {
  --cloth: #574e78;
  --accent: #a97a2e;
  --skin: #dba377;
}

@keyframes charIdle {
  0%, 100% { transform: rotate(0deg); }
  50% { transform: rotate(1.4deg); }
}

.part {
  position: absolute;
  transition: opacity 220ms ease, transform 220ms ease;
}

.part.lost {
  opacity: 0;
  transform: translateY(22px) rotate(18deg) scale(0.75);
}

.hat {
  left: 22px;
  top: 0;
  width: 56px;
  height: 20px;
  border-radius: 50% 50% 10px 10px;
  background: var(--accent);
}

.hat-brim {
  position: absolute;
  left: -10px;
  bottom: -4px;
  width: 76px;
  height: 10px;
  border-radius: 50%;
  background: var(--accent);
  filter: brightness(0.9);
}

.head {
  left: 25px;
  top: 16px;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background: var(--skin);
}

.eye {
  position: absolute;
  top: 20px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #2a2320;
}

.eye-left {
  left: 12px;
}

.eye-right {
  right: 12px;
}

.eyebrow {
  position: absolute;
  top: 13px;
  width: 9px;
  height: 2px;
  border-radius: 2px;
  background: rgba(42, 35, 32, 0.65);
}

.eyebrow-left {
  left: 10px;
  transform: rotate(-8deg);
}

.eyebrow-right {
  right: 10px;
  transform: rotate(8deg);
}

.cheek {
  position: absolute;
  top: 27px;
  width: 8px;
  height: 6px;
  border-radius: 50%;
  background: rgba(196, 90, 74, 0.32);
}

.cheek-left {
  left: 3px;
}

.cheek-right {
  right: 3px;
}

.mouth {
  position: absolute;
  left: 50%;
  top: 30px;
  width: 18px;
  height: 9px;
  border: 2px solid #7a4030;
  border-top: none;
  border-radius: 0 0 12px 12px;
  transform: translateX(-50%);
}

.torso {
  left: 20px;
  top: 62px;
  width: 60px;
  height: 66px;
  border-radius: 18px 18px 22px 22px;
  background: var(--cloth);
}

.strap {
  position: absolute;
  top: 0;
  width: 8px;
  height: 32px;
  background: rgba(0, 0, 0, 0.14);
  border-radius: 0 0 4px 4px;
}

.strap-left {
  left: 13px;
  transform: rotate(-4deg);
}

.strap-right {
  right: 13px;
  transform: rotate(4deg);
}

.arm {
  top: 68px;
  width: 16px;
  height: 58px;
  border-radius: 10px;
  background: var(--skin);
  transform-origin: top center;
}

.arm-left {
  left: 6px;
  transform: rotate(18deg);
}

.arm-right {
  right: 6px;
  transform: rotate(-18deg);
}

.hand {
  position: absolute;
  left: 50%;
  bottom: -6px;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: var(--skin);
  filter: brightness(0.96);
  transform: translateX(-50%);
}

.leg {
  top: 122px;
  width: 20px;
  height: 54px;
  border-radius: 10px;
  background: var(--cloth);
  filter: brightness(0.86);
  box-shadow: 0 0 0 1px rgba(245, 243, 236, 0.3);
}

.leg-left {
  left: 27px;
  transform: rotate(6deg);
}

.leg-right {
  right: 27px;
  transform: rotate(-6deg);
}

.boot {
  top: 176px;
  width: 26px;
  height: 15px;
  border-radius: 8px 8px 4px 10px;
  background: var(--ink);
  box-shadow: 0 0 0 1px rgba(245, 243, 236, 0.3);
}

.boot-left {
  left: 19px;
}

.boot-right {
  right: 19px;
}

.word-panel {
  padding: 18px;
}

.meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}

.meta span {
  min-height: 28px;
  padding: 5px 10px;
  border-radius: var(--radius-sm);
  color: var(--surface);
  background: var(--forest-strong);
  font-family: var(--font-mono);
  font-size: 0.76rem;
  font-weight: 600;
}

.fireworks-layer {
  position: fixed;
  inset: 0;
  z-index: 999;
  pointer-events: none;
  overflow: hidden;
}

.firework-particle {
  position: absolute;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  animation: fireworkBurst 900ms ease-out forwards;
}

@keyframes fireworkBurst {
  0% {
    transform: translate(-50%, -50%) translate(0, 0);
    opacity: 1;
  }
  100% {
    transform: translate(-50%, -50%) translate(var(--dx), var(--dy));
    opacity: 0;
  }
}

.result-banner {
  margin-bottom: 12px;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.05rem;
  text-align: center;
}

.result-banner.win {
  color: var(--good);
  background: var(--good-tint);
  border-color: rgba(44, 106, 72, 0.3);
}

.result-banner.lose {
  color: var(--bad);
  background: var(--bad-tint);
  border-color: rgba(156, 59, 48, 0.3);
}

.word {
  min-height: 76px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 9px;
  margin-bottom: 12px;
}

.letter {
  width: 40px;
  height: 50px;
  border-bottom: 3px solid var(--clay);
  display: grid;
  place-items: center;
  color: var(--forest-strong);
  font-family: var(--font-mono);
  font-size: 1.6rem;
  font-weight: 600;
  text-transform: uppercase;
}

.letter.space {
  width: 22px;
  border-bottom: 0;
}

.hint {
  margin-bottom: 0;
  color: var(--ink-soft);
  font-family: var(--font-sans);
  line-height: 1.45;
}

.keyboard {
  padding: 14px;
  display: grid;
  grid-template-columns: repeat(13, 1fr);
  gap: 8px;
}

.key,
.difficulty button,
.primary,
.secondary {
  border: 0;
  cursor: pointer;
  font-family: var(--font-sans);
  font-weight: 600;
}

.key {
  aspect-ratio: 1;
  min-width: 0;
  border-radius: var(--radius-sm);
  color: var(--surface);
  background: var(--forest-soft);
  font-size: 0.96rem;
}

.key.used {
  color: var(--ink-faint);
  background: var(--surface-sunken);
  cursor: default;
}

.key.wrong {
  color: var(--surface);
  background: var(--bad);
}

.key.right {
  color: var(--surface);
  background: var(--good);
}

.side {
  display: grid;
  gap: 14px;
}

.panel {
  padding: 16px;
}

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

.difficulty button,
.primary,
.secondary {
  min-height: 42px;
  border-radius: var(--radius-sm);
}

.difficulty button {
  color: var(--ink);
  background: var(--surface-sunken);
}

.difficulty button.active {
  color: var(--surface);
  background: var(--forest);
}

.facts {
  display: grid;
  gap: 10px;
  margin: 0;
}

.facts div {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 10px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
}

.facts div:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}

dt {
  color: var(--ink-soft);
  font-weight: 500;
}

dd {
  margin: 0;
  font-family: var(--font-mono);
  font-weight: 600;
}

.primary,
.secondary,
.ghost {
  width: 100%;
  color: var(--surface);
}

.primary {
  margin-bottom: 9px;
  background: var(--forest);
}

.secondary {
  background: var(--clay);
}

.ghost {
  margin-top: 9px;
  color: var(--forest);
  background: transparent;
  border: 1px solid var(--line-strong);
}

.message {
  margin: 12px 0 0;
  color: var(--ink-soft);
  font-family: var(--font-sans);
  line-height: 1.42;
}

.ranking-backdrop {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: none;
  place-items: center;
  padding: 16px;
  background: rgba(20, 25, 20, 0.5);
}

.ranking-backdrop.active {
  display: grid;
}

.ranking-dialog {
  width: min(720px, 100%);
  max-height: min(680px, calc(100vh - 32px));
  overflow: auto;
  padding: 22px;
}

.ranking-dialog table {
  width: 100%;
  border-collapse: collapse;
  margin: 12px 0 16px;
}

.ranking-dialog th,
.ranking-dialog td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  font-size: 0.86rem;
}

.ranking-dialog th {
  color: var(--forest);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  text-transform: uppercase;
}

button:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 2px;
}

@media (max-width: 980px) {
  .app {
    grid-template-columns: 1fr;
    align-items: start;
  }

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

@media (max-width: 760px) {
  .app {
    width: min(100% - 18px, 540px);
    padding: 10px 0 18px;
  }

  .hero {
    display: grid;
    padding: 14px;
  }

  .scoreboard,
  .side {
    grid-template-columns: 1fr;
  }

  .field {
    min-height: 290px;
  }

  .gallows {
    top: 18px;
    transform: translateX(-50%) scale(0.82);
  }

  .keyboard {
    grid-template-columns: repeat(7, 1fr);
    gap: 7px;
  }

  .letter {
    width: 31px;
    height: 43px;
    font-size: 1.34rem;
  }
}
