:root{color:#1d2838;background:#f3f6f8;font-family:Inter,PingFang SC,Microsoft YaHei,Arial,sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input{font:inherit}button{border:0;border-radius:6px;background:#2662d9;color:#fff;cursor:pointer;min-height:38px;padding:0 14px;transition:background-color .18s ease,box-shadow .18s ease,transform .18s ease,opacity .18s ease}button:hover:not(:disabled){background:#1f55c7;box-shadow:0 8px 18px #2662d933;transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.5}input{width:100%;border:1px solid #d5dce5;border-radius:6px;background:#fff;color:#1d2838;min-height:38px;padding:0 12px;transition:border-color .18s ease,box-shadow .18s ease}input:hover,input:focus{border-color:#8fb0f7;box-shadow:0 0 0 3px #2662d91a;outline:none}h1,h2,p{margin:0}h1{font-size:clamp(32px,6vw,58px);line-height:1.05}h2{font-size:18px}.app-shell{min-height:100vh}.auth-panel{min-height:100vh;display:grid;align-content:center;gap:28px;padding:32px}.brand{display:grid;gap:12px;max-width:900px}.brand p,.guest p,.room-head p,.empty-state p,.muted{color:#65758b}.auth-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.panel{background:#fff;border:1px solid #dfe6ee;border-radius:8px;padding:16px;display:grid;gap:12px;min-width:0;box-shadow:0 10px 28px #1d28380d;transition:border-color .18s ease,box-shadow .18s ease}.panel:hover{border-color:#cbd8e8;box-shadow:0 14px 32px #1d283814}.panel-title,.chat-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-title small,.chat-head small{color:#65758b}.workspace{min-height:100vh;height:100vh;display:grid;grid-template-columns:320px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);overflow:hidden}.topbar{grid-column:1 / -1;min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;background:#fff;border-bottom:1px solid #dfe6ee}.topbar span{display:block;color:#65758b;font-size:13px}.top-actions,.timer-actions,.tabs,.chat-form,.inline-form{display:flex;gap:8px}.chat-form{align-items:center;flex:0 0 auto;min-height:52px}.chat-form input{flex:1 1 auto;height:42px;min-height:42px}.chat-form button{flex:0 0 auto;width:72px;height:42px;min-height:42px;padding:0 12px;white-space:nowrap}.sidebar{border-right:1px solid #dfe6ee;padding:16px;display:grid;align-content:start;gap:16px;overflow-y:auto;min-height:0}.room{padding:16px;display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:16px;min-height:0;overflow:hidden}.room-head,.study-board{background:#fff;border:1px solid #dfe6ee;border-radius:8px;padding:16px;display:flex;align-items:center;justify-content:space-between;gap:16px;box-shadow:0 10px 28px #1d28380d}.study-board strong{display:block;font-size:34px;line-height:1.1;margin-top:6px}.room-grid{display:grid;grid-template-columns:260px minmax(0,1fr) 280px;gap:16px;height:100%;min-height:0;overflow:hidden}.lobby-grid{grid-template-columns:280px minmax(0,1fr)}.lobby-room,.admin-room{grid-template-rows:auto minmax(0,1fr)}.admin-panel{align-content:start;overflow:auto}.admin-row{display:grid;grid-template-columns:56px 120px 140px 110px 110px 150px 90px 76px;gap:8px;align-items:center;min-width:920px}.admin-head{color:#65758b;font-size:13px}.admin-row input,.admin-row button{min-height:34px}.group-button,.member-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;background:#f6f8fb;color:#1d2838;text-align:left;border-radius:8px;transition:background-color .18s ease,box-shadow .18s ease,transform .18s ease}.group-button:hover,.member-row:hover{background:#edf4ff;box-shadow:0 8px 18px #1d283814;transform:translateY(-1px)}.group-button.active,.tabs .active{background:#dce8ff;color:#183c96}.member-row{grid-template-columns:32px minmax(0,1fr) 10px auto auto;padding:8px}.lobby-member{grid-template-columns:32px minmax(0,1fr) 10px auto}.member-name{border:0;background:transparent;color:inherit;justify-self:start;padding:0;text-align:left;box-shadow:none;min-height:auto}.member-name:hover,.member-name:hover:not(:disabled){background:transparent;box-shadow:none;color:#254fbe;transform:none}.avatar{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:#e8edf3;color:#254fbe;font-weight:700}.member-row i{width:9px;height:9px;border-radius:50%;background:#b8c1cf}.member-row i.online{background:#17a56b}.danger{background:#c23737}.danger:hover:not(:disabled){background:#a92d2d;box-shadow:0 8px 18px #c2373738}.chat{display:flex;flex-direction:column;min-height:0;overflow:hidden}.private-tabs{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;align-items:center;max-width:100%;min-height:34px;max-height:40px;padding:0 0 4px}.private-tabs button{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:0 0 auto;width:auto;min-width:0;max-width:140px;min-height:30px;height:30px;padding:0 12px;background:#eef3ff;color:#254fbe;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:none;transform:none}.private-tabs button:hover:not(:disabled){background:#dce8ff;box-shadow:none;transform:none}.private-tabs button.active{background:#2662d9;color:#fff}.private-tabs b{min-width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:#c23737;color:#fff;font-size:12px;line-height:1}.messages{flex:1 1 auto;overflow-y:auto;display:flex;flex-direction:column;gap:10px;min-height:0;padding:4px 2px;overscroll-behavior:contain}.messages article{align-self:flex-start;width:fit-content;max-width:min(78%,560px);background:#f6f8fb;border:1px solid #edf1f5;border-radius:6px 14px 14px;padding:10px 12px;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.messages article:hover{border-color:#d8e2ee;box-shadow:0 8px 18px #1d283814;transform:translateY(-1px)}.messages article.own{align-self:flex-end;background:#e8f1ff;border-color:#d6e5ff;border-radius:14px 6px 14px 14px}.message-meta{display:flex;align-items:center;justify-content:flex-start;gap:12px}.messages article.own .message-meta{justify-content:flex-end}.message-meta strong{color:#254fbe;font-size:13px}.message-meta time{color:#7a8798;flex:0 0 auto;font-size:12px}.messages p{margin-top:4px;overflow-wrap:anywhere;white-space:pre-wrap}.rank-list{margin:0;padding-left:20px;display:grid;align-content:start;gap:8px;min-height:0;overflow-y:auto}.rank-list li{padding-right:2px;display:flex;align-items:center;justify-content:space-between;gap:12px}.rank-list span{display:block;min-width:0;max-width:58%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.rank-list strong{color:#254fbe;flex:0 0 auto}.members,.rank-panel{min-height:0;overflow-y:auto;align-content:start}.rank-panel{grid-template-rows:auto minmax(0,1fr)}.empty-state{display:grid;place-content:center;gap:8px;padding:24px;text-align:center}.error,.toast{color:#b12626}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%);background:#fff;border:1px solid #f0c3c3;border-radius:8px;padding:10px 14px;box-shadow:0 12px 30px #1d283824}@media (max-width: 1080px){.workspace{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid #dfe6ee;grid-template-columns:repeat(2,minmax(0,1fr))}.room-grid,.lobby-grid{grid-template-columns:240px minmax(0,1fr)}.room-grid>.panel:last-child{grid-column:1 / -1}}@media (max-width: 760px){body{overflow-x:hidden}.auth-panel,.room,.sidebar{padding:12px}.auth-panel{min-height:100dvh}.workspace{height:auto;min-height:100dvh;display:block;overflow:visible}.topbar{position:sticky;top:0;z-index:10}.auth-grid,.sidebar,.room-grid,.lobby-grid{grid-template-columns:1fr}.topbar,.room-head,.study-board{align-items:stretch;flex-direction:column}.sidebar{border-right:0;border-bottom:1px solid #dfe6ee;max-height:none;overflow:visible}.room{min-height:auto;overflow:visible}.room-head,.study-board{gap:12px}.study-board strong{font-size:28px}.room-grid{height:auto;overflow:visible}.members,.rank-panel{max-height:300px}.chat{height:68dvh;min-height:420px;max-height:720px}.chat-head{align-items:stretch}.chat-head button{width:100%}.messages article{max-width:88%}.top-actions,.timer-actions,.inline-form{flex-wrap:wrap}.timer-actions button,.top-actions button{flex:1 1 0}.inline-form input{min-width:0}.chat-form{flex-wrap:nowrap;position:sticky;bottom:0;background:#fff;padding-top:8px}.admin-panel{max-width:100%;overflow-x:auto}.toast{left:12px;right:12px;bottom:12px;transform:none;text-align:center}}
