*{margin:0;padding:0;box-sizing:border-box}
:root{--bg-primary:#0a0a1a;--bg-secondary:#1a1a3e;--bg-card:rgba(255,255,255,.04);--border:rgba(255,255,255,.08);--text:#e0e0e0;--text-dim:#667;--accent:#e94560;--accent2:#f5a623;--green:#4caf50;--blue:#2196f3;--purple:#9c27b0}
body{min-height:100vh;display:flex;flex-direction:column;align-items:center;background:linear-gradient(135deg,var(--bg-primary) 0%,var(--bg-secondary) 50%,#0f2460 100%);font-family:'Segoe UI','Microsoft YaHei',sans-serif;color:var(--text);overflow-y:auto;overflow-x:hidden;padding-left:260px}
nav{width:100%;background:rgba(10,10,26,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:0 1rem}
body.hide-sidebar{padding-left:0}
.nav-inner{width:100%;max-width:1100px;display:flex;align-items:center;justify-content:space-between;height:56px}
.nav-logo{font-size:1.2rem;font-weight:800;background:linear-gradient(90deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;cursor:pointer;letter-spacing:2px}
.nav-links{display:flex;gap:.3rem}
.nav-link{padding:.5rem 1rem;border-radius:8px;font-size:.85rem;color:var(--text-dim);cursor:pointer;transition:all .2s;border:none;background:none}
.nav-link:hover{color:var(--text);background:rgba(255,255,255,.05)}
.nav-link.active{color:var(--accent);background:rgba(233,69,96,.1)}
.nav-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;cursor:pointer;transition:transform .2s}
.nav-avatar:hover{transform:scale(1.1)}
.main{width:100%;max-width:1100px;padding:1.5rem 1rem 3rem}
body.hide-sidebar .sidebar{display:none}
.screen{display:none}.screen.active{display:block}
.center-title{font-size:2.8rem;font-weight:800;margin:1rem 0 .2rem;background:linear-gradient(90deg,var(--accent),var(--accent2),var(--green),var(--accent));background-size:300% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:shimmer 4s linear infinite;letter-spacing:.5rem;text-align:center}
.center-sub{font-size:.9rem;color:var(--text-dim);margin-bottom:2rem;letter-spacing:4px;text-align:center}
@keyframes shimmer{to{background-position:300% center}}
.section-title{font-size:1.1rem;font-weight:700;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}
.section-title .icon{font-size:1.2rem}
.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem;margin-bottom:2rem}
.game-card{background:var(--bg-card);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:14px;padding:1.5rem 1rem;text-align:center;cursor:pointer;transition:all .3s;position:relative;overflow:hidden}
.game-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;opacity:0;transition:opacity .3s}
.game-card:hover{background:rgba(255,255,255,.08);transform:translateY(-3px);box-shadow:0 8px 25px rgba(0,0,0,.3)}
.game-card:hover::before{opacity:1}
.game-card:nth-child(1)::before{background:linear-gradient(90deg,#e94560,#f5a623)}
.game-card:nth-child(2)::before{background:linear-gradient(90deg,#4caf50,#8bc34a)}
.game-card:nth-child(3)::before{background:linear-gradient(90deg,#2196f3,#00bcd4)}
.game-card:nth-child(4)::before{background:linear-gradient(90deg,#9c27b0,#e91e63)}
.game-card:nth-child(5)::before{background:linear-gradient(90deg,#ff9800,#ff5722)}
.game-card:nth-child(6)::before{background:linear-gradient(90deg,#00bcd4,#2196f3)}
.game-card:nth-child(7)::before{background:linear-gradient(90deg,#8bc34a,#4caf50)}
.g-icon{font-size:2.5rem;margin-bottom:.6rem}
.g-name{font-size:1rem;font-weight:700;margin-bottom:.2rem}
.g-desc{font-size:.7rem;color:#888;margin-bottom:.6rem}
.g-tags{display:flex;gap:.3rem;justify-content:center;flex-wrap:wrap}
.g-tag{font-size:.6rem;padding:.15rem .5rem;border-radius:20px;border:1px solid rgba(255,255,255,.1);color:#999}
.g-tag.online{border-color:rgba(76,175,80,.3);color:var(--green)}
.g-tag.ai{border-color:rgba(245,166,35,.3);color:var(--accent2)}
.g-tag.sp{border-color:rgba(33,150,243,.3);color:var(--blue)}
.back-link{display:inline-flex;align-items:center;gap:.3rem;color:#888;font-size:.85rem;cursor:pointer;margin-bottom:1rem;transition:color .2s}.back-link:hover{color:var(--accent)}
.game-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;flex-wrap:wrap;gap:.5rem}
.game-header .title-sm{font-size:1.2rem;font-weight:700;background:linear-gradient(90deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.online-badge{display:inline-flex;align-items:center;gap:.4rem;font-size:.75rem;color:var(--green);background:rgba(76,175,80,.1);padding:.25rem .7rem;border-radius:20px;border:1px solid rgba(76,175,80,.2)}
.online-badge .dot{width:6px;height:6px;background:var(--green);border-radius:50%;animation:pulse 2s ease infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.game-layout{display:flex;gap:1.2rem;align-items:flex-start;flex-wrap:wrap;justify-content:center}
.board-wrap{position:relative;background:linear-gradient(145deg,#d4a56a,#c4944a);border-radius:12px;padding:16px;box-shadow:0 0 25px rgba(233,69,96,.08),0 8px 35px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.2)}
canvas{display:block;cursor:pointer;border-radius:4px}
.side{display:flex;flex-direction:column;gap:.6rem;min-width:190px;max-width:230px}
.card{background:var(--bg-card);backdrop-filter:blur(10px);border:1px solid var(--border);border-radius:12px;padding:.8rem;text-align:center}
.card h3{font-size:.7rem;color:var(--text-dim);margin-bottom:.3rem;text-transform:uppercase;letter-spacing:2px}
.cur-player{display:flex;align-items:center;justify-content:center;gap:.5rem}
.stone-ind{width:22px;height:22px;border-radius:50%;display:inline-block;box-shadow:0 2px 5px rgba(0,0,0,.3)}
.stone-ind.black{background:radial-gradient(circle at 35% 35%,#555,#111)}
.stone-ind.white{background:radial-gradient(circle at 35% 35%,#fff,#ccc)}
.p-name{font-size:1rem;font-weight:600}
.score-num{font-size:1.6rem;font-weight:700;color:var(--accent2)}
.move-hist{max-height:130px;overflow-y:auto;font-size:.75rem;color:#999;text-align:left;padding:.2rem}
.move-hist::-webkit-scrollbar{width:3px}.move-hist::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:2px}
.move-item{padding:.15rem .3rem;border-radius:3px;margin-bottom:1px}.move-item:nth-child(odd){background:rgba(255,255,255,.02)}
.move-item .mn{color:var(--accent2);font-weight:600;margin-right:.3rem}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.6rem 1.2rem;border:none;border-radius:9px;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .25s;letter-spacing:1px}
.btn:active{transform:scale(.96)}
.btn-p{background:linear-gradient(135deg,var(--accent),#c23152);color:#fff;box-shadow:0 4px 15px rgba(233,69,96,.3)}
.btn-p:hover{box-shadow:0 6px 22px rgba(233,69,96,.5);transform:translateY(-2px)}
.btn-s{background:rgba(255,255,255,.06);color:#bbb;border:1px solid rgba(255,255,255,.12)}
.btn-s:hover{background:rgba(255,255,255,.12);color:#fff}
.btn-full{width:100%}
.btn-sm{padding:.4rem .8rem;font-size:.75rem}
.mode-sel{display:flex;gap:.3rem}.mode-btn{flex:1;padding:.35rem;border:1px solid rgba(255,255,255,.1);border-radius:6px;background:transparent;color:#777;cursor:pointer;font-size:.7rem;transition:all .2s}
.mode-btn.active{background:rgba(233,69,96,.15);border-color:var(--accent);color:var(--accent)}
.mode-btn:hover{border-color:rgba(255,255,255,.25);color:#bbb}
.overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.75);backdrop-filter:blur(6px);z-index:100;align-items:center;justify-content:center}
.overlay.active{display:flex}
.dialog{background:linear-gradient(145deg,#1a1a2e,#16213e);border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:2rem;text-align:center;animation:popIn .4s cubic-bezier(.175,.885,.32,1.275);box-shadow:0 20px 50px rgba(0,0,0,.5);max-width:380px;width:90%}
@keyframes popIn{from{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}
.dialog h2{font-size:1.6rem;margin-bottom:.4rem}
.dialog p{color:#999;margin-bottom:1rem;font-size:.9rem}
.dialog .btn{margin-top:.4rem}
.toast{position:fixed;top:70px;left:50%;transform:translateX(-50%) translateY(-100px);background:rgba(30,30,50,.95);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:.7rem 1.3rem;font-size:.85rem;z-index:200;transition:transform .4s cubic-bezier(.175,.885,.32,1.275);box-shadow:0 8px 25px rgba(0,0,0,.4)}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast.error{border-color:rgba(233,69,96,.3);color:var(--accent)}
.toast.success{border-color:rgba(76,175,80,.3);color:var(--green)}
.toast.info{border-color:rgba(245,166,35,.3);color:var(--accent2)}
.room-code{font-size:2rem;font-weight:800;letter-spacing:.4rem;color:var(--accent2);background:rgba(245,166,35,.08);border:2px dashed rgba(245,166,35,.3);border-radius:10px;padding:.6rem 1.2rem;margin:.6rem 0;user-select:all}
.spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(233,69,96,.2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle;margin-right:.4rem}
@keyframes spin{to{transform:rotate(360deg)}}
.input-f{width:100%;padding:.7rem .9rem;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:9px;color:var(--text);font-size:1rem;letter-spacing:.3rem;text-align:center;outline:none;transition:border-color .3s;margin-bottom:.6rem}
.input-f:focus{border-color:var(--accent);box-shadow:0 0 12px rgba(233,69,96,.15)}
.input-f::placeholder{color:#555;letter-spacing:2px;font-size:.8rem}
.btn-group{display:flex;gap:.5rem;margin-top:.6rem}
.ttt-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;width:280px;height:280px;background:rgba(255,255,255,.08);border-radius:12px;padding:5px}
.ttt-cell{background:rgba(255,255,255,.06);border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:2.8rem;font-weight:700;cursor:pointer;transition:all .2s;user-select:none}
.ttt-cell:hover{background:rgba(255,255,255,.12)}
.ttt-cell.x{color:var(--accent)}.ttt-cell.o{color:var(--green)}
.ttt-cell.win{background:rgba(233,69,96,.2);box-shadow:0 0 12px rgba(233,69,96,.3)}
.mine-grid{display:inline-grid;gap:2px;background:rgba(255,255,255,.08);border-radius:8px;padding:3px}
.mine-cell{width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;border-radius:3px;cursor:pointer;transition:all .15s;user-select:none;background:rgba(255,255,255,.1)}
.mine-cell:hover{background:rgba(255,255,255,.18)}
.mine-cell.rev{background:rgba(255,255,255,.03);cursor:default}
.mine-cell.rev:hover{background:rgba(255,255,255,.03)}
.mine-cell.flag{background:rgba(245,166,35,.15)}
.mine-cell.boom{background:rgba(233,69,96,.3)}
.mine-cell.n1{color:#2196f3}.mine-cell.n2{color:#4caf50}.mine-cell.n3{color:#e94560}.mine-cell.n4{color:#9c27b0}.mine-cell.n5{color:#ff5722}.mine-cell.n6{color:#00bcd4}.mine-cell.n7{color:#333}.mine-cell.n8{color:#888}
.mine-cell .c1{color:#2196f3}.mine-cell .c2{color:#4caf50}.mine-cell .c3{color:#e94560}.mine-cell .c4{color:#9c27b0}.mine-cell .c5{color:#ff5722}.mine-cell .c6{color:#00bcd4}.mine-cell .c7{color:#333}.mine-cell .c8{color:#888}
.mine-stats{display:flex;justify-content:space-around;margin:.4rem 0}
.mine-stat{text-align:center}
.mine-stat .val{font-size:1.3rem;font-weight:700;color:var(--accent2)}
.mine-stat .lbl{font-size:.6rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px}
.diff-sel{display:flex;gap:.3rem}.diff-btn{flex:1;padding:.3rem;border:1px solid rgba(255,255,255,.1);border-radius:5px;background:transparent;color:#777;cursor:pointer;font-size:.65rem;transition:all .2s}
.diff-btn.active{background:rgba(33,150,243,.15);border-color:var(--blue);color:var(--blue)}
.diff-btn:hover{border-color:rgba(255,255,255,.25);color:#bbb}
.snake-wrap{background:rgba(0,0,0,.3);border-radius:12px;padding:6px;border:1px solid rgba(255,255,255,.06)}
.snake-val{font-size:1.1rem;font-weight:700;color:var(--accent2)}
.grid-2048{display:grid;grid-template-columns:repeat(4,70px);gap:8px;width:320px;background:rgba(255,255,255,.06);border-radius:12px;padding:8px}
.g2048-cell{width:70px;height:70px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:26px;transition:all .15s;background:#1a1a3e;color:#f9f6f2}
.tile-2048{width:70px;height:70px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.4rem;transition:all .15s;background:rgba(255,255,255,.05);color:var(--text)}
.tile-2048.t2{background:#eee4da;color:#776e65}.tile-2048.t4{background:#ede0c8;color:#776e65}.tile-2048.t8{background:#f2b179;color:#f9f6f2}.tile-2048.t16{background:#f59563;color:#f9f6f2}.tile-2048.t32{background:#f67c5f;color:#f9f6f2}.tile-2048.t64{background:#f65e3b;color:#f9f6f2}.tile-2048.t128{background:#edcf72;color:#f9f6f2;font-size:1.2rem}.tile-2048.t256{background:#edcc61;color:#f9f6f2;font-size:1.2rem}.tile-2048.t512{background:#edc850;color:#f9f6f2;font-size:1.2rem}.tile-2048.t1024{background:#edc53f;color:#f9f6f2;font-size:1rem}.tile-2048.t2048{background:#edc22e;color:#f9f6f2;font-size:1rem}
.mem-grid{display:grid;gap:8px;width:340px;background:rgba(255,255,255,.04);border-radius:12px;padding:8px}
.mem-card{aspect-ratio:1;background:linear-gradient(135deg,rgba(233,69,96,.2),rgba(245,166,35,.2));border:1px solid rgba(255,255,255,.1);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1.8rem;cursor:pointer;transition:all .4s;user-select:none;perspective:600px}
.mem-card.flipped,.mem-card.matched{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.15)}
.mem-card.matched{border-color:rgba(76,175,80,.3);box-shadow:0 0 10px rgba(76,175,80,.15)}
.mem-inner{width:100%;height:100%;position:relative;transition:transform .5s;transform-style:preserve-3d}
.mem-card.flipped .mem-inner{transform:rotateY(180deg)}
.mem-front,.mem-back{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;border-radius:8px}
.mem-front{background:linear-gradient(135deg,rgba(233,69,96,.15),rgba(245,166,35,.15));font-size:1.4rem;color:rgba(255,255,255,.3)}
.mem-back{transform:rotateY(180deg);background:rgba(255,255,255,.06)}
.rev-board{position:relative;background:linear-gradient(145deg,#1a6b3c,#0d4a25);border-radius:12px;padding:12px;box-shadow:0 8px 30px rgba(0,0,0,.4)}
.rev-cell{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.15)}
.rev-cell.b{background:radial-gradient(circle at 35% 35%,#555,#111);border-color:rgba(255,255,255,.15)}
.rev-cell.w{background:radial-gradient(circle at 35% 35%,#fff,#ccc);border-color:rgba(255,255,255,.3)}
.rev-cell.valid{box-shadow:0 0 8px rgba(245,166,35,.4)}
.chat-container{display:flex;flex-direction:column;height:calc(100vh - 140px);max-width:700px;margin:0 auto}
.chat-header{display:flex;align-items:center;justify-content:space-between;padding:.8rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px 12px 0 0}
.chat-header h3{font-size:.9rem;color:var(--accent2)}
.chat-msgs{flex:1;overflow-y:auto;padding:.8rem;background:rgba(0,0,0,.2);border-left:1px solid var(--border);border-right:1px solid var(--border)}
.chat-msgs::-webkit-scrollbar{width:4px}.chat-msgs::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);border-radius:2px}
.chat-msg{margin-bottom:.6rem;animation:fadeIn .3s}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.chat-msg .nick{font-size:.75rem;font-weight:700;margin-bottom:.1rem}
.chat-msg .nick.sys{color:var(--accent2)}
.chat-msg .nick.me{color:var(--accent)}
.chat-msg .nick.other{color:var(--green)}
.chat-msg .text{font-size:.85rem;color:#ccc;background:rgba(255,255,255,.04);padding:.4rem .7rem;border-radius:8px;display:inline-block;max-width:80%;word-break:break-all}
.chat-msg.me-msg{text-align:left}
.chat-msg.me-msg .text{background:rgba(33,150,243,.12);border:1px solid rgba(33,150,243,.2)}
.chat-input{display:flex;gap:.5rem;padding:.6rem;background:var(--bg-card);border:1px solid var(--border);border-radius:0 0 12px 12px}
.chat-input input{flex:1;padding:.5rem .8rem;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;color:var(--text);font-size:.85rem;outline:none}
.chat-input input:focus{border-color:var(--accent)}
.lb-tabs{display:flex;gap:.3rem;margin-bottom:1rem;flex-wrap:wrap}
.lb-tab{padding:.4rem .8rem;border-radius:20px;font-size:.75rem;cursor:pointer;background:rgba(255,255,255,.04);border:1px solid var(--border);color:var(--text-dim);transition:all .2s}
.lb-tab.active{background:rgba(233,69,96,.15);border-color:var(--accent);color:var(--accent)}
.lb-tab:hover{color:var(--text)}
.lb-list{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;overflow:hidden}
.lb-row{display:flex;align-items:center;padding:.7rem 1rem;border-bottom:1px solid rgba(255,255,255,.04);transition:background .2s}
.lb-row:hover{background:rgba(255,255,255,.03)}
.lb-row:last-child{border-bottom:none}
.lb-rank{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;margin-right:.8rem;background:rgba(255,255,255,.06);color:var(--text-dim)}
.lb-rank.r1{background:linear-gradient(135deg,#ffd700,#ffaa00);color:#333}
.lb-rank.r2{background:linear-gradient(135deg,#c0c0c0,#a0a0a0);color:#333}
.lb-rank.r3{background:linear-gradient(135deg,#cd7f32,#a0522d);color:#fff}
.lb-info{flex:1}
.lb-name{font-size:.85rem;font-weight:600}
.lb-score{font-size:.75rem;color:var(--accent2)}
.profile-card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:2rem;text-align:center;max-width:400px;margin:0 auto 1.5rem}
.profile-avatar{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700;margin:0 auto 1rem;box-shadow:0 4px 20px rgba(233,69,96,.3)}
.profile-name{font-size:1.3rem;font-weight:700;margin-bottom:.3rem}
.profile-id{font-size:.75rem;color:var(--text-dim);margin-bottom:1rem}
.profile-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;margin-top:1rem}
.p-stat{background:rgba(255,255,255,.03);border-radius:10px;padding:.6rem}
.p-stat .pv{font-size:1.2rem;font-weight:700;color:var(--accent2)}
.p-stat .pl{font-size:.65rem;color:var(--text-dim);margin-top:.1rem}
.profile-form{max-width:400px;margin:0 auto}
.profile-form .field{margin-bottom:.8rem}
.profile-form label{display:block;font-size:.75rem;color:var(--text-dim);margin-bottom:.3rem}
.profile-form input,.profile-form select{width:100%;padding:.6rem .8rem;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;color:var(--text);font-size:.9rem;outline:none}
.profile-form input:focus,.profile-form select:focus{border-color:var(--accent)}
.announce-bar{background:rgba(245,166,35,.08);border:1px solid rgba(245,166,35,.15);border-radius:10px;padding:.6rem 1rem;margin-bottom:1.5rem;display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--accent2)}
.announce-bar .ann-icon{font-size:1.1rem}
.quick-actions{display:flex;gap:.6rem;margin-bottom:1.5rem;flex-wrap:wrap}
.quick-btn{display:flex;align-items:center;gap:.4rem;padding:.5rem 1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;font-size:.8rem;color:var(--text-dim);cursor:pointer;transition:all .2s}
.quick-btn:hover{background:rgba(255,255,255,.08);color:var(--text)}
.quick-btn .qb-icon{font-size:1rem}
.featured{background:linear-gradient(135deg,rgba(233,69,96,.1),rgba(245,166,35,.08));border:1px solid rgba(233,69,96,.15);border-radius:14px;padding:1.2rem;margin-bottom:1.5rem;display:flex;align-items:center;gap:1rem;cursor:pointer;transition:all .3s}
.featured:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.3)}
.featured .f-icon{font-size:3rem}
.featured .f-info h3{font-size:1rem;font-weight:700;margin-bottom:.2rem}
.featured .f-info p{font-size:.8rem;color:#999}
.login-card{max-width:400px;margin:3rem auto;padding:2.5rem 2rem;background:linear-gradient(145deg,rgba(26,26,62,.95),rgba(10,10,26,.98));backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-radius:20px;text-align:center;animation:popIn .5s;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.login-logo{font-size:3.5rem;margin-bottom:.5rem}
.login-title{font-size:1.8rem;font-weight:800;background:linear-gradient(90deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:.2rem}
.login-sub{font-size:.8rem;color:var(--text-dim);letter-spacing:3px;margin-bottom:1.5rem}
.login-tabs{display:flex;gap:0;margin-bottom:1.5rem;border-radius:10px;overflow:hidden;border:1px solid rgba(255,255,255,.1)}
.login-tab{flex:1;padding:.7rem;background:rgba(255,255,255,.03);border:none;color:var(--text-dim);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .3s}
.login-tab.active{background:linear-gradient(135deg,rgba(233,69,96,.2),rgba(245,166,35,.15));color:var(--accent);text-shadow:0 0 10px rgba(233,69,96,.3)}
.login-tab:hover{background:rgba(255,255,255,.06)}
.login-hint{margin-top:.8rem;font-size:.8rem;min-height:1.2rem}
.login-card .field{margin-bottom:1rem;text-align:left}
.login-card .field label{display:block;font-size:.75rem;color:var(--text-dim);margin-bottom:.4rem;letter-spacing:1px;text-transform:uppercase}
.login-card .field input,.login-card .field select{width:100%;padding:.75rem 1rem;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:10px;color:var(--text);font-size:.9rem;outline:none;transition:all .3s}
.login-card .field input:focus,.login-card .field select:focus{border-color:var(--accent);box-shadow:0 0 15px rgba(233,69,96,.15);background:rgba(255,255,255,.08)}
.login-card .field input::placeholder{color:rgba(255,255,255,.25)}
.login-card .field select option{background:#1a1a3e;color:var(--text)}
.login-card .btn-p{margin-top:.5rem;padding:.8rem;font-size:1rem;letter-spacing:2px}
.chat-channels{display:flex;gap:.3rem;padding:.5rem .8rem;background:rgba(0,0,0,.15);border-left:1px solid var(--border);border-right:1px solid var(--border);overflow-x:auto}
.chat-channels::-webkit-scrollbar{height:2px}
.ch-tab{padding:.3rem .7rem;border-radius:20px;font-size:.7rem;cursor:pointer;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);color:var(--text-dim);white-space:nowrap;transition:all .2s;flex-shrink:0}
.ch-tab.active{background:rgba(233,69,96,.15);border-color:var(--accent);color:var(--accent)}
.ch-tab:hover{color:var(--text);background:rgba(255,255,255,.08)}
.chat-room-info{display:flex;align-items:center;justify-content:space-between;padding:.4rem .8rem;background:rgba(76,175,80,.08);border-left:1px solid var(--border);border-right:1px solid var(--border)}
.room-badge{font-size:.75rem;color:var(--green);font-weight:600}
.chat-online{padding:.3rem .8rem;font-size:.7rem;color:var(--text-dim);background:rgba(0,0,0,.1);border-left:1px solid var(--border);border-right:1px solid var(--border)}
.game-rules{background:rgba(245,166,35,.06);border:1px solid rgba(245,166,35,.12);border-radius:10px;padding:.6rem .8rem;font-size:.7rem;color:var(--text-dim);line-height:1.6}
.game-rules h4{font-size:.75rem;color:var(--accent2);margin-bottom:.3rem;display:flex;align-items:center;gap:.3rem}
.featured .f-info p{font-size:.75rem;color:var(--text-dim)}.role-hint{font-size:.7rem;color:var(--text-dim);margin-top:.2rem}
.sokoban-grid{display:grid;gap:1px;background:#111;border-radius:8px;overflow:hidden;border:1px solid rgba(255,255,255,.1)}
.sok-cell{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .15s}
.sok-cell.wall{background:#2a2a4a}.sok-cell.floor{background:#1a1a3e}.sok-cell.target{background:#1a1a3e;color:#f5a623;font-size:20px;font-weight:700}
.sok-cell.box{background:#5c3d1e;border-radius:4px}.sok-cell.box-on{background:#2e7d32;border-radius:4px}
.sok-cell.player{background:#1a1a3e;font-size:18px}
.p15-grid{display:grid;gap:4px}
.p15-cell{width:70px;height:70px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;border-radius:10px;cursor:pointer;transition:all .15s;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.1);color:var(--text)}
.p15-cell:hover:not(.empty){background:rgba(233,69,96,.15);border-color:var(--accent)}
.p15-cell.correct{background:rgba(76,175,80,.15);border-color:var(--green);color:var(--green)}
.p15-cell.empty{background:transparent;border-color:transparent;cursor:default}

.hanoi-board{display:flex;justify-content:center;gap:1.5rem;padding:1rem 0;min-height:320px;align-items:flex-end}
.hanoi-peg{position:relative;width:140px;min-height:280px;cursor:pointer;border-radius:8px;transition:all .2s;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
.hanoi-peg:hover{background:rgba(255,255,255,.03)}
.hanoi-peg.selected{background:rgba(233,69,96,.08);box-shadow:0 0 15px rgba(233,69,96,.15)}
.hanoi-rod{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);width:6px;height:200px;background:linear-gradient(180deg,#8b7355,#6b5b3e);border-radius:3px}
.hanoi-base{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);width:120px;height:10px;background:linear-gradient(90deg,#8b7355,#6b5b3e);border-radius:5px}
.hanoi-disks{position:absolute;bottom:30px;left:0;right:0;display:flex;flex-direction:column-reverse;align-items:center}
.hanoi-disk{height:24px;border-radius:12px;position:absolute;transition:all .3s;box-shadow:0 2px 8px rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.15)}
.hanoi-label{position:absolute;bottom:2px;font-size:.7rem;color:var(--text-dim);font-weight:700}

.guess-main{flex:1;max-width:500px}
.guess-bar-wrap{margin-bottom:1rem}
.guess-range-bar{position:relative;height:30px;background:rgba(255,255,255,.05);border-radius:15px;overflow:hidden;border:1px solid var(--border)}
.guess-range-fill{position:absolute;top:0;left:0;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:15px;transition:width .3s;opacity:.6}
.guess-range-label{position:absolute;top:50%;transform:translateY(-50%);font-size:.65rem;color:var(--text-dim);left:8px}
.guess-input-area{display:flex;gap:.5rem;margin-bottom:1rem}
.guess-input{flex:1;font-size:1.1rem;text-align:center}
.guess-btn{min-width:80px}
.guess-hint{text-align:center;font-size:1.1rem;font-weight:700;padding:.8rem;border-radius:10px;margin-bottom:1rem;min-height:2.5rem;transition:all .3s}
.guess-hint.correct{background:rgba(76,175,80,.15);color:var(--green);border:1px solid rgba(76,175,80,.3)}
.guess-hint.low{background:rgba(33,150,243,.1);color:var(--blue);border:1px solid rgba(33,150,243,.2)}
.guess-hint.high{background:rgba(233,69,96,.1);color:var(--accent);border:1px solid rgba(233,69,96,.2)}
.guess-hint.wrong{background:rgba(233,69,96,.15);color:var(--accent);border:1px solid rgba(233,69,96,.3)}
.guess-stats-row{display:flex;gap:1rem;margin-bottom:1rem}
.guess-stat{flex:1;text-align:center;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:.6rem}
.guess-stat .val{font-size:1.5rem;font-weight:800;color:var(--accent2)}
.guess-stat .lbl{font-size:.7rem;color:var(--text-dim)}
.guess-history{max-height:250px;overflow-y:auto}
.guess-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .8rem;margin-bottom:.3rem;border-radius:8px;font-size:.85rem}
.guess-item.correct{background:rgba(76,175,80,.1);border:1px solid rgba(76,175,80,.2)}
.guess-item.low{background:rgba(33,150,243,.08);border:1px solid rgba(33,150,243,.15)}
.guess-item.high{background:rgba(233,69,96,.08);border:1px solid rgba(233,69,96,.15)}
.guess-idx{color:var(--text-dim);font-size:.75rem;min-width:30px}
.guess-val{font-weight:700;flex:1}
.guess-icon{font-size:1rem}

.pinball-controls{display:flex;gap:.5rem;margin-top:.5rem;justify-content:center}
.pinball-ctrl-btn{padding:.6rem 1.2rem;border-radius:10px;border:1px solid var(--border);background:var(--bg-card);color:var(--text);font-size:.8rem;cursor:pointer;transition:all .2s;user-select:none;-webkit-user-select:none}
.pinball-ctrl-btn:active{background:rgba(233,69,96,.2);border-color:var(--accent)}
@media(max-width:768px){
    body{padding-left:0}
    .sidebar{display:none}
    .main{padding:1rem .5rem 2rem}
    .center-title{font-size:1.8rem;letter-spacing:.3rem}
    .game-grid{grid-template-columns:repeat(2,1fr)}
    .game-layout{gap:.8rem}
    .side{flex-direction:row;flex-wrap:wrap;min-width:auto;max-width:100%;justify-content:center}
    .card{min-width:120px;flex:1}
    .ttt-grid{width:240px;height:240px}
    .ttt-cell{font-size:2.2rem}
    .mine-cell{width:26px;height:26px;font-size:.65rem}
    .grid-2048{width:270px;gap:6px;padding:6px}
    .tile-2048{width:58px;height:58px;font-size:1.1rem}
    .tile-2048.t128,.tile-2048.t256,.tile-2048.t512{font-size:.95rem}
    .tile-2048.t1024,.tile-2048.t2048{font-size:.8rem}
    .mem-grid{width:290px}
    .rev-cell{width:30px;height:30px}
    .nav-links{gap:.1rem}
    .nav-link{padding:.4rem .6rem;font-size:.75rem}
    .featured{flex-direction:column;text-align:center}
}

/* ===== COIN DISPLAY ===== */
.coin-display{font-size:.8rem;font-weight:700;color:#ffd700;cursor:default;padding:.2rem .6rem;background:rgba(255,215,0,.08);border:1px solid rgba(255,215,0,.2);border-radius:20px;white-space:nowrap}
.coin-display-lg{text-align:center;font-size:1.3rem;font-weight:800;color:#ffd700;margin:.8rem 0 .5rem;text-shadow:0 0 20px rgba(255,215,0,.3)}
.shop-coins-header{margin-bottom:1.5rem}

/* ===== CHECKIN WIDGET ===== */
.checkin-widget{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:.5rem .5rem;margin-bottom:.6rem}
.cal-header{text-align:center;font-size:.72rem;font-weight:700;color:var(--accent2);margin-bottom:.3rem}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;margin-bottom:.3rem}
.cal-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:4px;font-size:.52rem;color:var(--text-dim);background:rgba(255,255,255,.03)}
.cal-day.cal-label{font-weight:700;color:var(--text);font-size:.52rem}
.cal-day.today{background:rgba(233,69,96,.2);color:var(--accent);font-weight:700;border:1px solid rgba(233,69,96,.3)}
.cal-day.checked{background:linear-gradient(135deg,#ffd700,#ff9800);color:#000;font-weight:700}
.cal-day.future{opacity:.3}
.checkin-streak{text-align:center;font-size:.68rem;color:var(--accent2);margin:.25rem 0;font-weight:600}
.checkin-rewards{text-align:center;font-size:.58rem;color:var(--text-dim);margin-top:.2rem}

/* ===== ACHIEVEMENTS ===== */
.ach-summary{text-align:center;font-size:.95rem;font-weight:700;color:var(--accent2);margin-bottom:1.2rem;padding:.6rem;background:rgba(245,166,35,.06);border-radius:10px;border:1px solid rgba(245,166,35,.15)}
.ach-cat{margin-bottom:1.5rem}
.ach-cat-title{font-size:.9rem;font-weight:700;color:var(--text-dim);margin-bottom:.8rem;padding-left:.3rem;border-left:3px solid var(--accent)}
.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.7rem}
.ach-item{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:.8rem .6rem;text-align:center;transition:all .3s;position:relative;overflow:hidden}
.ach-item.unlocked{border-color:rgba(255,215,0,.3);background:rgba(255,215,0,.04)}
.ach-item.locked{opacity:.65}
.ach-icon{font-size:2rem;margin-bottom:.3rem;display:block}
.unlocked .ach-icon{animation:bounceIn .5s ease}
.ach-name{font-size:.78rem;font-weight:700;margin-bottom:.15rem;color:var(--text)}
.ach-desc{font-size:.65rem;color:var(--text-dim);line-height:1.3;margin-bottom:.3rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ach-time{font-size:.6rem;color:#ffd700;font-weight:600}
.ach-coins{font-size:.7rem;color:var(--accent2);font-weight:600}

/* ===== ACHIEVEMENT POPUP ===== */
.achieve-popup{position:fixed;top:2rem;right:2rem;z-index:9999;pointer-events:none;opacity:0;transform:translateX(100px) scale(.7);transition:all .5s cubic-bezier(.34,1.56,.64,1)}
.achieve-popup.show{opacity:1;transform:translateX(0) scale(1)}
.achieve-inner{background:linear-gradient(135deg,#1a1a3e,#12122a);border:1px solid rgba(255,215,0,.3);border-radius:16px;padding:1.5rem 2rem;text-align:center;min-width:260px;box-shadow:0 10px 40px rgba(0,0,0,.5),0 0 30px rgba(255,215,0,.1);position:relative;overflow:hidden}
.achieve-glow{position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,215,0,.12) 0%,transparent 70%);animation:pulseGlow 2s ease-in-out infinite}
@keyframes pulseGlow{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.1);opacity:1}}
.achieve-icon-lg{font-size:3rem;margin-bottom:.4rem;display:block;animation:iconPop .6s cubic-bezier(.34,1.56,.64,1) both}
@keyframes iconPop{0%{transform:scale(0) rotate(-20deg)}60%{transform:scale(1.3) rotate(5deg)}100%{transform:scale(1) rotate(0)}}
.achieve-title{font-size:.75rem;color:#ffd700;font-weight:700;letter-spacing:3px;margin-bottom:.2rem}
.achieve-name-lg{font-size:1.2rem;font-weight:800;color:#fff;margin-bottom:.3rem}
.achieve-desc-lg{font-size:.82rem;color:var(--text-dim);margin-bottom:.4rem}
.achieve-reward{font-size:.95rem;color:#ffd700;font-weight:800}

/* ===== SHOP ===== */
.shop-cat{margin-bottom:2rem}
.shop-cat-title{font-size:1rem;font-weight:700;color:var(--text-dim);margin-bottom:1rem;padding-left:.3rem;border-left:3px solid var(--green)}
.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem}
.shop-item{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:1.2rem .8rem;text-align:center;transition:all .3s;cursor:default}
.shop-item:hover{background:rgba(255,255,255,.07);transform:translateY(-2px)}
.shop-item.owned{border-color:rgba(76,175,80,.3);background:rgba(76,175,80,.04)}
.shop-preview{border-radius:10px;margin-bottom:.6rem;transition:all .3s}
.shop-name{font-size:.85rem;font-weight:700;margin-bottom:.3rem;color:var(--text)}
.shop-price{font-size:.8rem;color:#ffd700;font-weight:600;margin-bottom:.5rem}
.shop-buy{font-size:.75rem;padding:.25rem 1rem}

@keyframes bounceIn{0%{transform:scale(.3)}50%{transform:scale(1.1)}70%{transform:scale(.95)}100%{transform:scale(1)}}

/* ===== NOTIFICATION BELL ===== */
.nav-notif-btn{position:relative;cursor:pointer;font-size:1.2rem;padding:.3rem .5rem;border-radius:8px;transition:background .2s}
.nav-notif-btn:hover{background:rgba(255,255,255,.08)}
#notifBadge{position:absolute;top:-2px;right:-4px;background:#e94560;color:#fff;font-size:.6rem;font-weight:700;padding:1px 5px;border-radius:10px;min-width:14px;text-align:center;display:none}

/* ===== NOTIFICATION TOAST ===== */
.notif-toast{position:fixed;top:5rem;left:50%;transform:translateX(-50%) translateY(-20px);background:linear-gradient(135deg,#1a1a3e,#12122a);border:1px solid rgba(255,215,0,.25);border-radius:12px;padding:.8rem 1.8rem;z-index:9999;opacity:0;pointer-events:none;transition:all .35s cubic-bezier(.34,1.56,.64,1);text-align:center;min-width:200px;box-shadow:0 8px 30px rgba(0,0,0,.5)}
.notif-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ===== FRIENDS ===== */
.friend-add-bar{display:flex;gap:.5rem;margin-bottom:.8rem}
.friend-add-bar input{flex:1;background:var(--bg-card);border:1px solid var(--border);color:var(--text);padding:.5rem .7rem;border-radius:10px;font-size:.85rem;outline:none}
.friend-add-bar input:focus{border-color:var(--accent)}
.friend-item{display:flex;align-items:center;gap:.7rem;padding:.65rem .8rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;margin-bottom:.45rem;transition:background .2s}
.friend-item:hover{background:rgba(255,255,255,.04)}
.friend-avatar{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1rem;background:linear-gradient(135deg,var(--accent),#666);flex-shrink:0}
.friend-info{flex:1;min-width:0}
.friend-name{font-size:.85rem;font-weight:600;color:var(--text)}
.friend-status{font-size:.72rem;color:#888}
.friend-actions{display:flex;gap:.3rem;align-items:center}

/* ===== DAILY TASKS ===== */
.daily-header{font-size:.85rem;color:#aaa;margin-bottom:.7rem;display:flex;align-items:center;gap:.5rem}
.daily-reset{font-size:.7rem;color:#666;background:rgba(255,255,255,.05);padding:1px 6px;border-radius:6px}
.daily-grid{display:flex;flex-direction:column;gap:.5rem}
.daily-item{display:flex;align-items:center;gap:.7rem;padding:.7rem .8rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;transition:all .3s}
.daily-item.done{border-color:rgba(76,175,80,.3);background:rgba(76,175,80,.03)}
.daily-icon{font-size:1.4rem;flex-shrink:0}
.daily-info{flex:1;min-width:0}
.daily-name{font-size:.82rem;font-weight:600;color:var(--text)}
.daily-desc{font-size:.7rem;color:#888;margin-top:2px}
.daily-bar{height:6px;background:rgba(255,255,255,.06);border-radius:3px;margin-top:.4rem;overflow:hidden}
.daily-fill{height:100%;background:linear-gradient(90deg,#ffd700,#ff9800);border-radius:3px;transition:width .4s ease}
.daily-progress{font-size:.68rem;color:#888;margin-top:2px}
.daily-reward{font-size:.78rem;color:#ffd700;font-weight:700;white-space:nowrap}

/* ===== NOTIFICATIONS ===== */
.notif-item{display:flex;gap:.7rem;padding:.65rem .8rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;margin-bottom:.4rem;cursor:pointer;transition:all .2s}
.notif-item:hover{background:rgba(255,255,255,.04)}
.notif-item.read{opacity:.55}
.notif-icon{font-size:1.2rem;flex-shrink:0}
.notif-body{flex:1;min-width:0}
.notif-title{font-size:.83rem;font-weight:600;color:var(--text)}
.notif-msg{font-size:.72rem;color:#999;margin-top:2px}
.notif-time{font-size:.65rem;color:#555;margin-top:3px}

/* ===== DATA PANEL ===== */
.data-overview{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem;margin-bottom:1.2rem}
.data-stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:1rem .5rem;text-align:center}
.data-num{font-size:1.6rem;font-weight:800;color:var(--accent)}
.data-label{font-size:.7rem;color:#888;margin-top:.2rem}
.section-title{font-size:.95rem;font-weight:700;color:var(--text);margin:1.3rem 0 .6rem;display:flex;align-items:center;gap:.4rem}
.section-title .icon{font-size:1.1rem}
.top-games-list{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.8rem}
.top-game-item{display:flex;align-items:center;gap:.6rem;padding:.45rem .7rem;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}
.top-rank{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;background:var(--accent);color:#fff;flex-shrink:0}
.top-game-name{flex:1;font-size:.82rem;color:var(--text)}
.top-game-count{font-size:.78rem;color:#ffd700;font-weight:600}
.data-checkin-info{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.8rem}
.data-ci-row{display:flex;justify-content:space-between;padding:.4rem .7rem;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;font-size:.82rem;color:var(--text)}
.data-ci-val{color:#ffd700;font-weight:700}
.empty-hint{text-align:center;color:#555;font-size:.82rem;padding:1.5rem 0}

/* ===== SIDEBAR ===== */
.sidebar{position:fixed;top:56px;left:0;width:260px;height:calc(100vh - 56px);background:linear-gradient(180deg,#12122a 0%,#0a0a1a 100%);border-right:1px solid var(--border);z-index:40;display:flex;flex-direction:column;overflow:hidden}
.sidebar-header{display:flex;align-items:center;gap:.7rem;padding:.8rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}
.sidebar-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:700;flex-shrink:0}
.sidebar-userinfo{min-width:0}
.sidebar-name{font-size:.85rem;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-coins{font-size:.72rem;color:#ffd700;font-weight:600}
.sidebar-body{flex:1;overflow-y:auto;padding:.6rem .8rem;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.1) transparent}
.sidebar-body::-webkit-scrollbar{width:3px}
.sidebar-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);border-radius:2px}
.sidebar .section-title{font-size:.75rem;margin:.8rem 0 .3rem}
.sidebar .ach-grid{grid-template-columns:1fr;gap:.4rem}
.sidebar .ach-item{padding:.4rem .3rem}
.sidebar .ach-icon{font-size:1.2rem}
.sidebar .ach-name{font-size:.68rem}
.sidebar .ach-desc{font-size:.56rem}
.sidebar .notif-item{padding:.4rem .5rem;margin-bottom:.2rem}
.sidebar .daily-item{padding:.4rem .5rem}
.sidebar .data-overview{grid-template-columns:repeat(2,1fr);gap:.3rem}
.sidebar .data-stat-card{padding:.5rem .2rem}
.sidebar .data-num{font-size:1rem}
.sidebar .data-label{font-size:.55rem}
.sidebar .btn-full{font-size:.72rem;padding:.35rem}

/* ===== FRIENDS PAGE ===== */
.friend-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;margin-bottom:1.5rem}
.friend-stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:1.2rem .5rem;text-align:center}
.friend-stat-num{font-size:2rem;font-weight:800;color:var(--accent2)}
.friend-stat-label{font-size:.75rem;color:var(--text-dim);margin-top:.2rem}
.friend-activity-list{display:flex;flex-direction:column;gap:.5rem}
.friend-act-item{display:flex;align-items:center;gap:.8rem;padding:.7rem 1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;transition:background .2s}
.friend-act-item:hover{background:rgba(255,255,255,.04)}
.friend-act-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;background:linear-gradient(135deg,var(--accent),#666);flex-shrink:0}
.friend-act-body{flex:1;min-width:0}
.friend-act-name{font-size:.85rem;font-weight:600;color:var(--text)}
.friend-act-desc{font-size:.72rem;color:#999;margin-top:2px}
.friend-act-time{font-size:.65rem;color:#555;margin-top:2px}
.friend-chart-wrap{display:flex;gap:.4rem;align-items:flex-end;height:100px;margin:1rem 0}
.friend-chart-col-wrap{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.friend-chart-col{width:100%;background:linear-gradient(180deg,var(--accent),var(--accent2));border-radius:4px 4px 0 0;min-height:4px;transition:height .3s}
.friend-chart-label{font-size:.55rem;color:var(--text-dim);text-align:center;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
