:root {
  --bg:#f7f9fc;
  --ink:#293b59;
  --muted:#748198;
  --accent:#547ee9;
  --card:#fff;
  --line:#e4eaf2;
  --font:ui-rounded,'SF Pro Rounded','Avenir Next',Arial,sans-serif;
  color-scheme:light;
}
* {
  box-sizing:border-box;
}
html,body {
  margin:0;
  min-height:100%;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font);
  -webkit-tap-highlight-color:transparent;
}
button,a {
  touch-action:manipulation;
}
button {
  font:inherit;
}
button,a,input {
  outline-offset:4px;
}
:focus-visible {
  outline:3px solid #355ed0;
}
[hidden] {
  display:none!important;
}
.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  white-space:nowrap;
}
.site-header,.screen,.site-footer {
  width:calc(100% - 88px);
  max-width:1220px;
  margin:auto;
}
.site-header {
  height:96px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  border-bottom:1px solid var(--line);
}
.brand {
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
  color:var(--ink);
  font-size:28px;
  font-weight:850;
  letter-spacing:-1.1px;
  line-height:1;
}
.brand-light {
  font-weight:500;
  color:#6186cd;
}
.brand small {
  display:block;
  font-size:6px;
  font-weight:800;
  letter-spacing:1.5px;
  color:#8591a6;
  margin-top:8px;
}
.brand-mark {
  display:grid;
  place-items:center;
  width:43px;
  height:46px;
  font-size:32px;
  color:#fff7d7;
  background:#628ce9;
  border-radius:13px 13px 17px 13px;
  box-shadow:inset 0 -4px #4772cc;
  transform:rotate(-7deg);
}
.header-note {
  font-size:11px;
  color:#7c8ba1;
  display:flex;
  align-items:center;
  gap:10px;
}
.header-note>span {
  color:#e8b443;
  font-size:20px;
}
.edition {
  font-size:10px;
  color:#7988a2;
  border:1px solid #e6eaf2;
  background:#fff;
  padding:10px 13px;
  border-radius:25px;
}
.edition>span {
  color:#edac57;
  font-size:16px;
  margin-left:8px;
}
.start {
  display:grid;
  grid-template-columns:minmax(0,1.85fr) minmax(290px,1fr);
  gap:22px;
  padding:30px 0;
}
.welcome {
  grid-column:1/-1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:5px;
}
.eyebrow {
  font-size:9px;
  font-weight:800;
  letter-spacing:1.6px;
  color:#8092b0;
  margin:0 0 12px;
}
.welcome h1 {
  font-size:clamp(26px,3vw,38px);
  letter-spacing:-1.4px;
  line-height:1.17;
  margin:0 0 10px;
  font-weight:800;
}
.welcome h1 br {
  display:none;
}
.welcome h1 span {
  color:#6685be;
}
.welcome p:last-child {
  font-size:12px;
  color:var(--muted);
  margin:0;
}
.welcome-star {
  font-size:64px;
  color:#e3c568;
  margin:0 14px;
  line-height:1;
}
.hero-copy {
  position:relative;
  isolation:isolate;
  background:linear-gradient(130deg,#e7f0ff,#eaf4fb);
  border:1px solid #dce8f8;
  border-radius:25px;
  overflow:hidden;
  min-height:365px;
  padding:32px;
}
.world-tag {
  display:inline-flex;
  align-items:center;
  border:1px solid #cadbf4;
  border-radius:20px;
  font-size:8px;
  font-weight:800;
  letter-spacing:1px;
  color:#7896c6;
  background:#ffffff70;
  padding:7px 11px;
  margin-bottom:24px;
}
.hero-copy h2 {
  font-size:clamp(26px,2.75vw,38px);
  line-height:1.14;
  letter-spacing:-1.4px;
  margin:0 0 16px;
  position:relative;
  z-index:1;
}
.hero-copy h2 span {
  color:#4a7ed6;
}
.tagline {
  font-size:12px;
  line-height:1.75;
  color:#7085a3;
  margin:0 0 24px;
  position:relative;
  z-index:1;
}
.btn {
  font-weight:750;
  font-size:13px;
  color:#fff;
  background:var(--accent);
  border:0;
  border-radius:12px;
  padding:13px 19px;
  box-shadow:0 4px 0 #3c65bc;
  cursor:pointer;
  transition:transform .15s,background .15s;
}
.btn:hover {
  background:#648ef2;
  transform:translateY(-1px);
}
.btn:active {
  transform:translateY(3px);
  box-shadow:0 1px 0 #3c65bc;
}
.btn.big {
  display:flex;
  align-items:center;
  gap:38px;
  font-size:15px;
  padding:16px 21px;
  position:relative;
  z-index:1;
}
.btn.big>span {
  font-size:21px;
}
.play-note {
  font-size:8px;
  color:#8497b3;
  margin:16px 0 0;
  position:relative;
  z-index:1;
}
.mascot-stage {
  mix-blend-mode:multiply;
  position:absolute;
  right:-13px;
  bottom:34px;
  width:48%;
  height:290px;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  z-index:0;
}
.mascot-stage img {
  width:100%;
  height:100%;
  object-fit:contain;
  mix-blend-mode:multiply;
}
.hello-bubble {
  position:absolute;
  right:26px;
  top:-9px;
  padding:10px 12px;
  background:white;
  border:1px solid #d3e0f8;
  box-shadow:0 4px 0 #cbdcf44d;
  border-radius:12px 12px 12px 3px;
  font-size:10px;
  font-weight:750;
  color:#6d89b7;
  z-index:1;
  transform:rotate(4deg);
  white-space:nowrap;
}
.hello-bubble>span {
  color:#efb342;
  margin-left:4px;
}
.mascot-spark {
  position:absolute;
  font-size:28px;
  color:#e7b647;
}
.spark-one {
  right:18px;
  bottom:75px;
}
.spark-two {
  left:7px;
  top:56px;
  font-size:21px;
  color:#90b5e6;
}
.hero-caption {
  position:absolute;
  right:22px;
  bottom:15px;
  font-size:8px;
  color:#8298b8;
}
.hero-visual {
  background:white;
  border:1px solid var(--line);
  border-radius:25px;
  padding:22px 23px;
  display:flex;
  flex-direction:column;
  align-items:center;
  min-width:0;
}
.hero-visual .eyebrow {
  font-size:8px;
  margin-bottom:8px;
  color:#b49b69;
}
.hero-visual h2 {
  font-size:16px;
  letter-spacing:-.4px;
  margin:0 0 18px;
  text-align:center;
}
.preview-board {
  width:min(100%,235px);
  aspect-ratio:1;
  position:relative;
  border:5px solid #d8e6f8;
  border-radius:10px;
  box-shadow:0 4px 0 #c5d7ee;
  overflow:hidden;
}
.preview-board canvas {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
}
.arena-demo-bar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  width:100%;
  gap:8px;
  margin-top:16px;
}
.arena-demo-bar p {
  font-size:10px;
  color:#9a8b74;
  margin:0;
}
.arena-demo-bar p>span {
  color:#eab854;
}
.demo-btn {
  font-size:9px;
  padding:10px;
  background:#fff1cc;
  color:#aa8136;
  box-shadow:0 3px 0 #ebd79f;
}
.demo-btn:hover {
  background:#ffe8ad;
}
.demo-btn:disabled {
  opacity:.65;
  cursor:wait;
}
.replay-control {
  display:flex;
  width:100%;
  align-items:center;
  gap:10px;
  margin-top:17px;
}
.replay-control label {
  font-size:8px;
  color:#8996a9;
  white-space:nowrap;
}
.replay-control input {
  min-width:0;
  flex:1;
  accent-color:#749cea;
  height:4px;
  cursor:ew-resize;
}
.principles {
  grid-column:1/-1;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:16px;
  margin-top:1px;
}
.principles>div {
  display:flex;
  align-items:center;
  gap:12px;
  padding:20px 17px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:17px;
}
.principle-number {
  display:grid;
  place-items:center;
  width:40px;
  height:44px;
  flex-shrink:0;
  font-size:25px;
  border-radius:13px;
  background:#e8f0ff;
  color:#7696d1;
}
.principles>div:nth-child(2) .principle-number {
  background:#ffece3;
  color:#d89b7a;
}
.principles>div:nth-child(3) .principle-number {
  background:#fff4d5;
  color:#cbae62;
}
.principles p {
  display:flex;
  flex-direction:column;
  gap:6px;
  margin:0;
}
.principles strong {
  font-size:11px;
  font-weight:750;
}
.principles p span {
  font-size:9px;
  line-height:1.5;
  color:#8592a7;
}
.site-footer {
  display:flex;
  justify-content:space-between;
  gap:15px;
  padding:22px 0;
  border-top:1px solid var(--line);
  font-size:9px;
  color:#92a0b4;
}
.site-footer>span:first-child>span {
  color:#e7ba58;
  margin-left:5px;
}
/* Jogo: casas planas, grandes e fáceis de escolher. */
.play {
  display:grid;
  grid-template-columns:minmax(0,570px) 330px;
  justify-content:center;
  gap:45px;
  padding:22px 0 28px;
  align-items:center;
}
.game-board-area {
  width:100%;
  max-width:min(100%,calc(100dvh - 275px));
  justify-self:center;
  min-width:0;
}
.player {
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 0;
}
.avatar {
  display:grid;
  place-items:center;
  width:36px;
  height:39px;
  border-radius:12px;
  background:#fff0d2;
  border:1px solid #e8d4a8;
  color:#b19158;
  font-size:25px;
  box-shadow:0 2px 0 #e4d3af;
}
.dark-piece {
  background:#e4edff;
  border-color:#c2d6f5;
  color:#5f85c6;
  box-shadow:0 2px 0 #bfd3f1;
}
.player>div {
  display:flex;
  flex-direction:column;
  gap:4px;
}
.player strong {
  font-size:12px;
  font-weight:750;
}
.player>div>span {
  font-size:9px;
  color:var(--muted);
}
.player-tag {
  font-size:7px;
  letter-spacing:.8px;
  color:#899ab4;
  margin-left:auto;
}
.unlimited {
  display:flex;
  align-items:center;
  gap:8px;
  font-size:24px;
  color:#8ba3c5;
  margin-left:auto;
}
.unlimited>span {
  font-size:9px;
}
.camera-bar {
  display:flex;
  justify-content:space-between;
  font-size:6px;
  letter-spacing:.9px;
  color:#9aa9be;
  margin:9px 0 12px;
}
.game-frame {
  padding:9px;
  background:#dce8f7;
  border:1px solid #cbdcf1;
  border-radius:15px;
  box-shadow:0 6px 0 #c3d6ee,0 12px 25px #7294c31c;
}
.board-wrap {
  position:relative;
  width:100%;
  aspect-ratio:1;
}
.board-wrap canvas {
  position:absolute;
  inset:0;
  display:block;
  touch-action:none;
  border-radius:7px;
}
.a11y-grid {
  position:absolute;
  inset:0;
  pointer-events:none;
}
.sq {
  position:absolute;
  border:0;
  background:transparent;
  padding:0;
  pointer-events:none;
}
.sq:focus-visible {
  outline:3px solid #376ed9;
  outline-offset:-3px;
  box-shadow:inset 0 0 0 5px #fff9;
}
.game-sidebar {
  min-width:0;
}
.coach {
  padding:18px 18px 15px;
  border:1px solid #dbe7f6;
  border-radius:23px;
  background:linear-gradient(145deg,#eaf3ff,#f3f8ff);
  margin-bottom:16px;
}
.coach-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  height:112px;
}
.coach-heading .eyebrow {
  font-size:7px;
  letter-spacing:1px;
  margin:0 0 10px;
  color:#8aa1c5;
}
.coach h2 {
  font-size:24px;
  line-height:1.13;
  margin:0;
  letter-spacing:-.6px;
  font-weight:800;
}
.coach h2 span {
  color:#6290d8;
}
.coach-avatar {
  width:122px;
  height:132px;
  flex-shrink:0;
  overflow:hidden;
  border-radius:0 0 45% 45%;
  mix-blend-mode:multiply;
}
.coach-heading .coach-avatar img {
  width:240px;
  height:240px;
  max-width:none;
  margin:0 0 0 -59px;
  object-fit:contain;
  mix-blend-mode:multiply;
  transform-origin:bottom center;
}
.coach-bubble {
  position:relative;
  background:#fff;
  border:1px solid #dce7f6;
  border-radius:13px 3px 13px 13px;
  padding:13px 15px;
  margin:12px 0 10px;
  font-size:11px;
  line-height:1.65;
  color:#657d9f;
  min-height:66px;
}
.hint-button {
  display:block;
  margin:auto;
  background:transparent;
  border:0;
  padding:5px 10px;
  color:#668fcd;
  font-size:10px;
  font-weight:750;
  cursor:pointer;
  border-radius:9px;
}
.hint-button:hover {
  background:#deebfc;
}
.coach[data-mood=cheer] img {
  animation:celebrate .65s ease;
}
.coach[data-mood=curious] img {
  transform:rotate(-5deg);
}
@keyframes celebrate {
  30% {
    transform:translateY(-9px) rotate(-8deg);
  }
  65% {
    transform:rotate(6deg);
  }
}
.turn {
  display:flex;
  justify-content:center;
  align-items:center;
  gap:9px;
  border:1px solid #e3e9f2;
  border-radius:13px;
  background:#fff;
  padding:14px;
  font-size:12px;
  font-weight:750;
  box-shadow:0 3px 0 #edf0f5;
}
.turn:before {
  content:'';
  height:12px;
  width:12px;
  border-radius:50%;
  background:#fff0cc;
  border:2px solid #dbbf86;
}
.turn[data-color=b]:before {
  background:#729be3;
  border-color:#507bbf;
}
.turn.alert {
  background:#fff0e8;
  color:#ad6a46;
  border-color:#edc5ad;
}
.history-panel {
  background:#fff;
  border:1px solid var(--line);
  border-radius:16px;
  margin-top:17px;
  overflow:hidden;
}
.panel-heading {
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:13px 15px;
  border-bottom:1px solid #edf0f6;
}
.panel-heading h3 {
  margin:0;
  font-size:11px;
}
.panel-heading>span {
  font-size:9px;
  color:#91a0b6;
}
.move-history {
  height:80px;
  overflow:auto;
  padding:6px 0;
}
.empty-history {
  font-size:10px;
  line-height:1.6;
  color:#9aa7ba;
  text-align:center;
  margin:17px 20px;
}
.move-row {
  display:grid;
  grid-template-columns:40px 1fr 1fr;
  font-size:11px;
  padding:7px 15px;
  font-variant-numeric:tabular-nums;
}
.move-row:nth-child(even) {
  background:#f4f7fc;
}
.move-row>span:first-child {
  color:#a3adc0;
}
.game-tip {
  display:flex;
  gap:9px;
  align-items:center;
  margin:13px 0;
  color:#9baac0;
}
.game-tip>span {
  font-size:23px;
  color:#c7b069;
}
.game-tip p {
  font-size:9px;
  line-height:1.7;
  margin:0;
}
.bar {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:7px;
}
.btn.tool {
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:7px;
  padding:10px 3px;
  border:1px solid #e3e9f2;
  background:#fff;
  box-shadow:0 3px 0 #e4eaf4;
  color:#7c90b2;
  font-size:8px;
  border-radius:11px;
}
.btn.tool:hover {
  background:#eef4ff;
}
.ico {
  font-size:21px;
  line-height:1;
}
.btn.tool[aria-pressed=false] {
  color:#acb7c8;
}
/* Dialogs */
.sheet {
  position:fixed;
  inset:0;
  z-index:10;
  display:grid;
  place-items:center;
  padding:20px;
  background:transparent;
  transition:background .2s;
}
.sheet.open {
  background:#42577a66;
  backdrop-filter:blur(5px);
}
.card {
  width:min(450px,100%);
  background:#fff;
  border:1px solid #e0e7f3;
  border-radius:24px;
  padding:28px;
  text-align:center;
  box-shadow:0 10px 0 #b7c9e544,0 25px 80px #3c537333;
  opacity:0;
  transform:translateY(15px);
  transition:opacity .2s,transform .2s;
}
.sheet.open .card {
  opacity:1;
  transform:none;
}
.card h2 {
  font-size:24px;
  letter-spacing:-.5px;
  line-height:1.2;
  margin:0 0 18px;
}
.card p {
  font-size:13px;
  line-height:1.65;
  color:var(--muted);
  margin:0 0 22px;
}
.row {
  display:flex;
  justify-content:center;
  gap:12px;
  flex-wrap:wrap;
}
.btn.ghost {
  background:#edf3fc;
  color:#708bb7;
  box-shadow:0 3px 0 #d8e4f6;
}
.promo-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:9px;
}
.promo-btn {
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:7px;
  border:1px solid #dce7f8;
  background:#edf4fe;
  color:#657eab;
  border-radius:14px;
  padding:10px 4px;
  cursor:pointer;
  font-size:10px;
  font-weight:750;
}
.promo-btn img {
  width:100%;
  max-width:70px;
  aspect-ratio:1;
}
.promo-btn:hover {
  background:#d7e6ff;
}
.toast {
  position:fixed;
  left:50%;
  bottom:24px;
  transform:translateX(-50%);
  z-index:20;
  background:#4f78ce;
  color:white;
  font-size:12px;
  padding:13px 20px;
  border-radius:14px;
  box-shadow:0 5px 0 #385cac;
}
@media(max-width:1050px) {
  .site-header,.screen,.site-footer {
    width:calc(100% - 48px);
  }
  .start {
    grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);
    gap:16px;
  }
  .hero-copy {
    padding:25px;
    min-height:360px;
  }
  .hero-copy h2 {
    font-size:28px;
  }
  .tagline {
    font-size:11px;
  }
  .mascot-stage {
    width:45%;
    height:240px;
    bottom:47px;
  }
  .hello-bubble {
    right:12px;
    font-size:8px;
  }
  .hero-caption {
    font-size:7px;
  }
  .welcome h1 br {
    display:block;
  }
  .principles>div {
    padding:15px 12px;
    gap:8px;
  }
  .principles strong {
    font-size:10px;
  }
  .principles p span {
    font-size:8px;
  }
  .play {
    gap:25px;
    grid-template-columns:minmax(0,1fr) 290px;
  }
  .game-board-area {
    max-width:100%;
  }
  .coach h2 {
    font-size:22px;
  }
}
@media(max-width:740px) {
  .site-header,.screen,.site-footer {
    width:calc(100% - 36px);
  }
  .site-header {
    height:80px;
  }
  .brand {
    font-size:24px;
    gap:9px;
  }
  .brand small {
    font-size:5px;
    letter-spacing:1px;
  }
  .brand-mark {
    width:36px;
    height:40px;
    font-size:27px;
  }
  .header-note {
    display:none;
  }
  .edition {
    font-size:8px;
    padding:8px;
  }
  .edition>span {
    display:none;
  }
  .start {
    grid-template-columns:1fr;
    padding-top:24px;
    gap:18px;
  }
  .welcome h1 {
    font-size:28px;
    line-height:1.15;
  }
  .welcome p:last-child {
    font-size:10px;
    max-width:270px;
    line-height:1.6;
  }
  .welcome-star {
    display:none;
  }
  .eyebrow {
    font-size:8px;
  }
  .hero-copy {
    min-height:325px;
    padding:23px 20px;
  }
  .hero-copy h2 {
    font-size:28px;
    max-width:215px;
  }
  .world-tag {
    margin-bottom:18px;
    font-size:7px;
  }
  .tagline {
    font-size:10px;
    max-width:210px;
  }
  .btn.big {
    font-size:13px;
    padding:14px 16px;
    gap:22px;
  }
  .play-note {
    font-size:7px;
    max-width:195px;
  }
  .mascot-stage {
    width:45%;
    height:217px;
    right:-13px;
    bottom:32px;
  }
  .hello-bubble {
    right:12px;
    top:-9px;
    font-size:7px;
    padding:8px;
  }
  .hero-caption {
    font-size:6px;
    bottom:11px;
    right:15px;
  }
  .hero-visual {
    padding:20px 26px;
  }
  .preview-board {
    width:min(100%,260px);
  }
  .arena-demo-bar {
    max-width:280px;
  }
  .replay-control {
    max-width:280px;
  }
  .principles {
    grid-template-columns:1fr;
    gap:11px;
  }
  .principles>div {
    padding:16px;
    gap:14px;
  }
  .principles strong {
    font-size:12px;
  }
  .principles p span {
    font-size:10px;
  }
  .site-footer {
    font-size:8px;
    padding:20px 0;
  }
  .site-footer>span:last-child {
    font-size:7px;
  }
  .play {
    grid-template-columns:1fr;
    gap:22px;
    padding-top:12px;
  }
  .game-board-area {
    max-width:100%;
  }
  .game-sidebar {
    display:flex;
    flex-direction:column;
  }
  .turn {
    order:-2;
    margin-bottom:16px;
  }
  .bar {
    order:-1;
    margin-bottom:20px;
  }
  .coach {
    display:grid;
    grid-template-columns:1fr 1.2fr;
    gap:0 10px;
    margin-bottom:0;
    padding:15px;
  }
  .coach-heading {
    height:110px;
    grid-row:1/3;
  }
  .coach-heading>div {
    display:none;
  }
  .coach-heading img {
    margin:0;
    width:110px;
    height:120px;
  }
  .coach-bubble {
    margin:0;
    font-size:10px;
    align-self:center;
  }
  .hint-button {
    margin-top:8px;
    font-size:9px;
  }
  .game-tip {
    margin-bottom:0;
  }
  .camera-bar {
    font-size:5px;
  }
  .game-frame {
    padding:7px;
  }
  .player-tag {
    font-size:6px;
  }
  .card {
    padding:24px 18px;
  }
}
@media(prefers-reduced-motion:reduce) {
  *,*:before,*:after {
    animation:none!important;
    transition:none!important;
  }
}

/* App nativa: respeitar notch, ilha dinâmica e barra inferior. */
body {
  padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
  box-sizing:border-box;
}
