@font-face{font-family:Nunito;src:url('assets/nunito.woff2') format('woff2');font-style:normal;font-weight:200 900;font-display:swap}@font-face{font-family:Lora;src:url('assets/lora.woff2') format('woff2');font-style:normal;font-weight:400 700;font-display:swap}
:root{--rose:#f6dce3;--pink:#eac1cc;--berry:#874263;--ink:#293e3b;--teal:#276e6c;--gold:#edbd66;--paper:#fff9f4;--soft:#6a7270;--line:#d6aeba;font-family:Nunito,'Arial Rounded MT Bold',Arial,system-ui,sans-serif;color:var(--ink);font-synthesis:none;font-size:16px;background:var(--rose)}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 30%,#fff6ed90,transparent 70%),url('assets/paper.svg') var(--rose);min-height:100svh}button,select,input{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;color:inherit}button:disabled{cursor:default;opacity:.55}a{color:inherit}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid var(--berry);outline-offset:4px}button,select,a{touch-action:manipulation}button{min-height:44px}h1,h2,p{margin:0}h1,h2{font-family:Lora,Georgia,serif;font-weight:600}h1{font-size:clamp(28px,3.1vw,43px);letter-spacing:-1.3px}h2{font-size:20px;line-height:1.25}select{border:1px solid #cba6b2;border-radius:13px;background:#fffaf3;color:var(--ink);min-height:44px;padding:8px 30px 8px 12px;max-width:100%;font-weight:700}input{width:100%;min-height:48px;border:1px solid #b99caa;border-radius:12px;background:white;padding:10px 13px;font-size:20px;color:var(--ink)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.masthead{max-width:1280px;padding:18px 36px 12px;margin:auto;display:flex;align-items:center;justify-content:space-between}.brand{text-decoration:none;display:flex;align-items:center;gap:10px;color:var(--berry);font:600 31px Lora,Georgia,serif;letter-spacing:-1px}.brand img{filter:drop-shadow(0 3px 0 #c77b9840)}.brand-small{font:700 14px Nunito,sans-serif;letter-spacing:0;margin-left:2px}.header-actions{display:flex;align-items:center;gap:12px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:44px;border-radius:50%;background:#fff7ee88;border:1px solid #d4b0b9;font-size:24px;line-height:1;color:var(--berry)}.icon-button:hover{background:#fffaf5}.language-control select{background:transparent;border:0;max-width:145px;font-size:15px}main{max-width:1220px;padding:12px 32px 24px;margin:auto}.heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:22px}.heading p{color:#795b6a;font-size:17px;margin-top:6px}.personal-record{display:flex;align-items:center;gap:12px;border-left:1px solid #d7aebc;padding-left:22px}.personal-record small{font-size:13px;display:block}.personal-record strong{font-size:27px;line-height:1.1}.paw-mark{color:#956624;font-size:28px}.game-layout{display:grid;grid-template-columns:minmax(195px,1fr) minmax(300px,440px) minmax(195px,1fr);gap:32px;align-items:start}.opponents-panel{padding-top:8px}.opponents-panel h2{font-size:18px;margin-bottom:18px}.opponents{display:flex;flex-direction:column;gap:10px}.opponent-card{position:relative;display:flex;align-items:center;gap:10px;width:100%;text-align:start;min-height:80px;padding:8px 10px 8px 5px;border:1px solid #d9b0bf66;border-radius:18px;background:#fff8f155;box-shadow:0 4px 0 #b8849b0b;transition:background .2s,transform .2s,border-color .2s}.opponent-card:hover:not(:disabled){transform:translateY(-2px);background:#fffaf3}.opponent-card[aria-pressed=true]{background:#fffaf5;border-color:#a55c7b;box-shadow:0 5px 0 #b8849b22}.opponent-card.locked{opacity:.6}.opponent-card .portrait{width:66px;height:64px;flex:0 0 66px;overflow:hidden}.opponent-card .portrait .character{width:74px;margin-top:-8px;margin-left:-4px}.opponent-card strong{display:block;font-size:16px}.opponent-card small{display:block;font-size:12px;color:#6a6061;margin-top:3px}.opponent-card .level-dots{display:flex;gap:3px;margin-top:6px}.level-dots i{width:5px;height:5px;border-radius:50%;background:#e2c9c0}.level-dots i.on{background:var(--teal)}.lock-symbol{position:absolute;right:10px;bottom:12px;font-size:14px;line-height:1}.unlock-note{font-size:13px;line-height:1.5;color:#765967;max-width:220px;margin:16px 0 5px}.text-button{background:transparent;color:var(--berry);font-weight:800;text-decoration:underline;text-underline-offset:4px;padding:6px 0;font-size:14px}.family-photo{margin:20px 0 0}.family-photo img{width:100%;height:auto;border-radius:14px;display:block;box-shadow:0 6px 18px #784b5c0d}.family-photo figcaption{font-size:12px;color:#766269;margin-top:8px;text-align:center}
.arena{min-width:0}.scoreboard{display:flex;align-items:center;justify-content:space-between;padding:0 14px 12px;min-height:65px;gap:10px}.competitor{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:800;flex:1;min-width:0}.competitor>span{max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-label{justify-content:flex-end}.score-avatar{width:47px;height:44px;overflow:hidden;flex-shrink:0}.score-avatar svg{width:50px;margin-top:-3px}.goals{display:flex;gap:11px;align-items:center;font-size:36px;line-height:1;font-weight:900;font-variant-numeric:tabular-nums;color:var(--teal)}.goal-divider{color:#b18b95;font-size:22px}.white-handle{display:block;width:36px;height:32px;border-radius:50%;background:radial-gradient(ellipse at 42% 30%,#fff 0 24%,#e7e5d9 30% 40%,#fffdf6 42% 60%,#d0cec0 67% 75%,#fff9ee 77%);box-shadow:0 5px 4px #263c3120,inset 0 -2px 1px #a5a99880;flex-shrink:0}.table-wrap{position:relative;isolation:isolate;aspect-ratio:2/3;width:min(100%,calc((100svh - 320px)*2/3));min-width:260px;margin-inline:auto;filter:drop-shadow(0 18px 22px #895a6e2b);border-radius:40px}.table-wrap canvas{display:block;width:100%;height:100%;border-radius:40px;touch-action:none;user-select:none;cursor:none}.table-overlay{position:absolute;inset:4% 5%;display:flex;justify-content:center;align-items:center;border-radius:27px;background:#274f4a37;z-index:3;backdrop-filter:blur(2px)}.start-card,.pause-card{background:#fffaf1ed;border:1px solid #fff9ed;padding:22px 25px 25px;width:86%;border-radius:27px;text-align:center;box-shadow:0 15px 45px #00000038}.start-card h2{font-size:27px;max-width:245px;margin:auto;line-height:1.2}.start-star{display:block;color:#ac7f3e;font-size:38px;line-height:1;margin-bottom:8px}.start-card p{font-size:15px;line-height:1.45;max-width:250px;margin:8px auto 16px}.gesture{position:relative;height:49px;display:flex;align-items:center;justify-content:center;margin:15px 0 9px}.gesture .white-handle{width:52px;height:46px;animation:gesture 3s ease-in-out infinite}.gesture-line{position:absolute;width:135px;border-bottom:2px dashed #96b5ae;top:22px}.country-control{text-align:start;display:block;font-size:13px;font-weight:800;margin-bottom:16px}.country-control span{display:block;margin-bottom:5px}.country-control select{width:100%;font-weight:700}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;min-height:52px;border-radius:16px;padding:13px 23px;font-size:18px;font-weight:900;transition:transform .15s,background .15s}.primary{background:var(--teal);color:#fffdf4;box-shadow:0 5px 0 #1d5354,0 10px 16px #00000018}.primary:hover:not(:disabled){background:#235f5d;transform:translateY(-1px)}.primary:active:not(:disabled){transform:translateY(3px);box-shadow:0 2px 0 #1d5354}.secondary{background:#f4e4d2;border:1px solid #c5a985;color:#594830;font-size:16px}.start-card .primary{width:100%}.start-card small{display:block;font-size:12px;margin-top:12px;line-height:1.4;color:#75596a;min-height:0}.countdown{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fffaf1;text-shadow:0 8px 0 #255b5b70;font-weight:900;font-size:120px;pointer-events:none;z-index:4}.pause-card .primary{margin-top:20px;width:100%}.pause-card .text-button{display:block;width:100%;margin-top:15px}.arena-controls{display:flex;align-items:center;justify-content:space-between;padding:15px 3px 0;gap:8px}.live-points{display:flex;gap:8px;align-items:center;font-size:13px}.live-points strong{font-size:25px;font-variant-numeric:tabular-nums}.live-points .paw-mark{font-size:24px}.arena-controls #scores-mobile{display:none}.timer{font-weight:800;font-size:13px;color:#79616d;font-variant-numeric:tabular-nums}.table-caption{text-align:center;font-size:12px;color:#806975;margin:9px 0}.effects{position:absolute;inset:0;pointer-events:none;overflow:hidden;border-radius:35px;z-index:2}.score-pop{position:absolute;transform:translate(-50%,-50%);border-radius:14px;background:#fff9eef2;color:var(--teal);box-shadow:0 5px 15px #00000020;padding:7px 12px;font-size:15px;font-weight:900;width:max-content;max-width:56%;white-space:normal;overflow-wrap:anywhere;text-align:center;line-height:1.25;animation:scorePop 1.35s ease-out both}.score-pop.goal-pop{max-width:82%;font-size:clamp(16px,2.4vw,24px);background:#f7d589;color:#654717;animation:goalPop 1.8s both}
.opponent-stage{text-align:center;position:relative;padding-top:7px}.speech{display:inline-block;background:#fffaf0c7;border-radius:18px 18px 18px 2px;border:1px solid #ecd3cc;padding:12px 15px;font-size:14px;font-weight:800;max-width:220px;min-height:44px}.big-character{width:205px;margin:0 auto;filter:drop-shadow(0 9px 3px #79504108)}.character{display:block;width:100%;height:auto;overflow:visible}.puppet-body{transform-origin:120px 236px;animation:breathe 4s ease-in-out infinite}.head{transform-origin:120px 153px;animation:headSway 5s ease-in-out infinite}.blink{transform-box:fill-box;transform-origin:center;animation:blink 5.2s infinite}.pupils{transition:transform 100ms linear}.tail{transform-origin:158px 212px;animation:tail 3s ease-in-out infinite}.arm-left{transform-origin:76px 170px}.arm-right{transform-origin:163px 170px}.character-toy_mouse .head{animation:headSway 3.7s ease-in-out infinite}.react-hit .arm-right{animation:hitArm .35s ease-out}.react-goal .puppet-body{animation:cheer .75s ease-in-out 2}.react-goal .arm-left{animation:waveLeft .5s ease-in-out 3}.react-goal .arm-right{animation:waveRight .5s ease-in-out 3}.react-save .head{animation:nod .55s ease-out 2}.opponent-caption h2{font-size:23px;margin:0 0 7px}.difficulty{display:inline-block;border-radius:20px;border:1px solid #c9b88d;background:#f5dfad9c;color:#6d532b;font-size:12px;font-weight:800;padding:5px 11px}.highscore-panel{margin-top:25px;border-top:1px solid #d4aebb;padding-top:18px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:5px}.section-title h2{font-size:18px}.section-title .icon-button{width:34px;min-height:34px;font-size:21px;border:0;background:transparent}.highscore-panel select{margin:8px 0 4px;width:100%;font-size:12px;min-height:36px;border-color:#dbb9c2;background:#fff7f388}.leaderboard{list-style:none;padding:0;margin:9px 0}.leaderboard li{display:grid;grid-template-columns:20px 25px minmax(0,1fr) auto;gap:7px;align-items:center;border-bottom:1px solid #dbbbc350;min-height:39px;font-size:14px}.leaderboard li:first-child{color:#926621}.leaderboard .rank{font-size:12px;color:#7e6d73}.leaderboard .nickname{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;unicode-bidi:plaintext}.leaderboard .flag{font-size:19px}.leaderboard strong{font-size:13px;font-variant-numeric:tabular-nums}.score-note{font-size:12px;color:#7c606e;line-height:1.5;margin:13px 0}.back-link{display:inline-flex;align-items:center;min-height:44px;font-size:13px;text-underline-offset:4px;color:var(--berry);margin-top:8px}
dialog{border:1px solid #e2c9bb;border-radius:30px;color:var(--ink);background:var(--paper);padding:28px;box-shadow:0 25px 120px #00000060;max-height:90svh;overflow:auto;width:min(440px,calc(100vw - 30px))}dialog::backdrop{background:#303c4270;backdrop-filter:blur(5px)}.result-dialog{text-align:center}.result-dialog h2{font-size:33px;margin:2px 0 9px}.result-dialog>p{font-size:15px;color:#796267}.result-stars{color:#a77d37;font-size:32px;letter-spacing:9px}.result-character{width:105px;margin:-13px auto -9px}.result-points{display:grid;grid-template-columns:auto auto;justify-content:center;align-items:center;gap:0 12px;color:#8b6728;padding:16px 0 14px}.result-points>span{font-size:35px}.result-points>strong{font-size:46px;font-weight:900;line-height:1.1}.result-points small{grid-column:1/3;font-size:13px;color:#7b674d}.match-stats{display:flex;justify-content:center;gap:13px;flex-wrap:wrap;font-size:12px;padding:0 0 17px}.match-stats span b{display:block;font-size:20px}.result-dialog form{text-align:start;border-top:1px solid #e9d5c7;border-bottom:1px solid #e9d5c7;padding:17px 0 10px}.result-dialog label{font-weight:800;display:block;font-size:14px;margin-bottom:6px}.result-dialog form small{font-size:12px;display:block;margin:6px 0 0;color:#745e65}.result-dialog form p{font-size:12px;color:#795e65;line-height:1.4;margin:9px 0}.result-dialog form button{width:100%;font-size:15px;min-height:44px}.result-actions{display:flex;flex-direction:column;gap:12px;margin-top:19px}.info-dialog h2{font-size:27px;margin-bottom:15px}.info-dialog p{line-height:1.6}.info-dialog .primary{width:100%;margin-top:22px}.info-dialog .leaderboard li{min-height:48px}.play-mode .opponent-card{pointer-events:none}.play-mode .table-caption{opacity:.65}.busy .table-overlay .primary{opacity:.6}.playing-pulse{animation:pointPulse .35s ease-out}
@keyframes breathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-2px) scale(1.012)}}@keyframes headSway{0%,100%{transform:rotate(-1.3deg)}50%{transform:rotate(1.3deg)}}@keyframes blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.06)}}@keyframes tail{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(6deg)}}@keyframes cheer{0%,100%{transform:translateY(0) rotate(0)}35%{transform:translateY(-12px) rotate(-3deg)}65%{transform:translateY(-6px) rotate(3deg)}}@keyframes waveLeft{50%{transform:rotate(42deg)}}@keyframes waveRight{50%{transform:rotate(-42deg)}}@keyframes hitArm{50%{transform:rotate(-25deg)}}@keyframes nod{50%{transform:rotate(5deg) translateY(3px)}}@keyframes gesture{0%,100%{transform:translateX(-29px)}50%{transform:translateX(29px)}}@keyframes scorePop{0%{opacity:0;translate:0 7px;scale:.85}15%{opacity:1;scale:1}70%{opacity:1}100%{opacity:0;translate:0 -48px;scale:1.03}}@keyframes goalPop{0%{opacity:0;scale:.5}20%{opacity:1;scale:1.08}40%{scale:1}80%{opacity:1}100%{opacity:0;translate:0 -20px}}@keyframes pointPulse{50%{transform:scale(1.13)}}
@media(min-width:1500px){main{padding-top:20px}.game-layout{gap:42px}}
@media(max-width:1080px){.game-layout{grid-template-columns:170px minmax(290px,400px) minmax(170px,1fr);gap:22px}main{padding-inline:22px}.masthead{padding-inline:26px}.opponent-card{gap:3px}.opponent-card .portrait{width:54px;flex-basis:54px}.opponent-card .portrait svg{width:64px}.big-character{width:175px}.speech{font-size:13px}}
@media(max-width:850px){.game-layout{grid-template-columns:160px minmax(285px,400px);justify-content:center;gap:22px}.friends-panel{display:none}.arena-controls #scores-mobile{display:inline-flex}.timer{margin-left:auto}.heading{max-width:582px;margin:auto}.family-photo{display:none}.masthead{max-width:640px}.opponents-panel{padding-top:0}}
@media(max-width:600px){.masthead{padding:10px 18px 4px}.brand{font-size:26px}.brand img{width:29px;height:29px}.brand-small{font-size:12px}.header-actions{gap:5px}.language-control select{font-size:13px;max-width:114px;padding-right:18px}.masthead .icon-button{width:38px;min-height:38px;font-size:21px}main{padding:9px 12px 18px}.heading{padding:0 6px 13px;gap:8px}.heading h1{font-size:29px;letter-spacing:-.8px}.heading p{font-size:13px;margin-top:4px}.personal-record{padding-left:9px;gap:5px}.personal-record .paw-mark{font-size:21px}.personal-record strong{font-size:21px}.personal-record small{font-size:12px}.game-layout{display:flex;flex-direction:column;gap:13px;align-items:stretch}.opponents-panel h2,.unlock-note,.opponents-panel>.text-button{display:none}.opponents{flex-direction:row;gap:5px;justify-content:center}.opponent-card{min-width:0;min-height:79px;flex:1;display:flex;flex-direction:column;padding:2px 2px 6px;border-radius:15px;gap:0}.opponent-card .portrait{height:48px;width:51px;flex-basis:auto}.opponent-card .portrait svg{width:54px;margin-top:-6px;margin-left:-1px}.opponent-card strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:68px}.opponent-card small,.level-dots{display:none!important}.lock-symbol{right:5px;bottom:5px;font-size:12px}.scoreboard{padding:0 9px 9px;min-height:49px}.goals{font-size:30px}.competitor{font-size:12px;gap:5px}.score-avatar{width:40px;height:35px}.score-avatar svg{width:43px}.scoreboard .white-handle{width:31px;height:27px}.table-wrap{width:100%;min-width:0;max-width:400px;margin:auto;border-radius:33px}.table-wrap canvas{border-radius:33px}.table-overlay{border-radius:22px}.start-card{padding:18px 19px 22px;max-width:300px;border-radius:23px}.start-card h2{font-size:24px}.start-card p{font-size:14px;margin-bottom:14px}.start-card .primary{font-size:18px;min-height:49px}.start-star{font-size:29px}.gesture{height:38px;margin:9px 0}.gesture .white-handle{width:44px;height:39px}.country-control{font-size:12px;margin-bottom:14px}.country-control select{font-size:14px;min-height:43px}.arena-controls{padding-top:10px}.table-caption{font-size:12px;margin:6px 0 0}.live-points{font-size:12px}.live-points strong{font-size:22px}.back-link{margin:2px 4px}.play-mode .heading,.play-mode .opponents-panel,.play-mode .back-link,.play-mode .table-caption{display:none}.play-mode main{padding-top:5px}.play-mode .table-wrap{width:min(100%,calc((100svh - 178px)*2/3));max-width:440px}.play-mode .arena-controls{max-width:440px;margin:auto}.play-mode .scoreboard{max-width:440px;margin:auto}.result-dialog{padding:22px}.result-dialog h2{font-size:29px}.result-dialog form p{font-size:12px}}
@media(max-height:540px) and (orientation:landscape){.masthead{padding:4px 20px}.heading{display:none}.game-layout{display:grid;grid-template-columns:140px minmax(200px,290px) 170px;gap:20px}.friends-panel{display:block}.opponents-panel h2{display:none}.opponents{flex-direction:column}.opponent-card{min-height:55px;padding:2px 7px;gap:2px}.opponent-card .portrait{height:43px;width:45px;flex-basis:45px}.opponent-card .portrait svg{width:47px}.opponent-card strong{font-size:12px}.opponent-card small{display:none}.unlock-note,.family-photo,.opponents-panel>.text-button,.heading,.back-link,.table-caption{display:none}.table-wrap{width:min(100%,calc((100svh - 196px)*2/3));margin:auto}.scoreboard{min-height:44px;padding-bottom:6px}.score-avatar{display:none}.goals{font-size:26px}.arena-controls{padding-top:5px;justify-content:center}.live-points{font-size:12px}.timer{margin:0}.big-character{width:96px}.speech{font-size:12px;padding:8px}.opponent-caption h2{font-size:18px}.highscore-panel{margin-top:12px;padding-top:10px}.section-title h2{font-size:14px}.score-note{font-size:12px}.leaderboard li{min-height:27px;font-size:12px}.highscore-panel .leaderboard li:nth-child(n+4){display:none}.start-card{padding:10px 13px;border-radius:17px}.start-card h2{font-size:18px}.start-star,.gesture{display:none}.start-card p{font-size:12px;margin:8px 0}.country-control{font-size:12px;margin-bottom:9px}.country-control select{min-height:33px;font-size:12px;padding:5px}.primary{min-height:38px;font-size:14px;padding:8px}.start-card small{font-size:12px;margin-top:7px}.play-mode .opponents-panel{display:block}.play-mode .table-wrap{width:min(100%,calc((100svh - 196px)*2/3))}.play-mode .arena-controls #scores-mobile{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition:none!important}.gesture .white-handle{transform:none}}
@supports(padding:max(0px)){.masthead{padding-top:max(10px,env(safe-area-inset-top));padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}main{padding-bottom:max(18px,env(safe-area-inset-bottom))}}

html[lang="ar"]{font-family:Nunito,"Noto Naskh Arabic",sans-serif}html[lang="ar"] h1,html[lang="ar"] h2{font-family:"Noto Naskh Arabic",serif;letter-spacing:0}html[lang="hi"]{font-family:Nunito,"Noto Serif Devanagari",sans-serif}html[lang="hi"] h1,html[lang="hi"] h2{font-family:"Noto Serif Devanagari",serif;letter-spacing:0}html[lang="zh-Hans"]{font-family:Nunito,"Noto Serif SC",sans-serif}html[lang="zh-Hans"] h1,html[lang="zh-Hans"] h2{font-family:"Noto Serif SC",serif;letter-spacing:0}

.country-choice{display:flex!important;align-items:center;gap:9px}.country-choice img{object-fit:cover;border-radius:2px;flex-shrink:0}.country-control .country-choice select{flex:1;min-width:0}.leaderboard .flag{width:24px;height:18px;object-fit:cover;border-radius:2px}.pending-score{display:block;margin:5px auto}.play-mode .pending-score{display:none}

@media(max-width:600px) and (orientation:portrait){.play-mode .score-avatar{width:62px;height:65px}.play-mode .score-avatar svg{width:65px;margin-top:-7px}.play-mode .scoreboard{min-height:76px;padding-bottom:7px}.play-mode .competitor:first-child{gap:2px;flex-direction:column;align-items:flex-start}.play-mode .competitor:first-child>span{max-width:118px}.play-mode .table-wrap{width:min(100%,calc((100svh - 218px)*2/3))}}

@media(min-width:601px) and (min-height:541px) and (max-height:850px){.start-card{padding:18px 18px 21px}.start-card h2{font-size:23px}.start-card .start-star,.start-card .gesture{display:none}.start-card p{font-size:14px;margin:12px 0 15px}.start-card .primary{min-height:46px;font-size:16px}.start-card .country-control{margin-bottom:13px}.start-card .country-control select{font-size:13px}.start-card small{font-size:12px;margin-top:8px}}

@media(max-height:540px) and (orientation:landscape){.table-wrap{min-width:0}.start-card h2{font-size:16px}.start-card p{font-size:12px;line-height:1.25;margin:6px 0}.start-card .primary{min-height:38px;font-size:14px;padding:8px 12px}.start-card .country-control{margin-bottom:8px}.start-card .country-control select{font-size:12px;min-height:33px}}

.opponent-details{min-width:0;flex:1}.opponent-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Keep motion on the current opponent and keep small children focused on play. */
.opponent-card .character *{animation:none!important}.paused .character *,.page-hidden .character *{animation-play-state:paused!important}
.result-actions{margin:10px 0 18px;gap:9px}.result-dialog form{margin-top:12px}.result-dialog .match-stats{padding-bottom:10px}
.primary,.opponent-card{transition-timing-function:cubic-bezier(.22,.8,.25,1)}
.score-pop{animation-timing-function:cubic-bezier(.16,.8,.25,1)}
@media(prefers-reduced-motion:reduce){.score-pop{animation:none!important;opacity:1;translate:0;scale:1}.countdown{animation:none!important}.pupils{transform:none!important}}
@media(max-height:540px) and (orientation:landscape){
  main{padding-top:5px}.game-layout{grid-template-columns:140px minmax(170px,calc((100svh - 88px)*2/3)) 190px;justify-content:center;gap:20px}
  .arena{position:relative}.table-wrap{width:100%}.scoreboard{position:absolute;inset-inline-start:calc(100% + 20px);top:0;width:190px;padding-inline:0}
  .competitor>span{max-width:65px}.arena-controls{position:absolute;inset-inline-start:calc(100% + 20px);top:calc(100svh - 180px);width:190px;display:grid;grid-template-columns:44px 1fr 44px;gap:7px}
  .arena-controls #scores-mobile{display:inline-flex}.timer{grid-column:1/-1;text-align:center}.live-points{display:grid;grid-template-columns:auto auto;justify-content:center;gap:0 5px}.live-points>span:last-child{grid-column:1/-1;text-align:center}
  .friends-panel .opponent-stage{margin-top:50px}.friends-panel .highscore-panel{display:none}.big-character{width:108px}.speech{max-width:190px}
  .start-card{width:91%;padding:11px 13px}.start-card h2{font-size:17px}.start-card .country-control select{min-height:40px}.start-card .primary{min-height:44px}.start-card p{line-height:1.3;margin:8px 0}.start-card small:empty{display:none}
  .play-mode .masthead{display:none}.play-mode main{padding-top:10px;padding-bottom:10px}.play-mode .game-layout{grid-template-columns:140px minmax(170px,calc((100svh - 20px)*2/3)) 190px}
  .play-mode .table-wrap{width:100%}.play-mode .arena-controls{top:calc(100svh - 130px)}.play-mode .arena-controls #scores-mobile{display:inline-flex}
}

@media(max-width:740px) and (max-height:540px) and (orientation:landscape){.play-mode .opponents-panel{display:none}.play-mode .game-layout{grid-template-columns:minmax(170px,calc((100svh - 20px)*2/3)) 190px}}

/* Results keep replay/next-level actions visible in short landscape windows. */
.arena-controls #scores-mobile{display:inline-flex}
@media(max-height:540px) and (orientation:landscape){
  .result-dialog{width:min(600px,calc(100vw - 30px));padding:18px 22px}.result-dialog .result-stars,.result-dialog .result-character{display:none}
  .result-dialog h2{font-size:25px;margin:0 0 6px}.result-dialog>p{font-size:13px}.result-dialog .result-points{padding:9px 0;gap:0 9px}.result-dialog .result-points strong{font-size:35px}.result-dialog .result-points>span{font-size:25px}
  .result-dialog .match-stats{padding-bottom:4px}.result-dialog .match-stats b{display:inline;margin-inline-end:4px;font-size:14px}
  .result-dialog .result-actions{flex-direction:row;flex-wrap:wrap;margin:10px 0}.result-actions>button{flex:1;min-width:110px;font-size:14px;min-height:44px;padding:8px 12px}
  .play-mode main{padding-block:calc(10px + env(safe-area-inset-top)) calc(10px + env(safe-area-inset-bottom));padding-inline:max(12px,env(safe-area-inset-left)) max(12px,env(safe-area-inset-right))}
  .play-mode .game-layout{grid-template-columns:140px minmax(170px,calc((100svh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom))*2/3)) 190px}
}
@media(max-width:740px) and (max-height:540px) and (orientation:landscape){.play-mode .game-layout{grid-template-columns:minmax(170px,calc((100svh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom))*2/3)) 190px}}

