:root{--bg:#f3f1ea;--ink:#25303b;--mute:#6d7680;--lt:#e9eedd;--dk:#6a8f60;--sel:#f2d36b;--go:#3f7a4a;--card:#fff}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-tap-highlight-color:transparent}
.kids{max-width:560px;margin:auto;padding:max(14px,env(safe-area-inset-top)) 14px max(18px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;min-height:100dvh}
header{display:flex;align-items:center;justify-content:space-between;gap:12px}
h1{margin:0;font-size:1.35rem;letter-spacing:-.01em}
.robo{display:flex;align-items:center;gap:8px}.robo-name{font-weight:700;font-size:.95rem}
.stars{display:flex;gap:2px}.stars i{width:18px;height:18px;display:block;background:#d8d6cc;clip-path:polygon(50% 0,62% 36%,100% 38%,70% 60%,80% 100%,50% 76%,20% 100%,30% 60%,0 38%,38% 36%)}.stars i.on{background:#e8b92f}
.lvl{font-size:.72rem;color:var(--mute)}
.say{margin:0;min-height:2.2em;font-size:1.25rem;font-weight:700;text-align:center;line-height:1.25}
.board-wrap{position:relative;width:100%;margin:auto}
.board{display:grid;grid-template-columns:repeat(8,1fr);aspect-ratio:1;width:min(100%,62dvh);margin:auto;border-radius:10px;overflow:hidden;box-shadow:0 14px 34px -18px rgba(30,40,30,.55);touch-action:manipulation}
.sq{position:relative;border:0;padding:0;margin:0;display:block;background:var(--lt);cursor:pointer;font:inherit}.sq.d{background:var(--dk)}
.sq img{position:absolute;inset:4%;width:92%;height:92%;pointer-events:none;-webkit-user-drag:none}
.sq.last:before{content:"";position:absolute;inset:0;background:rgba(255,215,90,.42)}
.sq.sel:before{content:"";position:absolute;inset:0;background:rgba(255,205,60,.7)}
.sq.chk:before{content:"";position:absolute;inset:0;background:radial-gradient(circle,rgba(220,60,50,.85),rgba(220,60,50,0) 72%)}
.sq.dot:after{content:"";position:absolute;left:36%;top:36%;width:28%;height:28%;border-radius:50%;background:rgba(40,60,40,.32)}
.sq.dot.cap:after{left:6%;top:6%;width:88%;height:88%;background:none;border:4px solid rgba(40,60,40,.32)}
.sq:focus-visible{outline:3px solid #2b6cb0;outline-offset:-3px;z-index:1}
.over{position:absolute;inset:0;display:grid;place-items:center;background:rgba(243,241,234,.78);border-radius:10px}
.over[hidden]{display:none}
.card{background:var(--card);border-radius:16px;padding:22px 26px;text-align:center;box-shadow:0 18px 40px -18px rgba(30,40,30,.5);max-width:82%}
.card .big{font-size:3rem;line-height:1}.card h2{margin:6px 0 4px;font-size:1.5rem}.card p{margin:0 0 16px;color:var(--mute);font-size:.98rem}
.go{background:var(--go);color:#fff;border:0;border-radius:12px;padding:14px 26px;font:700 1.05rem inherit;font-family:inherit;cursor:pointer;min-height:48px}.go:active{transform:translateY(1px)}
.bar{display:flex;justify-content:space-between;align-items:center;margin-top:auto}
.quiet{background:none;border:0;color:var(--mute);font:600 .9rem inherit;font-family:inherit;padding:12px 6px;min-height:44px;cursor:pointer}.quiet.tiny{font-size:.78rem;font-weight:500}
.quiet[hidden]{display:none}
@media(prefers-reduced-motion:no-preference){.card{animation:pop .28s ease-out}@keyframes pop{from{transform:scale(.92);opacity:0}}}

dialog{border:0;border-radius:16px;padding:22px;max-width:min(92vw,400px);width:100%;box-shadow:0 24px 60px -20px rgba(30,40,30,.6);color:var(--ink)}
dialog::backdrop{background:rgba(37,48,59,.45)}
dialog h2{margin:0 0 6px;font-size:1.2rem}.note{margin:0 0 14px;color:var(--mute);font-size:.9rem}
dialog label{display:block;font-size:.85rem;font-weight:600;margin:12px 0 0}
dialog input{display:block;width:100%;margin-top:5px;padding:12px;border:1px solid #cfd3c8;border-radius:10px;font:inherit;font-size:1rem}
.hp{position:absolute;left:-9999px}.msg{min-height:1.3em;margin:12px 0 0;font-size:.9rem;color:var(--mute)}.msg.bad{color:#a33}
.row{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.row .go{padding:12px 26px}

/* Race around the world + tabs */
.tabs{display:flex;gap:4px;background:#e4e2d8;border-radius:10px;padding:3px}.tabs a{padding:8px 12px;border-radius:8px;text-decoration:none;color:var(--mute);font-weight:600;font-size:.88rem;min-height:36px;display:inline-flex;align-items:center}.tabs a[aria-current]{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.wins{font-weight:700;font-size:1rem}
.modes{display:flex;justify-content:center;gap:8px}.modes button{border:2px solid #d3d1c6;background:#fff;border-radius:999px;padding:9px 20px;font:700 .95rem inherit;font-family:inherit;color:var(--ink);cursor:pointer;min-height:44px}.modes button[aria-pressed=true]{background:var(--go);border-color:var(--go);color:#fff}
.sq.world{background:#c9b88c}.sq.world.d{background:#b9a677}.sq img.pawn{filter:sepia(.9) saturate(1.8) brightness(.85);opacity:.95}.sq img.fin{opacity:.55}
.prog{display:flex;flex-direction:column;gap:8px}.prow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.who{width:46px;font-weight:700;font-size:.85rem}
.chip{display:inline-flex;align-items:center;gap:3px;background:#fff;border-radius:999px;padding:3px 10px 3px 4px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.chip img{width:28px;height:28px}.chip i{font-style:normal;font-weight:800;font-size:.85rem;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#e6e4da;color:#9a998f}.chip i.on{background:#e8b92f;color:#fff}.chip b{margin-left:3px;font-size:.95rem}.chip.done{background:#e3f1e0}
.how{margin:0;text-align:center;color:var(--mute);font-size:.92rem}
.race header{flex-wrap:wrap}
header{flex-wrap:wrap}@media(max-width:360px){.tabs a{padding:8px 8px;font-size:.78rem}.stars i{width:15px;height:15px}.robo{gap:5px}}
.tabs{overflow-x:auto;max-width:100%;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs a{white-space:nowrap;padding:8px 10px}
.sq .star{position:absolute;inset:18%;background:#e8b92f;clip-path:polygon(50% 0,62% 36%,100% 38%,70% 60%,80% 100%,50% 76%,20% 100%,30% 60%,0 38%,38% 36%);filter:drop-shadow(0 1px 1px rgba(0,0,0,.25))}
.sq.bad:before{content:"";position:absolute;inset:0;background:rgba(214,70,60,.38)}
.sq.goal:after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 3px rgba(232,185,47,.8)}
.sq.dot.goal:after{inset:auto}
.fixlink{display:block;margin-top:12px;font-weight:700;font-size:.95rem;color:var(--go);text-decoration:underline;text-underline-offset:4px;min-height:36px}
.go{display:inline-block;text-decoration:none}.go.small{padding:12px 22px;font-size:.98rem}
[hidden]{display:none!important}
