:root{font-family:Inter,Noto Sans TC,system-ui,sans-serif;color-scheme:dark;--deep:#052d2b;--panel:rgba(5,48,44,.94);--mint:#79f2c1;--gold:#ffd762;--ink:#f7fff9;--line:rgba(132,247,197,.38)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#031e20;color:var(--ink);-webkit-text-size-adjust:100%;text-size-adjust:100%}button,select{font:inherit}button{cursor:pointer}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.game-page-info{width:100%}body[data-screen=stage] .main-group,body[data-screen=battle] .main-group{display:none}.block-grove-battle-canvas .battle-content{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) minmax(88px,20svh) 50px;gap:7px;min-width:0;min-height:0;overflow:hidden;padding:8px}.battle-stat{text-align:center;display:grid;min-width:0;align-content:center}.battle-stat small{color:#a4ddcd;font-size:12px}.battle-stat strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.objective-row{display:flex;gap:8px;align-items:center;justify-content:center;min-width:0;padding:6px 10px;border-radius:13px;background:#053d33f0;overflow:hidden}.objective-chip{display:flex;align-items:center;gap:4px;min-width:0;padding:3px 8px;border-radius:999px;background:#042e2c;font-weight:900;white-space:nowrap}.objective-chip img{width:23px;height:23px;object-fit:contain}.objective-chip.done{background:#175f46;color:#b9ffd4}.board-zone{position:relative;min-width:0;min-height:0;display:grid;place-items:center;overflow:hidden;border:1px solid var(--line);border-radius:22px;background:#01181ab3;container-type:size}.game-board{width:min(100cqw,100cqh,590px);height:min(100cqw,100cqh,590px);display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);gap:4px;padding:7px;border:4px solid #8ba66f;border-radius:20px;background:#344b3f;touch-action:none;user-select:none;outline:none;box-shadow:0 16px 40px #001a1699}.board-cell{position:relative;min-width:0;min-height:0;border:1px solid rgba(225,246,202,.18);border-radius:9px;background:#d5e5c124;overflow:hidden}.board-cell>img.tile-image{position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px);object-fit:contain;filter:drop-shadow(0 2px 3px #0018)}.board-cell>img.object-image{position:absolute;z-index:2;left:17%;top:17%;width:66%;height:66%;object-fit:contain;filter:drop-shadow(0 2px 2px #0008)}.board-cell.preview{background:#7af1b766;box-shadow:inset 0 0 0 2px #b8ffe0}.board-cell.preview.invalid{background:#ff696655;box-shadow:inset 0 0 0 2px #ff9b92}.board-cell.hint{animation:hintPulse .8s ease-in-out infinite alternate}.board-cell.clearing{z-index:3;animation:wpClearPop .42s cubic-bezier(.2,.8,.2,1) both}.board-cell.clearing:after{content:"";position:absolute;inset:7%;z-index:4;border:3px solid #fff6a7;border-radius:50%;box-shadow:0 0 14px #fff6a7,0 0 26px #6fffd5;animation:wpClearRing .42s ease-out both;pointer-events:none}.combo-toast{position:absolute;z-index:5;top:8px;left:50%;transform:translate(-50%);padding:6px 14px;border-radius:999px;background:#042d2be8;color:#fff18a;font-weight:1000;pointer-events:none}.combo-toast:empty{display:none}@keyframes hintPulse{to{filter:brightness(1.6);box-shadow:inset 0 0 0 3px #fff278,0 0 13px #fff278aa}}@keyframes wpClearPop{0%{transform:scale(1);opacity:1}38%{transform:scale(1.16) rotate(2deg);filter:brightness(1.9) saturate(1.35)}to{transform:scale(.15) rotate(-8deg);filter:brightness(2);opacity:0}}@keyframes wpClearRing{0%{transform:scale(.25);opacity:0}35%{opacity:1}to{transform:scale(1.65);opacity:0}}.piece-tray{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;min-width:0;min-height:0}.piece-card{position:relative;min-width:0;min-height:0;border:2px solid rgba(122,237,192,.36);border-radius:16px;background:#032c28f0;color:#fff;display:grid;place-items:center;padding:7px;touch-action:none}.piece-card.selected{border-color:#fff079;box-shadow:0 0 0 3px #fff07944,0 0 18px #fff07966}.piece-card.used{opacity:.2;pointer-events:none}.piece-grid{display:grid;gap:3px;width:min(104px,90%);height:min(104px,90%);place-content:center}.piece-bit{width:20px;height:20px;border-radius:5px;background:url(../../assets/animal-block-grove-tile-leaf.webp) center/contain no-repeat;filter:drop-shadow(0 2px 2px #0007)}.battle-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-height:0}.battle-actions button{min-width:0;border:1px solid #66e5ba;border-radius:14px;background:#10534b;color:#fff;font-weight:1000;display:flex;align-items:center;justify-content:center;gap:8px}.battle-actions button:disabled{opacity:.42}.battle-actions img{width:32px;height:32px;object-fit:contain}.drag-ghost{position:fixed;z-index:80;pointer-events:none;display:grid;gap:3px;opacity:.86;filter:drop-shadow(0 6px 9px #0009);transform:translate(-50%,-115%)}.drag-ghost .piece-bit{width:34px;height:34px}.result-overlay,.leave-overlay{position:absolute;inset:0;z-index:20;display:grid;place-items:center;padding:18px;background:#001417d6}.result-card,.leave-card{width:min(560px,100%);max-height:100%;overflow:auto;padding:20px;border-radius:26px;background:linear-gradient(145deg,#0a5b4b,#052f34);border:2px solid #6ff4c5;text-align:center;display:grid;gap:12px}.result-card>img{width:106px;height:106px;object-fit:contain;margin:-10px auto -18px}.result-card h2,.result-card p,.leave-card h2,.leave-card p{margin:0}.result-stars{font-size:38px;color:#ffd95e;letter-spacing:8px}.result-actions,.leave-card>div{display:grid;gap:9px;min-height:52px}.result-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.leave-card>div{grid-template-columns:repeat(2,minmax(0,1fr))}.result-actions button:disabled{opacity:.48;box-shadow:none;cursor:not-allowed}.leave-card{width:min(460px,100%)}.tutorial-overlay{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:18px;background:#001417d6}.tutorial-card{position:relative;width:min(510px,100%);max-height:100%;overflow:auto;padding:20px;border-radius:26px;background:linear-gradient(145deg,#0a5b4b,#052f34);border:2px solid #6ff4c5;text-align:left;display:grid;gap:12px}.tutorial-card>img{width:106px;height:106px;object-fit:contain;margin:-10px auto -18px}.tutorial-card h2{text-align:center;margin:0}.tutorial-card li{margin:8px 0}.tutorial-card>button:first-child{position:absolute;right:12px;top:12px;width:42px;height:42px;border-radius:50%;border:0;background:#fff;color:#12616a;font-size:25px}.tutorial-card .primary-action{width:100%}.battle-screen[data-animating=true] .game-board,.battle-screen[data-animating=true] .piece-tray,.battle-screen[data-animating=true] .battle-actions{pointer-events:none}:is(button,select,a,.game-board):focus-visible{outline:3px solid #fff27a;outline-offset:3px}@media(max-width:700px){.block-grove-battle-canvas .battle-content{grid-template-rows:auto minmax(0,1fr) minmax(80px,18svh) 48px;gap:5px;padding:5px}.objective-row{gap:4px;padding:4px}.objective-chip{gap:3px;padding:3px 5px;font-size:12px}.objective-chip img{width:20px;height:20px}.board-zone{border-radius:16px}.game-board{gap:2px;padding:4px;border-width:3px;border-radius:14px}.board-cell{border-radius:5px}.battle-actions img{width:26px;height:26px}.result-actions,.leave-card>div{gap:5px}}@media(max-height:520px)and (orientation:landscape){.block-grove-battle-canvas .battle-content{grid-template-columns:minmax(0,1fr) 188px;grid-template-rows:58px minmax(0,1fr) 96px;gap:4px;padding:4px}.objective-row{grid-column:1;grid-row:1;justify-content:flex-start}.board-zone{grid-column:1;grid-row:2/4}.piece-tray{grid-column:2;grid-row:1/3;grid-template-columns:1fr;grid-template-rows:repeat(3,minmax(0,1fr))}.battle-actions{grid-column:2;grid-row:3}.battle-actions button{min-height:96px}.piece-grid{width:min(70px,80%);height:min(70px,80%)}.piece-bit{width:15px;height:15px}.result-card,.leave-card{padding:10px;gap:6px}.result-card h2,.leave-card h2{font-size:28px}.result-card p,.leave-card p{font-size:22px;line-height:1.25}.leave-card>div{gap:8px}.result-card>img{width:56px;height:56px}.tutorial-card{padding:10px;gap:6px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
