*{box-sizing:border-box}html,body{height:100%}:root{--card-bg: rgba(255, 255, 255, .97);--text-main: #1e293b;--text-sub: #666;--board-bg: #eef1f6;--cell-bg: #ffffff;--cell-shadow: rgba(15, 23, 42, .08);--input-border: #e2e8f0;--chip-bg: #f1f5f9;--chip-border: #e2e8f0;--chip-text: #334155;--modal-bg: #ffffff}html.dark{--card-bg: rgba(10, 14, 33, .82);--text-main: #e7ecff;--text-sub: #9aa3c7;--board-bg: rgba(15, 20, 45, .65);--cell-bg: rgba(20, 26, 58, .75);--cell-shadow: rgba(0, 0, 0, .5);--input-border: rgba(99, 102, 241, .35);--chip-bg: rgba(24, 30, 63, .7);--chip-border: rgba(99, 102, 241, .35);--chip-text: #cdd3f7;--modal-bg: #0d1230}body{margin:0;font-family:system-ui,sans-serif;min-height:100vh;background-color:#060a1a;background-image:url("/bg-neon.jpg");background-size:cover;background-position:center;background-repeat:no-repeat;background-attachment:fixed;display:flex;align-items:center;justify-content:center;padding:24px 0}#root{width:100%}.wrap{position:relative;max-width:380px;margin:0 auto;padding:44px 22px 28px;background:var(--card-bg);border-radius:20px;box-shadow:0 20px 60px #00000073,0 0 0 1px #ffffff0f;color:var(--text-main)}.mini-topbar{position:absolute;top:12px;right:14px;display:flex;gap:6px}.icon-btn{background:var(--chip-bg);border:1px solid var(--chip-border);border-radius:8px;width:30px;height:30px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center}.icon-btn:active{transform:scale(.94)}.title{text-align:center;margin-bottom:4px;font-size:26px;font-weight:800;letter-spacing:-.5px;background:linear-gradient(135deg,#6366f1,#ec4899);-webkit-background-clip:text;background-clip:text;color:transparent}.title.small{font-size:20px;margin-top:6px}.subtitle{text-align:center;color:var(--text-sub);margin-top:0;margin-bottom:22px;font-size:14px}.btn{width:100%;padding:13px;border:none;border-radius:10px;font-size:16px;font-weight:600;cursor:pointer;margin-bottom:8px;transition:transform .1s ease,box-shadow .15s ease}.btn:active{transform:scale(.98)}.btn.primary{background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;box-shadow:0 6px 16px #4f46e559}.btn.dark{background:linear-gradient(135deg,#1e293b,#0f172a);color:#fff;box-shadow:0 6px 16px #0f172a4d}.btn.accent{background:linear-gradient(135deg,#f59e0b,#ea580c);color:#fff;box-shadow:0 6px 16px #ea580c4d}.btn.ghost{background:transparent;color:var(--text-main);border:1.5px solid var(--input-border);box-shadow:none}.btn.chat-mode-btn{background:linear-gradient(135deg,#10b981,#059669);color:#fff;box-shadow:0 6px 16px #0596694d}.or{text-align:center;color:var(--text-sub);font-size:13px;margin:8px 0}.input{width:100%;padding:11px 12px;border-radius:10px;border:1.5px solid var(--input-border);font-size:16px;margin-bottom:8px;transition:border-color .15s ease;background:var(--cell-bg);color:var(--text-main)}.input:focus{outline:none;border-color:#6366f1}.error{color:#dc2626;font-size:14px;margin-top:12px;text-align:center}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.link{background:none;border:none;color:var(--text-sub);cursor:pointer;font-size:14px}.back-link{margin-bottom:6px}.howto-link{display:block;margin:6px auto 0;text-align:center;width:100%}.chip{background:var(--chip-bg);border:1px solid var(--chip-border);border-radius:8px;padding:5px 12px;font-size:13px;font-weight:600;letter-spacing:.5px;cursor:pointer;color:var(--chip-text)}.chip.static{cursor:default}.difficulty-row{display:flex;gap:6px;margin-bottom:10px}.chip.diff{flex:1;text-align:center;padding:8px 0}.chip.diff.active{background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;border-color:transparent}.you{text-align:center;font-size:14px;color:var(--text-sub);margin-bottom:4px}.waiting{text-align:center;color:#d97706;font-size:14px;margin-bottom:12px}.scoreboard{display:flex;align-items:stretch;gap:6px;margin-bottom:12px}.score-box{flex:1;text-align:center;padding:8px 4px;border-radius:12px;background:var(--chip-bg);border:1.5px solid var(--chip-border);transition:box-shadow .2s ease,transform .2s ease}.score-box.x{border-color:rgba(99,102,241,.55)}.score-box.o{border-color:rgba(236,72,153,.55)}.score-box.active{box-shadow:0 0 0 2px #6366f1,0 4px 14px #6366f159;transform:translateY(-2px)}.score-box.o.active{box-shadow:0 0 0 2px #ec4899,0 4px 14px #ec489959}.score-box.draw-box{flex:.7;display:flex;flex-direction:column;align-items:center;justify-content:center}.score-label{font-size:11px;color:var(--text-sub);font-weight:700;text-transform:uppercase}.avatar{width:26px;height:26px;border-radius:50%;margin:0 auto 3px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:#fff}.avatar.x{background:linear-gradient(135deg,#6366f1,#4f46e5)}.avatar.o{background:linear-gradient(135deg,#ec4899,#db2777)}.score-name{font-size:11px;color:var(--text-sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90px;margin:0 auto}.score-num{font-size:17px;font-weight:800;color:var(--text-main)}.turn-row{margin-bottom:10px}.turn{text-align:center;font-weight:700;margin:0 0 6px;color:var(--text-main)}.timer{position:relative;height:8px;background:var(--board-bg);border-radius:6px;overflow:hidden}.timer-bar{height:100%;background:linear-gradient(90deg,#6366f1,#22c55e);border-radius:6px;transition:width .28s linear}.timer-bar.danger{background:linear-gradient(90deg,#ef4444,#f97316)}.timer-num{position:absolute;right:4px;top:-1px;font-size:9px;font-weight:700;color:var(--text-sub)}.result{text-align:center;font-weight:700;margin-bottom:12px;font-size:17px}.result.win{color:#16a34a}.result.win.you-win{color:#fbbf24;font-size:20px;text-shadow:0 0 14px rgba(251,191,36,.6);animation:resultPop .4s ease-out}.result.win.you-lose{color:#f87171;font-size:17px}.result.lose-sub{color:var(--text-sub);font-size:13px;margin-top:-8px}.result.draw{color:var(--text-sub)}@keyframes resultPop{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.board-outer{position:relative}.board{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px;background:var(--board-bg);padding:8px;border-radius:14px;overflow:visible}.cell{position:relative;aspect-ratio:1;font-size:34px;font-weight:800;background:var(--cell-bg);border:none;border-radius:10px;cursor:default;box-shadow:0 2px 6px var(--cell-shadow);transition:transform .1s ease,background .15s ease;color:var(--text-main)}.cell.win{background:#dcfce7;box-shadow:0 2px 10px #16a34a4d;animation:winPulse .9s ease-in-out infinite}.cell.x{color:#4f46e5}.cell.o{color:#e11d48}.cell.blocked{color:#ef4444;background:repeating-linear-gradient(45deg,var(--board-bg),var(--board-bg) 6px,rgba(239,68,68,.15) 6px,rgba(239,68,68,.15) 12px);font-size:22px}.cell.filled{animation:popIn .18s ease-out}.cell:not(:disabled):hover{background:#f8fafc}.cell:not(:disabled):active{transform:scale(.95)}.board-outer.block-select .board{box-shadow:0 0 0 3px #a855f7,0 4px 18px #a855f766;border-radius:16px}.powerup-row{display:flex;gap:6px;margin-bottom:14px}.powerup-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border-radius:12px;border:1.5px solid var(--chip-border);background:var(--chip-bg);color:var(--chip-text);cursor:pointer;font-size:11px;font-weight:700}.powerup-btn .powerup-icon{font-size:16px}.powerup-btn .powerup-count{font-size:10px;font-weight:500;color:var(--text-sub)}.powerup-btn:active:not(:disabled){transform:scale(.96)}.powerup-btn:disabled{opacity:.4;cursor:default}.powerup-btn.active{border-color:#a855f7;box-shadow:0 0 0 2px #a855f74d;background:#a855f71f}@keyframes popIn{0%{transform:scale(.4);opacity:.3}to{transform:scale(1);opacity:1}}@keyframes winPulse{0%,to{box-shadow:0 2px 10px #16a34a4d}50%{box-shadow:0 2px 20px #16a34aa6}}.win-line{position:absolute;background:linear-gradient(90deg,#16a34a,#22c55e);border-radius:4px;transform-origin:center;animation:drawLine .35s ease-out;box-shadow:0 0 10px #22c55e99;pointer-events:none}@keyframes drawLine{0%{opacity:0}to{opacity:1}}.post-game-row{display:flex;gap:8px}.post-game-row .btn{margin-bottom:12px}.history{margin-bottom:14px}.history-title{font-size:12px;font-weight:700;color:var(--text-sub);text-transform:uppercase;margin-bottom:6px}.history-list{display:flex;flex-wrap:wrap;gap:6px}.history-chip{font-size:11px;padding:4px 8px;border-radius:8px;background:var(--chip-bg);border:1px solid var(--chip-border);color:var(--chip-text)}.history-chip.X{border-color:#6366f1;color:#6366f1}.history-chip.O{border-color:#ec4899;color:#ec4899}.chatbox{margin-top:6px;border:1px solid var(--input-border);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #0f172a0d;position:relative}.chat-header{background:var(--chip-bg);padding:8px 12px;font-size:13px;font-weight:700;color:var(--chip-text);display:flex;align-items:center;justify-content:space-between}.call-btn{border:none;background:#16a34a;color:#fff;border-radius:14px;padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer}.call-btn:disabled{opacity:.5;cursor:default}.chat-quick{display:flex;gap:6px;flex-wrap:wrap;padding:8px 10px 0}.quick-btn{background:var(--chip-bg);border:1px solid var(--chip-border);color:var(--chip-text);border-radius:14px;padding:5px 10px;font-size:12px;cursor:pointer}.quick-btn:active{transform:scale(.96)}.chat-messages{height:190px;overflow-y:auto;padding:8px 12px;display:flex;flex-direction:column;gap:6px}.chat-empty{color:#999;font-size:13px;text-align:center;margin-top:40px}.bubble-row{display:flex;flex-direction:column;max-width:80%}.bubble-row.me{align-self:flex-end;align-items:flex-end}.bubble-row.them{align-self:flex-start;align-items:flex-start}.bubble{padding:6px 10px;border-radius:10px;max-width:100%;font-size:14px;word-break:break-word}.bubble.me{background:#2563eb;color:#fff}.bubble.them{background:var(--chip-bg);color:var(--text-main)}.bubble.media{padding:4px;background:transparent}.chat-media-img{max-width:160px;max-height:160px;border-radius:8px;display:block;cursor:pointer}.chat-media-vid{max-width:180px;max-height:160px;border-radius:8px;display:block}.bubble-time{font-size:10px;color:var(--text-sub);margin-top:2px;padding:0 2px;display:flex;align-items:center;gap:3px}.ticks{font-size:11px;color:#94a3b8;letter-spacing:-1px}.ticks.seen{color:#22c55e}.typing-bubble{display:flex;gap:3px;padding:9px 12px}.typing-dot{width:6px;height:6px;border-radius:50%;background:var(--text-sub);opacity:.6;animation:typingBounce 1s infinite ease-in-out}.typing-dot:nth-child(2){animation-delay:.15s}.typing-dot:nth-child(3){animation-delay:.3s}@keyframes typingBounce{0%,60%,to{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}.chat-input-row{display:flex;align-items:center;border-top:1px solid var(--input-border)}.attach-btn{border:none;background:transparent;font-size:18px;padding:0 8px;cursor:pointer}.chat-input{flex:1;border:none;padding:10px 12px;font-size:14px;outline:none;background:var(--cell-bg);color:var(--text-main)}.chat-send{border:none;background:#2563eb;color:#fff;padding:0 16px;cursor:pointer;font-size:14px;align-self:stretch}.error.small{font-size:12px;margin:2px 10px}.lightbox{background:var(--modal-bg);border-radius:16px;padding:14px;max-width:92vw;max-height:85vh;display:flex;flex-direction:column;gap:10px;align-items:center}.lightbox img,.lightbox video{max-width:100%;max-height:65vh;border-radius:10px}.spinner-row{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 0}.spinner-label{font-size:12px;color:var(--text-sub)}.spinner{width:16px;height:16px;border-radius:50%;border:2.5px solid var(--chip-border);border-top-color:#6366f1;display:inline-block;animation:spin .8s linear infinite}.spinner.big{width:34px;height:34px;border-width:4px}@keyframes spin{to{transform:rotate(360deg)}}.wait-plate{display:flex;flex-direction:column;align-items:center;gap:6px;padding:22px 10px;background:var(--chip-bg);border:1px dashed var(--chip-border);border-radius:14px;margin-bottom:12px}.waiting{text-align:center;color:#d97706;font-size:14px;margin:0}.waiting-sub{text-align:center;color:var(--text-sub);font-size:12px;margin:0}.call-modal{text-align:center}.call-modal-actions{display:flex;gap:10px;margin-top:14px}.call-modal-actions .btn{margin-bottom:0}.call-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;z-index:60;display:flex;align-items:center;justify-content:center;padding:16px}.call-overlay-inner{width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center;gap:14px}.call-overlay-inner .spinner-row{color:#fff}.call-overlay-inner .spinner-label{color:#e5e7eb}.video-stage{position:relative;width:100%;aspect-ratio:3 / 4;background:#111827;border-radius:16px;overflow:hidden}.remote-video{width:100%;height:100%;object-fit:cover;background:#0f172a}.local-video{position:absolute;bottom:10px;right:10px;width:96px;height:128px;object-fit:cover;border-radius:10px;border:2px solid rgba(255,255,255,.7);background:#1e293b}.call-controls{display:flex;gap:14px}.call-controls .icon-btn{width:46px;height:46px;border-radius:50%;background:#1f2937;color:#fff;border:none;font-size:18px}.call-controls .icon-btn.off{background:#ef4444}.call-controls .icon-btn.end-call{background:#dc2626;transform:rotate(135deg)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal{background:var(--modal-bg);color:var(--text-main);border-radius:16px;padding:22px;max-width:340px;width:100%;box-shadow:0 20px 60px #0006}.modal h3{margin-top:0}.howto-list{padding-left:18px;font-size:14px;line-height:1.6;color:var(--text-main)}.howto-list li{margin-bottom:6px}.confetti-wrap{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.confetti-piece{position:absolute;top:-10%;width:8px;height:14px;border-radius:2px;animation-name:fall;animation-timing-function:ease-in;animation-fill-mode:forwards}@keyframes fall{to{top:105%;opacity:.3}}
