#ticTacToeModal{width:min(690px,calc(100% - 18px));max-height:min(94vh,820px);overflow:hidden}
#ticTacToeModal .modal-content{max-height:calc(min(94vh,820px) - 67px);overflow:auto;padding:18px}
.ttt-hero{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.ttt-hero>div:first-child b,.ttt-hero>div:first-child span{display:block}.ttt-hero>div:first-child b{color:var(--ink);font-size:14px}.ttt-hero>div:first-child span{margin-top:2px;color:var(--muted);font-size:11px}
.ttt-points{display:flex;align-items:center;gap:8px;flex:0 0 auto;padding:8px 10px;border:1px solid #d7eadf;border-radius:8px;background:#f2faf5;color:#24744c}.ttt-points span{font-size:10px;font-weight:800;text-transform:uppercase}.ttt-points b{font-size:19px;font-variant-numeric:tabular-nums}html.dark .ttt-points{border-color:#345745;background:#20372b;color:#7fe0a8}
.ttt-tabs{display:flex;gap:4px;margin:13px 0}.ttt-tab{flex:1;min-height:38px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted);font-size:12px;font-weight:800}.ttt-tab.active{border-color:var(--purple);background:#f1e8f7;color:var(--purple)}html.dark .ttt-tab.active{background:#30243c}
.ttt-lobby-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.ttt-lobby-top h3{margin:0 0 4px;color:var(--ink);font-size:16px}.ttt-lobby-top p{margin:0 0 14px!important;color:var(--muted);font-size:12px;line-height:1.5}.ttt-new-button{width:auto;min-height:38px;padding:8px 13px;border:0;border-radius:8px;background:linear-gradient(135deg,var(--purple),var(--pink));color:#fff;font-size:12px;font-weight:850}
.ttt-search{display:block;margin-bottom:10px}.ttt-search input{width:100%;height:42px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);outline:none}.ttt-search input:focus{border-color:var(--purple);box-shadow:0 0 0 3px #7048a615}
.ttt-user-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:250px;overflow:auto;padding-right:2px}.ttt-user{min-width:0;min-height:48px;display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);text-align:left}.ttt-user:hover{border-color:#bd9bd3;background:#faf7fc}.ttt-user-dot{width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:#27bd70}.ttt-user b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.ttt-user small{display:block;color:var(--muted);font-size:9px;font-weight:600}.ttt-empty{grid-column:1/-1;padding:32px 12px;color:var(--muted);font-size:12px;text-align:center}
.ttt-wait,.ttt-invite,.ttt-result{display:flex;flex-direction:column;align-items:center;padding:28px 14px;text-align:center}.ttt-wait h3,.ttt-invite h3,.ttt-result h3{margin:0 0 5px;color:var(--ink);font-size:20px}.ttt-wait p,.ttt-invite p,.ttt-result p{margin:0 0 17px;color:var(--muted);font-size:13px}.ttt-result strong{display:block;margin:-8px 0 17px;color:#239b62;font-size:18px}.ttt-result.loss strong,.ttt-result.draw strong{color:var(--muted);font-size:12px}
.ttt-actions{width:100%;display:flex;justify-content:center;gap:8px}.ttt-actions button,.ttt-wait>button{width:auto;min-width:140px;min-height:42px;padding:9px 15px;border-radius:8px;font-weight:850}.ttt-primary{border:0;background:linear-gradient(135deg,var(--purple),var(--pink));color:#fff}.ttt-danger{border:1px solid #efc9cf;background:#fff4f5;color:#be3b4d}.ttt-spinner{width:30px;height:30px;margin:0 0 16px;border:3px solid #e9e0ee;border-top-color:var(--purple);border-radius:50%;animation:ttt-spin .8s linear infinite}@keyframes ttt-spin{to{transform:rotate(360deg)}}
.ttt-piece{display:grid;place-items:center;overflow:hidden}.ttt-piece img{display:block;width:88%;height:88%;object-fit:contain;pointer-events:none}.ttt-game-head{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;margin-bottom:10px}.ttt-player{min-width:0;display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.ttt-player:last-child{flex-direction:row-reverse;text-align:right}.ttt-player.active{border-color:#9bd9b7;background:#eefaf3}.ttt-piece-player{width:34px;height:34px;flex:0 0 auto;border:1px solid #ded4e5;border-radius:7px;background:#fff}.ttt-player b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:11px}.ttt-vs{color:var(--purple);font-size:10px;font-weight:950}html.dark .ttt-player.active{border-color:#315f46;background:#20392b}
.ttt-turn{margin-bottom:9px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;text-align:center;font-size:11px;font-weight:900}.ttt-turn.mine{border-color:#9bd9b7;background:#eefaf3;color:#21794b}.ttt-turn.theirs{background:#f6f3f8;color:var(--muted)}html.dark .ttt-turn.mine{border-color:#315f46;background:#20392b;color:#7fe0a8}html.dark .ttt-turn.theirs{background:#292331}
.ttt-hud{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;max-width:360px;margin:0 auto 10px}.ttt-hud div{display:flex;flex-direction:column;align-items:center;padding:7px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.ttt-hud span{color:var(--muted);font-size:9px;font-weight:800;text-transform:uppercase}.ttt-hud b{color:var(--ink);font-size:15px;font-variant-numeric:tabular-nums}
.ttt-board{display:grid;grid-template-columns:repeat(3,112px);grid-auto-rows:112px;gap:7px;justify-content:center;width:max-content;margin:10px auto}.ttt-cell{width:112px;height:112px;display:grid;place-items:center;padding:0;border:1px solid #cfc5d5;border-radius:8px;background:linear-gradient(180deg,#fbfafc,#e6e0e9);box-shadow:inset 0 -4px rgba(57,38,68,.10);touch-action:manipulation;-webkit-tap-highlight-color:transparent}.ttt-cell:hover:not(:disabled){border-color:var(--purple);background:#f3eaf8}.ttt-cell:disabled{cursor:default}.ttt-cell.played{border-color:#ddd4e2;background:var(--surface);box-shadow:none}.ttt-cell.winner{border-color:#28a768;background:#eaf9f0;box-shadow:inset 0 0 0 3px #8bd5ac}.ttt-piece-board{width:100%;height:100%;pointer-events:none}.ttt-piece-board img{width:78%;height:78%}html.dark .ttt-cell{background:#332d38;border-color:#514859}html.dark .ttt-cell.played{background:#211d25}html.dark .ttt-cell.winner{border-color:#54c889;background:#1e3b2b}
.ttt-game-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;max-width:500px;margin:10px auto 0}.ttt-game-foot span{color:var(--muted);font-size:10px}.ttt-abandon{border:0;background:transparent;color:var(--danger);font-size:10px;font-weight:800;text-decoration:underline;text-underline-offset:2px}
.ttt-result-piece{width:90px;height:90px;display:grid;place-items:center;margin-bottom:12px;border:2px solid #9b78b5;border-radius:18px;background:#fff}.ttt-piece-result{width:76px;height:76px}.ttt-result-duel{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:12px}.ttt-result-duel b{color:var(--purple);font-size:12px}
.ttt-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-top:14px}.ttt-stats div{display:flex;flex-direction:column;align-items:center;padding:9px 5px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.ttt-stats b{color:var(--ink);font-size:17px}.ttt-stats span{color:var(--muted);font-size:8px;font-weight:800;text-align:center;text-transform:uppercase}
.ttt-ranking{display:flex;flex-direction:column;gap:5px;max-height:390px;overflow:auto}.ttt-rank-head,.ttt-rank-row{display:grid;grid-template-columns:34px minmax(0,1fr) 70px 80px;gap:8px;align-items:center}.ttt-rank-head{padding:3px 9px;color:var(--muted);font-size:9px;font-weight:850;text-transform:uppercase}.ttt-rank-head span:nth-child(n+3),.ttt-rank-row span:nth-child(n+3){text-align:right}.ttt-rank-row{padding:9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:11px}.ttt-rank-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.ttt-rank-row span:nth-child(n+3){color:var(--purple);font-weight:850;font-variant-numeric:tabular-nums}
.ttt-profile-stats{width:100%;margin-top:12px;padding-top:15px;border-top:1px solid var(--line)}.ttt-profile-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ttt-profile-title b{color:var(--ink);font-size:12px}.ttt-profile-title span{color:var(--purple);font-size:11px;font-weight:850}.ttt-profile-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.ttt-profile-grid div{display:flex;flex-direction:column;align-items:center;padding:7px 3px;border-radius:8px;background:#f7f3f9}.ttt-profile-grid b{color:var(--ink);font-size:14px}.ttt-profile-grid span{color:var(--muted);font-size:7px;font-weight:800;text-align:center;text-transform:uppercase}html.dark .ttt-profile-grid div{background:#292231}
.ttt-hub-art{width:100%;height:92px;display:grid;place-items:center;border-radius:8px;background:#fff}.ttt-hub-board{display:grid;grid-template-columns:repeat(3,24px);grid-auto-rows:24px;gap:2px;padding:4px;border-radius:7px;background:#d8cce1}.ttt-hub-board>i{display:grid;place-items:center;background:#fff;font-style:normal;overflow:hidden}.ttt-piece-hub{width:100%;height:100%}.ttt-piece-hub img{width:92%;height:92%}html.dark .ttt-hub-art,html.dark .ttt-hub-board>i{background:#fff}
@media(max-width:620px){#ticTacToeModal .modal-content{padding:14px}.ttt-user-list{grid-template-columns:1fr}.ttt-board{grid-template-columns:repeat(3,min(27vw,92px));grid-auto-rows:min(27vw,92px);gap:5px}.ttt-cell{width:min(27vw,92px);height:min(27vw,92px)}.ttt-actions{flex-direction:column}.ttt-actions button{width:100%}.ttt-stats{grid-template-columns:repeat(2,1fr)}.ttt-rank-head,.ttt-rank-row{grid-template-columns:28px minmax(0,1fr) 56px 62px;gap:5px}.ttt-hero{align-items:flex-start}.ttt-points{padding:7px 8px}.ttt-points span{display:none}.ttt-player{padding:6px}.ttt-piece-player{width:28px;height:28px}.ttt-game-foot{align-items:flex-start;flex-direction:column}.ttt-abandon{align-self:flex-end}.ttt-profile-grid{grid-template-columns:repeat(2,1fr)}}
.ttt-profile-stats{display:none!important}
