*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;background:#eae4d7;width:100%;height:100dvh;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow:hidden}#game-canvas{touch-action:none;width:100vw;height:100dvh;display:block;position:fixed;inset:0}[hidden]{display:none!important}:root{--caro-purple:#6440d3;--caro-orange:#f56c22;--caro-yellow:#fdba32;--caro-paper:#fffbf6;--caro-ink:#19172d;--caro-green:#39c878;--caro-top-offset:74px;--caro-edge:24px;--caro-dj-offset:0px}.caro-overlay{z-index:1200;pointer-events:none;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;position:fixed;inset:0}.caro-modal{pointer-events:auto;color:#19172d;background:linear-gradient(#fffefa 0%,#f8f3ea 100%);border:3px solid #252333;border-radius:22px;max-height:calc(100dvh - 40px);transition:width .18s,top .18s,right .18s,left .18s;position:absolute;overflow:hidden auto;box-shadow:0 10px 24px #1a16353d,0 4px #19172d24}.caro-overlay[data-chat=minimized] .caro-modal,.caro-overlay[data-chat=mini] .caro-modal{top:50%;left:50%;right:auto;transform:translate(-50%,-50%)}.caro-overlay[data-chat=mini] .caro-modal[data-step=game_list],.caro-overlay[data-chat=minimized] .caro-modal[data-step=game_list]{width:min(520px,100vw - 32px)}.caro-overlay[data-chat=mini] .caro-modal[data-step=opponents],.caro-overlay[data-chat=minimized] .caro-modal[data-step=opponents]{width:min(610px,100vw - 32px)}.caro-overlay[data-chat=mini] .caro-modal[data-step=challenge],.caro-overlay[data-chat=minimized] .caro-modal[data-step=challenge]{width:min(590px,100vw - 32px)}.caro-overlay[data-chat=mini] .caro-modal[data-step=gameplay],.caro-overlay[data-chat=minimized] .caro-modal[data-step=gameplay]{width:min(690px,100vw - 32px)}.caro-overlay[data-chat=fullscreen] .caro-modal{right:calc(var(--caro-dj-offset,0px) + var(--caro-edge));top:var(--caro-top-offset);max-height:calc(100dvh - var(--caro-top-offset) - 72px);left:auto;transform:none}.caro-overlay[data-chat=fullscreen] .caro-modal[data-step=game_list],.caro-overlay[data-chat=fullscreen] .caro-modal[data-step=opponents],.caro-overlay[data-chat=fullscreen] .caro-modal[data-step=challenge]{width:min(460px, calc(100vw - var(--caro-dj-offset,0px) - 32px))}.caro-overlay[data-chat=fullscreen] .caro-modal[data-step=gameplay]{width:min(480px, calc(100vw - var(--caro-dj-offset,0px) - 32px))}.caro-header{background:linear-gradient(#fffefa 0%,#faf5ec 100%);border-bottom:1.8px solid #beb6b0;border-radius:19px 19px 0 0;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;display:flex}.caro-header-left{align-items:center;gap:10px;min-width:0;display:flex}.caro-header-icon{object-fit:contain;flex-shrink:0;width:34px;height:34px}.caro-header-title{color:#19172d;white-space:nowrap;text-overflow:ellipsis;font-size:20px;font-weight:800;overflow:hidden}.caro-header-badges{flex-shrink:0;align-items:center;gap:8px;display:flex}.caro-pill-round{color:#8a590b;white-space:nowrap;background:#fff1d9;border:2px solid #e1ac49;border-radius:18px;align-items:center;gap:6px;padding:5px 12px;font-size:13.5px;font-weight:800;display:inline-flex}.caro-pill-round img{object-fit:contain;width:18px;height:18px}.caro-pill-timer{color:#19172d;white-space:nowrap;background:#fff8eb;border:2px solid #d3b99b;border-radius:18px;align-items:center;gap:6px;padding:5px 12px;font-family:JetBrains Mono,monospace,sans-serif;font-size:13.5px;font-weight:800;display:inline-flex}.caro-pill-timer img{object-fit:contain;width:18px;height:18px}.caro-pill-timer.is-critical{color:#c31927;background:#fff0f0;border-color:#f16060;animation:.6s ease-in-out infinite alternate caro-pulse}@keyframes caro-pulse{0%{transform:scale(1)}to{transform:scale(1.04)}}.caro-btn-back,.caro-btn-close{appearance:none;color:#19172d;cursor:pointer;background:#faf6f0;border:2px solid #c9c1b8;border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;gap:6px;height:36px;padding:6px 13px;font-size:14px;font-weight:750;transition:background .12s,transform 80ms,border-color .12s;display:inline-flex}.caro-btn-back:hover,.caro-btn-close:hover{background:#f2eae0;border-color:#9a9086}.caro-btn-back:active,.caro-btn-close:active{transform:translateY(1px)}.caro-btn-back img{object-fit:contain;width:18px;height:18px}.caro-body{padding:16px 20px 20px}.caro-subtitle{color:#747180;margin-bottom:14px;font-size:15px;font-weight:600}.caro-game-row{appearance:none;cursor:pointer;text-align:left;background:linear-gradient(#f9f5ff 0%,#efe6ff 100%);border:2.5px solid #6440d3;border-radius:18px;justify-content:space-between;align-items:center;gap:14px;width:100%;padding:14px 18px;transition:transform .12s,box-shadow .12s,background .12s;display:flex}.caro-game-row:hover{background:linear-gradient(#f3ecff 0%,#e5d6ff 100%);transform:translateY(-1px);box-shadow:0 4px 12px #6440d32e}.caro-game-row:active{transform:translateY(1px)}.caro-game-row-left{align-items:center;gap:14px;display:flex}.caro-game-row-icon{object-fit:contain;flex-shrink:0;width:60px;height:60px}.caro-game-row-title{color:#19172d;margin-bottom:3px;font-size:19px;font-weight:800}.caro-game-row-sub{color:#747180;font-size:14px;font-weight:600}.caro-game-row-arrow{object-fit:contain;flex-shrink:0;width:26px;height:26px}.caro-opponents-list{flex-direction:column;gap:10px;max-height:360px;padding-right:2px;display:flex;overflow-y:auto}.caro-empty-opponents{text-align:center;color:#747180;background:#fff9f3;border:1.8px dashed #c8beb6;border-radius:14px;padding:28px 16px;font-size:14.5px;font-weight:600}.caro-player-row{background:#fff9f3;border:1.8px solid #c8beb6;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;transition:border-color .12s,background .12s;display:flex}.caro-player-row:hover{background:#f6f0ff;border-color:#9d82e8}.caro-player-info{align-items:center;gap:12px;min-width:0;display:flex}.caro-player-avatar{object-fit:contain;background:#fff;border:2.5px solid #19172d;border-radius:50%;flex-shrink:0;width:52px;height:52px}.caro-player-meta{min-width:0}.caro-player-name{color:#19172d;white-space:nowrap;text-overflow:ellipsis;font-size:16.5px;font-weight:800;overflow:hidden}.caro-player-role{color:#747180;margin-top:2px;font-size:13.5px;font-weight:600}.caro-player-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.caro-online-dot{background:#39c878;border-radius:50%;width:11px;height:11px;margin-right:2px;box-shadow:0 0 0 3px #39c87833}.caro-btn-challenge,.caro-btn-bet{appearance:none;color:#fff;cursor:pointer;white-space:nowrap;border:2px solid #252333;border-radius:12px;padding:8px 14px;font-size:13.5px;font-weight:750;transition:filter .12s,transform 80ms;box-shadow:0 2px #252333}.caro-btn-challenge{background:linear-gradient(#986afa 0%,#6845e5 50%,#4928aa 100%)}.caro-btn-bet{background:linear-gradient(#ffab40 0%,#f57c00 55%,#c85000 100%)}.caro-btn-challenge:hover,.caro-btn-bet:hover{filter:brightness(1.08)}.caro-btn-challenge:active,.caro-btn-bet:active{transform:translateY(1px)}.caro-challenge-subtitle{text-align:center;color:#747180;margin-bottom:14px;font-size:15.5px;font-weight:650}.caro-vs-stage{background:#fff9f4;border:1.8px solid #d0c7be;border-radius:18px;justify-content:space-around;align-items:center;gap:12px;margin-bottom:18px;padding:20px 16px 32px;display:flex;position:relative}.caro-vs-fighter{text-align:center;flex-direction:column;align-items:center;width:150px;display:flex}.caro-vs-avatar{object-fit:contain;background:#fff;border:3px solid #19172d;border-radius:50%;width:84px;height:84px;margin-bottom:8px}.caro-vs-name{color:#19172d;white-space:nowrap;text-overflow:ellipsis;max-width:145px;font-size:16.5px;font-weight:800;overflow:hidden}.caro-vs-role{color:#747180;margin-top:2px;font-size:12.5px;font-weight:600}.caro-vs-center{flex-direction:column;justify-content:center;align-items:center;display:flex}.caro-vs-burst{color:#19172d;background:radial-gradient(circle,#ffe57f 0%,#ffd33d 65%,#e89519 100%);border:3px solid #e89519;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;font-size:20px;font-weight:900;display:flex;box-shadow:0 4px 10px #e895194d}.caro-vs-game-tag{color:#19172d;white-space:nowrap;background:#f4efff;border:1.6px solid #ceb5fd;border-radius:12px;align-items:center;gap:8px;padding:5px 16px;font-size:14px;font-weight:750;display:inline-flex;position:absolute;bottom:-14px;left:50%;transform:translate(-50%)}.caro-vs-game-tag img{object-fit:contain;width:22px;height:22px}.caro-challenge-actions{justify-content:space-between;align-items:center;gap:14px;margin-top:22px;display:flex}.caro-btn-secondary{appearance:none;color:#19172d;cursor:pointer;background:linear-gradient(#fffefa 0%,#f4ece1 100%);border:2px solid #88818a;border-radius:14px;flex:1;height:48px;font-size:16px;font-weight:750;transition:background .12s,transform 80ms}.caro-btn-secondary:hover:not(:disabled){background:#efe5d8}.caro-btn-secondary:active:not(:disabled){transform:translateY(1px)}.caro-btn-primary{appearance:none;color:#fff;cursor:pointer;background:linear-gradient(#986afa 0%,#6845e5 50%,#4928aa 100%);border:2px solid #252333;border-radius:14px;flex:1.15;height:48px;font-size:16px;font-weight:750;transition:filter .12s,transform 80ms,opacity .12s;box-shadow:0 2px #252333}.caro-btn-primary:hover:not(:disabled){filter:brightness(1.08)}.caro-btn-primary:active:not(:disabled){transform:translateY(1px)}.caro-btn-primary:disabled{color:#78736d;box-shadow:none;cursor:not-allowed;background:#d5cfc7;border-color:#9e9890}.caro-gameplay-grid{grid-template-columns:140px minmax(210px,285px) 140px;justify-content:space-between;align-items:center;gap:14px;padding:6px 0 14px;display:grid}.caro-overlay[data-chat=fullscreen] .caro-gameplay-grid{grid-template-columns:104px minmax(175px,220px) 104px;gap:8px}.caro-side-card{text-align:center;background:#fffbf6;border:2px solid #0000;border-radius:18px;flex-direction:column;align-items:center;padding:12px 8px;transition:border-color .15s,background .15s,box-shadow .15s;display:flex}.caro-side-card.is-active-x{background:#f6f0ff;border-color:#6440d3;box-shadow:0 4px 12px #6440d329}.caro-side-card.is-active-o{background:#fff4eb;border-color:#f56c22;box-shadow:0 4px 12px #f56c2229}.caro-side-avatar{object-fit:contain;background:#fff;border:3px solid #19172d;border-radius:50%;width:76px;height:76px;margin-bottom:8px}.caro-overlay[data-chat=fullscreen] .caro-side-avatar{width:58px;height:58px}.caro-side-name{color:#19172d;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:15px;font-weight:800;overflow:hidden}.caro-overlay[data-chat=fullscreen] .caro-side-name{font-size:13.5px}.caro-side-score{color:#747180;margin-top:3px;margin-bottom:8px;font-size:13.5px;font-weight:650}.caro-side-mark{object-fit:contain;width:44px;height:44px}.caro-overlay[data-chat=fullscreen] .caro-side-mark{width:36px;height:36px}.caro-board-wrap{aspect-ratio:1;background:linear-gradient(#fffefa 0%,#f8f3ea 100%);border:3.5px solid #6440d3;border-radius:18px;width:100%;padding:8px;position:relative;box-shadow:inset 0 2px 6px #19172d0f}.caro-board{touch-action:manipulation;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:6px;width:100%;height:100%;display:grid}.caro-cell{appearance:none;cursor:pointer;background-color:#0000;background-image:url(/game-assets/caro/board/tile_normal.webp);background-repeat:no-repeat;background-size:100% 100%;border:0;border-radius:10px;justify-content:center;align-items:center;width:100%;min-width:0;height:100%;padding:0;transition:transform 80ms;display:flex;position:relative}.caro-cell.can-play:hover{background-image:url(/game-assets/caro/board/tile_hover.webp)}.caro-cell.can-play:active{transform:scale(.96)}.caro-cell:disabled{cursor:default}.caro-cell.has-x{background-image:url(/game-assets/caro/board/tile_x.webp)}.caro-cell.has-o{background-image:url(/game-assets/caro/board/tile_o.webp)}.caro-cell.is-winning{background-image:url(/game-assets/caro/board/tile_winning.webp)}.caro-cell-piece{object-fit:contain;pointer-events:none;width:72%;height:72%}.caro-win-overlay{object-fit:contain;pointer-events:none;z-index:3;width:100%;height:100%;position:absolute;inset:0}.caro-result-banner-wrap{pointer-events:none;z-index:4;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.caro-result-sparkles{object-fit:contain;pointer-events:none;width:calc(100% + 56px);height:calc(100% + 56px);animation:2.2s linear infinite caro-sparkles-spin,.3s ease-out caro-pop;position:absolute;inset:-28px}.caro-result-sparkles.is-lose{filter:hue-rotate(310deg)saturate(1.8)}.caro-result-banner{object-fit:contain;filter:drop-shadow(0 6px 14px #19172d5c);width:84%;max-width:245px;height:auto;animation:.32s cubic-bezier(.2,.9,.3,1.35) caro-pop;position:relative}.caro-result-banner.is-lose-shake{animation:.26s cubic-bezier(.2,.9,.3,1.2) caro-pop,.45s ease-in-out .18s caro-lose-shake}.caro-board-wrap.is-result-win{border-color:#39c878;box-shadow:0 0 28px #39c8788c,inset 0 2px 6px #19172d0f}.caro-board-wrap.is-result-lose{border-color:#e11d48;box-shadow:0 0 28px #f43f5e8c,inset 0 2px 6px #19172d0f}.caro-confetti-overlay{object-fit:contain;pointer-events:none;z-index:5;width:calc(100% + 76px);height:calc(100% + 76px);position:absolute;inset:-38px}.caro-confetti-overlay.is-lose-tint{filter:hue-rotate(320deg)saturate(1.55)}.caro-fireworks-stage{pointer-events:none;z-index:1210;position:fixed;inset:0;overflow:hidden}.caro-fw-cluster{width:0;height:0;transform:scale(var(--scale,1));position:absolute}.caro-fw-shockwave{border:4px solid var(--color,gold);width:180px;height:180px;box-shadow:0 0 26px var(--color,gold), inset 0 0 18px var(--color,gold);opacity:0;animation:1.15s cubic-bezier(.16,1,.3,1) infinite caro-fw-shock;animation-delay:var(--delay,0s);border-radius:50%;position:absolute;top:-90px;left:-90px}.caro-fw-sparkler{object-fit:contain;opacity:0;width:210px;height:210px;animation:1.15s ease-out infinite caro-fw-bloom;animation-delay:var(--delay,0s);position:absolute;top:-105px;left:-105px}.caro-fireworks-stage[data-mode=lose] .caro-fw-sparkler{filter:hue-rotate(315deg)saturate(1.9)contrast(1.1)}.caro-fw-confetti{object-fit:contain;opacity:0;width:190px;height:190px;animation:1.15s ease-out infinite caro-fw-confetti-pop;animation-delay:calc(var(--delay,0s) + 80ms);position:absolute;top:-95px;left:-95px}.caro-fireworks-stage[data-mode=lose] .caro-fw-confetti{filter:hue-rotate(325deg)saturate(1.7)}.caro-fw-spark{background:var(--color,gold);width:10px;height:22px;box-shadow:0 0 12px var(--color,gold), 0 0 22px #fff;opacity:0;transform:rotate(var(--angle,0deg)) translateY(0) scale(.4);animation:1.15s cubic-bezier(.15,.85,.25,1) infinite caro-fw-ray;animation-delay:var(--delay,0s);border-radius:999px;position:absolute;top:-5px;left:-5px}.caro-fw-popper{object-fit:contain;filter:drop-shadow(0 8px 18px #19172d59);width:128px;height:128px;animation:.7s cubic-bezier(.2,.9,.3,1.3) infinite alternate caro-fw-popper-bounce;position:absolute;bottom:24px}.caro-fw-popper.is-left{left:32px}.caro-fw-popper.is-right{right:32px;transform:scaleX(-1)}@keyframes caro-pop{0%{opacity:0;transform:scale(.55)}to{opacity:1;transform:scale(1)}}@keyframes caro-sparkles-spin{0%{transform:rotate(0)scale(.95)}50%{transform:rotate(180deg)scale(1.08)}to{transform:rotate(360deg)scale(.95)}}@keyframes caro-lose-shake{0%,to{transform:translate(0)rotate(0)}20%{transform:translate(-8px)rotate(-4deg)}40%{transform:translate(8px)rotate(4deg)}60%{transform:translate(-6px)rotate(-2deg)}80%{transform:translate(6px)rotate(2deg)}}@keyframes caro-fw-shock{0%{opacity:.95;transform:scale(.15)}70%{opacity:.45}to{opacity:0;transform:scale(1.55)}}@keyframes caro-fw-bloom{0%{opacity:0;transform:scale(.2)rotate(0)}25%{opacity:1}to{opacity:0;transform:scale(1.35)rotate(28deg)}}@keyframes caro-fw-confetti-pop{0%{opacity:0;transform:scale(.3)translateY(10px)}30%{opacity:.95}to{opacity:0;transform:scale(1.25)translateY(28px)}}@keyframes caro-fw-ray{0%{opacity:1;transform:rotate(var(--angle,0deg)) translateY(0) scaleY(.5)}75%{opacity:.9}to{opacity:0;transform:rotate(var(--angle,0deg)) translateY(calc(-1 * var(--dist,110px))) scaleY(1.25)}}@keyframes caro-fw-popper-bounce{0%{transform:translateY(8px)scale(.92)}to{transform:translateY(-8px)scale(1.06)}}.caro-footer{justify-content:space-between;align-items:center;gap:10px;padding-top:6px;display:flex}.caro-footer .caro-btn-secondary,.caro-footer .caro-btn-primary{flex:none;min-width:118px;height:44px;padding:0 16px;font-size:15px}.caro-overlay[data-chat=fullscreen] .caro-footer .caro-btn-secondary,.caro-overlay[data-chat=fullscreen] .caro-footer .caro-btn-primary{min-width:96px;height:38px;padding:0 12px;font-size:13.5px}.caro-turn-pill{text-align:center;white-space:nowrap;color:#42209b;background:#f0e9ff;border:2px solid #6440d3;border-radius:22px;flex:1;justify-content:center;align-items:center;gap:6px;max-width:230px;height:44px;padding:0 14px;font-size:15px;font-weight:800;display:flex}.caro-overlay[data-chat=fullscreen] .caro-turn-pill{height:38px;font-size:13.5px}.caro-turn-pill.is-waiting{color:#445061;background:#f4f5f6;border-color:#b2b7c2}.caro-turn-pill.is-win{color:#147c2b;background:#ddffd9;border-color:#5ebb5a}.caro-turn-pill.is-lose{color:#a82020;background:#ffe8e8;border-color:#e86b6b}.caro-turn-pill.is-draw{color:#8a590b;background:#fff4d9;border-color:#e2a93b}.caro-match-closing-pill{color:#8a590b;white-space:nowrap;background:#fff8eb;border:2px solid #d3b99b;border-radius:13px;justify-content:center;align-items:center;min-width:112px;height:44px;padding:0 14px;font-size:13px;font-weight:750;display:inline-flex}.caro-overlay[data-chat=fullscreen] .caro-match-closing-pill{min-width:98px;height:38px;padding:0 11px;font-size:12px}@media (width<=640px){.caro-overlay[data-chat=fullscreen] .caro-modal{top:8px;right:8px;width:calc(100vw - 16px)!important}.caro-overlay[data-chat=mini] .caro-modal,.caro-overlay[data-chat=minimized] .caro-modal{width:calc(100vw - 16px)!important}.caro-gameplay-grid,.caro-overlay[data-chat=fullscreen] .caro-gameplay-grid{grid-template-columns:84px 1fr 84px;gap:6px}.caro-side-avatar{width:48px;height:48px}}