@media(max-height:540px) and (orientation:landscape){.play-mode .opponent-caption{display:none}.play-mode .big-character{width:clamp(68px,calc((100svh - 240px)*.8),108px)}}
@media(max-width:740px) and (max-height:540px) and (orientation:landscape){
  body:not(.play-mode) .game-layout{grid-template-columns:100px minmax(140px,calc((100svh - 88px)*2/3)) 150px;gap:12px}
  body:not(.play-mode) .scoreboard,body:not(.play-mode) .arena-controls{inset-inline-start:calc(100% + 12px);width:150px}
  body:not(.play-mode) .opponents{gap:4px}body:not(.play-mode) .opponent-card{flex-direction:row;text-align:start;min-height:44px}
  body:not(.play-mode) .opponent-card .portrait{width:36px;height:36px;flex-basis:36px}body:not(.play-mode) .opponent-card .portrait svg{width:40px}
  body:not(.play-mode) .big-character,body:not(.play-mode) .opponent-caption{display:none}
}

.quick-start{position:fixed;inset-inline:12px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:5;display:flex;align-items:center;gap:12px;padding:12px;background:#fff9f4f5;border:1px solid #d6aeba;border-radius:20px;box-shadow:0 8px 28px #00000026}
.quick-start .country-control{flex:1;min-width:0;margin:0;font-size:12px}.quick-start .country-control>span{margin-bottom:4px}.quick-start .country-choice{gap:6px}.quick-start select{font-size:13px;min-height:44px;padding-inline:7px 20px}.quick-start .primary{font-size:16px;min-height:52px;padding:12px 17px;max-width:48%}
.compact-lobby:not(.play-mode) main{padding-bottom:128px}.compact-lobby .start-card{width:88%;padding:19px}.compact-lobby .start-card .gesture{margin:12px 0}.compact-lobby .start-card small:empty{display:none}.play-mode .quick-start{display:none}

/* Approved illustration portraits: animate their frame while preserving the artwork. */
.book-character{position:relative;aspect-ratio:1;display:block;width:100%;height:auto}
.book-character .portrait-art{position:relative;display:block;width:100%;height:100%;aspect-ratio:1;overflow:hidden;border-radius:50%;background:#fff7ec;box-shadow:0 0 0 1px #bc8b7640,inset 0 0 0 3px #fffaf4;isolation:isolate;transform-origin:50% 60%}
.book-character .portrait-art img{position:absolute;display:block;max-width:none;max-height:none;user-select:none;pointer-events:none}
.opponent-card .portrait .book-character{width:100%;height:auto;margin:0}
.opponent-card.locked{opacity:1}.opponent-card.locked .opponent-details,.opponent-card.locked .lock-symbol{opacity:.65}
.score-avatar .book-character{width:100%;margin:0}
.big-character .book-character{padding:7px}.big-character .portrait-art{border:4px solid #fff8ed;box-shadow:0 0 0 1px #b88c68,0 12px 22px #00000013;animation:bookFloat 5s ease-in-out infinite}
.big-character .character-cat[data-view="stage"] .portrait-art{border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible;filter:drop-shadow(0 8px 3px #00000010)}
.result-character .portrait-art{border:3px solid #fff7e8}.result-character.react-goal .portrait-art{animation:bookCelebrate 680ms cubic-bezier(.22,.8,.25,1) 2}
@keyframes bookFloat{0%,100%{transform:translateY(0) rotate(-.5deg)}50%{transform:translateY(-4px) rotate(.5deg)}}
@keyframes bookCelebrate{0%,100%{transform:translateY(0)}36%{transform:translateY(-8px) rotate(-2deg)}68%{transform:translateY(-3px) rotate(2deg)}}
@media(min-width:601px){.opponent-card strong{white-space:normal;text-overflow:clip;overflow:visible;overflow-wrap:anywhere;line-height:1.2}}
@media(prefers-reduced-motion:reduce){.book-character .portrait-art{animation:none!important;transform:none!important}}
