/* As fontes agora sao locais: ver `fonts.css`, carregado antes desta folha.
   O @import externo era bloqueado pelo CSP (`default-src 'self'`) e a
   tipografia inteira caia em fallback -- inclusive a Chakra Petch, que
   nem estava nesta lista e nunca chegou a carregar. */
:root{--ink:#eaf8ff;--muted:#86a3b5;--cyan:#35efff;--blue:#168cff;--red:#ff496c;--gold:#ffc65c;--panel:rgba(6,18,31,.88);--line:rgba(125,220,255,.18)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#020811;color:var(--ink);font-family:Inter,system-ui,sans-serif;overflow:hidden}button{font:inherit;color:inherit}.app-shell{min-height:100dvh;background:linear-gradient(90deg,rgba(1,7,14,.93),rgba(2,12,22,.35) 47%,rgba(1,7,14,.78)),url('assets/beast-grid-arena.png') center/cover fixed}.app-shell:after{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 45%,transparent 20%,rgba(0,5,12,.48) 100%),linear-gradient(rgba(2,12,20,.15),rgba(2,12,20,.15));mix-blend-mode:multiply}.topbar{height:68px;padding:0 4vw;display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--line);background:rgba(2,9,17,.8);position:relative;z-index:10;backdrop-filter:blur(16px)}.brand{border:0;background:none;display:flex;align-items:center;gap:12px;font-family:'Chakra Petch';font-weight:600;letter-spacing:3px;font-size:18px;cursor:pointer}.brand b{color:var(--cyan)}.brand-mark{width:38px;height:38px;display:grid;place-items:center;clip-path:polygon(50% 0,94% 25%,94% 75%,50% 100%,6% 75%,6% 25%);background:linear-gradient(135deg,var(--cyan),#1576ff);color:#03101b;font-size:13px;letter-spacing:0}.player-chip{margin-left:auto;display:flex;align-items:center;gap:9px}.player-chip>span:last-child{display:flex;flex-direction:column;font-size:12px}.player-chip small{color:var(--muted);margin-top:3px}.avatar{width:35px;height:35px;border:1px solid var(--cyan);border-radius:8px;display:grid;place-items:center;background:linear-gradient(135deg,#12314e,#07121e);box-shadow:0 0 16px rgba(53,239,255,.2);font-weight:900}.wallet{display:flex;gap:15px;color:var(--muted);font-size:13px}.wallet b{color:white}.icon-btn{border:1px solid var(--line);background:#081725;border-radius:8px;width:36px;height:36px;cursor:pointer}.screen{display:none;position:relative;z-index:2;height:calc(100dvh - 68px)}.screen.active{display:flex}#home-screen{padding:5vh 7vw;align-items:center}.hero-copy{max-width:570px}.eyebrow{color:var(--cyan);font:700 12px 'Chakra Petch';letter-spacing:3px}.hero-copy h1{font:900 clamp(45px,6vw,82px)/.88 'Chakra Petch';letter-spacing:-3px;margin:13px 0}.hero-copy h1 em{font-style:normal;color:transparent;-webkit-text-stroke:1px var(--cyan);filter:drop-shadow(0 0 12px rgba(53,239,255,.35))}.subtitle{max-width:500px;color:#a9c2d1;line-height:1.6}.rank-card{display:flex;gap:15px;align-items:center;margin:24px 0;padding:14px 18px;border-left:3px solid var(--gold);background:linear-gradient(90deg,rgba(17,36,52,.9),rgba(17,36,52,.18));max-width:410px}.rank-emblem{font-size:34px;filter:drop-shadow(0 0 8px var(--gold))}.rank-card>div:last-child{flex:1}.rank-card small{font-size:9px;letter-spacing:1.5px;color:var(--muted);display:block}.rank-card strong{font-family:'Chakra Petch';font-size:18px}.rp-line,.quest-progress{height:4px;background:#1d3445;margin:8px 0 4px;border-radius:4px;overflow:hidden}.rp-line i,.quest-progress i{display:block;height:100%;width:42%;background:linear-gradient(90deg,var(--gold),#fff2ae);box-shadow:0 0 10px var(--gold)}.rank-card span{font-size:9px;color:var(--muted)}button.primary{min-width:300px;border:0;clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%);background:linear-gradient(100deg,#1de4f5,#1a86ff);color:#02101b;padding:13px 24px;display:inline-grid;grid-template-columns:30px 1fr;cursor:pointer;box-shadow:0 0 30px rgba(27,211,255,.28);text-align:left}.primary span{grid-row:1/3;font-size:24px;align-self:center}.primary b{font-family:'Chakra Petch';font-size:16px;letter-spacing:1.3px}.primary small{font-size:9px;opacity:.65}.secondary{border:1px solid rgba(90,206,255,.35);background:rgba(5,22,35,.72);padding:14px 24px;margin-left:8px;font:700 11px 'Chakra Petch';letter-spacing:1px;cursor:pointer}.season-panel{position:absolute;right:5vw;bottom:5vh;width:300px;padding:20px;background:linear-gradient(135deg,rgba(8,26,39,.9),rgba(4,13,23,.65));border:1px solid var(--line);clip-path:polygon(0 0,calc(100% - 22px) 0,100% 22px,100% 100%,0 100%)}.season-panel small{color:var(--muted);letter-spacing:1px}.season-panel h2{font:700 18px 'Chakra Petch';margin:8px 0}.season-panel p{font-size:12px;color:#9bb2c1;line-height:1.5}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--cyan);display:inline-block;margin-right:8px;box-shadow:0 0 10px var(--cyan)}
#lobby-screen{align-items:center;justify-content:center;padding:24px}.lobby-card{width:min(900px,94vw);padding:28px;background:rgba(4,14,24,.93);border:1px solid var(--line);backdrop-filter:blur(16px)}.back{border:0;background:none;color:var(--muted);font-size:11px;cursor:pointer}.lobby-card h2{font:800 35px 'Chakra Petch';margin:8px 0}.muted{color:var(--muted)}.arena-list{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:22px 0}.arena-option{border:1px solid var(--line);background:#071725;padding:15px 10px;min-height:125px;text-align:left;cursor:pointer;transition:.2s}.arena-option:hover,.arena-option.selected{transform:translateY(-4px);border-color:var(--cyan);box-shadow:0 0 22px rgba(53,239,255,.16)}.arena-option b{display:block;font:700 15px 'Chakra Petch';color:var(--cyan)}.arena-option strong{font-size:25px;display:block;margin:9px 0}.arena-option small{color:var(--muted)}.rules-strip{display:flex;gap:10px;margin-bottom:20px}.rules-strip span{flex:1;background:rgba(10,31,46,.8);padding:10px;text-align:center;color:var(--muted);font-size:11px}.rules-strip b{color:var(--gold);font-size:16px}
.battle-screen{flex-direction:column;padding:10px 3vw 12px;background:linear-gradient(rgba(1,7,13,.22),rgba(1,7,13,.55))}.battle-hud{height:55px;display:flex;align-items:center;gap:16px}.combatant{display:flex;align-items:center;gap:9px;min-width:190px}.combatant span:last-child{display:flex;flex-direction:column}.combatant small,.survivors small{font-size:8px;letter-spacing:1.4px;color:var(--muted)}.combatant.red .avatar{border-color:var(--red);box-shadow:0 0 14px rgba(255,73,108,.25)}.history{display:flex;gap:4px;flex:1;justify-content:center}.history span{width:24px;height:24px;display:grid;place-items:center;font:bold 10px 'Chakra Petch';border:1px solid var(--line);background:#081724;color:#7190a3}.history .dead{opacity:.3;text-decoration:line-through}.history .seen-a{border-color:var(--blue);color:#72c9ff}.history .seen-b{border-color:var(--red);color:#ff91a5}.survivors{display:flex;flex-direction:column;text-align:right}.survivors b{font:700 22px 'Chakra Petch'}.battle-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center}.board{width:min(84vw,1120px);height:min(65vh,610px);display:grid;gap:clamp(4px,.65vw,10px);padding:clamp(8px,1vw,16px);background:rgba(1,10,18,.38);border:1px solid rgba(90,220,255,.22);box-shadow:0 20px 80px #000,inset 0 0 45px rgba(0,214,255,.06);perspective:900px}.cell{position:relative;border:1px solid rgba(110,202,232,.16);background:linear-gradient(145deg,rgba(25,56,72,.46),rgba(4,18,29,.62));min-width:0;min-height:0;cursor:pointer;display:grid;place-items:center;transition:.18s;overflow:visible}.cell:before{content:"";position:absolute;inset:4px;border:1px solid rgba(160,226,245,.07)}.cell:hover{border-color:rgba(53,239,255,.55);background:rgba(21,64,80,.62)}.cell.valid{border-color:var(--gold);box-shadow:inset 0 0 18px rgba(255,198,92,.16);animation:validPulse 1s infinite}.cell.selected{border-color:var(--cyan);box-shadow:0 0 18px rgba(53,239,255,.45),inset 0 0 22px rgba(53,239,255,.18)}.piece{width:min(70%,74px);aspect-ratio:.8;position:relative;transform-style:preserve-3d;transition:transform .48s cubic-bezier(.2,.8,.2,1),filter .2s;z-index:2}.piece.hidden{filter:drop-shadow(0 9px 7px rgba(0,0,0,.55))}.piece.hidden .front{transform:rotateY(180deg)}.piece.hidden .back{transform:rotateY(0)}.piece.revealed .front{transform:rotateY(0)}.piece.revealed .back{transform:rotateY(-180deg)}.piece>div{position:absolute;inset:0;backface-visibility:hidden;border-radius:42% 42% 14px 14px;display:grid;place-items:center}.piece .back{background:radial-gradient(circle at 50% 36%,#34eaf5 0 8%,#0b4359 9% 21%,#061826 23% 52%,#092e42 53% 58%,#030c15 59%);border:2px solid #3ab8d1;box-shadow:inset 0 0 15px #07111b,0 0 9px rgba(47,235,255,.28)}.piece .back:after{content:"?";font:800 clamp(17px,2.5vw,32px) 'Chakra Petch';color:#76f6ff;text-shadow:0 0 12px #22ddeb}.piece .front{transform:rotateY(180deg);background:linear-gradient(160deg,#203447,#07131f 62%);border:2px solid var(--owner);box-shadow:0 0 12px color-mix(in srgb,var(--owner),transparent 55%)}.piece .beast{position:absolute;top:10%;font-size:clamp(15px,2.3vw,34px);filter:drop-shadow(0 0 6px var(--owner));opacity:.85}.piece .power{position:absolute;bottom:5%;min-width:74%;text-align:center;background:#02080f;border:1px solid var(--owner);font:900 clamp(18px,3vw,39px)/1 'Chakra Petch';color:#fff;padding:2px 5px;text-shadow:0 2px #000}.piece .owner-tag{position:absolute;left:4px;top:4px;font:bold 8px 'Chakra Petch';color:var(--owner)}.piece.owner-a{--owner:var(--blue)}.piece.owner-b{--owner:var(--red)}.piece.reveal-now{animation:revealBurst .65s}.piece.captured{animation:captureOut .55s forwards}.piece.counter-win{animation:counterFlash .8s}.turn-banner{position:absolute;top:2px;left:50%;transform:translateX(-50%);font:700 11px 'Chakra Petch';letter-spacing:2px;color:var(--cyan);z-index:4}.turn-banner.enemy{color:var(--red)}.timer-wrap{position:absolute;right:1vw;top:4px;width:47px;height:47px;z-index:4}.timer-wrap svg{transform:rotate(-90deg)}.timer-bg,.timer-ring{fill:none;stroke-width:4}.timer-bg{stroke:#122b3c}.timer-ring{stroke:var(--cyan);stroke-linecap:round;stroke-dasharray:113;transition:stroke-dashoffset .1s linear,stroke .2s}.timer-wrap b{position:absolute;inset:0;display:grid;place-items:center;font:700 14px 'Chakra Petch'}.timer-wrap.urgent{animation:timerPulse .45s infinite}.timer-wrap.urgent .timer-ring{stroke:var(--red)}.action-bar{height:55px;border-top:1px solid var(--line);display:flex;align-items:center;gap:12px}.action-bar>div{display:flex;flex-direction:column;flex:1}.action-bar b{font:700 13px 'Chakra Petch'}.action-bar small{font-size:10px;color:var(--muted)}.action-bar button{padding:9px 14px;background:#0a1d2c;border:1px solid var(--line);font-size:9px;letter-spacing:1px;cursor:pointer}.action-bar button:disabled{opacity:.3}.action-bar .danger{border-color:rgba(255,73,108,.4);color:#ff859b}.battle-toast{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.8);opacity:0;pointer-events:none;font:900 clamp(24px,5vw,68px) 'Chakra Petch';color:white;text-shadow:0 0 22px var(--cyan),0 3px #06131e;z-index:9;white-space:nowrap}.battle-toast.show{animation:toast .85s}
.result-screen{align-items:center;justify-content:center;background:rgba(1,7,13,.7)}.result-card{width:min(540px,92vw);padding:30px;background:rgba(4,15,25,.96);border:1px solid var(--line);text-align:center;box-shadow:0 24px 90px #000;position:relative}.result-card h2{font:900 58px 'Chakra Petch';margin:4px;color:var(--cyan);text-shadow:0 0 22px rgba(53,239,255,.4)}.result-card.defeat h2{color:var(--red)}.score-compare{display:grid;grid-template-columns:1fr 40px 1fr;align-items:center;margin:22px 0}.score-compare div{background:#071928;padding:12px}.score-compare small{display:block;font-size:8px;color:var(--muted)}.score-compare b{font:800 32px 'Chakra Petch'}.breakdown{font-size:11px;color:var(--muted);display:grid;grid-template-columns:1fr 1fr;text-align:left;gap:5px 18px;padding:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.breakdown span:nth-child(even){text-align:right;color:white}.rp-result{display:flex;justify-content:space-between;padding:16px;font:700 12px 'Chakra Petch'}.rp-result i{color:#65f2a6;font-style:normal}.result-card .primary{display:block;width:100%;text-align:center}.result-card .secondary{width:100%;margin:8px 0 0}.result-glow{position:absolute;width:45vw;height:45vw;background:radial-gradient(circle,rgba(53,239,255,.18),transparent 60%);animation:glow 2s infinite}
@keyframes revealBurst{0%{transform:scale(.7) rotateY(0);filter:brightness(4)}55%{transform:scale(1.2) rotateY(180deg)}100%{transform:scale(1)}}@keyframes captureOut{40%{transform:scale(1.18);filter:brightness(4)}100%{transform:scale(.1) rotate(20deg);opacity:0;filter:blur(5px)}}@keyframes counterFlash{0%,100%{filter:none}40%{filter:brightness(3) drop-shadow(0 0 20px var(--gold));transform:scale(1.17)}}@keyframes validPulse{50%{box-shadow:inset 0 0 28px rgba(255,198,92,.28)}}@keyframes timerPulse{50%{transform:scale(1.12)}}@keyframes toast{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}25%,65%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-65%) scale(1.1)}}@keyframes glow{50%{transform:scale(1.13);opacity:.6}}
@media(max-width:820px){.topbar{height:52px;padding:0 12px}.screen{height:calc(100dvh - 52px)}.wallet,.player-chip small,.brand>span:last-child{display:none}#home-screen{padding:4vh 6vw}.hero-copy{max-width:450px}.season-panel{display:none}.hero-copy h1{font-size:43px}.subtitle{font-size:12px}.rank-card{margin:14px 0}.primary{min-width:250px}.secondary{margin-left:4px}.arena-list{grid-template-columns:repeat(3,1fr)}.arena-option{min-height:90px}.battle-screen{padding:4px 8px}.board{width:95vw;height:62vh;gap:4px;padding:5px}.history span{width:18px;height:18px;font-size:8px}.combatant{min-width:110px}.combatant b{font-size:10px}.battle-hud{height:40px}.action-bar{height:48px}.action-bar small{display:none}.piece{width:min(68%,55px)}.piece .beast{font-size:20px}.piece .power{font-size:23px}.result-card{padding:18px}.result-card h2{font-size:42px}}
@media(max-height:500px){.topbar{height:45px}.screen{height:calc(100dvh - 45px)}#home-screen{padding:2vh 5vw}.hero-copy h1{font-size:40px}.subtitle{margin:8px 0}.rank-card{padding:8px;margin:8px 0}.season-panel{display:none}.battle-hud{height:32px}.combatant .avatar{width:27px;height:27px}.board{height:64vh}.action-bar{height:40px}.arena-option{min-height:80px;padding:8px}.lobby-card{padding:16px}}

/* ==================================================================
   BASE CLARA ORIGINAL · SKIN JARDIM CELESTE
   Preservada como camada histórica; a revisão anime ao final é a ativa.
   ================================================================== */
:root{--ink:#39415f;--muted:#71809b;--cyan:#4ebdd3;--blue:#5c9df5;--red:#f07b96;--gold:#f3b84b;--panel:rgba(255,252,246,.91);--line:rgba(91,126,165,.2)}
html,body{background:#b9e6f8;color:var(--ink)}
.app-shell{background:linear-gradient(90deg,rgba(255,252,244,.88),rgba(255,255,255,.18) 48%,rgba(255,249,239,.28)),url('assets/beast-grid-arena-cozy.png') center/cover fixed}
.app-shell:after{background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(108,184,214,.1));mix-blend-mode:normal}
.topbar{background:rgba(255,251,245,.84);border-color:rgba(110,151,179,.24);box-shadow:0 4px 24px rgba(72,117,143,.12)}
.brand{color:#4a526f}.brand b{color:#4fb6cb}.brand-mark{clip-path:none;border-radius:13px 13px 17px 17px;background:linear-gradient(145deg,#7ed8e3,#78aef5);color:white;box-shadow:0 5px 0 #4e87bd,0 8px 18px rgba(69,134,185,.22);transform:rotate(-3deg)}
.avatar{background:linear-gradient(145deg,#fff,#eaf8fa);color:#537092;border:2px solid #75c8d4;box-shadow:0 3px 0 #5ba0ae,0 7px 16px rgba(69,134,185,.16)}
.wallet{background:rgba(255,255,255,.7);padding:8px 13px;border-radius:20px;color:#7a83a0;box-shadow:0 3px 12px rgba(75,105,135,.1)}.wallet b{color:#525b75}.icon-btn{background:#fff8e9;border-color:#eed7a1;color:#9b7841;box-shadow:0 3px 0 #e3c581}
#home-screen{padding-right:5vw}.hero-copy{position:relative;z-index:3;max-width:590px}.eyebrow{color:#e08b67;text-shadow:0 1px white}.hero-copy h1{color:#46506c;letter-spacing:-2.5px;text-shadow:0 3px white}.hero-copy h1 em{color:#61bdca;-webkit-text-stroke:0;filter:none}.subtitle{color:#68758d;font-weight:600;text-shadow:0 1px 0 white}.rank-card{border:1px solid rgba(245,183,76,.35);border-left:6px solid #f0b84c;border-radius:8px 22px 22px 8px;background:linear-gradient(100deg,rgba(255,251,235,.96),rgba(255,255,255,.8));box-shadow:0 8px 24px rgba(113,91,56,.12)}.rank-emblem{background:#fff4c8;border-radius:50%;width:54px;height:54px;display:grid;place-items:center;filter:none;box-shadow:0 3px 0 #eecf73}.rp-line,.quest-progress{background:#e7e2d9}.rp-line i,.quest-progress i{background:linear-gradient(90deg,#ffc95b,#ffda80);box-shadow:none}
button.primary{border-radius:15px;clip-path:none;background:linear-gradient(105deg,#71d8d0,#70b7f1);color:white;box-shadow:0 6px 0 #4a9fc0,0 12px 25px rgba(61,140,178,.25);text-shadow:0 1px 0 rgba(45,92,123,.25);transition:.18s}button.primary:hover{transform:translateY(-2px);box-shadow:0 8px 0 #4a9fc0,0 14px 28px rgba(61,140,178,.26)}button.primary:active{transform:translateY(4px);box-shadow:0 2px 0 #4a9fc0}.secondary{border:2px solid #d7b8e9;background:rgba(255,250,255,.88);color:#8f6ba8;border-radius:14px;box-shadow:0 4px 0 #c9a7dc;transition:.18s}.secondary:hover{transform:translateY(-2px)}
.mascot-hero{position:absolute;right:13vw;top:3vh;width:min(38vw,490px);aspect-ratio:1;z-index:2;filter:drop-shadow(0 16px 24px rgba(78,121,153,.2));animation:mascotFloat 4s ease-in-out infinite}.mascot-hero img{width:100%;height:100%;object-fit:cover;border-radius:50%;border:8px solid rgba(255,255,255,.82);box-shadow:inset 0 0 0 3px #f0cc83,0 12px 0 rgba(121,177,192,.3)}.mascot-name{position:absolute;right:-18px;bottom:28px;background:rgba(255,253,248,.95);border:2px solid #f0c76e;border-radius:16px;padding:10px 22px;display:flex;flex-direction:column;transform:rotate(-2deg);box-shadow:0 6px 0 #deb15d}.mascot-name small{font-size:8px;color:#ad87a9;letter-spacing:1.5px}.mascot-name b{font:800 25px 'Chakra Petch';color:#5cadbd}.mascot-name span{font-size:10px;color:#7b8495}.mascot-sticker{position:absolute;left:0;top:8%;z-index:2;width:72px;height:72px;border-radius:50%;display:grid;place-items:center;text-align:center;background:#ff8f9c;color:white;font:700 10px 'Chakra Petch';border:4px solid white;box-shadow:0 5px 0 #dd697b;transform:rotate(-10deg)}.mascot-sticker b{font-size:14px}.floaties i{position:absolute;font-style:normal;color:#f4b85c;text-shadow:0 2px white;animation:floatSpark 4s ease-in-out infinite;z-index:2}.floaties i:nth-child(1){left:46%;top:14%;font-size:25px}.floaties i:nth-child(2){left:54%;top:72%;font-size:23px;color:#ef8ea4;animation-delay:-1s}.floaties i:nth-child(3){right:6%;top:24%;font-size:27px;color:#ab8fd5;animation-delay:-2s}.floaties i:nth-child(4){right:43%;top:43%;font-size:19px;color:#79cbbf;animation-delay:-.6s}.floaties i:nth-child(5){right:4%;bottom:12%;color:#f2b650;animation-delay:-2.8s}
.season-panel{right:3vw;bottom:4vh;background:rgba(255,253,248,.93);border:2px solid rgba(137,174,191,.28);border-radius:18px;clip-path:none;box-shadow:0 8px 0 rgba(115,169,185,.28),0 16px 28px rgba(58,103,127,.14);z-index:4}.season-panel h2{color:#59627d}.season-panel p{color:#758097}.live-dot{background:#f39a7a;box-shadow:0 0 0 4px rgba(243,154,122,.18)}
#lobby-screen{background:rgba(206,235,243,.2)}.lobby-card{background:rgba(255,253,248,.94);border:3px solid rgba(255,255,255,.8);border-radius:26px;box-shadow:0 14px 0 rgba(87,145,164,.2),0 25px 50px rgba(54,99,125,.2)}.lobby-card h2{color:#525c78}.arena-option{background:linear-gradient(160deg,#fff,#fff8ed);border:2px solid #d9e0e2;border-radius:18px;color:#566079;box-shadow:0 4px 0 #cdd8dc}.arena-option:hover,.arena-option.selected{border-color:#72c8d2;box-shadow:0 6px 0 #60adbb,0 12px 22px rgba(79,153,169,.16)}.arena-option b{color:#e59375}.arena-option strong{color:#5caebd}.rules-strip span{background:#f6f1eb;border-radius:12px;color:#737d94}.rules-strip b{color:#ed9a5d}
.battle-screen{background:linear-gradient(rgba(255,255,255,.08),rgba(200,236,243,.13));color:#4b5570}.battle-hud{background:rgba(255,253,248,.8);border-radius:15px;padding:0 13px;box-shadow:0 4px 12px rgba(64,113,136,.1)}.combatant.red .avatar{border-color:#f18ba0;box-shadow:0 3px 0 #d76c83}.history span{background:#fffaf1;border-color:#d7dadd;color:#9ca4b2;border-radius:7px}.history .seen-a{border-color:#6eaaf1;color:#5189ce;background:#edf6ff}.history .seen-b{border-color:#ef8ba0;color:#d7657e;background:#fff0f3}.board{background:rgba(255,251,238,.44);border:3px solid rgba(255,255,255,.72);border-radius:22px;box-shadow:0 12px 0 rgba(107,159,173,.2),0 24px 50px rgba(56,111,132,.17),inset 0 0 35px rgba(255,255,255,.45)}.cell{border:2px solid rgba(187,159,119,.18);border-radius:14px;background:linear-gradient(145deg,rgba(255,252,239,.73),rgba(239,224,194,.55));box-shadow:inset 0 2px 0 rgba(255,255,255,.7)}.cell:before{border-radius:10px;border-color:rgba(255,255,255,.55)}.cell:hover{border-color:#79c8d2;background:rgba(255,255,255,.78)}.cell.valid{border-color:#edb44c;background:#fff7ce}.cell.selected{border-color:#5ab8c7;box-shadow:0 0 0 4px rgba(90,184,199,.18),inset 0 0 20px rgba(255,255,255,.7)}
.piece{filter:drop-shadow(0 6px 4px rgba(81,93,112,.23))}.piece>div{border-radius:45% 45% 20px 20px}.piece .back{background:radial-gradient(circle at 50% 35%,#fff 0 8%,#f8d87c 9% 18%,#88d8d2 20% 48%,#63b9c2 50% 56%,#f8f4e8 58%);border:3px solid white;box-shadow:inset 0 -5px 0 rgba(68,151,167,.2),0 0 0 2px #64aebb}.piece .back:after{content:"✦";color:white;text-shadow:0 2px 0 #5aa6b4;font-size:clamp(17px,2.5vw,32px)}.piece .front{background:linear-gradient(160deg,#fffef8,#f4e7d5 70%);border:3px solid white;box-shadow:inset 0 -5px 0 color-mix(in srgb,var(--owner),white 45%),0 0 0 2px var(--owner)}.piece .beast{top:6%;opacity:1;filter:drop-shadow(0 2px 0 white);font-size:clamp(19px,2.8vw,39px)}.piece .power{bottom:4%;border:3px solid white;border-radius:12px;background:var(--owner);box-shadow:0 0 0 2px color-mix(in srgb,var(--owner),#526078 25%);text-shadow:0 2px 0 rgba(66,76,105,.3)}.piece .owner-tag{background:white;border-radius:50%;width:15px;height:15px;display:grid;place-items:center;color:var(--owner)}.turn-banner{background:#fffaf1;border-radius:20px;padding:5px 14px;color:#5aaebd;box-shadow:0 3px 0 #b6d9db}.turn-banner.enemy{color:#dc7188}.timer-wrap{background:#fffaf2;border-radius:50%;box-shadow:0 3px 0 #d1c7b2}.timer-bg{stroke:#eadfcf}.battle-toast{color:white;text-shadow:0 3px 0 #609aa5,0 0 15px #f7c665}.action-bar{border:0;background:rgba(255,253,248,.82);border-radius:14px;padding:0 13px;box-shadow:0 -3px 14px rgba(66,111,132,.08)}.action-bar button{background:white;border:2px solid #d9e0e2;border-radius:10px;color:#69738a}.action-bar .danger{border-color:#f0b2bd;color:#d5677c}
.result-screen{background:rgba(190,224,235,.62)}.result-card{background:rgba(255,253,248,.97);border:5px solid white;border-radius:28px;box-shadow:0 12px 0 rgba(91,149,166,.25),0 25px 55px rgba(55,96,122,.2)}.result-card h2{color:#58b8bd;text-shadow:0 3px 0 white}.result-card.defeat h2{color:#e97891}.score-compare div{background:#f8f1e7;border-radius:15px}.breakdown{border-color:#e3ddd2}.breakdown span:nth-child(even){color:#59627a}.result-glow{background:radial-gradient(circle,rgba(255,229,131,.45),transparent 60%)}
@keyframes mascotFloat{50%{transform:translateY(-10px) rotate(1deg)}}@keyframes floatSpark{50%{transform:translateY(-13px) rotate(18deg);opacity:.65}}@keyframes revealBurst{0%{transform:scale(.65) rotateY(0);filter:brightness(1.6)}45%{transform:scale(1.22) rotateY(180deg)}70%{transform:scale(.94) rotateY(360deg)}100%{transform:scale(1)}}@keyframes captureOut{30%{transform:scale(1.2) rotate(-6deg);filter:brightness(1.5)}65%{transform:scale(.85) rotate(7deg)}100%{transform:scale(.1) translateY(-80px);opacity:0}}@keyframes counterFlash{0%,100%{filter:none}40%{filter:brightness(1.25) drop-shadow(0 0 20px #ffd968);transform:scale(1.2) rotate(-4deg)}}
@media(max-width:1000px){.mascot-hero{right:5vw;width:min(37vw,420px)}.mascot-name{right:0}.season-panel{display:none}}
@media(max-width:820px){.mascot-hero{right:2vw;top:1vh;width:39vw}.mascot-name{display:none}.mascot-sticker{width:50px;height:50px;font-size:7px}.mascot-sticker b{font-size:9px}.hero-copy{max-width:63vw}.hero-copy h1{font-size:34px}.subtitle{max-width:55vw}.rank-card{max-width:48vw}.topbar{background:rgba(255,253,248,.9)}}
@media(max-height:500px){.mascot-hero{right:7vw;width:32vw;top:-3vh}.hero-copy h1{font-size:30px}.hero-copy{max-width:66vw}.subtitle{font-size:11px;max-width:57vw}.rank-card{max-width:46vw}.rank-card .rank-emblem{width:42px;height:42px}.floaties{display:none}}

.skin-heading{display:flex;align-items:center;justify-content:space-between;margin:4px 0 8px;font:700 10px 'Chakra Petch';letter-spacing:1.2px;color:#68738b}.skin-heading small{font:600 9px Inter;color:#929bad;letter-spacing:0}.board-skin-list{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.board-skin-card{height:66px;border-radius:14px;background-size:cover;background-position:center;display:flex;align-items:center;gap:10px;padding:9px 12px;border:2px solid #d8e0e1;box-shadow:0 3px 0 #ccd8da;overflow:hidden;position:relative}.board-skin-card>span{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:white;color:#55adba;font-weight:900;box-shadow:0 2px 6px rgba(53,91,109,.16)}.board-skin-card>div{display:flex;flex-direction:column;text-shadow:0 1px white}.board-skin-card b{font:700 12px 'Chakra Petch';color:#4f5d76}.board-skin-card small{font-size:8px;color:#5d9c83;font-weight:800;letter-spacing:.7px}.board-skin-card em{margin-left:auto;align-self:flex-start;background:rgba(255,255,255,.82);border-radius:8px;padding:3px 6px;font:700 7px Inter;color:#7c6c94}.board-skin-card.active{border-color:#70c4cc;box-shadow:0 3px 0 #59aab5}.board-skin-card.locked{filter:saturate(.65);opacity:.8}.board-skin-card.locked small{color:#9b759c}.board-skin-card.locked:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(75,68,94,.08))}
@media(max-height:700px){.lobby-card{padding:16px 22px}.lobby-card h2{font-size:27px}.lobby-card>p.muted{margin:5px 0}.arena-list{margin:12px 0}.arena-option{min-height:88px;padding:8px}.arena-option strong{font-size:20px;margin:5px 0}.rules-strip{margin-bottom:10px}.rules-strip span{padding:7px}.board-skin-card{height:54px}.board-skin-list{margin-bottom:10px}}

/* ==================================================================
   REVISÃO 0.3 · ANIME TOURNAMENT
   Layout mais energético, sem sobreposição e com fluxo de contas.
   ================================================================== */
:root{--ink:#263653;--muted:#657593;--cyan:#13a9c7;--blue:#287be6;--red:#ed567a;--gold:#f4b832;--panel:rgba(255,255,255,.94);--line:rgba(39,83,137,.18)}
.app-shell{background:linear-gradient(90deg,rgba(247,252,255,.92),rgba(255,255,255,.18) 48%,rgba(245,251,255,.48)),url('assets/anime-tournament-arena.png') center/cover fixed}
.topbar{background:rgba(250,253,255,.94);border-bottom:2px solid #d9e5ef}.brand-mark{background:linear-gradient(145deg,#12b7cd,#347deb);box-shadow:0 5px 0 #245ba5,0 8px 18px rgba(32,91,160,.2)}.brand b{color:#0fabc6}.icon-btn{border-color:#d8e2e9;background:white;color:#34658b;box-shadow:0 3px 0 #c5d4df}.logout-btn{border:0;background:transparent;color:#8190a6;font:800 9px 'Chakra Petch';letter-spacing:1px;cursor:pointer;padding:9px}.logout-btn:hover{color:#e15873}
#home-screen{padding:4vh 6vw;background:linear-gradient(90deg,rgba(251,253,255,.76),transparent 60%)}.hero-copy{max-width:620px}.hero-copy h1{font-size:clamp(46px,4.8vw,78px);line-height:.94;color:#233452;text-shadow:3px 3px 0 white;margin:10px 0}.hero-copy h1 em{color:#0da9c6}.hero-copy .subtitle{color:#50617e;max-width:560px}.mascot-hero{right:7vw;width:min(35vw,500px);top:4vh}.mascot-hero img{border:7px solid white;box-shadow:8px 10px 0 rgba(32,107,171,.2),0 18px 36px rgba(21,66,111,.2)}.mascot-name{bottom:8px;right:4px;border-color:#1eb1c8;box-shadow:0 6px 0 #2187b4}.mascot-name b{color:#147fa8}.mascot-sticker{background:#ef5f78;box-shadow:0 5px 0 #b83b5a}.rank-card{background:white;border-left-color:#f0b32d;box-shadow:0 8px 0 rgba(39,100,145,.12),0 14px 28px rgba(38,71,110,.1)}#home-screen .season-panel{display:none}.floaties{display:none}
button.primary{background:linear-gradient(105deg,#10c2cb,#327eea);box-shadow:0 6px 0 #205ca8,0 12px 25px rgba(29,93,164,.25);border-radius:9px}button.primary:hover{box-shadow:0 8px 0 #205ca8,0 14px 28px rgba(29,93,164,.28)}.secondary{border-color:#7a99d5;color:#536fa8;border-radius:9px;box-shadow:0 4px 0 #b2c2df}

/* autenticação */
.auth-mode .topbar{display:none}.auth-mode .screen{height:100dvh}#auth-screen{align-items:stretch;justify-content:flex-end;background:linear-gradient(90deg,rgba(10,34,70,.14),rgba(255,255,255,.05) 56%,rgba(241,248,253,.94) 56%)}.auth-art{width:56%;padding:9vh 7vw;display:flex;flex-direction:column;justify-content:center;color:white;text-shadow:0 2px 9px rgba(19,53,94,.38)}.auth-badge{width:68px;height:68px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(145deg,#10b8cd,#2d78e5);border:4px solid white;box-shadow:0 7px 0 #20549a;font:800 20px 'Chakra Petch'}.auth-art h1{font:900 clamp(58px,7vw,104px)/.78 'Chakra Petch';letter-spacing:-4px;margin:24px 0}.auth-art h1 em{font-style:normal;color:#37d4e2}.auth-art>p{max-width:510px;font-weight:700;font-size:16px}.auth-rank-row{display:flex;align-items:center;gap:8px;margin-top:30px}.auth-rank-row span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:white;text-shadow:none;box-shadow:0 3px 0 rgba(22,65,109,.28)}.auth-rank-row i{height:2px;width:20px;background:rgba(255,255,255,.7)}.auth-card{width:44%;max-width:590px;background:rgba(252,254,255,.97);padding:clamp(38px,6vw,92px);display:flex;flex-direction:column;justify-content:center;box-shadow:-18px 0 45px rgba(24,61,99,.16)}.auth-card h2{font:800 clamp(30px,3vw,46px) 'Chakra Petch';margin:5px 0;color:#253755}.auth-card form{margin-top:22px}.auth-card label{display:block;font:700 10px 'Chakra Petch';letter-spacing:1px;color:#5e6f89;margin:13px 0}.auth-card input{width:100%;display:block;margin-top:7px;border:2px solid #dbe5ed;border-radius:9px;background:white;padding:13px 14px;color:#263653;font:600 14px Inter;outline:none;transition:.2s}.auth-card input:focus{border-color:#15acc5;box-shadow:0 0 0 4px rgba(21,172,197,.1)}.auth-submit{width:100%;margin-top:8px}.auth-switch{width:100%;border:0;background:transparent;color:#74839b;padding:18px;cursor:pointer;font-size:11px}.auth-switch b{color:#168fae}.auth-storage{text-align:center;color:#929fb0;font-size:9px}.auth-error{min-height:18px;color:#e05270;font-size:11px;font-weight:700}.hidden{display:none!important}.shake{animation:shake .35s}

/* lobby de progressão, sem escolha manual */
.lobby-card{width:min(1040px,94vw);border-radius:16px;border:3px solid white;box-shadow:0 12px 0 rgba(32,92,145,.2),0 24px 55px rgba(28,63,102,.18)}.arena-list{gap:8px}.arena-option{cursor:default;border-radius:10px;box-shadow:0 4px 0 #c8d4df;background:rgba(255,255,255,.9)}.arena-option:hover{transform:none}.arena-option.selected{transform:translateY(-3px);border-color:#13a9c7;box-shadow:0 7px 0 #1684aa,0 12px 20px rgba(19,123,164,.18);background:linear-gradient(150deg,#f3feff,#e7f4ff)}.arena-option.completed{opacity:.72}.arena-option.locked{filter:grayscale(.75);opacity:.45}.arena-option strong{color:#167fbe}.arena-option b{color:#e36365}.board-skin-list{display:none}.skin-heading{display:none}

/* arena e células */
.battle-screen{background:linear-gradient(rgba(245,250,255,.05),rgba(226,240,250,.15))}.battle-hud{background:rgba(255,255,255,.9);border:1px solid rgba(49,103,153,.15);border-radius:9px;box-shadow:0 4px 0 rgba(34,88,138,.12)}.board{background:rgba(250,253,255,.58);border:3px solid white;border-radius:12px;box-shadow:0 9px 0 rgba(26,91,140,.18),0 20px 40px rgba(24,56,90,.15);gap:clamp(3px,.48vw,8px)}.cell{border-radius:8px;border:2px solid rgba(48,108,161,.18);background:linear-gradient(145deg,rgba(255,255,255,.82),rgba(229,241,248,.7));box-shadow:inset 0 2px white}.cell:before{border-radius:5px}.cell.empty{background:rgba(255,255,255,.12);border-color:rgba(56,105,145,.06);box-shadow:none}.cell.empty:before{display:none}.cell.empty:hover{background:rgba(255,255,255,.25);border-color:rgba(31,150,184,.3)}.piece .back{background:radial-gradient(circle at 50% 35%,#fff 0 8%,#ffd144 9% 18%,#18b5c8 20% 48%,#087aaf 50% 56%,#f8fbff 58%);box-shadow:inset 0 -5px 0 rgba(17,92,151,.25),0 0 0 2px #197cad}.piece .front{background:linear-gradient(160deg,#fff,#eaf1f7 70%)}.piece .power{border-radius:7px}.turn-banner{background:white;color:#078eaf;border-radius:8px;box-shadow:0 3px 0 #a8cfd8}.action-bar{background:rgba(255,255,255,.92);border-radius:8px}.history span{border-radius:4px}

/* sequência inicial: dado e moeda */
.match-intro{position:absolute;inset:0;z-index:30;display:grid;place-items:center;background:rgba(18,42,77,.52);backdrop-filter:blur(5px);transition:.25s}.match-intro.transparent{background:rgba(18,42,77,.12);backdrop-filter:none;pointer-events:none}.intro-panel{width:min(410px,82vw);padding:24px 28px;text-align:center;background:rgba(253,254,255,.97);border:4px solid white;border-radius:16px;box-shadow:0 10px 0 #1b72ae,0 24px 55px rgba(8,29,60,.32);position:relative;overflow:hidden}.intro-panel:before{content:"";position:absolute;inset:0 0 auto;height:7px;background:linear-gradient(90deg,#1bb5ca,#3479df,#ed5e79)}.intro-panel>p:first-child{font:800 10px 'Chakra Petch';letter-spacing:2px;color:#e05d71}.intro-panel h2{font:800 25px 'Chakra Petch';color:#243854;margin:13px 0 5px}.intro-panel>p:last-child{font-size:11px;color:#75839a}.intro-object{margin:6px auto;width:108px;height:108px;display:grid;place-items:center;font:900 49px 'Chakra Petch';color:white;transform-style:preserve-3d}.intro-object.dice{border-radius:22px;background:linear-gradient(145deg,#30c8d3,#176fc4);border:7px solid white;box-shadow:0 8px 0 #174e91,0 15px 25px rgba(19,77,135,.28);animation:diceHover .7s ease-in-out infinite}.intro-object.dice.pop{transform:rotate(12deg) scale(1.08)}.intro-object.dice.result{background:linear-gradient(145deg,#ffc638,#ef6973);box-shadow:0 8px 0 #b54b68,0 0 35px rgba(255,194,56,.48);animation:resultBounce .55s}.intro-object.coin{border-radius:50%;background:linear-gradient(145deg,#ffd961,#eaa52b);border:8px double white;box-shadow:0 8px 0 #af6d25,0 14px 25px rgba(115,66,20,.28);color:#334766;text-shadow:0 2px white;animation:coinHover .8s ease-in-out infinite}.intro-object.coin.flip{transform:rotateY(180deg)}.intro-object.coin.player-win{background:linear-gradient(145deg,#52d5dd,#257de1)}.intro-object.coin.enemy-win{background:linear-gradient(145deg,#ff8ba2,#e94f74)}
@keyframes diceHover{50%{transform:translateY(-7px) rotate(4deg)}}@keyframes resultBounce{40%{transform:scale(1.22) rotate(-6deg)}}@keyframes coinHover{50%{transform:translateY(-6px) rotateY(180deg)}}@keyframes shake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}

@media(max-width:900px){#auth-screen{background:rgba(247,252,255,.93)}.auth-art{display:none}.auth-card{width:100%;max-width:none;padding:8vh 12vw}.mascot-hero{right:3vw;width:35vw}.hero-copy{max-width:61vw}.hero-copy h1{font-size:34px}.arena-option small{font-size:8px}}
@media(max-height:500px){.auth-card{padding:3vh 12vw;justify-content:flex-start;overflow-y:auto}.auth-card h2{font-size:27px}.auth-card form{margin-top:5px;display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.auth-card label{margin:5px 0}.auth-error,.auth-submit{grid-column:1/-1}.auth-switch{padding:8px;flex:0 0 auto}.auth-storage{display:none}.mascot-hero{width:29vw;right:8vw}.hero-copy h1{font-size:29px}.lobby-card{padding:10px 16px}.lobby-card h2{font-size:23px}.arena-option{min-height:72px}.rules-strip{display:none}}

/* v0.5 — conta RPG, duas modalidades e coleção de peças ilustradas */
.topbar{height:76px;padding:0 3.5vw;gap:16px}.screen{height:calc(100dvh - 76px)}
.account-hud{margin-left:auto;display:flex;align-items:center;gap:10px;min-width:480px}.avatar-button{width:50px;height:50px;padding:0;border:3px solid white;border-radius:14px;background:#dff7fb;box-shadow:0 4px 0 #49a8c3;position:relative;overflow:hidden;cursor:pointer}.avatar-button img{width:100%;height:100%;object-fit:cover}.avatar-button span{position:absolute;right:0;bottom:0;width:18px;height:18px;background:#215b91;color:white;border-radius:8px 0 0;display:grid;place-items:center;font-size:10px}.account-main{width:170px}.account-main>div:first-child{display:flex;align-items:center;justify-content:space-between}.account-main b{font:800 12px 'Chakra Petch';color:#34425d}.account-main em{font:800 8px 'Chakra Petch';font-style:normal;color:#0e97b6;background:#e2f8fb;padding:3px 5px;border-radius:5px}.account-main small{display:block;text-align:right;font-size:8px;color:#79869b}.xp-mini{height:7px;background:#dbe4ec;border-radius:9px;margin:5px 0 3px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(42,72,97,.12)}.xp-mini i{display:block;height:100%;background:linear-gradient(90deg,#20bdd0,#5ae1e4);border-radius:inherit;box-shadow:0 0 8px #3dcfd8}.rank-hud{display:flex;align-items:center;gap:8px;padding:7px 12px;border-left:1px solid #d9e4ec;min-width:190px}.rank-hud>span{width:38px;height:38px;border-radius:50%;background:linear-gradient(145deg,#fff6ca,#ffe381);display:grid;place-items:center;box-shadow:0 3px 0 #e6c764}.rank-hud div{display:grid}.rank-hud small{font:800 7px 'Chakra Petch';letter-spacing:1.3px;color:#91a0b2}.rank-hud b{font:800 11px 'Chakra Petch';color:#3d4963}.rank-hud em{font:800 9px 'Chakra Petch';font-style:normal;color:#dd7f45}
#home-screen{padding:3.2vh 6vw;align-items:center}.hero-copy{width:min(600px,52vw)}.hero-copy h1{font-size:clamp(42px,4.2vw,68px);margin:7px 0}.hero-copy .subtitle{font-size:14px;line-height:1.45;margin:10px 0 14px}.home-actions{display:flex;align-items:center}.home-actions .primary{min-width:330px}.quest-board{width:min(570px,49vw);margin-top:16px;border:2px solid rgba(255,255,255,.9);background:rgba(250,253,255,.88);border-radius:14px;box-shadow:0 7px 0 rgba(37,100,148,.13),0 15px 30px rgba(32,72,109,.1);padding:11px 13px}.quest-board>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.quest-board header div{display:grid}.quest-board header small{font:800 8px 'Chakra Petch';letter-spacing:1.5px;color:#e16f68}.quest-board header b{font:800 12px 'Chakra Petch';color:#344866}.quest-board header>span{font:800 10px 'Chakra Petch';color:#1695b1;background:#e7f8fb;border-radius:10px;padding:5px 8px}.quest-list{display:grid;grid-template-columns:1fr 1fr;gap:6px}.quest-item{display:grid;grid-template-columns:24px 1fr auto;gap:7px;align-items:center;padding:7px;background:white;border:1px solid #e0e8ee;border-radius:9px;min-width:0}.quest-icon{width:22px;height:22px;border-radius:7px;background:#e7f7fb;color:#0d9fba;display:grid;place-items:center;font-size:10px}.quest-item>div{min-width:0}.quest-item b{display:block;font:800 9px 'Chakra Petch';color:#4b5871;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quest-item small{display:block;color:#8b96a7;font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quest-track{height:3px;background:#e8edf1;margin-top:4px;border-radius:4px;overflow:hidden}.quest-track i{display:block;height:100%;background:linear-gradient(90deg,#24bfd1,#6ae39d)}.quest-item>em{font:800 8px 'Chakra Petch';font-style:normal;color:#69758b;text-align:right}.quest-item>em small{color:#e2884e;margin-top:3px}.quest-item.completed{background:#f0fff7;border-color:#9ce3bb}.quest-item.completed .quest-icon{background:#5bce8b;color:white}
.mascot-hero{right:5vw;width:min(34vw,470px)}
.arena-list{grid-template-columns:repeat(2,1fr);gap:18px}.arena-option.mode-option{position:relative;cursor:pointer!important;min-height:190px;padding:20px;border:2px solid #d8e4ec;text-align:left;overflow:hidden}.arena-option.mode-option:hover{transform:translateY(-3px)}.mode-option .mode-badge{position:absolute;right:14px;top:13px;background:#fff0cf;color:#d57e2d;font:900 9px 'Chakra Petch';padding:6px 9px;border-radius:12px}.mode-option>b{font-size:17px;color:#516078}.mode-option strong{font-size:44px;margin:14px 0 5px}.mode-option small{display:block;font-size:11px;line-height:1.55;max-width:80%}.mode-option>em{display:block;margin-top:12px;font:800 9px 'Chakra Petch';font-style:normal;color:#8a96a7}.mode-option>em b{display:inline;color:#109ebb}.lobby-card{max-height:calc(100dvh - 105px);overflow:auto}
.piece{width:min(78%,84px);aspect-ratio:.78;animation:pieceIdle 2.8s ease-in-out infinite}.piece.hidden{display:block!important}.piece:nth-child(even){animation-delay:-1.2s}.piece>div{border-radius:18px}.piece .front{overflow:hidden;background:linear-gradient(160deg,#fff,#e9f0f7 72%);border:3px solid white;box-shadow:inset 0 -7px 0 color-mix(in srgb,var(--owner),white 38%),0 0 0 2px var(--owner),0 8px 13px rgba(35,60,89,.23)}.piece .beast{position:absolute;inset:3% 6% 27%;filter:none;opacity:1;overflow:hidden;border-radius:14px 14px 10px 10px;background:#edf8fc}.piece .beast img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.08);animation:critterBreath 2.5s ease-in-out infinite}.piece .power{z-index:3;bottom:4%;min-width:66%;font-size:clamp(17px,2.2vw,32px);border:3px solid white;box-shadow:0 0 0 2px var(--owner),0 4px 7px rgba(33,58,82,.28)}.piece .owner-tag{z-index:4;left:5px;top:5px}.piece-shine{position:absolute;z-index:2;inset:-40% 30%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.7),transparent);transform:rotate(24deg) translateX(-180%);animation:pieceShine 3.8s ease-in-out infinite}.piece .back{overflow:hidden;background:linear-gradient(145deg,#12a9c0,#1768aa);border:3px solid white;box-shadow:inset 0 -7px 0 #145788,0 0 0 2px #197cad,0 8px 12px rgba(28,55,82,.3)}.piece .back:before{content:"BG";font:900 clamp(12px,2vw,24px) 'Chakra Petch';letter-spacing:1px;color:white;text-shadow:0 2px #12537e;z-index:2}.piece .back:after{content:"";position:absolute;width:70%;aspect-ratio:1;border:2px solid rgba(255,255,255,.45);border-radius:50%;box-shadow:0 0 0 8px rgba(255,255,255,.08),0 0 24px rgba(129,245,255,.5);animation:backPulse 1.9s ease-in-out infinite}.piece .back i{position:absolute;inset:-60%;background:conic-gradient(transparent,#76eff8,transparent 28%);animation:backSpin 4s linear infinite}.piece.reveal-now{animation:revealBurst .72s,pieceIdle 2.8s ease-in-out .72s infinite}
.xp-result{display:flex;justify-content:space-between;margin:-8px 0 12px;padding:0 16px 14px;font:700 12px 'Chakra Petch';border-bottom:1px solid #e2e9ed}.xp-result b{color:#149eb8}.profile-modal{position:fixed;inset:0;z-index:100;background:rgba(26,49,77,.56);backdrop-filter:blur(9px);display:grid;place-items:center}.profile-card{width:min(720px,92vw);position:relative;background:#fbfdff;border:5px solid white;border-radius:22px;box-shadow:0 12px 0 rgba(24,87,139,.24),0 30px 70px rgba(19,45,76,.3);padding:28px}.profile-card h2{font:900 30px 'Chakra Petch';color:#344965;margin:6px 0}.modal-close{position:absolute;right:18px;top:15px;width:34px;height:34px;border:0;border-radius:10px;background:#eaf1f6;color:#607189;font-size:22px;cursor:pointer}.avatar-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:20px}.avatar-choice{border:2px solid #dfe8ee;border-radius:14px;background:white;padding:7px;cursor:pointer;box-shadow:0 4px 0 #d5e0e7;transition:.2s}.avatar-choice:hover,.avatar-choice.selected{transform:translateY(-3px);border-color:#1caec4;box-shadow:0 7px 0 #278baa}.avatar-choice img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:9px;display:block}.avatar-choice span{display:block;font:800 10px 'Chakra Petch';padding:7px 2px 2px;color:#52617a}
@keyframes pieceIdle{0%,100%{translate:0 0}50%{translate:0 -3px}}@keyframes critterBreath{0%,100%{transform:scale(1.08)}50%{transform:scale(1.13)}}@keyframes pieceShine{0%,65%{transform:rotate(24deg) translateX(-180%)}85%,100%{transform:rotate(24deg) translateX(180%)}}@keyframes backSpin{to{transform:rotate(360deg)}}@keyframes backPulse{50%{transform:scale(.9);opacity:.65}}
@media(max-width:1050px){.account-hud{min-width:0}.account-main{width:140px}.rank-hud{min-width:155px}.rank-hud b{font-size:9px}.hero-copy{width:59vw}.mascot-hero{right:2vw;width:34vw}.quest-board{width:55vw}.wallet{display:none}}
@media(max-width:760px){.topbar{height:60px;padding:0 10px}.screen{height:calc(100dvh - 60px)}.brand>span:last-child,.rank-hud{display:none}.account-main{width:120px}.account-hud{margin-left:auto}.avatar-button{width:40px;height:40px}.hero-copy{width:66vw}.hero-copy h1{font-size:31px}.hero-copy .subtitle{font-size:10px}.mascot-hero{width:31vw;right:1vw}.home-actions .primary{min-width:230px}.home-actions .secondary{display:none}.quest-board{width:64vw}.quest-list{grid-template-columns:1fr}.arena-list{grid-template-columns:1fr}.mode-option small{max-width:100%}.avatar-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-height:560px){.topbar{height:54px}.screen{height:calc(100dvh - 54px)}#home-screen{padding:2vh 5vw}.hero-copy h1{font-size:29px}.hero-copy .subtitle{margin:5px 0 8px}.quest-board{margin-top:8px;padding:7px 9px}.quest-list{grid-template-columns:1fr 1fr}.quest-item{padding:5px}.mascot-hero{width:29vw}.lobby-card{max-height:94vh}.arena-option.mode-option{min-height:135px;padding:12px}.mode-option strong{font-size:29px;margin:7px 0}.mode-option>em{margin-top:5px}.profile-card{padding:18px}.avatar-grid{gap:7px;margin-top:10px}.avatar-choice img{max-height:90px}}

/* v0.7 — progressão legível, coleção e arena de torneio refinada */
:root{--active-arena:url('assets/anime-tournament-arena.png')}.app-shell{background:linear-gradient(90deg,rgba(245,251,255,.42),rgba(255,255,255,.08)),var(--active-arena) center/cover fixed!important}.brand,.eyebrow,.hero-copy h1,.lobby-card h2,.profile-card h2,.piece .power{font-family:'Chakra Petch','Trebuchet MS',system-ui,sans-serif}.muted,.subtitle,.quest-item small{font-weight:600;color:#60718d}
.rank-hud{border:0;border-left:1px solid #d9e4ec;background:transparent;text-align:left;cursor:pointer}.rank-hud:hover{background:#edf8fc;border-radius:12px}.rank-mini{display:block;width:100%;height:3px;background:#dce7ed;border-radius:4px;overflow:hidden;margin-top:3px}.rank-mini u{display:block;height:100%;background:linear-gradient(90deg,#f4a340,#ffd36e);text-decoration:none}.avatar-button.frame_copper{border-color:#c57443;box-shadow:0 0 0 3px #f3bb83,0 5px 0 #9d542c}.avatar-button.frame_sapphire{border-color:#318be0;box-shadow:0 0 0 3px #83dbff,0 5px 0 #176ab7}.avatar-button.frame_gold{border-color:#ffc83d;box-shadow:0 0 0 3px #fff1a1,0 5px 0 #bd7b12}.avatar-button.frame_prism{border-color:#b75dff;box-shadow:0 0 0 3px #61e9ff,0 5px 0 #7832b6;animation:prismFrame 2.4s linear infinite}
.home-actions{gap:9px;flex-wrap:wrap}.home-actions .secondary{margin:0}.shop-shortcut{border-color:#f1c565;color:#a16a13;background:#fff9e9;box-shadow:0 4px 0 #e2bd69}.back{display:inline-flex;align-items:center;gap:9px;padding:9px 14px!important;border:2px solid #c9dce8!important;border-radius:12px!important;background:white!important;color:#41617e!important;font:800 10px 'Chakra Petch'!important;box-shadow:0 4px 0 #a9c4d4;transition:.18s}.back span{font-size:19px;color:#159fbd}.back:hover{transform:translateY(-2px);box-shadow:0 6px 0 #a9c4d4}.queue-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}.queue-heading h2{margin-bottom:4px}.queue-heading p{margin:0}.queue-badge{flex:0 0 auto;padding:9px 13px;border-radius:20px;font:900 9px 'Chakra Petch';letter-spacing:1px}.queue-badge.training{background:#e5faf2;color:#21835c;border:1px solid #8ddab8}.queue-badge.ranked{background:#fff0e4;color:#c75e39;border:1px solid #f3aa88}.primary:disabled{filter:grayscale(.6);opacity:.58;cursor:not-allowed;transform:none!important;box-shadow:0 4px 0 #9aaebd!important}
.battle-screen{background:linear-gradient(rgba(244,250,255,.1),rgba(224,239,248,.12))}.board{position:relative;border:4px solid rgba(255,255,255,.96)!important;border-radius:28px!important;padding:clamp(10px,1vw,17px)!important;gap:clamp(6px,.6vw,11px)!important;background:linear-gradient(135deg,rgba(244,251,255,.83),rgba(225,241,248,.76))!important;box-shadow:0 10px 0 rgba(37,103,147,.2),0 24px 45px rgba(37,73,107,.22),inset 0 0 45px rgba(255,255,255,.72)!important;overflow:hidden}.board:before{content:"";position:absolute;inset:8px;border-radius:20px;background:radial-gradient(circle at 50% 50%,rgba(64,195,211,.12),transparent 50%),repeating-linear-gradient(90deg,transparent 0 12%,rgba(58,137,174,.035) 12% 12.5%);pointer-events:none}.cell{border:0!important;border-radius:22px 8px 22px 8px!important;background:linear-gradient(145deg,rgba(255,255,255,.78),rgba(218,237,246,.48))!important;box-shadow:inset 0 2px 0 white,inset 0 -2px 0 rgba(64,128,164,.1);overflow:visible!important}.cell:nth-child(even){border-radius:8px 22px 8px 22px!important}.cell:before{inset:5px!important;border:1px solid rgba(72,142,175,.11)!important;border-radius:16px 6px 16px 6px!important}.cell.empty{opacity:.62}.cell.selected{opacity:1!important;background:radial-gradient(circle,#e4fcff 10%,#b8edf4 72%)!important;box-shadow:inset 0 0 0 3px #11a8c4,0 0 0 5px rgba(91,222,237,.35),0 0 28px #4ad9e8!important;animation:selectedTile 1s ease-in-out infinite}.piece.active-piece{filter:drop-shadow(0 0 9px #18b8d1) drop-shadow(0 9px 5px rgba(28,60,87,.28));transform:scale(1.08);z-index:8}.cell.valid{opacity:1!important;background:radial-gradient(circle,#fffde5,#ffe9a7)!important;box-shadow:inset 0 0 0 3px #f2b338,0 0 20px rgba(255,194,52,.55)!important;animation:validDestination 1s ease-in-out infinite}.cell.attack-target{background:radial-gradient(circle,#fff2f4,#ffd1d8)!important;box-shadow:inset 0 0 0 3px #f05c79,0 0 22px rgba(240,76,111,.5)!important}.move-arrow{position:absolute;z-index:12;width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:#12a9c6;color:white;border:3px solid white;box-shadow:0 4px 0 #167ca3,0 7px 15px rgba(25,93,134,.3);font:900 22px/1 'Chakra Petch';pointer-events:none;animation:arrowBounce .75s ease-in-out infinite}.attack-target .move-arrow{background:#ef5172;box-shadow:0 4px 0 #b22d4c,0 7px 15px rgba(150,42,73,.3)}.clash-cell:after{content:"✦";position:absolute;z-index:20;inset:0;display:grid;place-items:center;color:white;font-size:50px;text-shadow:0 0 9px #ff9a45,0 0 22px #ffce45;animation:clashBurst .5s ease-out forwards}.piece.captured{animation:captureOut .55s forwards!important}
.coin-result{display:flex;justify-content:space-between;margin:-7px 0 12px;padding:0 16px 13px;font:700 12px 'Chakra Petch';border-bottom:1px solid #e2e9ed}.coin-result b{color:#c58421}.rp-result i{color:#159f78}
.collection-card,.shop-card{width:min(980px,95vw);max-height:92vh;overflow:auto}.collection-card h3{font:900 10px 'Chakra Petch';letter-spacing:2px;color:#76879d;margin:20px 0 9px}.avatar-grid{grid-template-columns:repeat(6,1fr)}.avatar-choice{position:relative;min-width:0}.avatar-choice .rarity{position:absolute;z-index:2;left:8px;top:8px;background:rgba(34,55,78,.82);color:white;border-radius:7px;padding:3px 5px;font:800 6px 'Chakra Petch'}.avatar-choice b{display:block;font:800 9px 'Chakra Petch';color:#4a5b73;margin-top:6px}.avatar-choice small{display:block;min-height:22px;font:700 6px 'Chakra Petch';color:#8090a4}.avatar-choice>i{position:absolute;inset:35% auto auto 50%;transform:translate(-50%,-50%);font-size:26px;filter:drop-shadow(0 2px white)}.avatar-choice.locked img{filter:grayscale(.78);opacity:.46}.frame-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.frame-choice{border:2px solid #dde8ee;border-radius:14px;background:white;padding:9px;cursor:pointer;box-shadow:0 4px 0 #d1dde5}.frame-choice.selected{border-color:#15aac3;box-shadow:0 6px 0 #238aa7}.frame-choice.locked{opacity:.55}.frame-sample{width:64px;height:64px;margin:auto;display:block;border:4px solid #cbd9e2;border-radius:18px;overflow:hidden}.frame-sample img{width:100%;height:100%;object-fit:cover}.frame_choice b,.frame-choice b{display:block;font:800 9px 'Chakra Petch';margin-top:7px}.frame-choice small{font-size:7px}.frame-choice.frame_copper .frame-sample{border-color:#bd6b3d;box-shadow:0 0 0 3px #efb37c}.frame-choice.frame_sapphire .frame-sample{border-color:#2e87db;box-shadow:0 0 0 3px #79dbff}.frame-choice.frame_gold .frame-sample{border-color:#f1b91b;box-shadow:0 0 0 3px #fff0a1}.frame-choice.frame_prism .frame-sample{border-color:#ae4bf0;box-shadow:0 0 0 3px #5ce8ef}.shop-balance{display:flex;gap:10px;margin:12px 0}.shop-balance span{background:#eef6fa;border-radius:18px;padding:8px 12px;color:#5c6d82;font-size:11px}.shop-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.shop-item{position:relative;border:2px solid #dce7ee;border-radius:15px;background:white;padding:9px;display:grid;grid-template-columns:62px 1fr;gap:8px;align-items:center;box-shadow:0 4px 0 #d4e0e7}.shop-item img{width:62px;height:62px;border-radius:10px;object-fit:cover}.shop-item.board_skin img{width:100%;grid-column:1/-1;aspect-ratio:2.1;height:auto}.shop-item div b{display:block;font:800 10px 'Chakra Petch';color:#465870}.shop-item div small{font:700 6px 'Chakra Petch';color:#8b98a8}.shop-item button{grid-column:1/-1;border:0;border-radius:9px;background:#1caac5;color:white;padding:8px;font:800 9px 'Chakra Petch';cursor:pointer}.shop-item button:disabled{background:#dce6eb;color:#7c8c9d}.shop-rarity{position:absolute;right:7px;top:6px;background:#fff0c9;color:#bc781d;border-radius:8px;padding:3px 5px;font:800 6px 'Chakra Petch'}.frame-preview{width:58px;height:58px;border-radius:16px;display:grid;place-items:center;font-size:28px;background:#eaf4f9;border:6px solid #e1ab25}.frame-preview.frame_prism{border-color:#a54feb;box-shadow:inset 0 0 0 3px #60dce9}.premium-preview{margin-top:15px;border:2px solid #e9c86e;background:linear-gradient(105deg,#fff9e7,#f8efff);border-radius:15px;padding:13px}.premium-preview span{font:900 7px 'Chakra Petch';color:#a47a26}.premium-preview b{display:block;font:900 15px 'Chakra Petch';color:#5b4d79}.premium-preview p{font-size:9px;color:#728095;margin:4px 0}.progress-card{width:min(760px,92vw)}.progress-explain{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px}.progress-explain article{border:2px solid #dce8ee;border-radius:17px;padding:18px;background:white}.progress-explain small{font:800 8px 'Chakra Petch';letter-spacing:1.4px;color:#1599b7}.progress-explain b,.progress-explain strong{display:block;color:#41536c}.progress-explain b{font:900 20px 'Chakra Petch';margin:7px 0}.progress-explain strong{font-size:10px}.progress-explain p{font-size:10px;line-height:1.45;color:#748398}.explain-bar{height:9px;background:#e3edf1;border-radius:8px;overflow:hidden;margin:10px 0}.explain-bar i{display:block;height:100%;background:linear-gradient(90deg,#19b2c8,#58e0ce)}.explain-bar.rank i{background:linear-gradient(90deg,#f0a237,#ffd361)}
@keyframes selectedTile{50%{filter:brightness(1.08)}}@keyframes validDestination{50%{filter:brightness(1.08);transform:scale(.985)}}@keyframes arrowBounce{50%{transform:translateY(-5px)}}@keyframes clashBurst{0%{transform:scale(.2);opacity:0}45%{transform:scale(1.5);opacity:1}100%{transform:scale(2.2);opacity:0}}@keyframes prismFrame{50%{filter:hue-rotate(70deg)}}
@media(max-width:900px){.shop-shortcut{display:none}.avatar-grid{grid-template-columns:repeat(4,1fr)}.shop-grid{grid-template-columns:repeat(3,1fr)}.queue-heading h2{font-size:25px}}
@media(max-width:700px){.rank-hud{display:none}.avatar-grid{grid-template-columns:repeat(4,1fr)}.frame-grid{grid-template-columns:repeat(5,1fr)}.shop-grid{grid-template-columns:repeat(2,1fr)}.progress-explain{grid-template-columns:1fr}.collection-card,.shop-card{padding:16px}.move-arrow{width:28px;height:28px;font-size:17px}.cell{border-radius:15px 6px 15px 6px!important}}
@media(max-height:500px){.lobby-card .back{padding:6px 10px!important}.queue-heading h2{font-size:22px}.queue-heading p{font-size:9px}.collection-card h3{margin:8px 0 5px}.avatar-choice img{max-height:66px}.avatar-choice b{font-size:7px}.frame-sample{width:45px;height:45px}.shop-item{grid-template-columns:45px 1fr}.shop-item img{width:45px;height:45px}.premium-preview{display:none}.progress-card{max-height:94vh;overflow:auto}.progress-explain article{padding:11px}}

/* O tipo de item `avatar` também vira uma classe no catálogo. Este seletor
   neutraliza o estilo compacto do avatar do cabeçalho dentro da loja. */
.shop-item.avatar{width:auto;height:auto;padding:9px;border:2px solid #dce7ee;border-radius:15px;display:grid;background:#fff;box-shadow:0 4px 0 #d4e0e7;color:inherit;font-weight:400}


/* --- P0.4: missoes por ciclo ------------------------------------------- */
/* O cabecalho ocupa a linha inteira do grid de duas colunas; sem isto ele
   viraria um "card" torto ao lado da primeira missao. */
.quest-group{grid-column:1/-1;display:flex;justify-content:space-between;align-items:baseline;margin:6px 2px 0}
.quest-group:first-child{margin-top:0}
.quest-group b{font:800 9px 'Chakra Petch';letter-spacing:1.3px;color:#1f6f97}
/* O prazo fica no grupo, nao em cada missao: e o CICLO que expira. */
.quest-group em{font:800 8px 'Chakra Petch';font-style:normal;color:#e2884e}

/* A lista rola em vez de crescer: o quadro nao pode empurrar o resto da home. */
.quest-list{max-height:min(32vh,250px);overflow-y:auto;overflow-x:hidden;padding-right:3px}
.quest-list::-webkit-scrollbar{width:5px}
.quest-list::-webkit-scrollbar-thumb{background:#cfe0ea;border-radius:4px}

.quest-state{float:right;font:800 7px 'Chakra Petch';letter-spacing:.8px;padding:1px 5px;border-radius:6px}
.quest-state.ready{background:#e8fbf0;color:#2e9c62}
.quest-state.done{background:#eef2f7;color:#8b96a7}

.quest-claim{grid-column:1/-1;margin-top:5px;padding:5px 0;border:0;border-radius:7px;cursor:pointer;
  font:800 8px 'Chakra Petch';letter-spacing:1.2px;color:#0b3b1f;
  background:linear-gradient(180deg,#7ee6ac,#43c882);box-shadow:0 2px 0 #2ea567}
.quest-claim:hover{filter:brightness(1.06)}
.quest-claim:active{transform:translateY(1px);box-shadow:0 1px 0 #2ea567}
.quest-claim:disabled{opacity:.55;cursor:default;box-shadow:none}

/* Resgatada sai do foco de proposito: o que importa e o que ainda rende XP. */
.quest-item.claimed{background:#f7f9fb;border-color:#e3e9ef;opacity:.72}
.quest-item.claimed .quest-icon{background:#e9edf2;color:#9aa6b5}

/* Toque confortavel onde ha espaco (requisito de mobile do P1.4). */
@media(pointer:coarse){.quest-claim{padding:9px 0}}

/* A lista precisa CABER: o quadro nao pode passar do fim da tela, e a home nao
   rola. Estas regras vem depois das genericas de proposito -- a media query
   anterior no arquivo perdia para o `.quest-list` acrescentado aqui embaixo. */
@media(max-width:760px){.quest-list{max-height:min(26vh,150px)}}
@media(max-height:560px){.quest-list{max-height:min(22vh,90px)}}

/* ==================================================================
   v0.8 · VITRINE PREMIUM, LEGIBILIDADE E TABULEIRO RESPONSIVO
   ================================================================== */
.wallet{display:flex;align-items:center;gap:10px}.wallet span,.shop-balance span{display:flex;align-items:center;gap:6px}.wallet img,.shop-balance img,.currency-icon{width:22px;height:22px;object-fit:contain;filter:drop-shadow(0 2px 2px rgba(40,87,126,.2))}.wallet b{font-size:14px}.currency-icon{vertical-align:middle;margin-right:5px}
.auth-card{min-width:390px}.auth-card label{font-size:11px}.auth-card input{box-sizing:border-box;min-width:0;font-size:16px;padding:15px 16px}.auth-error{line-height:1.35}.profile-card h2,.lobby-card h2{letter-spacing:-.6px}.shop-card{width:min(1180px,96vw);padding:0 22px 22px;overflow:auto;background:linear-gradient(180deg,#f8fcff,#fff 42%)}
.shop-hero{position:relative;min-height:210px;margin:0 -22px 20px;padding:30px 36px;display:flex;flex-direction:column;justify-content:center;border-radius:22px 22px 0 0;overflow:hidden;background:linear-gradient(90deg,rgba(10,36,73,.96),rgba(21,67,116,.68) 47%,rgba(10,31,61,.12)),url('assets/premium-shop-banner-v1.png') 68% center/cover;color:white}.shop-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 25%,rgba(255,255,255,.18) 42%,transparent 55%);transform:translateX(-110%);animation:shopSweep 6s ease-in-out infinite;pointer-events:none}.shop-hero .eyebrow{color:#ffd36e;text-shadow:0 2px 4px rgba(5,24,49,.45)}.shop-hero h2{font:900 clamp(30px,4vw,50px) 'Chakra Petch';margin:5px 0;text-shadow:0 4px 14px rgba(4,21,43,.45)}.shop-hero .shop-balance{margin:10px 0 0}.shop-hero .shop-balance span{background:rgba(255,255,255,.93);color:#40536d;box-shadow:0 4px 0 rgba(6,37,70,.28);font-size:13px}
.shop-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.shop-item.avatar{padding:12px}.shop-item{isolation:isolate;grid-template-columns:82px 1fr;min-height:130px;padding:12px;border-radius:18px;overflow:hidden;transition:transform .2s,box-shadow .2s,border-color .2s}.shop-item:hover{transform:translateY(-4px);border-color:#83cddd;box-shadow:0 8px 0 #c5dce5,0 16px 26px rgba(39,90,128,.15)}.shop-item figure{position:relative;width:82px;height:82px;margin:0;border-radius:14px;overflow:hidden;background:#e9f4fa}.shop-item figure img{width:100%;height:100%;object-fit:cover}.shop-item figure i{position:absolute;inset:-45%;background:linear-gradient(110deg,transparent 38%,rgba(255,255,255,.8) 48%,transparent 58%);transform:translateX(-90%) rotate(10deg)}.shop-item>div b{font-size:12px;line-height:1.15}.shop-item>div small{margin-top:6px;font-size:7px;letter-spacing:1px}.shop-item button{display:flex;align-items:center;justify-content:center;min-height:38px;font-size:11px}.shop-item button strong{font:900 12px 'Chakra Petch'}.shop-rarity{font-size:7px;letter-spacing:.7px;z-index:3}.shop-item.rarity-rare{border-color:#79bdea;background:linear-gradient(145deg,#fff,#eff9ff)}.shop-item.rarity-epic{border-color:#bf83ed;background:linear-gradient(145deg,#fff,#faf0ff)}.shop-item.rarity-legendary{border-color:#f0b532;background:linear-gradient(145deg,#fffef5,#fff2c9);box-shadow:0 5px 0 #d59d1e,0 0 22px rgba(255,188,45,.2)}.shop-item.rarity-legendary:before{content:"";position:absolute;inset:-2px;z-index:-1;border-radius:20px;background:conic-gradient(from var(--legend-angle,0deg),#ffc638,#fff3a0,#f98d4d,#fff3a0,#ffc638);animation:legendRotate 3s linear infinite}.shop-item.rarity-legendary:after{content:"✦";position:absolute;right:14px;bottom:44px;color:#ffd357;font-size:25px;text-shadow:0 0 10px #ffad27;animation:legendSpark 1.5s ease-in-out infinite}.shop-item.rarity-legendary figure i{animation:itemShine 2.8s ease-in-out infinite}.shop-item.owned{filter:saturate(.75)}
.frame-preview{position:relative;width:72px;height:72px;overflow:visible;background:#eff7fb}.frame-preview img{width:100%;height:100%;object-fit:cover;border-radius:9px}.frame-preview.frame_gold,.frame-preview.frame_prism{animation:premiumFrame 2.4s ease-in-out infinite}.frame-preview.frame_prism:after{content:"";position:absolute;inset:-9px;border:3px solid transparent;border-image:linear-gradient(90deg,#7b54ff,#55eaff,#ff71c8,#ffe26c) 1;filter:drop-shadow(0 0 5px #65dcff);animation:prismFrame 1.9s linear infinite}
.frame-choice.frame_basic .frame-sample{border-color:#a8bac7}.frame-choice.frame_rabbit .frame-sample{border-color:#ef9dc3;box-shadow:0 0 0 3px #ffe4f2}.frame-choice.frame_fox .frame-sample{border-color:#ef8b3a;box-shadow:0 0 0 3px #ffd5a8}.frame-choice.frame_wolf .frame-sample{border-color:#6e8fb9;box-shadow:0 0 0 3px #cce8ff}.frame-choice.frame_tiger .frame-sample{border-color:#e48725;box-shadow:0 0 0 3px #ffe069}.frame-choice.frame_bear .frame-sample{border-color:#7c573d;box-shadow:0 0 0 3px #cfa77c}.frame-choice.frame_lion .frame-sample{border-color:#d99f22;box-shadow:0 0 0 3px #fff0a2}.frame-choice.frame_legend .frame-sample{border-color:#f5bd26;box-shadow:0 0 0 3px #fff3a0,0 0 18px #ffbf35;animation:premiumFrame 2s ease-in-out infinite}.frame-choice.frame_prism .frame-sample{animation:prismFrame 1.9s linear infinite}
.premium-preview{position:relative;display:grid;grid-template-columns:1.1fr 1.7fr auto;align-items:center;gap:20px;padding:20px 22px;overflow:hidden;background:linear-gradient(110deg,#fff5d6,#fff 43%,#f4eaff);box-shadow:inset 0 0 22px rgba(255,205,78,.13)}.premium-preview:before{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.8) 48%,transparent 60%);transform:translateX(-110%);animation:shopSweep 5.5s ease-in-out infinite}.premium-preview>b,.premium-preview div,.premium-preview em{position:relative}.premium-preview em{padding:9px 12px;border-radius:20px;background:#6650a8;color:white;font:900 8px 'Chakra Petch';letter-spacing:1px}.pass-tracks{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pass-tracks article{padding:9px 11px;border-radius:11px;background:rgba(255,255,255,.75);border:1px solid rgba(109,90,150,.15)}.pass-tracks small,.pass-tracks strong{display:block}.pass-tracks small{font:900 7px 'Chakra Petch';color:#b27a16}.pass-tracks strong{font-size:9px;color:#5f5d76;margin-top:3px}
.board{grid-auto-rows:minmax(0,1fr)}.cell{min-height:0}.cell.empty{opacity:.78!important;background:linear-gradient(145deg,rgba(255,255,255,.46),rgba(165,211,231,.25))!important;border:1px solid rgba(67,142,177,.1)!important}.board:after{content:"";position:absolute;left:2%;right:2%;top:50%;height:3px;background:linear-gradient(90deg,transparent,#50bdd2 15%,#fff 50%,#ed6d8a 85%,transparent);opacity:.35;box-shadow:0 0 13px #61c6db;pointer-events:none}.mascot-hero img{transition:opacity .25s,transform .35s}.mascot-hero[data-league]:hover img{transform:scale(1.025)}
@property --legend-angle{syntax:'<angle>';initial-value:0deg;inherits:false}@keyframes legendRotate{to{--legend-angle:360deg}}@keyframes legendSpark{50%{transform:scale(1.25) rotate(18deg);opacity:.55}}@keyframes itemShine{0%,55%{transform:translateX(-110%) rotate(10deg)}80%,100%{transform:translateX(110%) rotate(10deg)}}@keyframes shopSweep{0%,55%{transform:translateX(-110%)}82%,100%{transform:translateX(110%)}}@keyframes premiumFrame{50%{filter:brightness(1.15) drop-shadow(0 0 7px #ffd251);transform:translateY(-2px)}}
@media(max-width:1000px){.shop-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.shop-hero{min-height:180px}.premium-preview{grid-template-columns:1fr 1.5fr}.premium-preview em{display:none}.wallet{display:flex}}
@media(max-width:760px){.auth-card{min-width:0}.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.shop-card{padding:0 14px 16px}.shop-hero{margin:0 -14px 15px;padding:22px;min-height:145px}.shop-hero h2{font-size:27px}.premium-preview{grid-template-columns:1fr}.pass-tracks{grid-template-columns:1fr 1fr}.frame-grid{grid-template-columns:repeat(3,1fr);gap:9px}.wallet{gap:5px;padding:6px}.wallet img{width:18px;height:18px}.wallet b{font-size:11px}}
@media(max-width:520px){.shop-grid{grid-template-columns:1fr}.shop-item{grid-template-columns:72px 1fr}.shop-item figure{width:72px;height:72px}.pass-tracks{grid-template-columns:1fr}.frame-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-height:500px) and (orientation:landscape){.shop-card{max-height:96dvh}.shop-hero{min-height:112px;padding:14px 22px}.shop-hero h2{font-size:25px}.shop-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.shop-item{min-height:105px;grid-template-columns:58px 1fr}.shop-item figure{width:58px;height:58px}.premium-preview{display:grid;padding:12px}.auth-card{padding:24px 5vw}.auth-card form{margin-top:8px}.auth-card label{margin:7px 0}.auth-card input{padding:10px 12px}.auth-card h2{font-size:30px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}

/* Correções de especificidade após a inspeção renderizada da vitrine. */
.shop-hero h2{color:#fff!important;text-shadow:0 4px 14px rgba(4,21,43,.65)!important}
.shop-item button .currency-icon,.shop-item.board_skin button .currency-icon{display:inline-block;width:22px!important;height:22px!important;aspect-ratio:1!important;grid-column:auto!important;object-fit:contain!important;border-radius:0!important}
.shop-item.board_skin figure img{width:100%;height:100%;grid-column:auto;aspect-ratio:auto;object-fit:cover}

@media(max-height:500px) and (orientation:landscape){#home-screen .quest-board{height:69px;max-height:69px;padding:5px 9px;overflow:hidden}#home-screen .quest-list{max-height:30px}.quest-group{margin-top:2px}.quest-item{min-height:42px}}
@media(max-width:900px){.home-actions .shop-shortcut{display:inline-flex!important;align-items:center;justify-content:center;min-height:46px;padding:10px 14px;font-size:9px}}

/* v0.8.1 — informação secreta, peças-totem e vidro líquido */
.history{visibility:hidden;pointer-events:none}.battle-avatar{padding:0!important;overflow:hidden}.battle-avatar img{width:100%;height:100%;object-fit:cover;display:block}.player-hud .combatant b{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.piece{perspective:500px;filter:drop-shadow(0 8px 6px rgba(25,72,105,.28))}.piece>div{border-radius:50% 50% 30% 30%!important}.piece .back{background:radial-gradient(circle at 36% 22%,rgba(255,255,255,.98) 0 8%,rgba(255,255,255,.46) 9% 16%,transparent 17%),linear-gradient(145deg,#a8f4ff 0%,#23c7df 38%,#1976c4 78%,#0e4e91 100%)!important;border:3px solid rgba(255,255,255,.96)!important;box-shadow:inset 7px 8px 15px rgba(255,255,255,.5),inset -7px -11px 15px rgba(4,74,142,.38),0 0 0 2px #167fb6,0 9px 0 #0c548c,0 14px 18px rgba(15,72,119,.3)!important;transform-origin:50% 82%}.piece .back:before{content:""!important;width:48%!important;aspect-ratio:1;background:url('assets/ui-paw.svg') center/contain no-repeat;filter:drop-shadow(0 3px 2px rgba(8,77,128,.25));z-index:3}.piece .back:after{content:""!important;position:absolute!important;left:14%!important;right:14%!important;bottom:-7%!important;width:auto!important;height:16%!important;aspect-ratio:auto!important;border:3px solid white!important;border-radius:50%!important;background:linear-gradient(180deg,#baf7ff,#239ac9)!important;box-shadow:0 4px 0 #146c9d,0 8px 12px rgba(12,64,99,.28)!important;animation:none!important}.piece .back i{display:none}
.piece .front{overflow:visible!important;border-radius:48% 48% 26% 26%!important;background:linear-gradient(155deg,rgba(255,255,255,.98),#dff7ff 64%,#9fd6ec)!important;border:3px solid white!important;box-shadow:inset 5px 6px 11px rgba(255,255,255,.8),inset -5px -8px 12px color-mix(in srgb,var(--owner),transparent 65%),0 0 0 3px var(--owner),0 8px 0 color-mix(in srgb,var(--owner),#17466f 35%),0 14px 18px rgba(25,64,96,.3)!important}.piece .front:after{content:"";position:absolute;z-index:-1;left:5%;right:5%;bottom:-9%;height:19%;border-radius:50%;background:linear-gradient(180deg,#fff,#b9dff0);border:3px solid var(--owner);box-shadow:0 5px 0 color-mix(in srgb,var(--owner),#254c6e 45%)}.piece .beast{inset:7% 12% 31%!important;border-radius:50%!important;border:2px solid rgba(255,255,255,.95);box-shadow:0 3px 8px rgba(35,82,118,.22);background:linear-gradient(145deg,#fff,#d9f4fb)!important}.piece .power{bottom:2%!important;min-width:58%!important;border-radius:50%!important;padding:4px!important;background:linear-gradient(180deg,color-mix(in srgb,var(--owner),white 18%),var(--owner))!important;box-shadow:inset 0 2px 0 rgba(255,255,255,.45),0 0 0 3px white,0 0 0 5px var(--owner),0 4px 8px rgba(34,66,94,.3)!important}.piece .owner-tag{top:7px!important;left:8px!important;box-shadow:0 2px 5px rgba(28,68,103,.22)}.piece.reveal-now{animation:totemReveal .78s cubic-bezier(.2,.9,.22,1.25),pieceIdle 2.8s ease-in-out .78s infinite!important}.cell.selected .piece:after{content:"";position:absolute;inset:-18%;border-radius:50%;background:radial-gradient(circle,rgba(102,238,255,.28),transparent 65%);animation:selectedAura 1s ease-in-out infinite;pointer-events:none}
.shop-item button,.liquid-button,.modal-close,.back,.secondary{position:relative;overflow:hidden;background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(210,244,255,.64) 45%,rgba(113,204,240,.35))!important;border:1px solid rgba(255,255,255,.9)!important;box-shadow:inset 0 2px 0 rgba(255,255,255,.9),inset 0 -3px 8px rgba(53,139,190,.18),0 5px 0 rgba(56,132,177,.35),0 10px 20px rgba(33,91,132,.17)!important;backdrop-filter:blur(12px) saturate(1.3)}.shop-item button:before,.liquid-button:before{content:"";position:absolute;left:8%;right:8%;top:4px;height:36%;border-radius:999px;background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(255,255,255,.08));pointer-events:none}.shop-item button{color:#17668f!important;text-shadow:0 1px white}.shop-item.rarity-legendary button{background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(255,235,143,.72),rgba(255,171,65,.35))!important;color:#8b550b!important;box-shadow:inset 0 2px 0 white,inset 0 -4px 10px rgba(226,130,25,.2),0 5px 0 #d79924,0 0 18px rgba(255,190,49,.35)!important}
.notice-modal{z-index:180;background:rgba(20,48,79,.42)}.notice-card{position:relative;width:min(390px,88vw);padding:32px 30px 26px;text-align:center;border:2px solid rgba(255,255,255,.92);border-radius:30px;background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(220,247,255,.88) 55%,rgba(196,224,255,.82));box-shadow:inset 0 2px 0 white,inset 0 -10px 30px rgba(52,140,195,.12),0 14px 0 rgba(46,115,160,.23),0 30px 70px rgba(19,55,91,.3);backdrop-filter:blur(24px) saturate(1.4)}.notice-card:before{content:"";position:absolute;inset:7px;border:1px solid rgba(255,255,255,.72);border-radius:23px;pointer-events:none}.notice-orb{width:84px;height:84px;margin:-66px auto 20px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 25%,#fff 0 8%,#c7f8ff 25%,#52c9ec 63%,#2777c7);border:4px solid white;box-shadow:inset 7px 8px 13px rgba(255,255,255,.55),inset -8px -10px 14px rgba(27,93,174,.28),0 8px 0 #236fa9,0 15px 26px rgba(25,92,142,.3)}.notice-orb img{width:52px;height:52px;filter:drop-shadow(0 4px 4px rgba(17,75,123,.25))}.notice-card h2{font:900 27px 'Chakra Petch';color:#294764;margin:6px 0}.notice-card>p:not(.eyebrow){color:#617791;font-size:13px;line-height:1.5;margin:10px auto 22px;max-width:310px}.liquid-button{width:100%;min-height:48px;border-radius:15px;color:#17668f;font:900 12px 'Chakra Petch';letter-spacing:1.5px;cursor:pointer}.liquid-button:active{transform:translateY(4px)}
@keyframes totemReveal{0%{transform:scale(.68) rotateY(0) translateY(14px);filter:brightness(1.7)}38%{transform:scale(1.13) rotateY(200deg) translateY(-9px);filter:brightness(1.35)}68%{transform:scale(.94) rotateY(350deg) translateY(2px)}100%{transform:scale(1) rotateY(360deg) translateY(0)}}@keyframes selectedAura{50%{transform:scale(1.12);opacity:.55}}
.brand-mark{padding:0!important;background:transparent!important;box-shadow:none!important;transform:none!important;overflow:visible}.brand-mark img{width:100%;height:100%;display:block;filter:drop-shadow(0 4px 3px rgba(29,83,143,.22))}.brand>span:last-child{letter-spacing:3px}.brand>span:last-child b{margin-left:4px}.auth-badge{padding:0;background:transparent;border:0;box-shadow:none}.auth-badge img{width:86px;height:86px;display:block}.auth-art h1{letter-spacing:-3px}.auth-art h1 em{letter-spacing:-5px}


/* ==================================================================
   P1 · COMBATE EM FASES, VFX E EFEITOS DE ELIMINAÇÃO
   ==================================================================
   Regra que governa este bloco inteiro (CLAUDE.md): nenhum cosmético pode
   esconder número, equipe ou estado revelado. Por isso TODA camada de efeito:
     - fica em `z-index:1`, abaixo da peça (`z-index:2`);
     - não recebe ponteiro (`pointer-events:none`);
     - vive dentro da casa e some sozinha em menos de 0,6 s.
   ================================================================== */
.cell{position:relative}
.cell>.piece{position:relative;z-index:2}
.vfx-impact,.vfx-counter,.kill-fx{position:absolute;inset:0;z-index:1;pointer-events:none;border-radius:inherit}

/* --- impacto por faixa numérica (P1.2) ---------------------------------- */
/* A faixa muda cor E forma. Depender só de cor excluiria quem não as
   distingue -- a mesma razão pela qual A e B já usam formas diferentes. */
.vfx-impact:before{content:"";position:absolute;inset:12%;border-radius:50%;
  border:3px solid currentColor;opacity:0;animation:impactRing .5s ease-out forwards}
.vfx-impact:after{content:"";position:absolute;inset:30%;border-radius:6px;
  background:currentColor;opacity:0;animation:impactCore .42s ease-out forwards}
.vfx-impact.tier-small{color:#5ec9e8}
.vfx-impact.tier-mid{color:#f0a93c}
.vfx-impact.tier-big{color:#ef5f76}
.vfx-impact.tier-big:before{border-width:4px;inset:6%}
.vfx-impact.tier-counter{color:#8f6bff}
.vfx-impact.tier-counter:before{border-style:dashed;border-width:4px;inset:2%}

@keyframes impactRing{0%{opacity:.95;transform:scale(.35)}70%{opacity:.5}100%{opacity:0;transform:scale(1.5)}}
@keyframes impactCore{0%{opacity:.75;transform:scale(.2) rotate(0)}100%{opacity:0;transform:scale(1.35) rotate(45deg)}}

/* O contra-ataque (1 derruba o máximo) tem linguagem própria: é a jogada mais
   rara do jogo e precisa ser reconhecível de longe. */
.vfx-counter:before{content:"1";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font:900 26px 'Chakra Petch';color:#fff;text-shadow:0 0 12px #8f6bff,0 0 22px #5a2ee0;
  animation:counterPop .7s cubic-bezier(.2,1.4,.3,1) forwards}
@keyframes counterPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(-20deg)}
  35%{opacity:1;transform:translate(-50%,-50%) scale(1.25) rotate(6deg)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.7) rotate(0)}}

.board.shake{animation:boardShake .24s ease-in-out}
@keyframes boardShake{0%,100%{transform:translate(0,0)}25%{transform:translate(-4px,2px)}
  50%{transform:translate(3px,-3px)}75%{transform:translate(-2px,1px)}}
.cell.kill-cell{box-shadow:inset 0 0 0 2px rgba(255,255,255,.55)}

/* --- efeitos de eliminação (comprados na loja) --------------------------- */
.kill-fx{overflow:visible}
.kill-fx:before,.kill-fx:after{content:"";position:absolute;inset:0;border-radius:50%}

/* Faísca — o básico, que toda conta tem. */
.kill-fx.kill_spark:before{background:radial-gradient(circle,#ffe9a8 0%,#ffb648 42%,transparent 68%);
  animation:fxBurst .42s ease-out forwards}
.kill-fx.kill_spark:after{border:2px solid #ffcf6a;animation:fxRing .42s ease-out forwards}

/* Pétalas — gira e se desfaz. */
.kill-fx.kill_petals:before{background:
  radial-gradient(circle at 30% 30%,#ffc7de 0 18%,transparent 19%),
  radial-gradient(circle at 70% 40%,#ffb3d2 0 15%,transparent 16%),
  radial-gradient(circle at 45% 72%,#ffd9e8 0 16%,transparent 17%);
  animation:fxPetals .52s ease-out forwards}

/* Gelo — trinca e estilhaça. */
.kill-fx.kill_frost:before{background:conic-gradient(from 0deg,#cdeeff,#8fd8ff,#e8faff,#8fd8ff,#cdeeff);
  clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);
  animation:fxShatter .52s ease-out forwards}

/* Trovão — desce de cima, curto. */
.kill-fx.kill_thunder:before{background:linear-gradient(180deg,transparent 0 8%,#fff6b0 9% 16%,transparent 17%);
  animation:fxBolt .3s ease-out forwards}
.kill-fx.kill_thunder:after{border:3px solid #ffe873;animation:fxRing .56s ease-out .06s forwards}

/* Inferno — labaredas sobem. */
.kill-fx.kill_inferno:before{background:radial-gradient(ellipse at 50% 85%,#fff1a8 0 12%,#ff9b2f 30%,#e5432b 58%,transparent 72%);
  animation:fxFlame .56s ease-out forwards}

/* Vazio — implode num ponto. */
.kill-fx.kill_void:before{background:radial-gradient(circle,#1a0b33 0 26%,#7b4bff 42%,transparent 66%);
  animation:fxImplode .6s cubic-bezier(.6,0,.2,1) forwards}
.kill-fx.kill_void:after{border:2px solid #9d7bff;animation:fxRingIn .6s ease-in forwards}

/* Coroa — conquistado na liga do Leão. */
.kill-fx.kill_champion:before{background:radial-gradient(circle,#fff7cf 0 20%,#ffd24a 44%,transparent 70%);
  animation:fxBurst .6s ease-out forwards}
.kill-fx.kill_champion:after{content:"♛";display:grid;place-items:center;border:0;
  font-size:26px;color:#ffd24a;text-shadow:0 0 12px #ffae1f;animation:fxCrown .6s ease-out forwards}

/* Só na qualidade alta: a segunda camada de brilho. */
.kill-fx.rich{filter:drop-shadow(0 0 10px currentColor)}

@keyframes fxBurst{0%{opacity:0;transform:scale(.2)}25%{opacity:1}100%{opacity:0;transform:scale(1.6)}}
@keyframes fxRing{0%{opacity:.9;transform:scale(.3)}100%{opacity:0;transform:scale(1.7)}}
@keyframes fxRingIn{0%{opacity:.9;transform:scale(1.7)}100%{opacity:0;transform:scale(.2)}}
@keyframes fxPetals{0%{opacity:0;transform:scale(.4) rotate(0)}30%{opacity:1}
  100%{opacity:0;transform:scale(1.5) rotate(140deg)}}
@keyframes fxShatter{0%{opacity:0;transform:scale(.3) rotate(0)}30%{opacity:1;transform:scale(1.1) rotate(15deg)}
  100%{opacity:0;transform:scale(1.55) rotate(45deg)}}
@keyframes fxBolt{0%{opacity:0;transform:scaleY(.2) translateY(-40%)}
  40%{opacity:1;transform:scaleY(1.15) translateY(0)}100%{opacity:0;transform:scaleY(1) translateY(6%)}}
@keyframes fxFlame{0%{opacity:0;transform:scale(.4) translateY(18%)}
  35%{opacity:1;transform:scale(1.05) translateY(-4%)}100%{opacity:0;transform:scale(1.35) translateY(-26%)}}
@keyframes fxImplode{0%{opacity:0;transform:scale(1.7)}30%{opacity:1;transform:scale(1)}
  100%{opacity:0;transform:scale(.05)}}
@keyframes fxCrown{0%{opacity:0;transform:scale(.3) translateY(20%)}40%{opacity:1;transform:scale(1.15) translateY(-6%)}
  100%{opacity:0;transform:scale(1.3) translateY(-30%)}}

/* --- prévia na loja (P1.3) ---------------------------------------------- */
.fx-preview{position:relative;width:100%;height:100%;border-radius:12px;overflow:hidden;
  background:radial-gradient(circle at 50% 55%,#e8f4fb,#c9e2f0);cursor:pointer}
.fx-preview .fx-piece{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:46%;height:46%;border-radius:9px;background:linear-gradient(180deg,#fff,#dceaf3);
  border:2px solid #9fc4d8;display:grid;place-items:center;
  font:900 15px 'Chakra Petch';color:#3c5771;z-index:2}
.fx-preview .kill-fx{border-radius:12px}
.fx-preview-hint{position:absolute;left:0;right:0;bottom:3px;text-align:center;z-index:3;
  font:900 6px 'Chakra Petch';letter-spacing:.8px;color:#5b7a92}
.shop-item.kill_effect figure{background:transparent}

/* Movimento reduzido: o sistema manda, e a escolha do jogador so pode ser
   mais conservadora, nunca menos. */
@media(prefers-reduced-motion:reduce){
  .vfx-impact,.vfx-counter,.kill-fx,.board.shake{animation:none!important;display:none}
}

/* --- ajuste de qualidade gráfica (P1.5) --------------------------------- */
.graphics-setting{margin-top:14px;padding-top:12px;border-top:1px solid #e3ecf3}
.graphics-setting header small{font:900 7px 'Chakra Petch';letter-spacing:1.4px;color:#e16f68}
.graphics-setting header b{display:block;font:900 13px 'Chakra Petch';color:#344866;margin-top:2px}
.graphics-choice{display:flex;gap:8px;margin:9px 0 6px}
.graphics-option{flex:1;min-height:40px;padding:9px 6px;border-radius:10px;cursor:pointer;
  border:2px solid #d5e3ec;background:#fff;color:#5b7a92;
  font:900 9px 'Chakra Petch';letter-spacing:1px;transition:border-color .15s,background .15s}
.graphics-option:hover{border-color:#8fcbe0}
.graphics-option.selected{border-color:#1695b1;background:#e7f8fb;color:#0d7f97}
.graphics-setting p{font-size:10px;margin:0}
.shop-copy{margin-top:4px!important;color:#7d8ea0!important;font-size:7px!important;
  white-space:normal!important;line-height:1.35}
.shop-item .fx-host{background:transparent;overflow:visible}


/* ==================================================================
   P1.4 · EXPRESSÃO DOS ANIMAIS (idle · reveal · vitória · derrota)
   ==================================================================
   A arte das oito feras é ilustração pintada e não tem variantes de pose. Em
   vez de fingir expressão trocando a imagem, a expressão vem de onde o anime de
   torneio sempre a tirou: POSE, TEMPO e EMOTE. Os cinco emotes em
   `assets/expressions/` foram desenhados em vetor para este jogo.

   Regra que nenhum estado pode quebrar: o número continua legível. Os emotes
   ficam em `z-index:1` (a peça está em 2), nunca cobrem o centro da casa e, no
   caso do `flash`, têm miolo vazio de propósito.
   ================================================================== */
.mood-layer{position:absolute;inset:0;z-index:1;pointer-events:none;
  background-repeat:no-repeat;background-position:center;background-size:contain}

/* idle — respiração. Quase imperceptível, e é essa a intenção: o tabuleiro
   parado parece congelado; o tabuleiro que respira parece vivo. */
.piece[data-mood="idle"]{animation:moodBreathe 3.4s ease-in-out infinite}
@keyframes moodBreathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-2%) scale(1.014)}}

/* reveal — a peça abre: estica, gira de leve e solta os raios. */
.piece[data-mood="reveal"]{animation:moodReveal .5s cubic-bezier(.2,1.5,.35,1)}
.piece[data-mood="reveal"] .mood-layer{background-image:url('assets/expressions/flash.svg');
  animation:moodFlash .55s ease-out forwards}
@keyframes moodReveal{0%{transform:scale(.82) rotate(-6deg)}55%{transform:scale(1.1) rotate(3deg)}100%{transform:scale(1) rotate(0)}}
@keyframes moodFlash{0%{opacity:0;transform:scale(.4) rotate(-25deg)}
  35%{opacity:1;transform:scale(1.05) rotate(0)}100%{opacity:0;transform:scale(1.3) rotate(20deg)}}

/* vitória — pula, esquenta e ganha a faísca. */
.piece[data-mood="win"]{animation:moodWin 1.1s ease-in-out infinite;
  filter:saturate(1.12) drop-shadow(0 0 7px rgba(255,196,64,.6))}
.piece[data-mood="win"] .mood-layer{background-image:url('assets/expressions/spark.svg');
  background-position:right -6% top -6%;background-size:44%;
  animation:moodSparkle 1.4s ease-in-out infinite}
@keyframes moodWin{0%,100%{transform:translateY(0)}40%{transform:translateY(-11%) scale(1.03)}}
@keyframes moodSparkle{0%,100%{opacity:.35;transform:scale(.82) rotate(-12deg)}
  50%{opacity:1;transform:scale(1.08) rotate(10deg)}}

/* derrota — murcha, esfria e sua frio. Cinza é o sinal mais forte e o mais
   barato de ler; a gota confirma sem precisar de texto. */
.piece[data-mood="lose"]{filter:grayscale(.62) brightness(.86);
  transform:translateY(4%) rotate(-3deg);transition:filter .4s,transform .4s}
.piece[data-mood="lose"] .mood-layer{background-image:url('assets/expressions/sweat.svg');
  background-position:right 6% top 8%;background-size:26%;
  animation:moodSweat 2.2s ease-in-out infinite}
@keyframes moodSweat{0%,100%{opacity:.55;transform:translateY(0)}55%{opacity:1;transform:translateY(9%)}}

/* --- retrato grande: tela de resultado ---------------------------------- */
.result-mascot{position:relative;width:132px;height:132px;margin:2px auto 10px;
  border-radius:20px;overflow:visible;border:3px solid #fff;
  box-shadow:0 6px 0 rgba(38,88,128,.16),0 12px 26px rgba(31,72,110,.16)}
.result-mascot>img{width:100%;height:100%;object-fit:cover;border-radius:17px;display:block}
.result-mascot .mood-layer{border-radius:17px}
.result-mascot[data-mood="win"]>img{animation:moodWin 1.2s ease-in-out infinite}
.result-mascot[data-mood="win"] .confetti-layer{position:absolute;inset:-14% -10% auto -10%;height:70%;
  background:url('assets/expressions/confetti.svg') center/contain no-repeat;
  animation:moodConfetti 1.8s ease-out infinite}
.result-mascot[data-mood="win"] .mood-layer{background-image:url('assets/expressions/spark.svg');
  background-position:right -12% top -12%;background-size:52%;
  animation:moodSparkle 1.5s ease-in-out infinite}
.result-mascot[data-mood="lose"]>img{filter:grayscale(.62) brightness(.86)}
.result-mascot[data-mood="lose"] .mood-layer{background-image:url('assets/expressions/sweat.svg');
  background-position:right 4% top 6%;background-size:24%;animation:moodSweat 2.4s ease-in-out infinite}
.result-mascot[data-mood="lose"] .confetti-layer{position:absolute;inset:0;
  background:url('assets/expressions/gloom.svg') top center/100% 62% no-repeat;opacity:.9}
@keyframes moodConfetti{0%{opacity:0;transform:translateY(-14%)}25%{opacity:1}
  100%{opacity:0;transform:translateY(16%)}}

/* Qualidade baixa e movimento reduzido: a expressão vira estática. O CINZA da
   derrota e o brilho da vitória FICAM -- eles são informação, não enfeite. */
body.graphics-low .piece[data-mood],
body.graphics-low .result-mascot>img{animation:none!important}
body.graphics-low .mood-layer,body.graphics-low .confetti-layer{animation:none!important}
@media(prefers-reduced-motion:reduce){
  .piece[data-mood],.result-mascot>img,.mood-layer,.confetti-layer{animation:none!important}
}


/* --- resultado precisa CABER (landscape de celular) ---------------------- */
/* O card já era mais alto que 420 px de viewport antes do retrato; o retrato
   piorou. Em vez de cortar conteúdo, o card rola dentro de si mesmo e o
   retrato encolhe nas telas baixas -- expressão não pode custar a leitura do
   placar. */
.result-screen{overflow:hidden}
.result-card{max-height:calc(100dvh - 84px);overflow-y:auto;overscroll-behavior:contain}
.result-card::-webkit-scrollbar{width:6px}
.result-card::-webkit-scrollbar-thumb{background:#d6e6ee;border-radius:4px}

@media(max-height:620px){
  .result-mascot{width:86px;height:86px;margin:0 auto 6px;border-width:2px}
  .result-card{padding:14px 18px}
}
@media(max-height:460px){
  .result-mascot{width:64px;height:64px;margin:0 auto 4px}
  .result-card{max-height:calc(100dvh - 62px);padding:10px 16px}
}

/* ==================================================================
   1.3 · MATCHMAKING, SALA PRIVADA E AJUSTES
   ================================================================== */
.online-methods{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
.match-method,.glass-action{border:2px solid rgba(139,191,218,.38);border-radius:14px;
  background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(220,244,255,.74));
  box-shadow:inset 0 1px 0 #fff,0 5px 0 rgba(43,111,155,.18),0 10px 24px rgba(39,92,132,.12);
  min-height:58px;padding:10px 14px;color:#46627d;cursor:pointer;display:flex;gap:12px;align-items:center;text-align:left}
.match-method i{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;font-style:normal;
  color:#fff;background:linear-gradient(145deg,#5de4e2,#238be8);box-shadow:inset 0 2px 5px rgba(255,255,255,.65),0 4px 8px rgba(23,108,179,.25)}
.match-method span{display:flex;flex-direction:column}.match-method b,.glass-action b{font:900 11px 'Chakra Petch';letter-spacing:.7px}
.match-method small,.glass-action small{font-size:9px;color:#71859a;margin-top:3px}.match-method.selected{border-color:#21adc9;background:linear-gradient(145deg,#fff,#dff9ff);box-shadow:inset 0 1px 0 #fff,0 5px 0 #168aac,0 12px 24px rgba(24,139,172,.18)}
.friend-room{display:grid;grid-template-columns:1fr auto 1.3fr 1fr;align-items:end;gap:10px;margin:10px 0 15px;padding:13px;border-radius:17px;background:rgba(226,245,252,.65);border:1px solid #d1e8f2}
.friend-room>span{align-self:center;font:900 9px 'Chakra Petch';color:#9aaab8}.friend-room label small{display:block;font:900 8px 'Chakra Petch';letter-spacing:1px;color:#688099;margin-bottom:5px}
.friend-room input{width:100%;height:49px;border:2px solid #cfe1ec;border-radius:12px;background:#fff;text-transform:uppercase;text-align:center;font:900 18px 'Chakra Petch';letter-spacing:5px;color:#245c87;outline:none}.friend-room input:focus{border-color:#1cacc7;box-shadow:0 0 0 4px rgba(28,172,199,.12)}
.glass-action{justify-content:center;flex-direction:column;gap:1px}.glass-action.accent{color:#fff;border-color:#42aee5;background:linear-gradient(145deg,#37d4d5,#2c86ea)}.glass-action.danger{color:#fff;border-color:#f28da0;background:linear-gradient(145deg,#ff7890,#d94769)}
.versus-search{display:grid;grid-template-columns:90px 110px 90px;align-items:center;justify-content:center;gap:12px;margin:8px 0}.versus-search>span{display:flex;flex-direction:column;align-items:center;gap:5px;font:900 9px 'Chakra Petch';color:#58748c}.versus-search>span img{width:70px;height:70px;border-radius:22px;object-fit:cover;border:3px solid #fff;box-shadow:0 6px 0 #8fb7ce,0 12px 22px rgba(36,77,113,.2)}
.match-intro .intro-panel{background:linear-gradient(rgba(255,255,255,.84),rgba(250,253,255,.93)),url('assets/matchmaking-arena-v1.png') center/cover;border:3px solid rgba(255,255,255,.92);box-shadow:0 11px 0 rgba(52,111,153,.2),0 25px 60px rgba(30,75,113,.28)}
#intro-rival.searching img{filter:grayscale(.7) blur(1px);animation:rivalScan 1.3s ease-in-out infinite}.invite-code-display{display:block;width:max-content;margin:10px auto;padding:10px 18px;border-radius:13px;background:rgba(255,255,255,.75);border:2px solid rgba(90,196,222,.5);font:900 24px 'Chakra Petch';letter-spacing:7px;color:#1d7097;user-select:all}
.cancel-matchmaking{margin-top:8px;border:0;background:transparent;color:#d35670;font:900 9px 'Chakra Petch';letter-spacing:1px;cursor:pointer;padding:8px}.network-banner{position:absolute;left:50%;top:12px;transform:translateX(-50%);z-index:20;min-width:280px;padding:10px 15px;border-radius:16px;background:rgba(255,251,242,.92);border:2px solid #ffcc72;box-shadow:0 7px 22px rgba(118,81,23,.2);display:flex;align-items:center;gap:10px}.network-banner i{width:16px;height:16px;border:3px solid #f0a13a;border-top-color:transparent;border-radius:50%;animation:networkSpin .8s linear infinite}.network-banner span{display:flex;flex-direction:column}.network-banner b{font:900 9px 'Chakra Petch';color:#b06a22}.network-banner small{font-size:9px;color:#7d8790}
.battle-avatar img{width:100%;height:100%;border-radius:inherit;object-fit:cover}.confirm-icon{width:58px;height:58px;margin:0 auto 8px;border-radius:20px;display:grid;place-items:center;color:#fff;font:900 30px 'Chakra Petch';background:linear-gradient(145deg,#ff9f7f,#f25078);box-shadow:inset 0 2px 8px rgba(255,255,255,.55),0 7px 0 #bd3e61}.confirm-actions{display:flex;gap:10px;margin-top:18px}.confirm-actions button{flex:1;min-height:52px}.settings-card{width:min(480px,92vw)}.settings-card>label{display:flex;align-items:center;gap:18px;padding:14px 0;border-bottom:1px solid #e1ecf2}.settings-card label>span{display:flex;flex-direction:column;min-width:150px}.settings-card label b{font:900 11px 'Chakra Petch';color:#3d5872}.settings-card label small{font-size:9px;color:#8395a6;margin-top:3px}.settings-card input[type=range]{flex:1;accent-color:#19b4c7}.toggle-row input{width:44px;height:24px;accent-color:#19b4c7}.settings-card .liquid-button{margin-top:18px;width:100%}
@keyframes rivalScan{50%{filter:grayscale(.2) blur(0);transform:translateY(-4px)}}@keyframes networkSpin{to{transform:rotate(360deg)}}
@media(max-width:720px){.online-methods{grid-template-columns:1fr 1fr}.friend-room{grid-template-columns:1fr 1fr}.friend-room>span{display:none}.versus-search{grid-template-columns:68px 82px 68px}.versus-search>span img{width:55px;height:55px}.intro-object{max-width:80px}.match-method{padding:7px;gap:7px}.match-method i{width:30px;height:30px}.friend-room input{height:43px}.network-banner{top:4px}}
@media(max-height:500px){.online-methods{margin:5px 0}.match-method{min-height:45px}.friend-room{margin:5px 0;padding:7px}.versus-search{margin:0}.versus-search>span img{width:44px;height:44px}.invite-code-display{font-size:17px;padding:5px 12px}.intro-panel h2{margin:4px 0}}

/* 1.4 — palco cosmético ampliado: toque funciona em desktop e Android. */
.cosmetic-preview-modal{z-index:170;background:rgba(19,43,68,.68);backdrop-filter:blur(14px) saturate(1.25)}
.cosmetic-preview-card{width:min(920px,94vw);min-height:520px;padding:22px;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:24px;overflow:hidden;background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(222,245,255,.9));border:2px solid rgba(255,255,255,.95);box-shadow:inset 0 2px 0 #fff,0 14px 0 rgba(48,112,151,.24),0 30px 70px rgba(18,55,86,.32)}
.cosmetic-preview-card>.modal-close{position:absolute;z-index:8;right:14px;top:14px;left:auto;bottom:auto}
.cosmetic-preview-stage{grid-column:1;grid-row:1;position:relative;min-height:430px;display:grid;place-items:center;overflow:hidden;border-radius:28px;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.96),rgba(194,235,249,.78) 50%,rgba(101,188,225,.46));border:2px solid rgba(255,255,255,.9);box-shadow:inset 0 4px 18px rgba(255,255,255,.8),inset 0 -18px 38px rgba(48,142,190,.18),0 9px 22px rgba(38,103,143,.18)}
.cosmetic-preview-stage:before{content:"";position:absolute;inset:-40%;background:conic-gradient(from 30deg,transparent,rgba(255,255,255,.55),transparent 22%);animation:previewSweep 5s linear infinite;pointer-events:none}
.cosmetic-preview-info{grid-column:2;grid-row:1;align-self:center;position:relative;padding:12px 8px}.cosmetic-preview-info h2{font:900 clamp(26px,4vw,42px) 'Chakra Petch';line-height:1.02;color:#29445f;margin:8px 0 14px}.cosmetic-preview-info .muted{min-height:62px;font-size:12px;line-height:1.5}.cosmetic-preview-info .liquid-button{width:100%;min-height:56px;margin-top:14px}.cosmetic-preview-info .liquid-button .currency-icon{width:22px;height:22px;vertical-align:middle}.cosmetic-preview-info .shop-balance span{background:rgba(255,255,255,.76);box-shadow:inset 0 1px white,0 4px 9px rgba(49,110,149,.12)}
.preview-avatar{position:relative;width:min(330px,72%);aspect-ratio:1;display:grid;place-items:center;border-radius:34%;padding:14px;background:linear-gradient(145deg,#fff,#dff5ff 55%,#8fd9ef);box-shadow:inset 0 4px 8px #fff,0 14px 0 #2e8eb9,0 22px 38px rgba(24,96,137,.28);animation:previewFloat 3s ease-in-out infinite}.preview-avatar:after{content:"";position:absolute;inset:-17px;border:3px solid rgba(102,222,247,.5);border-radius:37%;box-shadow:0 0 24px rgba(82,209,241,.48);animation:previewRing 2.4s ease-in-out infinite}.preview-avatar>i{position:absolute;inset:5%;border-radius:30%;background:linear-gradient(115deg,rgba(255,255,255,.7),transparent 32%);z-index:2;pointer-events:none}.preview-avatar img{width:100%;height:100%;border-radius:29%;object-fit:cover}.preview-avatar span{position:absolute;left:50%;bottom:-46px;transform:translateX(-50%);min-width:max-content;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.9);font:900 10px 'Chakra Petch';color:#316887;box-shadow:0 4px 10px rgba(35,91,126,.18)}
.preview-avatar.rarity-legendary{box-shadow:inset 0 4px 8px #fff,0 14px 0 #c68b16,0 0 42px rgba(255,190,50,.62)}.preview-avatar.rarity-legendary:after{border-color:#ffd557;box-shadow:0 0 28px #ffc247}
.preview-frame.frame_copper{outline:10px solid #c57443}.preview-frame.frame_gold,.preview-frame.frame_legend{outline:12px solid #f3bd2f;box-shadow:inset 0 4px 8px #fff,0 14px 0 #a86f0a,0 0 40px #ffd45b}.preview-frame.frame_prism{outline:11px solid #a850ef;filter:drop-shadow(0 0 18px #62dff4);animation:previewFloat 3s ease-in-out infinite,prismFrame 1.9s linear infinite}.preview-frame.frame_rabbit{outline:10px solid #ed96bf}.preview-frame.frame_fox{outline:10px solid #ef8b3a}.preview-frame.frame_wolf{outline:10px solid #6e8fb9}.preview-frame.frame_tiger{outline:10px solid #e48725}.preview-frame.frame_bear{outline:10px solid #7c573d}.preview-frame.frame_lion{outline:10px solid #d99f22}
.preview-board{position:absolute;inset:18px;border-radius:22px;background:linear-gradient(rgba(247,253,255,.14),rgba(237,250,255,.34)),var(--preview-arena) center/cover;box-shadow:inset 0 0 0 4px rgba(255,255,255,.72),inset 0 -18px 30px rgba(18,69,103,.18),0 12px 24px rgba(27,82,118,.22);display:grid;place-items:center}.preview-grid{width:82%;height:78%;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:6px;padding:8px;border-radius:20px;background:rgba(233,249,255,.48);border:2px solid rgba(255,255,255,.75)}.preview-grid>span{position:relative;display:grid;place-items:center;border:1px solid rgba(255,255,255,.8);border-radius:16px 7px;background:linear-gradient(145deg,rgba(255,255,255,.58),rgba(198,235,247,.28));box-shadow:inset 0 2px 5px rgba(255,255,255,.75)}.preview-grid b{display:grid;place-items:center;width:42%;aspect-ratio:.82;border-radius:48% 48% 34% 34%;font:900 18px 'Chakra Petch';color:white}.preview-grid .capsule{background:radial-gradient(circle at 50% 28%,#fff,#9eeeff 34%,#1288bc 72%);border:2px solid white;box-shadow:0 6px 0 #176b96,0 0 12px #8be9ff}.preview-grid .totem{background:linear-gradient(#fff,#4f9df4);border:3px solid white;box-shadow:0 6px 0 #1b65b1,0 0 15px #8acbff}
.preview-fx-arena{width:min(340px,74%);aspect-ratio:1;padding:30px;border-radius:30px;background:radial-gradient(circle,#fff8cf,#dff6ff 58%,#6fc7e8);box-shadow:inset 0 3px 14px #fff,0 13px 0 #398db2,0 24px 35px rgba(29,90,126,.28)}.preview-fx-arena .fx-preview{width:100%;height:100%;border-radius:24px}.preview-fx-arena .fx-piece{font-size:56px;border-width:5px}.preview-fx-arena .fx-preview-hint{bottom:12px;font-size:9px}
@keyframes previewSweep{to{transform:rotate(360deg)}}@keyframes previewFloat{50%{transform:translateY(-9px) rotate(1deg)}}@keyframes previewRing{50%{transform:scale(1.04);opacity:.58}}
@media(max-width:720px){.cosmetic-preview-card{grid-template-columns:1fr;grid-template-rows:minmax(245px,1fr) auto;gap:10px;min-height:0;max-height:94dvh;overflow:auto}.cosmetic-preview-stage{grid-column:1;grid-row:1;min-height:280px}.cosmetic-preview-info{grid-column:1;grid-row:2;padding:4px 8px}.cosmetic-preview-info .muted{min-height:0}.preview-avatar{width:min(230px,60%)}.preview-board{inset:10px}}
@media(max-height:500px) and (orientation:landscape){.cosmetic-preview-card{grid-template-columns:1.25fr .75fr;grid-template-rows:1fr;width:94vw;height:91dvh;min-height:0;padding:14px;gap:14px}.cosmetic-preview-stage{grid-column:1;grid-row:1;min-height:0;height:auto;align-self:stretch}.cosmetic-preview-info{grid-column:2;grid-row:1}.cosmetic-preview-info h2{font-size:23px;margin:4px 0 7px}.cosmetic-preview-info .muted{font-size:9px;min-height:38px}.cosmetic-preview-info .shop-balance{margin:5px 0}.cosmetic-preview-info .liquid-button{min-height:44px;margin-top:6px}.preview-avatar{width:min(210px,58%)}.preview-avatar span{bottom:-30px;padding:5px 10px}.preview-fx-arena{width:min(220px,62%);padding:18px}.preview-grid{gap:3px}.preview-grid>span{border-radius:9px 4px}}
@media(prefers-reduced-motion:reduce){.cosmetic-preview-stage:before,.preview-avatar,.preview-avatar:after{animation:none!important}}

/* v1.5 · marca oficial TFF — Torneio Fera Fight */
.auth-art h1 small{display:block;margin-bottom:4px;color:#ffd36e;font:900 clamp(18px,2vw,28px) 'Chakra Petch';letter-spacing:8px;text-shadow:0 3px 10px rgba(16,61,104,.34)}
.brand>span:last-child{display:flex;align-items:baseline;gap:5px;font-size:12px;letter-spacing:1.4px;white-space:nowrap}.brand>span:last-child b{margin-left:0;font-size:15px;letter-spacing:2px;color:#18aeca}

/* ---- 1.6: OS TRES MODOS NA HOME ----------------------------------------
   Rankeada, amigo e IA sao irmaos: nenhum pode sumir num tamanho de tela. A
   regra antiga escondia `.home-actions .secondary` abaixo de 760 px -- quem
   entrasse pelo celular ficava sem treino e sem sala de amigos, com o
   competitivo como unica porta. Cada botao agora diz, no proprio rotulo, se
   aquele modo paga alguma coisa. */
.home-actions .secondary{display:grid;gap:2px;text-align:center;padding:11px 18px}
.home-actions .secondary b{font:800 12px 'Chakra Petch';letter-spacing:1.2px;color:inherit}
.home-actions .secondary small{font-size:8px;opacity:.72;line-height:1.3}
@media(max-width:760px){.home-actions .secondary{padding:9px 12px}.home-actions .secondary b{font-size:10px}.home-actions .secondary small{font-size:7px}}

/* ========================================================================
   1.7 · TABULEIRO DE PEDESTAIS / IDENTIDADE TFF
   A casa deixa de ser um retângulo e vira um ponto físico da arena. A peça
   revelada é uma miniatura sobre base redonda; a oculta é uma cápsula-ovo.
   ======================================================================== */
html,body{font-family:'Nunito Sans',Inter,system-ui,sans-serif}
.brand,.eyebrow,.turn-banner,.piece .power,.result-card h2,.battle-toast,
.primary b,.secondary,.lobby-card h2,.shop-hero h2{font-family:'Fredoka','Nunito Sans',sans-serif!important}
.brand>span:last-child{font-size:13px;font-weight:700;letter-spacing:.7px}
.brand>span:last-child b{font-size:16px;letter-spacing:1.2px}

.board{
  gap:clamp(2px,.45vw,7px);padding:clamp(9px,1.1vw,17px);
  border:2px solid rgba(255,255,255,.86);border-radius:34px;
  background:
    radial-gradient(ellipse at 50% 47%,rgba(255,255,255,.82),rgba(216,242,247,.46) 48%,rgba(98,176,202,.23) 100%),
    repeating-linear-gradient(90deg,transparent 0 calc(25% - 1px),rgba(69,149,181,.08) calc(25% - 1px) 25%);
  box-shadow:inset 0 3px 0 #fff,inset 0 -18px 36px rgba(42,133,171,.14),0 10px 0 rgba(53,126,158,.26),0 24px 45px rgba(35,84,116,.2);
  overflow:hidden;
}
.board:before{content:"";position:absolute;inset:3%;pointer-events:none;border-radius:28px;background:radial-gradient(circle at 50% 50%,rgba(255,213,94,.16),transparent 42%)}
.board:after{height:2px;opacity:.2}
.cell,.cell.empty{
  min-width:48px;min-height:48px;border:0!important;border-radius:50%!important;
  background:transparent!important;box-shadow:none!important;opacity:1!important;
  isolation:isolate;overflow:visible;
}
.cell:before{
  content:"";position:absolute;inset:12% 8% 9%;border:0;border-radius:50%;z-index:-1;
  background:radial-gradient(ellipse at 45% 30%,rgba(255,255,255,.95),rgba(224,245,249,.82) 42%,rgba(121,191,212,.48) 70%,rgba(49,126,162,.33));
  box-shadow:inset 0 2px 0 #fff,inset 0 -6px 10px rgba(43,122,157,.18),0 5px 0 rgba(56,126,154,.22),0 9px 14px rgba(35,90,119,.16);
  transition:transform .18s,filter .18s,box-shadow .18s;
}
.cell:hover:before{transform:translateY(-2px) scale(1.035);filter:brightness(1.05)}
.cell.selected:before{box-shadow:inset 0 2px 0 #fff,inset 0 -6px 10px rgba(34,148,186,.2),0 0 0 4px rgba(32,196,218,.28),0 7px 0 #38a9c1,0 12px 20px rgba(22,143,177,.25)}
.cell.valid:before{background:radial-gradient(ellipse at 45% 30%,#fffef3,#fff3bc 47%,#f4c95f 78%);box-shadow:inset 0 2px 0 #fff,0 0 0 4px rgba(255,199,70,.24),0 6px 0 #d9a738,0 11px 18px rgba(177,127,21,.2)}

.cell>.piece{filter:drop-shadow(0 8px 7px rgba(30,78,109,.25));transform-origin:50% 88%}
.piece>div{border:0!important;box-shadow:none!important;background:transparent!important;border-radius:0!important;overflow:visible!important}
.piece .front:before{
  content:"";position:absolute;z-index:-1;left:8%;right:8%;bottom:0;height:34%;border-radius:50%;
  background:radial-gradient(ellipse at 44% 26%,#fff 0 9%,color-mix(in srgb,var(--owner),white 70%) 30%,color-mix(in srgb,var(--owner),white 20%) 69%,color-mix(in srgb,var(--owner),#285278 42%));
  border:3px solid #fff;box-shadow:inset 0 -5px 8px rgba(35,78,119,.2),0 0 0 3px var(--owner),0 5px 0 color-mix(in srgb,var(--owner),#244a70 45%),0 10px 13px rgba(27,72,105,.24)
}
.piece .front:after{content:"";position:absolute;z-index:-2;left:17%;right:17%;bottom:-5%;height:18%;border-radius:50%;background:linear-gradient(180deg,#fff,#b8deeb);border:3px solid var(--owner);box-shadow:0 5px 0 color-mix(in srgb,var(--owner),#294d69 42%)}
.piece .beast{
  position:absolute!important;inset:-2% 5% 25%!important;border:0!important;border-radius:48% 48% 42% 42%!important;
  background:transparent!important;box-shadow:none!important;filter:drop-shadow(0 4px 4px rgba(38,76,105,.22))!important;
  clip-path:ellipse(46% 47% at 50% 47%);transform-origin:50% 90%;overflow:hidden!important
}
.piece .beast img{width:100%;height:100%;object-fit:cover;transform:scale(1.08);display:block}
.piece .power{z-index:4;left:50%;bottom:4%!important;transform:translateX(-50%);min-width:42%!important;width:auto;padding:3px 7px!important;border:3px solid #fff!important;border-radius:50%!important;background:linear-gradient(180deg,color-mix(in srgb,var(--owner),white 15%),var(--owner))!important;box-shadow:0 0 0 2px var(--owner),0 3px 5px rgba(31,69,97,.3)!important;font-size:clamp(18px,2.4vw,33px)!important;line-height:1!important}
.piece .owner-tag{z-index:5;left:12%!important;top:7%!important;width:18px;height:18px;border:2px solid #fff;background:var(--owner)!important;color:#fff!important;box-shadow:0 2px 4px rgba(31,70,99,.28)!important}

/* Cápsula-ovo: segredo visual sem a linguagem de carta. */
.piece .back{inset:1% 13% 8%;border-radius:48% 48% 34% 34%!important;background:radial-gradient(circle at 35% 20%,#fff 0 7%,rgba(255,255,255,.55) 8% 15%,transparent 16%),linear-gradient(145deg,#b8f6ff,#35cae2 40%,#2385ca 78%,#17559a)!important;border:3px solid #fff!important;box-shadow:inset 7px 8px 14px rgba(255,255,255,.48),inset -7px -10px 14px rgba(9,72,145,.35),0 0 0 3px #1689bd,0 7px 0 #0f5e91,0 13px 17px rgba(24,76,112,.3)!important}
.piece .back:before{content:""!important;position:absolute;inset:24% 27% 35%;background:url('assets/ui-paw.svg') center/contain no-repeat;filter:brightness(0) invert(1) drop-shadow(0 2px 2px rgba(17,87,138,.25));opacity:.92}
.piece .back:after{content:""!important;position:absolute!important;left:12%!important;right:12%!important;bottom:-4%!important;width:auto!important;height:16%!important;border:3px solid white!important;border-radius:50%!important;background:linear-gradient(180deg,#d3faff,#39a9d2)!important;box-shadow:0 4px 0 #176c9c,0 8px 12px rgba(12,64,99,.25)!important}

.piece.peck-now .beast{animation:beakPeck .52s cubic-bezier(.25,.9,.25,1)}
.piece.pounce-now .beast{animation:mascotPounce .48s cubic-bezier(.2,.9,.25,1)}
.piece.captured{animation:softFarewell .58s ease-in forwards!important}
.piece.captured .beast:after{content:"✦";position:absolute;right:4%;top:8%;font-size:24px;color:#fff3a4;text-shadow:0 0 8px #ffc55b;animation:farewellSpark .5s ease-out}
@keyframes beakPeck{0%,100%{transform:rotate(0) translate(0)}28%{transform:rotate(-8deg) translate(-4%,-4%)}55%{transform:rotate(8deg) translate(10%,7%) scale(1.05)}75%{transform:rotate(-2deg) translate(2%,1%)}}
@keyframes mascotPounce{0%,100%{transform:translate(0) scale(1)}40%{transform:translateY(-7%) scale(.96,1.05)}68%{transform:translateY(5%) scale(1.07,.93)}}
@keyframes softFarewell{0%{opacity:1;transform:scale(1)}36%{transform:scale(1.1) translateY(-5%);filter:brightness(1.35)}100%{opacity:0;transform:scale(.35) translateY(-48%) rotate(9deg);filter:blur(3px)}}
@keyframes farewellSpark{from{opacity:0;transform:scale(.3) rotate(-25deg)}55%{opacity:1}to{opacity:0;transform:scale(1.5) rotate(25deg)}}

.move-arrow{z-index:8;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.92);border:2px solid #f2bd45;color:#bf7817;font:900 20px 'Fredoka';box-shadow:0 4px 0 #dca33d,0 8px 13px rgba(128,92,22,.2);animation:arrowInvite .75s ease-in-out infinite}
@keyframes arrowInvite{50%{transform:translateY(-3px) scale(1.06)}}
.battle-toast.combo{padding:12px 22px;border-radius:999px;color:#735213;background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(255,238,153,.94));border:3px solid #fff;box-shadow:0 0 0 3px #f2bf4a,0 8px 0 #d89d2d,0 18px 32px rgba(126,84,10,.2);text-shadow:0 2px #fff;font-size:clamp(22px,4.4vw,54px)}

@media(max-width:760px){
  .board{width:98vw;height:64vh;border-radius:22px;padding:6px;gap:1px}
  .cell,.cell.empty{min-width:48px;min-height:48px}
  .cell:before{inset:14% 5% 10%}
  .piece .power{font-size:clamp(17px,5vw,26px)!important}
  .piece .owner-tag{width:15px;height:15px;font-size:7px!important}
  .battle-toast.combo{white-space:normal;width:max-content;max-width:88vw;text-align:center}
}
@media(max-height:500px) and (orientation:landscape){
  .board{height:68vh;width:91vw;padding:4px;border-radius:20px}
  .piece .beast{inset:-5% 7% 24%!important}
}
@media(prefers-reduced-motion:reduce){.piece.peck-now .beast,.piece.pounce-now .beast,.piece.captured,.move-arrow{animation:none!important}}

/* ========================================================================
   1.8 · PEÇAS-TOTEM ORIGINAIS + ARENA CONTÍNUA
   A grade permanece somente como hitbox. A arte visível é um palco único com
   bases de posição e miniaturas 3D pré-renderizadas, nunca cartas/retratos.
   ======================================================================== */
.board{
  isolation:isolate;
  background:
    radial-gradient(ellipse at 50% 43%,rgba(255,255,255,.92) 0 14%,rgba(171,232,245,.58) 47%,rgba(59,142,185,.28) 74%,rgba(24,91,145,.3) 100%),
    linear-gradient(145deg,#ddf6ff,#90d7ef)!important;
  border:4px solid rgba(255,255,255,.96)!important;
  box-shadow:inset 0 3px 0 #fff,inset 0 -24px 45px rgba(28,106,166,.2),0 9px 0 #4b9dc0,0 23px 42px rgba(31,79,119,.24)!important;
}
.board:before{
  inset:2.5%;border:2px solid rgba(255,255,255,.42);border-radius:27px;
  background:
    radial-gradient(circle at 50% 50%,rgba(255,221,115,.24),transparent 31%),
    linear-gradient(90deg,rgba(39,132,220,.12),transparent 38% 62%,rgba(255,93,130,.12));
}
.board:after{
  content:"";position:absolute;z-index:-1;inset:43% 4% auto;height:14%;border-radius:50%;
  background:radial-gradient(ellipse,rgba(255,255,255,.64),rgba(58,181,214,.18) 58%,transparent 72%);
  box-shadow:0 0 34px rgba(56,198,226,.2);opacity:1
}
.cell,.cell.empty{background:transparent!important;border:0!important;box-shadow:none!important}
.cell:before{
  inset:auto 8% 7%;height:31%;border-radius:50%;
  background:radial-gradient(ellipse at 48% 28%,rgba(255,255,255,.9),rgba(191,231,242,.62) 46%,rgba(55,139,178,.34) 73%,rgba(29,94,139,.28));
  box-shadow:inset 0 2px 0 rgba(255,255,255,.9),0 3px 0 rgba(55,130,165,.28),0 9px 15px rgba(37,88,119,.14)
}
.cell.empty:before{opacity:.54}
.cell:hover:before{opacity:1;transform:translateY(-2px) scale(1.045)}
.cell>.piece{overflow:visible}
.piece .front.chess-front{inset:-12% -19% -2%!important;overflow:visible!important}
.piece .front.chess-front:before{
  content:"";display:block;position:absolute;z-index:-2;left:22%;right:22%;bottom:5%;height:15%;border:0;
  border-radius:50%;background:radial-gradient(ellipse,var(--owner),color-mix(in srgb,var(--owner),transparent 67%) 48%,transparent 72%);
  filter:blur(4px);box-shadow:0 0 18px color-mix(in srgb,var(--owner),transparent 40%)
}
.piece .front.chess-front:after{display:none}
.piece .beast.chess-beast{
  position:absolute!important;inset:0!important;display:block!important;border:0!important;border-radius:0!important;
  clip-path:none!important;overflow:visible!important;background-color:transparent!important;
  background-image:url('assets/pieces/animal-chess-totems-v1.png')!important;
  background-repeat:no-repeat!important;background-size:400% 200%!important;
  filter:drop-shadow(0 7px 5px rgba(22,64,99,.28))!important;
  transform-origin:50% 84%
}
.piece .beast-chick{background-position:0 0!important}
.piece .beast-rabbit{background-position:33.333% 0!important}
.piece .beast-fox{background-position:66.666% 0!important}
.piece .beast-wolf{background-position:100% 0!important}
.piece .beast-tiger{background-position:0 100%!important}
.piece .beast-bear{background-position:33.333% 100%!important}
.piece .beast-lion{background-position:66.666% 100%!important}
.piece .beast-elephant{background-position:100% 100%!important}
.piece.owner-a .chess-beast{filter:drop-shadow(0 0 6px rgba(45,145,255,.45)) drop-shadow(0 8px 5px rgba(22,64,99,.28))!important}
.piece.owner-b .chess-beast{filter:drop-shadow(0 0 7px rgba(255,77,121,.48)) drop-shadow(0 8px 5px rgba(85,34,60,.26))!important}
.piece .chess-front .power{bottom:2%!important;min-width:38%!important;padding:4px 8px!important;font-size:clamp(19px,2.5vw,34px)!important}
.piece .chess-front .owner-tag{left:17%!important;top:13%!important}
.piece .chess-front .piece-shine{display:none}
.piece.hidden .back{inset:-2% 12% 6%;border-radius:50% 50% 30% 30%!important}
.piece.reveal-now .chess-beast{animation:chessTotemRise .7s cubic-bezier(.2,.92,.22,1.2)}
.piece.active-piece .chess-beast{animation:selectedTotem 1.15s ease-in-out infinite}
@keyframes chessTotemRise{0%{opacity:0;transform:translateY(30%) scale(.55) rotateY(-35deg)}58%{opacity:1;transform:translateY(-8%) scale(1.07) rotateY(6deg)}100%{transform:translateY(0) scale(1) rotateY(0)}}
@keyframes selectedTotem{50%{transform:translateY(-5%) scale(1.035)}}

/* O conteúdo pode rolar; as ações de saída nunca desaparecem abaixo da tela. */
.result-card{display:flex;flex-direction:column;overflow:hidden!important;padding:0!important}
.result-scroll{min-height:0;overflow-y:auto;padding:24px 30px 12px;overscroll-behavior:contain}
.result-actions{flex:0 0 auto;display:grid;grid-template-columns:1.35fr 1fr;gap:10px;padding:12px 24px calc(14px + env(safe-area-inset-bottom));background:rgba(247,252,255,.98);border-top:1px solid #d8e8f0;box-shadow:0 -9px 24px rgba(37,84,113,.1)}
.result-actions .primary,.result-actions .secondary{width:100%;min-width:0;margin:0;min-height:50px}
@media(max-height:500px) and (orientation:landscape){
  .piece .front.chess-front{inset:-16% -22% -3%!important}
  .result-card{height:calc(100dvh - 58px);max-height:calc(100dvh - 58px)}
  .result-scroll{padding:8px 20px 4px}
  .result-actions{padding:7px 18px calc(8px + env(safe-area-inset-bottom))}
  .result-actions .primary,.result-actions .secondary{min-height:43px}
}
@media(max-width:620px){.result-actions{grid-template-columns:1fr}.result-actions .primary,.result-actions .secondary{min-height:46px}}
@media(prefers-reduced-motion:reduce){.piece.reveal-now .chess-beast,.piece.active-piece .chess-beast{animation:none!important}}

/* ========================================================================
   1.9 · FIGURINAS PREMIUM + OVO DE DESCOBERTA
   Linguagem visual baseada no acabamento aprovado: mascote de corpo inteiro,
   pedestal de cristal/cerâmica e medalhão integrado. O verso é um único ovo
   neutro para não revelar equipe, espécie ou poder antes da abertura.
   ======================================================================== */
.piece .beast.chess-beast{
  background-image:url('assets/pieces/animal-chess-figurines-v2.png')!important;
  background-size:400% 200%!important;
  background-repeat:no-repeat!important;
  filter:drop-shadow(0 7px 5px rgba(25,69,104,.28))!important;
  will-change:transform,filter,opacity
}
.piece .front.chess-front{inset:-17% -25% -5%!important}
.piece .chess-front .power{
  bottom:9.5%!important;min-width:31%!important;width:31%!important;aspect-ratio:1;
  padding:0!important;display:grid;place-items:center;border-radius:50%!important;
  font-size:clamp(17px,2.25vw,31px)!important;
  background:linear-gradient(160deg,color-mix(in srgb,var(--owner),white 25%),var(--owner) 68%,color-mix(in srgb,var(--owner),#173b67 35%))!important;
  box-shadow:inset 0 3px 3px rgba(255,255,255,.48),0 0 0 3px #fff,0 0 0 5px var(--owner),0 5px 9px rgba(26,58,91,.3)!important
}
.piece .chess-front .owner-tag{left:18%!important;top:14%!important}

/* Ovo completo pré-renderizado. Não varia por poder nem por dono. */
.piece .back{
  inset:-19% -28% -5%!important;border:0!important;border-radius:0!important;
  /* O arquivo-fonte e vertical; a escala anamórfica leve deixa o ovo mais
     robusto e legível nos slots horizontais sem perder o acabamento 3D. */
  background:transparent url('assets/pieces/discovery-egg-v3.png') center/contain no-repeat!important;
  box-shadow:none!important;overflow:visible!important;transform-origin:50% 84%;
  filter:drop-shadow(0 8px 6px rgba(27,70,105,.3));will-change:transform,filter
}
.piece .back:before,.piece .back:after{display:none!important}
.piece .back i{
  display:block!important;position:absolute;z-index:-1;inset:13% 7% 2%;border-radius:50%;
  background:radial-gradient(ellipse at 50% 72%,rgba(83,236,255,.55),rgba(62,188,238,.18) 43%,transparent 68%);
  filter:blur(7px);opacity:.62;animation:eggCore 2.15s ease-in-out infinite
}
.piece.hidden .back{animation:eggFloat 2.65s ease-in-out infinite}
.cell:hover .piece.hidden .back{animation:eggReady .58s ease-in-out infinite alternate;filter:drop-shadow(0 0 9px rgba(77,229,255,.62)) drop-shadow(0 9px 7px rgba(27,70,105,.3))}

/* Durante a revelação, o próprio ovo reaparece em duas metades sobre a frente.
   Assim a troca de DOM nunca mostra por um quadro o mascote sem abertura. */
.piece.reveal-now{animation:none!important;filter:none!important}
.piece.reveal-now .front.chess-front:before,.piece.reveal-now .front.chess-front:after{
  content:""!important;display:block!important;position:absolute!important;z-index:12!important;
  top:-1%!important;bottom:0!important;width:50%!important;height:auto!important;border:0!important;border-radius:0!important;
  background-color:transparent!important;background-image:url('assets/pieces/discovery-egg-v3.png')!important;
  background-repeat:no-repeat!important;background-size:200% 100%!important;filter:drop-shadow(0 8px 6px rgba(24,69,104,.28));
  box-shadow:none!important;transform-origin:50% 72%;pointer-events:none
}
.piece.reveal-now .front.chess-front:before{left:0!important;right:auto!important;background-position:left center!important;animation:eggHalfLeft .78s cubic-bezier(.2,.78,.2,1) forwards}
.piece.reveal-now .front.chess-front:after{right:0!important;left:auto!important;background-position:right center!important;animation:eggHalfRight .78s cubic-bezier(.2,.78,.2,1) forwards}
.piece.reveal-now .chess-beast{animation:figurineHatch .78s cubic-bezier(.18,.88,.2,1.15) forwards!important}
.piece.reveal-now .chess-front .power{animation:medalPop .78s cubic-bezier(.2,.9,.2,1.15) forwards}
.piece.reveal-now .piece-shine{
  display:block!important;position:absolute;z-index:11;inset:-8%;border-radius:50%;pointer-events:none;
  background:conic-gradient(from 0deg,transparent 0 7%,#fff3a5 8% 9%,transparent 10% 23%,#7ff5ff 24% 25%,transparent 26% 42%,#fff 43% 44%,transparent 45% 70%,#ffd966 71% 72%,transparent 73%);
  animation:hatchSpark .78s ease-out forwards
}

/* Vida: movimento pequeno, apoiado na base, sem parecer que a peça flutua. */
.piece.revealed:not(.reveal-now):not(.captured) .chess-beast{animation:figurineIdle 2.9s ease-in-out infinite}
.piece.critter-rabbit .chess-beast,.piece.critter-elephant .chess-beast{animation-delay:-.65s!important}
.piece.critter-fox .chess-beast,.piece.critter-tiger .chess-beast{animation-delay:-1.3s!important}
.piece.active-piece .chess-beast{animation:selectedFigurine .9s ease-in-out infinite!important}
.piece.peck-now .chess-beast{animation:figurinePeck .54s cubic-bezier(.2,.88,.2,1)!important}
.piece.pounce-now .chess-beast{animation:figurinePounce .56s cubic-bezier(.18,.86,.2,1)!important}
.piece.captured .chess-beast{animation:figurineDefeat .62s ease-in forwards!important}
.piece.owner-a .chess-beast{filter:drop-shadow(0 0 6px rgba(40,151,255,.42)) drop-shadow(0 8px 5px rgba(22,64,99,.28))!important}
.piece.owner-b .chess-beast{filter:drop-shadow(0 0 7px rgba(255,78,120,.46)) drop-shadow(0 8px 5px rgba(84,35,59,.25))!important}

@keyframes eggCore{50%{opacity:1;transform:scale(1.08);filter:blur(9px)}}
@keyframes eggFloat{0%,100%{transform:translateY(0) rotate(-.6deg)}50%{transform:translateY(-3%) rotate(.8deg)}}
@keyframes eggReady{from{transform:translateY(-1%) scale(1)}to{transform:translateY(-4%) scale(1.035)}}
@keyframes eggHalfLeft{0%,18%{opacity:1;transform:translateX(0) rotate(0) scale(1)}42%{filter:brightness(1.45) drop-shadow(0 0 12px #7fefff)}100%{opacity:0;transform:translateX(-62%) translateY(-10%) rotate(-18deg) scale(.92)}}
@keyframes eggHalfRight{0%,18%{opacity:1;transform:translateX(0) rotate(0) scale(1)}42%{filter:brightness(1.45) drop-shadow(0 0 12px #7fefff)}100%{opacity:0;transform:translateX(62%) translateY(-10%) rotate(18deg) scale(.92)}}
@keyframes figurineHatch{0%,27%{opacity:0;transform:translateY(26%) scale(.48)}52%{opacity:1;transform:translateY(-8%) scale(1.08)}74%{transform:translateY(2%) scale(.97,1.03)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes medalPop{0%,45%{opacity:0;transform:translateX(-50%) scale(.35)}72%{opacity:1;transform:translateX(-50%) scale(1.15)}100%{transform:translateX(-50%) scale(1)}}
@keyframes hatchSpark{0%,24%{opacity:0;transform:scale(.45) rotate(-18deg)}48%{opacity:1}100%{opacity:0;transform:scale(1.25) rotate(24deg)}}
@keyframes figurineIdle{0%,100%{transform:translateY(0) rotate(0)}46%{transform:translateY(-2.5%) rotate(.7deg)}55%{transform:translateY(-2.5%) rotate(-.5deg)}}
@keyframes selectedFigurine{0%,100%{transform:translateY(-2%) scale(1)}50%{transform:translateY(-7%) scale(1.045);filter:brightness(1.08)}}
@keyframes figurinePeck{0%,100%{transform:translate(0) rotate(0)}25%{transform:translate(-5%,-4%) rotate(-5deg)}58%{transform:translate(12%,5%) rotate(7deg) scale(1.07)}78%{transform:translate(2%,-1%) rotate(-2deg)}}
@keyframes figurinePounce{0%,100%{transform:translate(0) scale(1)}24%{transform:translate(-7%,3%) scale(.96,1.04) rotate(-3deg)}58%{transform:translate(13%,-6%) scale(1.1,.94) rotate(4deg)}78%{transform:translate(2%,2%) scale(.98,1.03)}}
@keyframes figurineDefeat{0%{opacity:1;transform:translateY(0) rotate(0) scale(1)}34%{transform:translateY(-5%) rotate(-6deg) scale(1.08);filter:brightness(1.35)}65%{transform:translateY(4%) rotate(8deg) scale(.88)}100%{opacity:0;transform:translateY(-45%) rotate(12deg) scale(.32);filter:blur(3px)}}

/* O 16×16 mantém leitura e reduz o custo de animação. */
.board.strategy-board .piece.hidden .back{animation-duration:3.6s}
.board.strategy-board .piece .chess-front .power{font-size:clamp(11px,1.4vw,20px)!important;border-width:2px!important}
.board.strategy-board .piece.revealed:not(.reveal-now):not(.captured) .chess-beast{animation:none}

@media(max-height:500px) and (orientation:landscape){
  .piece .chess-front .power{bottom:9%!important;font-size:clamp(14px,3.3vh,23px)!important}
}
@media(prefers-reduced-motion:reduce){
  .piece.hidden .back,.piece .back i,.piece.revealed .chess-beast,.piece.reveal-now .front.chess-front:before,.piece.reveal-now .front.chess-front:after,.piece.reveal-now .piece-shine,.piece.reveal-now .chess-front .power{animation:none!important}
  .piece.reveal-now .front.chess-front:before,.piece.reveal-now .front.chess-front:after{display:none!important}
}

/* ==== 1.8 — O TOKEN: forma vem da arte, tamanho vem da célula ============
   O ovo aparecia esticado, e a arte não tinha culpa: a culpa era da caixa.

   Havia NOVE regras `.cell>.piece` em sequência, cada uma medindo altura em
   porcentagem e largura/altura máximas em pixels, de forma independente — a
   última a carregar vencia, e a proporção resultante era o acidente de qual
   media-query estava valendo. Duas delas ainda aplicavam ao verso
   `background-size:172% 100%` com `inset` horizontal negativo: escala
   diferente em cada eixo, que é o equivalente exato de um `fill` em cima de
   artwork.

   A regra que fica, e que vale de 4×4 a 8×4 sem exceção por arena:

     a CÉLULA decide o TAMANHO. A ARTE decide a PROPORÇÃO.

   `aspect-ratio` com o outro eixo em `auto` faz o navegador transferir o
   limite de um eixo para o outro. É `contain` de verdade: o token encolhe
   para caber e nunca deforma. Espaço negativo dentro da célula é aceitável —
   a peça é um objeto sobre o tabuleiro, não um preenchimento de botão.       */

.board{
  --token-ratio:.78;      /* largura ÷ altura da arte */
  --token-largura:78%;    /* fração da largura da célula */
  --token-altura:82%;     /* fração da altura da célula */
}
/* No 16×16 a célula é menor: o token ocupa uma fração maior dela para manter
   o número legível. A PROPORÇÃO não muda — só a fração. */
.board.strategy-board{--token-largura:84%;--token-altura:86%}

.cell>.piece{
  width:var(--token-largura);
  height:auto;
  aspect-ratio:var(--token-ratio);
  max-width:var(--token-largura);
  max-height:var(--token-altura);
}

/* Nenhuma camada do token pode escalar por eixo. Se um dia a arte virar
   imagem, `contain` continua sendo a resposta certa. */
.piece .back,.piece .front{background-size:contain,100% 100%}
.piece .back{background-repeat:no-repeat}
