:root{font-family:PingFang SC,Microsoft YaHei,Inter,system-ui,sans-serif;color:#27313d;background:#eef4fb;font-synthesis:none;--primary: #4d94d8;--primary-soft: #eaf4ff;--border: #e5ebf2;--muted: #8c98a8}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button{font:inherit}.app-shell{min-height:100vh;display:flex}.sidebar{position:fixed;inset:0 auto 0 0;z-index:30;width:268px;background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto}.brand{height:90px;flex:0 0 90px;display:flex;align-items:center;padding:0 30px;border-bottom:1px solid var(--border)}.brand strong{display:block;font-size:24px;line-height:1.2;letter-spacing:.5px;white-space:nowrap}.close-btn{display:none;margin-left:auto;border:0;background:transparent;color:#697789}.nav-section{padding:24px 28px 10px;color:#aab4c0;font-size:12px;font-weight:700;letter-spacing:2px}nav{padding:0 12px}nav button{position:relative;width:100%;display:flex;align-items:center;gap:14px;border:0;border-radius:12px;padding:13px 16px;margin:3px 0;background:transparent;color:#566273;cursor:pointer;text-align:left;transition:.18s ease}nav button svg{width:20px}nav button:hover{background:#f5f8fc}nav button.active{color:#3485cd;background:var(--primary-soft);font-weight:700}nav button.active:before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:4px;border-radius:4px;background:var(--primary)}.nav-arrow{margin-left:auto;width:15px!important;opacity:.45}.sidebar-foot{margin-top:auto;padding:20px 28px;display:flex;gap:9px;align-items:center;border-top:1px solid var(--border);color:#8895a6;font-size:13px}.sidebar-foot svg{width:18px}main{min-width:0;flex:1;margin-left:268px}.topbar{height:90px;display:flex;align-items:center;gap:24px;padding:0 36px;background:#ffffffeb;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar h1{margin:0;font-size:27px;line-height:1.2}.menu-btn{display:none;border:0;background:transparent;padding:6px;color:#303945}.menu-btn svg{width:28px;height:28px}.top-actions{display:flex;align-items:center;gap:12px;margin-left:auto}.top-actions button{min-height:46px;display:flex;gap:8px;align-items:center;border:1px solid var(--border);background:#fff;padding:10px 16px;border-radius:12px;color:#566273;font-size:19px}.top-actions svg{width:20px;height:20px;color:#6598bd}.content{max-width:1450px;margin:auto;padding:34px 36px 60px}.welcome-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}.welcome-row h2{margin:5px 0 7px;font-size:30px}.welcome-row p{margin:0;color:#8895a6}.eyebrow{font-size:13px!important;color:#4d94d8!important;font-weight:700}.date-card{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--border);border-radius:16px;padding:13px 20px;box-shadow:0 8px 24px #3a5e820f}.date-card svg{color:#4d94d8}.date-card b,.date-card span{display:block}.date-card span{font-size:12px;color:#96a1af;margin-top:3px}.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.stats-grid article{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--border);border-radius:18px;padding:22px;box-shadow:0 8px 28px #2d52750e}.stat-icon{width:50px;height:50px;border-radius:15px;display:grid;place-items:center}.stat-icon svg{width:23px}.stat-icon.blue{background:#e9f4ff;color:#398cd4}.stat-icon.green{background:#ebfaef;color:#46af62}.stat-icon.orange{background:#fff4e3;color:#ef9a2f}.stat-icon.purple{background:#f2edff;color:#8467d4}.stats-grid label{display:block;color:#8b97a7;font-size:13px}.stats-grid strong{font-size:28px;margin-right:10px}.stats-grid small{display:block;color:#a3adb9;margin-top:2px}.dashboard-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:18px;margin-top:18px}.panel{background:#fff;border:1px solid var(--border);border-radius:18px;padding:24px;box-shadow:0 8px 28px #2d52750e}.panel-head{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:22px}.panel-head h3{margin:0;font-size:18px}.panel-head p{margin:5px 0 0;color:#a0aab7;font-size:13px}.panel-head button{border:0;background:#eef6ff;color:#3687d0;border-radius:9px;padding:8px 12px;cursor:pointer}.timeline>div{display:grid;grid-template-columns:54px 14px 1fr;gap:13px;align-items:start;position:relative;padding-bottom:18px}.timeline>div:not(:last-child):after{content:"";position:absolute;left:67px;top:16px;bottom:0;width:2px;background:#edf1f6}.timeline time{color:#7d8998;font-size:13px}.timeline p{margin:0}.timeline b,.timeline small{display:block}.timeline small{color:#a2acb8;margin-top:4px}.dot{width:11px;height:11px;border-radius:50%;margin-top:3px;z-index:1}.blue-dot{background:#4d94d8}.red-dot{background:#ef6f6c}.purple-dot{background:#8a6ada}.green-dot{background:#51b36a}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.quick-grid button{min-height:92px;border:1px solid var(--border);border-radius:14px;background:#fbfcfe;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:#596676;cursor:pointer;transition:.18s}.quick-grid button:hover{border-color:#9ec7ec;background:#f2f8ff;color:#3485cd;transform:translateY(-2px)}.quick-grid svg{width:23px}.notice-panel{grid-column:1/-1}.notice-panel ul{list-style:none;margin:0;padding:0}.notice-panel li{display:flex;align-items:center;gap:14px;padding:14px 4px;border-top:1px solid #edf1f5}.notice-panel li div{flex:1}.notice-panel b,.notice-panel small{display:block}.notice-panel small{margin-top:5px;color:#9da8b5}.notice-panel em{font-style:normal;color:#ee6d64;background:#fff0ed;border-radius:999px;padding:4px 9px;font-size:12px}.notice-dot{width:9px;height:9px;background:#5ea1da;border-radius:50%}.notice-dot.important{background:#ef6d62}.scrim{display:none}@media (max-width: 1050px){.stats-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.notice-panel{grid-column:auto}}@media (max-width: 760px){.brand{height:68px;flex-basis:68px;padding:0 20px}.brand strong{font-size:20px}.sidebar{transform:translate(-102%);transition:transform .22s ease;width:min(86vw,320px);box-shadow:20px 0 60px #22384f33}.sidebar.open{transform:translate(0)}.close-btn{display:block}.scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#1c2a3759;z-index:25;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}main{margin-left:0}.topbar{height:68px;padding:0 16px}.menu-btn{display:block}.topbar h1{font-size:20px}.top-actions button{padding:9px}.top-actions button span,.top-actions button:first-child{display:none}.content{padding:24px 16px 48px}.welcome-row{align-items:flex-end}.welcome-row h2{font-size:25px}.date-card{padding:10px 13px}.date-card svg{display:none}.stats-grid{grid-template-columns:1fr 1fr;gap:12px}.stats-grid article{display:block;padding:17px}.stat-icon{width:40px;height:40px;margin-bottom:12px}.stats-grid strong{font-size:25px}.stats-grid small{font-size:11px}.dashboard-grid{gap:12px}.panel{padding:19px}.quick-grid button{min-height:80px}}@media (max-width:420px){.date-card{display:none}.stats-grid{grid-template-columns:1fr}.stats-grid article{display:flex}.stat-icon{margin-bottom:0}.welcome-row h2{font-size:23px}}input,select,textarea{font:inherit;color:#334155}input,select,textarea{width:100%;border:1px solid #dfe6ee;border-radius:10px;background:#fff;padding:10px 12px;outline:none;transition:.18s}input:focus,select:focus,textarea:focus{border-color:#7db3e2;box-shadow:0 0 0 3px #4d94d81f}textarea{resize:vertical}.page-stack{display:flex;flex-direction:column;gap:18px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:18px}.page-heading h2{margin:0 0 7px;font-size:28px}.page-heading p{margin:0;color:#8f9baa}.primary-btn,.outline-btn{border-radius:11px;padding:10px 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;border:1px solid transparent;white-space:nowrap}.primary-btn{background:var(--primary);color:#fff;box-shadow:0 6px 16px #3b84c62e}.primary-btn:hover{background:#3987ce}.primary-btn:disabled{opacity:.55;cursor:wait}.outline-btn{background:#fff;border-color:#dfe6ee;color:#536171}.outline-btn:hover{border-color:#8ebae2;color:#3485cd}.primary-btn svg,.outline-btn svg{width:18px;height:18px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}.toolbar-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.search-box{display:flex;align-items:center;max-width:420px;min-width:280px;border:1px solid #dfe6ee;border-radius:11px;background:#fff;overflow:hidden}.search-box svg{width:18px;margin-left:12px;color:#93a0af}.search-box input{border:0;box-shadow:none}.search-box button{border:0;background:#eef6ff;color:#3485cd;padding:11px 14px}.summary-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.summary-strip>div{background:#fff;border:1px solid var(--border);border-radius:14px;padding:17px 20px}.summary-strip span{display:block;color:#8f9baa;font-size:13px}.summary-strip b{display:block;margin-top:8px;font-size:25px}.blue-text{color:#4b98d8}.pink-text{color:#dc7b9d}.green-text{color:#53b83e}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:760px}th,td{text-align:left;padding:14px 13px;border-bottom:1px solid #edf1f5}th{color:#8895a6;font-size:13px;background:#fafbfd}td{color:#536171}td code{font-size:13px;color:#3f78a9;background:#eef6fd;border-radius:6px;padding:3px 6px}.text-btn{border:0;background:transparent;color:#438bc9;cursor:pointer;padding:4px 6px;display:inline-flex;gap:4px;align-items:center}.text-btn svg{width:14px}.text-btn.danger,.icon-btn.danger{color:#e26565}.status-pill{display:inline-block;padding:4px 9px;border-radius:999px;font-size:12px;background:#edf1f5}.status-pill.active{background:#eaf8ef;color:#42a35d}.status-pill.transferred{background:#f3f4f6;color:#8792a0}.empty-cell{text-align:center!important;color:#a4adba!important;padding:30px!important}.success-note,.form-error{padding:10px 13px;border-radius:9px;margin:0}.success-note{background:#eef9f1;color:#3f9858}.form-error{background:#fff0f0;color:#cf5151}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:grid;place-items:center;padding:20px;background:#1c2a3775;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal-card{width:min(560px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:20px;padding:28px;box-shadow:0 28px 80px #1727384d;position:relative}.modal-card.compact{width:min(440px,100%);text-align:center}.modal-card h3{margin:0 0 20px;font-size:22px}.modal-card label,.login-card label{display:block;margin:13px 0;color:#687586;font-size:13px}.modal-card label input,.modal-card label select,.modal-card label textarea,.login-card label input,.login-card label select{margin-top:7px}.modal-close{position:absolute;right:15px;top:15px;border:0;background:#f3f6f9;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;cursor:pointer}.modal-close svg{width:18px}.modal-submit{width:100%;margin-top:18px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-hint{margin:4px 0 10px;color:#7f8b99;font-size:12px;line-height:1.6}.modal-card.compact>small{display:block;color:#7d8997;margin-top:14px}.invite-code{font-size:30px;font-weight:800;letter-spacing:4px;background:#eef6ff;color:#337fc2;border:1px dashed #70aadb;border-radius:14px;padding:18px;margin:8px 0 18px}.invite-code.import-code{font-size:18px;line-height:1.55;letter-spacing:2px;overflow-wrap:anywhere}.import-code-revoke{margin:14px auto 0}.empty-state{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#a0aab6}.empty-state.large{min-height:60vh}.empty-state.small{min-height:140px}.empty-state svg{width:42px;height:42px;color:#abc3d7}.empty-state b{color:#687586;margin-top:12px}.empty-state p{margin:7px 0}.app-loading{min-height:100vh;display:grid;place-content:center;text-align:center;color:#7d8997}.loading-mark{margin:auto;width:62px;height:62px;border-radius:18px 18px 18px 4px;display:grid;place-items:center;background:linear-gradient(145deg,#69b7e8,#337ec5);color:#fff;font-size:28px;font-weight:800;animation:pulse 1.5s infinite}@keyframes pulse{50%{transform:scale(1.05);box-shadow:0 10px 30px #367ec140}}.login-page{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;background:linear-gradient(140deg,#eaf4ff 0,#f8fbff 58%,#fff 58%);padding:6vw;gap:8vw;align-items:center}.login-intro{max-width:620px}.login-logo{width:70px;height:70px;border-radius:22px 22px 22px 5px;background:linear-gradient(145deg,#69b7e8,#337ec5);color:#fff;display:grid;place-items:center;box-shadow:0 18px 35px #347fc338}.login-logo svg{width:34px;height:34px}.login-intro h1{font-size:48px;line-height:1.18;margin:12px 0 20px}.login-intro>p:not(.eyebrow){font-size:17px;line-height:1.8;color:#718094}.role-pills{display:flex;gap:12px;margin-top:30px}.role-pills span{background:#fffc;border:1px solid #dfeaf4;border-radius:999px;padding:9px 14px;display:flex;align-items:center;gap:7px;color:#577083}.role-pills svg{width:18px}.login-card{width:min(480px,100%);justify-self:end;background:#fff;border:1px solid #e3eaf1;border-radius:24px;padding:30px;box-shadow:0 25px 70px #264b6d21}.login-tabs{display:grid;grid-template-columns:1fr 1fr;background:#f1f5f9;padding:4px;border-radius:12px;margin-bottom:28px}.login-tabs button{border:0;border-radius:9px;padding:10px;background:transparent;color:#7d8997}.login-tabs button.active{background:#fff;color:#3485cd;font-weight:700;box-shadow:0 3px 10px #3c587314}.login-card h2{margin:0 0 7px;font-size:26px}.login-card form>p:not(.form-error){color:#97a2af;margin:0 0 24px}.login-submit{width:100%;margin-top:12px;padding:12px}.user-chip{background:#eef6ff;color:#377fbf;border-radius:999px;padding:8px 12px;font-size:13px}.class-select{display:flex;align-items:center;gap:7px;border:1px solid var(--border);border-radius:11px;padding:6px 9px;background:#fff}.class-select svg{width:17px;color:#5597ca}.class-select select{border:0;padding:2px;box-shadow:none;background:transparent;min-width:120px}.top-actions .class-select+span{margin-left:3px}.seat-toolbar{margin-bottom:12px}.dimension-inputs{display:flex;align-items:center;gap:10px}.dimension-inputs>svg{width:20px;color:#5c9bd0}.dimension-inputs label{display:flex;align-items:center;gap:6px;color:#7b8796}.dimension-inputs input{width:62px;padding:8px}.seating-wrap{overflow-x:auto;background:#fbfcfe;border:1px solid #edf1f5;border-radius:18px;padding:28px;min-width:100%}.podium{width:55%;min-width:320px;margin:0 auto 28px;text-align:center;padding:15px;background:linear-gradient(90deg,#dcecff,#cfe5fa);border-radius:12px;color:#2f7fbd;font-weight:800;font-size:20px}.seating-grid{display:grid;gap:10px;min-width:max-content}.seat-card{min-height:74px;border:2px dashed #dce2e8;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#a9b1bb;background:#fff}.seat-card.filled{border-style:solid;border-color:#bdd8ee;background:#edf6ff;color:#2e77b2}.seat-card b{font-size:15px}.seat-card span{font-size:11px;margin-top:5px}.class-back{text-align:center;color:#9aa4b0;margin:25px 0 0}.roll-layout{display:grid;grid-template-columns:1.3fr .7fr;gap:18px}.roll-card{background:linear-gradient(135deg,#5d84eb,#774cad);border-radius:22px;padding:24px;color:#fff}.scope-tabs{display:flex;gap:8px;flex-wrap:wrap}.scope-tabs button{border:1px solid rgba(255,255,255,.32);background:#ffffff1f;color:#fff;padding:8px 13px;border-radius:999px}.scope-tabs button.active{background:#fff;color:#4d78d0}.group-input{margin-top:12px;background:#fffffff2}.draw-stage{min-height:330px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.draw-stage svg{width:74px;height:74px;opacity:.8}.draw-stage>b{font-size:28px;margin:20px 0 8px}.draw-stage>span{opacity:.8}.draw-stage.active span{font-size:15px}.draw-stage.active strong{font-size:68px;margin:12px 0;text-shadow:0 5px 20px rgba(0,0,0,.16)}.draw-stage.active small{font-size:15px;opacity:.85}.draw-actions{display:flex;justify-content:center;gap:10px}.primary-btn.giant{background:#fff;color:#5076d5;font-size:20px;padding:15px 34px}.roll-card .outline-btn{background:#ffffff1f;border-color:#ffffff59;color:#fff}.history-list{list-style:none;margin:0;padding:0;max-height:455px;overflow:auto}.history-list li{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid #edf1f5}.history-list li>span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#edf6ff;color:#3b85c4;font-weight:700}.history-list li div{flex:1}.history-list b,.history-list small{display:block}.history-list small{color:#9aa5b2;margin-top:3px}.history-list time{font-size:12px;color:#9da8b4}.timetable-panel{overflow-x:auto}.timetable-grid{display:grid;grid-template-columns:150px repeat(5,minmax(120px,1fr));min-width:800px;border:1px solid #e3e9ef;border-radius:12px;overflow:hidden}.tt-head{background:#4c93d6;color:#fff;font-weight:700;text-align:center;padding:14px;border-right:1px solid rgba(255,255,255,.2)}.period-cell,.subject-cell{min-height:74px;border-right:1px solid #e7ebf0;border-top:1px solid #e7ebf0;padding:10px;display:flex;align-items:center;justify-content:center;text-align:center}.period-cell{flex-direction:column;background:#f8fafc}.period-cell span{font-size:12px;color:#9aa4b0;margin-top:5px}.subject-cell b{color:#437fac}.subject-cell input{text-align:center;padding:8px}.period-cell b{white-space:pre-line;line-height:1.35}.committee-list{display:flex;flex-direction:column}.committee-row{display:grid;grid-template-columns:160px 1fr 220px 42px;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid #edf1f5}.position-name{font-weight:700;color:#3c87c8;background:#eef6ff}.icon-btn{border:0;background:#f4f6f8;border-radius:9px;width:36px;height:36px;display:grid;place-items:center;color:#768393;cursor:pointer}.icon-btn svg{width:17px}.duty-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.duty-card header{display:flex;gap:10px;align-items:center;margin-bottom:14px}.duty-card header input{font-weight:700}.duty-card header select{width:110px}.duty-member{display:grid;grid-template-columns:150px 1fr 36px;gap:9px;margin:8px 0}.add-row{border:1px dashed #b9cee1;background:#f5faff;color:#3b85c4;border-radius:10px;padding:9px;width:100%;margin-top:9px;display:flex;gap:6px;justify-content:center}.add-row svg{width:17px}.notices-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.notice-card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:20px;display:grid;grid-template-columns:44px 1fr;gap:14px;cursor:pointer;transition:.18s}.notice-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px #33557414}.notice-card.unread{border-color:#a6c9e8}.notice-icon{width:42px;height:42px;border-radius:13px;background:#edf6ff;color:#438bca;display:grid;place-items:center}.notice-icon svg{width:20px}.notice-meta{display:flex;gap:8px;align-items:center;color:#96a1ae;font-size:12px}.important-badge{background:#fff0ed;color:#e46359;border-radius:999px;padding:3px 8px}.notice-card h3{margin:9px 0 7px}.notice-card p{color:#768393;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:0}.notice-card footer{margin-top:15px;display:flex;gap:12px;color:#a0aab6;font-size:12px}.notice-full{white-space:pre-wrap;line-height:1.8;color:#536171}.chat-shell{height:calc(100vh - 190px);min-height:570px;background:#fff;border:1px solid var(--border);border-radius:18px;display:grid;grid-template-columns:300px 1fr;overflow:hidden}.chat-list{border-right:1px solid var(--border);overflow:auto}.chat-list button{width:100%;border:0;border-bottom:1px solid #edf1f5;background:#fff;padding:15px;display:flex;align-items:center;gap:10px;text-align:left}.chat-list button.active{background:#eef6ff}.chat-list button>span,.avatar-small{width:42px;height:42px;border-radius:50%;background:#dceeff;color:#3d83c0;display:grid;place-items:center;font-weight:700;flex:0 0 auto}.chat-list button div{min-width:0;flex:1}.chat-list b,.chat-list small{display:block}.chat-list small{color:#99a4b1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}.chat-list em{font-style:normal;background:#f26565;color:#fff;border-radius:999px;min-width:20px;padding:2px 6px;text-align:center;font-size:11px}.chat-main{min-width:0;display:flex;flex-direction:column}.chat-main>header{padding:17px 20px;border-bottom:1px solid var(--border)}.chat-main>header b,.chat-main>header span{display:block}.chat-main>header span{color:#99a4b1;font-size:12px;margin-top:3px}.message-list{flex:1;overflow:auto;background:#f7f9fc;padding:22px}.message-bubble{max-width:72%;margin-bottom:14px}.message-bubble p{display:inline-block;background:#fff;border-radius:5px 15px 15px;padding:10px 13px;margin:0;box-shadow:0 3px 12px #2d475f0f;line-height:1.6}.message-bubble time{display:block;color:#a1abb7;font-size:10px;margin-top:4px}.message-bubble.mine{margin-left:auto;text-align:right}.message-bubble.mine p{background:#4d94d8;color:#fff;border-radius:15px 5px 15px 15px}.message-compose{display:flex;gap:10px;padding:14px;border-top:1px solid var(--border)}.message-compose textarea{height:64px}.message-compose button{align-self:stretch}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.simple-list>div{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #edf1f5}.simple-list>div>div{flex:1}.simple-list b,.simple-list small{display:block}.simple-list small{color:#99a4b1;margin-top:4px}.list-icon{width:42px;height:42px;border-radius:12px;background:#edf6ff;color:#478bc8;display:grid;place-items:center}.list-icon svg{width:20px}.classroom-screen{min-height:100vh;margin:0;background:linear-gradient(145deg,#e8f2fc,#f7faff 48%,#edf5fc);color:#27313d}.classroom-topbar{height:76px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 3vw;background:#fffffff0;border-bottom:1px solid #dce7f1;box-shadow:0 8px 28px #2d52750f;position:sticky;top:0;z-index:10}.classroom-brand{display:flex;align-items:center;gap:10px}.classroom-brand>svg{width:38px;height:38px;padding:8px;border-radius:11px;background:#e9f4ff;color:#398bd0}.classroom-brand b,.classroom-brand span{display:block}.classroom-brand b{font-size:20px}.classroom-brand span{color:#8a97a6;font-size:11px;margin-top:3px}.classroom-controls{display:flex;align-items:center;gap:7px}.classroom-controls>button{width:40px;height:40px;border:1px solid #d8e4ef;border-radius:10px;background:#fff;color:#4b8cc5;display:grid;place-items:center;cursor:pointer}.classroom-controls>button:disabled{opacity:.5;cursor:not-allowed}.classroom-controls>button svg{width:18px}.classroom-controls>.classroom-settings{width:30px;height:30px;border-color:transparent;background:transparent;color:#aab4be;opacity:.45}.classroom-controls>.classroom-settings:hover,.classroom-controls>.classroom-settings:focus-visible{opacity:1;background:#f1f5f8;color:#71808e}.classroom-controls>.classroom-settings svg{width:15px}.spinning{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.classroom-content{max-width:1500px;margin:auto;padding:36px 4vw 60px}.classroom-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:24px}.classroom-heading span{color:#488bc5;font-size:13px;font-weight:700}.classroom-heading h1{font-size:34px;margin:4px 0 0}.classroom-heading small{color:#8d99a7}.classroom-task-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.classroom-task-card{background:#fff;border:1px solid #dfe8f1;border-radius:22px;padding:26px;box-shadow:0 12px 36px #2d527512}.classroom-task-card>header{display:flex;align-items:start;justify-content:space-between;gap:18px;padding-bottom:20px;border-bottom:1px solid #ebf0f4}.classroom-task-card>header span{display:inline-block;color:#3887cb;background:#ebf5ff;border-radius:999px;padding:4px 10px;font-size:13px;font-weight:700}.classroom-task-card h2{font-size:24px;margin:10px 0 0}.classroom-task-card em{font-style:normal;color:#419b59;background:#eaf8ee;border-radius:999px;padding:5px 11px;font-size:12px;white-space:nowrap}.classroom-task-card em.closed{color:#788592;background:#eef1f4}.pending-title{display:flex;justify-content:space-between;align-items:center;margin:20px 0 14px}.pending-title b{font-size:19px;color:#e18329}.pending-title span{font-size:12px;color:#9aa5b1}.classroom-number-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:11px}.classroom-number-grid strong{min-height:58px;display:grid;place-items:center;border-radius:12px;border:1px solid #f0d6b8;background:#fff7ed;color:#c96c14;font-size:24px;letter-spacing:.5px}.classroom-all-done{min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#4aac63}.classroom-all-done svg{width:42px;height:42px}.classroom-all-done b{font-size:20px;margin-top:8px}.classroom-empty,.classroom-select-prompt{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#8694a4}.classroom-empty svg,.classroom-select-prompt svg{width:62px;height:62px;color:#8fb7d8}.classroom-empty b{font-size:22px;color:#5c6978;margin-top:14px}.classroom-empty p,.classroom-select-prompt p{margin:8px 0}.classroom-select-prompt h1{color:#3a4653;margin:20px 0 0;font-size:34px}.classroom-selector-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#141f2b61;display:grid;place-items:center;padding:20px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.classroom-selector-card{position:relative;width:min(420px,100%);background:#fff;border:1px solid #dce7f0;border-radius:22px;padding:30px;box-shadow:0 24px 80px #182e4538;text-align:center}.classroom-selector-close{position:absolute;right:16px;top:16px;width:34px;height:34px;border:0;border-radius:9px;background:#f4f7fa;color:#8996a3;display:grid;place-items:center;cursor:pointer}.classroom-selector-close svg{width:18px}.classroom-selector-icon{width:54px;height:54px;margin:0 auto 14px;border-radius:16px;background:#eaf4fd;color:#438bc8;display:grid;place-items:center}.classroom-selector-icon svg{width:27px}.classroom-selector-card h2{margin:0;font-size:24px}.classroom-selector-card>p{margin:9px auto 22px;color:#8793a0;font-size:14px;line-height:1.6}.classroom-selector-field{text-align:left;display:block}.classroom-selector-field span{display:block;margin-bottom:7px;color:#697685;font-size:13px;font-weight:700}.classroom-selector-field select{width:100%;height:48px;border:1px solid #d5e0e9;border-radius:11px;background:#fff;padding:0 12px;font-size:16px}.classroom-selector-confirm{width:100%;height:48px;margin-top:16px;border:0;border-radius:11px;background:#438fd1;color:#fff;font-size:16px;font-weight:700;cursor:pointer}.classroom-selector-confirm:disabled{background:#d8e0e7;color:#99a4ae;cursor:not-allowed}.classroom-selector-card>small{display:block;margin-top:11px;color:#a1abb5}.homework-date{width:155px}.homework-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:18px;align-items:start}.homework-task-list{padding:14px}.homework-task-list .panel-head{padding:8px 8px 0}.homework-task-list>button{width:100%;border:1px solid transparent;border-radius:13px;background:transparent;padding:13px;text-align:left;cursor:pointer;margin:3px 0;color:#536171}.homework-task-list>button:hover{background:#f7faff}.homework-task-list>button.active{background:#edf6ff;border-color:#bdd9f1}.homework-task-list>button span,.homework-task-list>button b,.homework-task-list>button small{display:block}.homework-task-list>button span{font-size:12px;color:#4188c6}.homework-task-list>button b{margin:5px 0}.homework-task-list>button small{color:#98a3b0}.homework-collector{padding:26px}.collector-head{display:flex;justify-content:space-between;align-items:start;gap:20px}.collector-head h3{font-size:24px;margin:10px 0 7px}.collector-head p{color:#7e8a99;margin:0;white-space:pre-wrap}.subject-badge{display:inline-block;border-radius:999px;background:#eaf4ff;color:#3d86c6;padding:4px 10px;font-size:12px;font-weight:700}.collector-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:24px}.collector-stats>div{border-radius:13px;background:#f7f9fc;padding:14px 16px}.collector-stats strong,.collector-stats span{display:block}.collector-stats strong{font-size:25px;color:#397fbc}.collector-stats span{color:#8e99a7;font-size:12px;margin-top:3px}.progress-bar{height:7px;background:#edf1f5;border-radius:999px;overflow:hidden}.progress{height:100%;background:linear-gradient(90deg,#4d94d8,#55bd72);border-radius:999px;transition:width .25s}.homework-progress{margin:13px 0 22px}.scan-form{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;border:2px solid #8bbde6;border-radius:14px;padding:6px 6px 6px 14px;box-shadow:0 0 0 4px #4d94d814}.scan-form>svg{width:20px;color:#4c92cf}.scan-form input{border:0;box-shadow:none;font-size:17px}.number-section{margin-top:25px}.section-line{display:flex;justify-content:space-between;align-items:end}.section-line h4{font-size:18px;margin:0}.section-line span{color:#9aa5b2;font-size:12px}.number-cloud{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));gap:10px;margin-top:13px;min-height:90px}.number-cloud>button{border:1px solid #d8e5f0;background:#f8fbfe;border-radius:12px;padding:12px 8px;color:#3b78aa;cursor:pointer}.number-cloud>button:hover{background:#e8f4ff;border-color:#83b8e3;transform:translateY(-1px)}.number-cloud>button:disabled{cursor:not-allowed;opacity:.6}.number-cloud>button b,.number-cloud>button span{display:block}.number-cloud>button b{font-size:20px}.number-cloud>button span{font-size:12px;color:#768494;margin-top:4px}.all-done{grid-column:1/-1;min-height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#4bab65}.all-done svg{width:34px}.all-done b{margin-top:7px}.completed-list{margin-top:24px;border-top:1px solid #edf1f5;padding-top:18px}.completed-list summary{color:#4a88bd;cursor:pointer}.completed-list>div{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}.completed-list span{display:flex;align-items:center;gap:5px;background:#edf8f0;color:#4b8d5c;border-radius:9px;padding:6px 8px}.completed-list span button{border:0;background:transparent;color:#799987;display:grid;place-items:center;padding:2px;cursor:pointer}.completed-list span svg{width:14px}.student-homework-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.student-homework-card{display:grid;grid-template-columns:54px 1fr;gap:16px;border-left:4px solid #eca24a}.student-homework-card.done{border-left-color:#53b86b}.homework-state{width:50px;height:50px;border-radius:15px;background:#fff5e8;color:#e79532;display:grid;place-items:center}.done .homework-state{background:#eaf8ee;color:#48aa60}.homework-state svg{width:25px}.student-task-meta{display:flex;justify-content:space-between;align-items:center;color:#9aa5b2;font-size:12px}.student-homework-card h3{margin:12px 0 6px}.student-homework-card p{color:#798696;white-space:pre-wrap}.student-status{display:block;margin-top:16px;color:#de8c2e}.done .student-status{color:#45a45d}.attendance-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.attendance-summary article{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--border);border-radius:16px;padding:19px 21px;box-shadow:0 8px 28px #2d52750d}.attendance-summary-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center}.attendance-summary-icon svg{width:23px}.attendance-summary-icon.blue{background:#eaf4ff;color:#438bc9}.attendance-summary-icon.orange{background:#fff4e5;color:#e99331}.attendance-summary-icon.green{background:#eaf8ef;color:#4baa62}.attendance-summary b,.attendance-summary small{display:block}.attendance-summary b{font-size:27px}.attendance-summary small{color:#8f9aa7;margin-top:3px}.attendance-calendar-panel{padding:28px}.attendance-calendar-head{display:flex;align-items:center;justify-content:center;gap:22px;margin-bottom:25px;text-align:center}.attendance-calendar-head h3{margin:0;font-size:21px}.attendance-calendar-head p{margin:6px 0 0;color:#99a4b1;font-size:12px}.attendance-weekdays,.attendance-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px}.attendance-weekdays{margin-bottom:9px}.attendance-weekdays span{text-align:center;color:#8793a1;font-weight:700;font-size:13px;padding:7px}.attendance-calendar-grid{transition:opacity .2s}.attendance-calendar-grid.loading,.attendance-student-grid.loading{opacity:.55;pointer-events:none}.attendance-calendar-grid>button{position:relative;min-height:94px;border:1px solid #dce9e1;border-radius:14px;background:#f2fbf5;color:#377f54;padding:12px;cursor:pointer;text-align:left;transition:.18s}.attendance-calendar-grid>button:hover:not(:disabled){border-color:#82c69a;transform:translateY(-2px);box-shadow:0 8px 18px #3f89581a}.attendance-calendar-grid>button b,.attendance-calendar-grid>button span{display:block}.attendance-calendar-grid>button b{font-size:18px}.attendance-calendar-grid>button span{margin-top:14px;color:#72a181;font-size:11px}.attendance-calendar-grid>button.leave{background:#fff6e8;border-color:#f0d29d;color:#c2751d}.attendance-calendar-grid>button.leave span{color:#cf7b1e;font-weight:700}.attendance-calendar-grid>button.weekend:not(.leave){background:#fafbfc;border-color:#e8edf1;color:#85909c}.attendance-calendar-grid>button.weekend:not(.leave) span{color:#a5aeb8}.attendance-calendar-grid>button.future{opacity:.58}.attendance-calendar-grid>button.today{box-shadow:inset 0 0 0 2px #5298d6}.attendance-calendar-grid>button.today:after{content:"今天";position:absolute;right:8px;top:8px;border-radius:999px;background:#e5f2ff;color:#3a84c4;padding:2px 6px;font-size:9px}.attendance-calendar-grid>button.empty{visibility:hidden;pointer-events:none}.attendance-legend{display:flex;justify-content:center;gap:22px;margin-top:21px;color:#84909e;font-size:12px}.attendance-legend span{display:flex;align-items:center;gap:6px}.attendance-legend i{width:10px;height:10px;border-radius:3px}.attendance-legend i.normal{background:#ccebd6}.attendance-legend i.leave{background:#f2cb8a}.attendance-legend i.today{background:#75aee0}.attendance-back{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:#4288c5;padding:0;margin:0 0 14px;cursor:pointer}.attendance-back svg{width:18px}.attendance-day-heading{align-items:flex-end}.attendance-day-stats{display:flex;gap:10px}.attendance-day-stats span{min-width:92px;border-radius:13px;background:#eaf8ef;color:#4d9b62;padding:12px 15px}.attendance-day-stats span.leave{background:#fff4e5;color:#c77920}.attendance-day-stats b{font-size:23px;margin-right:5px}.attendance-day-panel{padding:26px}.attendance-student-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));gap:11px;transition:opacity .2s}.attendance-student-grid>button{min-height:86px;border:1px solid #cfe4d6;border-radius:13px;background:#f1fbf4;color:#3b8756;padding:11px 8px;cursor:pointer;transition:.18s;overflow:hidden}.attendance-student-grid>button:hover{transform:translateY(-2px);box-shadow:0 8px 18px #2b5b3c17}.attendance-student-grid>button.leave{background:#fff4e5;border-color:#efcb91;color:#c3751d}.attendance-student-grid b,.attendance-student-grid span,.attendance-student-grid small{display:block}.attendance-student-grid b{font-size:23px}.attendance-student-grid span{font-size:12px;margin-top:4px}.attendance-student-grid small{margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#a57843}.attendance-modal{text-align:left}.attendance-modal>p{color:#85919e;line-height:1.6}.attendance-number{width:64px;height:64px;border-radius:18px;background:#eaf4ff;color:#3c84c3;display:grid;place-items:center;font-size:25px;font-weight:800;margin-bottom:17px}.attendance-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.attendance-modal-actions .restore{margin-right:auto;color:#4c9660;border-color:#b8dec3}.attendance-modal-actions button{min-width:130px}@media (max-width:900px){.roll-layout,.admin-grid,.homework-layout{grid-template-columns:1fr}.homework-task-list{display:flex;overflow-x:auto;gap:8px}.homework-task-list .panel-head{min-width:180px}.homework-task-list>button{min-width:210px}.duty-grid,.notices-grid{grid-template-columns:1fr}.committee-row{grid-template-columns:130px 1fr 190px 40px}.chat-shell{grid-template-columns:240px 1fr}}@media (max-width:760px){.login-page{grid-template-columns:1fr;background:linear-gradient(180deg,#eaf4ff 0,#f8fbff 42%,#fff 42%);padding:28px 16px;gap:24px}.login-intro{text-align:center}.login-logo{margin:auto}.login-intro h1{font-size:32px}.login-intro>p:not(.eyebrow){font-size:14px}.role-pills{justify-content:center}.login-card{justify-self:center;padding:22px}.page-heading{align-items:flex-start}.page-heading h2{font-size:24px}.summary-strip{grid-template-columns:1fr 1fr}.toolbar{align-items:stretch;flex-direction:column}.search-box{max-width:none;min-width:0}.committee-row{grid-template-columns:1fr 1fr}.committee-row textarea{grid-column:1/-1;order:3}.duty-member{grid-template-columns:1fr 1fr 36px}.chat-shell{grid-template-columns:1fr;height:auto}.chat-list{max-height:220px;border-right:0;border-bottom:1px solid var(--border)}.chat-main{height:520px}.class-select select{min-width:80px}.user-chip,.top-actions button span{display:none}.seat-toolbar{align-items:stretch}.dimension-inputs{justify-content:center}.draw-stage{min-height:280px}.draw-stage.active strong{font-size:52px}}@media (max-width:760px){.student-homework-list{grid-template-columns:1fr}.collector-head{display:block}.collector-head .outline-btn{margin-top:14px}.scan-form{grid-template-columns:20px minmax(0,1fr)}.scan-form button{grid-column:1/-1}.homework-collector{padding:19px}}@media (max-width:760px){.number-cloud{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:10px}.number-cloud>button{min-height:64px;padding:8px 4px;border-radius:10px}.number-cloud>button b{font-size:17px}.number-cloud>button span{font-size:10px;margin-top:2px}}@media (max-width:600px){.number-cloud{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:8px}.number-cloud>button{min-height:56px;padding:6px 2px;border-radius:8px}.number-cloud>button b{font-size:15px}.number-cloud>button span{font-size:9px;margin-top:1px}}@media (max-width:760px){.homework-collector .number-cloud{grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}.homework-collector .number-cloud>button{min-height:60px;padding:6px 1px}.homework-collector .number-cloud>button b{font-size:17px}.homework-collector .number-cloud>button span{font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@media (max-width:600px){.homework-collector .number-section-actions{flex-wrap:wrap}.homework-collector .number-section-actions>span{flex-basis:100%}.homework-collector .number-section-actions .copy-pending-button{flex:1;justify-content:center}}@media (max-width:760px){.classroom-topbar{height:76px;padding:0 16px}.classroom-brand>svg{width:38px;height:38px}.classroom-brand b{font-size:19px}.classroom-content{padding:24px 16px 45px}.classroom-heading{display:block}.classroom-heading h1{font-size:28px}.classroom-heading small{display:block;margin-top:7px}.classroom-task-grid{grid-template-columns:1fr}.classroom-task-card{padding:20px}.classroom-task-card h2{font-size:21px}.classroom-number-grid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr))}.classroom-number-grid strong{font-size:20px;min-height:52px}.classroom-selector-card{padding:26px 20px}}@media (max-width:760px){.attendance-summary{grid-template-columns:1fr 1fr}.attendance-summary article:last-child{grid-column:1/-1}.attendance-calendar-panel{padding:16px 10px}.attendance-calendar-head{gap:12px}.attendance-weekdays,.attendance-calendar-grid{gap:4px}.attendance-calendar-grid>button{min-height:68px;border-radius:9px;padding:7px}.attendance-calendar-grid>button b{font-size:15px}.attendance-calendar-grid>button span{margin-top:9px;font-size:9px}.attendance-calendar-grid>button.today:after{display:none}.attendance-legend{gap:12px;flex-wrap:wrap}.attendance-day-heading{align-items:flex-start}.attendance-day-stats{width:100%}.attendance-day-stats span{flex:1}.attendance-student-grid{grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:8px}.attendance-student-grid>button{min-height:75px}.attendance-modal-actions{flex-direction:column-reverse}.attendance-modal-actions .restore{margin:0}.attendance-modal-actions button{width:100%}}@media (max-width:480px){.form-row{grid-template-columns:1fr;gap:0}.summary-strip{grid-template-columns:1fr}.page-heading{flex-direction:column}.page-heading>.toolbar-actions{width:100%}.page-heading>.toolbar-actions>*{flex:1}.committee-row{grid-template-columns:1fr 38px}.committee-row select{grid-column:1/-1}.duty-member{grid-template-columns:1fr 36px}.duty-member input{grid-column:1/-1;order:3}.notices-grid{display:block}.notice-card{margin-bottom:12px}.modal-card{padding:22px}.top-actions .class-select{max-width:160px}.class-select svg{display:none}}@media (min-width:761px){.top-actions .user-chip{display:flex;align-items:center;min-height:46px;padding:8px 15px;font-size:17px}.top-actions .class-select{min-height:46px;gap:8px;padding:6px 11px}.top-actions .class-select svg{width:20px;height:20px}.top-actions .class-select select{min-width:135px;font-size:20px}}@media print{.sidebar,.topbar,.page-heading .toolbar-actions,.toolbar,.scrim{display:none!important}main{margin:0}.content{padding:0}.panel{box-shadow:none;border:0}.seat-card{break-inside:avoid}.seating-wrap{border:0}.page-heading p{display:none}}.number-section-actions{display:flex;align-items:center;gap:10px}.copy-pending-button{display:inline-flex;align-items:center;gap:5px;border:1px solid #b9d8ee;border-radius:8px;background:#f7fbff;color:#3f83bb;padding:5px 8px;font-size:12px;cursor:pointer}.copy-pending-button:hover,.copy-pending-button:focus-visible{border-color:#4d94d8;background:#eaf4ff}.copy-pending-button svg{width:14px;height:14px}.classroom-screen-timetable{height:100vh;overflow:hidden;display:flex;flex-direction:column}.classroom-screen-timetable .classroom-topbar{position:relative;flex:0 0 76px}.classroom-screen-timetable .classroom-content{width:100%;max-width:none;flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;padding:12px 2vw 16px}.classroom-screen-timetable .classroom-timetable{flex:1;min-height:0;overflow:hidden;padding:0}.classroom-screen-timetable .timetable-grid{width:100%;height:100%;min-width:0;grid-template-columns:minmax(110px,.75fr) repeat(5,minmax(0,1fr));grid-auto-rows:minmax(0,1fr)}.classroom-screen-timetable .tt-head,.classroom-screen-timetable .period-cell,.classroom-screen-timetable .subject-cell{min-height:0;padding:8px;overflow:hidden}.classroom-screen-timetable .tt-head{display:grid;place-items:center}@media (max-width:760px){.classroom-screen-timetable .classroom-content{padding:78px 6px 8px}.classroom-screen-timetable .classroom-timetable{border-radius:8px}.classroom-screen-timetable .timetable-grid{grid-template-columns:58px repeat(5,minmax(0,1fr))}.classroom-screen-timetable .tt-head,.classroom-screen-timetable .period-cell,.classroom-screen-timetable .subject-cell{padding:4px 2px;font-size:11px}.classroom-screen-timetable .period-cell span,.classroom-screen-timetable .subject-cell small{font-size:9px}.classroom-screen-timetable .period-cell b,.classroom-screen-timetable .subject-cell b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.content-roll-call{max-width:none;min-height:calc(100vh - 90px);display:flex;flex-direction:column;padding:18px 24px 24px}.content-roll-call .roll-call-page{flex:1;min-height:0;gap:10px}.content-roll-call .roll-call-page .page-heading{display:none}.content-roll-call .roll-call-layout{flex:1;min-height:0;grid-template-columns:1fr}.content-roll-call .roll-card{height:100%;min-height:0;display:flex;flex-direction:column}.content-roll-call .roll-card .draw-stage{flex:1;min-height:0}@media (max-width:760px){.content-roll-call{min-height:calc(100vh - 68px);padding:10px 12px 14px}.content-roll-call .roll-card{padding:16px}.content-roll-call .scope-tabs{gap:5px}.content-roll-call .scope-tabs button{flex:1;padding:8px 6px;font-size:12px}}.classroom-screen-rollcall{height:100vh;overflow:hidden;display:flex;flex-direction:column}.classroom-screen-rollcall .classroom-topbar{position:relative;flex:0 0 76px}.classroom-screen-rollcall .classroom-content{width:100%;max-width:none;flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;padding:12px 2vw 16px}.classroom-screen-rollcall .classroom-rollcall{flex:1;min-height:0}.classroom-screen-rollcall .classroom-rollcall .roll-card{height:100%;display:flex;flex-direction:column}.classroom-screen-rollcall .classroom-rollcall .draw-stage{flex:1;min-height:0}@media (max-width:760px){.classroom-screen-rollcall .classroom-content{padding:78px 10px 12px}.classroom-screen-rollcall .classroom-rollcall .roll-card{padding:16px}.classroom-screen-rollcall .scope-tabs{gap:5px}.classroom-screen-rollcall .scope-tabs button{flex:1;padding:8px 5px;font-size:12px}}:root{font-family:Inter,Noto Sans SC,PingFang SC,Microsoft YaHei,system-ui,sans-serif;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--primary-strong:#347fbe}.app-shell{background:radial-gradient(circle at 92% -10%,color-mix(in srgb,var(--primary-soft) 78%,white),transparent 34%),#f4f8fc}nav button.active{color:var(--primary-strong);font-weight:750}.topbar{height:82px;background:#ffffffe6;border-bottom-color:color-mix(in srgb,var(--primary) 13%,var(--border));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.top-actions{gap:10px}.top-actions button{min-height:44px;padding:9px 14px;border-radius:13px;font-size:16px;transition:.18s ease}.top-actions button:hover{border-color:color-mix(in srgb,var(--primary) 45%,#fff);color:var(--primary-strong);background:var(--primary-soft)}.top-actions svg{color:var(--primary)}.user-chip{background:var(--primary-soft);color:var(--primary-strong);font-weight:650;padding:9px 14px}.account-menu-wrap{position:relative}.account-trigger{cursor:pointer}.account-menu{position:absolute;right:0;top:52px;width:164px;padding:7px;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 16px 35px #20416029;z-index:80}.account-menu button{width:100%;border:0!important;background:transparent!important;justify-content:flex-start!important;min-height:38px!important;padding:8px 10px!important;font-size:14px!important}.account-menu button:hover{background:var(--primary-soft)!important}.account-menu button svg{width:17px}.theme-modal,.password-modal{width:min(430px,100%)}.modal-subtitle{margin:-10px 0 18px;color:#8995a3;line-height:1.6}.theme-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.theme-option{position:relative;display:flex;align-items:center;gap:10px;border:1px solid var(--border);background:#fff;border-radius:13px;padding:13px;text-align:left;color:#536171;cursor:pointer}.theme-option.selected{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-strong);font-weight:700}.theme-option svg{margin-left:auto;width:17px;color:var(--primary)}.theme-swatch{width:26px;height:26px;border-radius:9px;box-shadow:inset 0 0 0 2px #ffffff8c}@media (max-width:760px){.topbar{height:72px}.top-actions{gap:6px}.account-trigger,.logout-btn{padding:9px!important}.account-menu{right:-4px}.theme-grid{grid-template-columns:1fr}}.growth-tabs{display:flex;align-self:flex-start;background:#e7edf4;border-radius:13px;padding:4px;gap:4px}.growth-tabs button{border:0;background:transparent;color:#778494;border-radius:10px;padding:10px 17px;display:flex;align-items:center;gap:7px;cursor:pointer}.growth-tabs button svg{width:18px}.growth-tabs button.active{background:#fff;color:#3e87c7;font-weight:700;box-shadow:0 3px 12px #2b49651a}.growth-search{padding:16px}.growth-student-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.growth-student-card{background:#fff;border:1px solid var(--border);border-radius:18px;padding:20px;box-shadow:0 8px 28px #2d52750d;cursor:pointer;transition:.18s}.growth-student-card:hover{transform:translateY(-2px);border-color:#b9d7ed;box-shadow:0 13px 32px #2d52751a}.growth-student-card>header{display:flex;align-items:center;gap:12px}.growth-student-card>header>div{flex:1}.growth-student-card>header b,.growth-student-card>header small{display:block}.growth-student-card>header b{font-size:18px}.growth-student-card>header small{color:#919ca9;margin-top:5px}.growth-student-card>header>svg{width:18px;color:#aab4bf}.student-avatar{width:48px;height:48px;border-radius:15px;background:linear-gradient(145deg,#6bb8e8,#4187ce);color:#fff;display:grid;place-items:center;font-size:20px;font-weight:800}.growth-card-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.growth-card-stats span{background:#f7f9fc;border-radius:11px;padding:10px}.growth-card-stats small,.growth-card-stats b{display:block}.growth-card-stats small{color:#94a0ae;font-size:11px}.growth-card-stats b{margin-top:5px;color:#4a647c}.growth-student-card>footer{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid #edf1f5;padding-top:13px;color:#98a3b0;font-size:12px}.growth-student-card>footer button{border:0;border-radius:9px;background:#eaf4ff;color:#3b85c5;padding:7px 10px;display:flex;align-items:center;gap:4px;cursor:pointer}.growth-student-card>footer svg{width:14px}.growth-profile{overflow:hidden;background:#fff;border:1px solid var(--border);border-radius:20px;box-shadow:0 10px 35px #2d52750f}.growth-profile>header{display:flex;align-items:center;gap:14px;padding:22px 25px;background:linear-gradient(110deg,#469bd8,#67b9e5);color:#fff}.growth-profile>header>span{width:58px;height:58px;border-radius:18px;background:#fff3;display:grid;place-items:center;font-size:25px;font-weight:800}.growth-profile h3{font-size:22px;margin:0}.growth-profile p{margin:6px 0 0;opacity:.8}.growth-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:20px;gap:12px}.growth-summary>span{position:relative;min-width:0;border:1px solid #edf1f5;border-radius:14px;padding:15px 14px 14px 43px}.growth-summary>span>svg{position:absolute;left:14px;top:16px;width:20px;color:#5a9bd0}.growth-summary small,.growth-summary b,.growth-summary em{display:block}.growth-summary small{color:#929dab}.growth-summary b{font-size:22px;margin:7px 0 4px}.growth-summary .comment-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16px;margin-top:10px}.growth-summary em{font-style:normal;color:#a1abb7;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-tabs{display:flex;gap:7px;overflow-x:auto}.timeline-tabs button{border:1px solid #dfe6ed;background:#fff;color:#758292;border-radius:999px;padding:8px 15px;white-space:nowrap;cursor:pointer}.timeline-tabs button.active{background:#eaf4ff;border-color:#a9d0ed;color:#3485c7;font-weight:700}.growth-timeline{padding:25px}.timeline-item{position:relative;display:grid;grid-template-columns:42px minmax(0,1fr);gap:16px;padding-bottom:26px}.timeline-item:not(:last-child):before{content:"";position:absolute;left:20px;top:38px;bottom:-2px;width:2px;background:#dcece8}.timeline-dot{position:relative;z-index:1;width:42px;height:42px;border-radius:50%;background:#e8f8f2;color:#4caf8b;display:grid;place-items:center}.timeline-dot svg{width:19px}.timeline-item.exam .timeline-dot{background:#eaf4ff;color:#488fcf}.timeline-item.attendance .timeline-dot{background:#fff3e2;color:#de8e31}.timeline-item.homework .timeline-dot{background:#f0edff;color:#7c65cb}.timeline-content{min-width:0;border:1px solid #edf1f5;border-radius:15px;padding:17px 19px;background:#fff}.timeline-content>header{display:flex;align-items:center;justify-content:space-between;gap:12px}.timeline-content>header>div{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.timeline-content time{color:#8e9aa8;font-size:12px}.record-tag,.private-tag{display:inline-flex;align-items:center;gap:3px;border-radius:999px;background:#e9f8f1;color:#45a37e;padding:3px 8px;font-size:10px}.private-tag{background:#f1f3f6;color:#7d8997}.private-tag svg{width:11px}.timeline-content h3{margin:10px 0 7px;font-size:17px}.timeline-content>p{white-space:pre-wrap;color:#667485;line-height:1.7;margin:0}.record-actions{display:flex!important}.record-actions button{border:0;background:transparent;color:#4b8ac0;display:flex;align-items:center;gap:3px;font-size:12px;cursor:pointer}.record-actions button svg{width:13px}.record-actions button.danger{color:#d76b6b}.score-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}.score-chips span{border-radius:9px;background:#edf6ff;color:#4f7ea7;padding:7px 10px;font-size:12px}.score-chips span b{margin-right:6px}.score-chips strong{color:#397fbd;font-size:13px}.homework-timeline-state{display:inline-flex;gap:9px;margin-top:10px;border-radius:9px;background:#fff3e2;color:#c77c25;padding:7px 10px;font-size:12px}.homework-timeline-state.completed{background:#eaf8ee;color:#459c5b}.attachment-list{display:flex;flex-direction:column;align-items:flex-start;gap:7px;margin-top:13px}.attachment-list>span{max-width:100%;display:flex;align-items:center;gap:6px;background:#f6f8fa;border-radius:9px;padding:7px 9px}.attachment-list svg{width:15px;color:#7e8c9a}.attachment-list a{color:#4287c3;text-decoration:none;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-list small{color:#a0a9b4}.attachment-list button{border:0;background:transparent;display:grid;place-items:center;cursor:pointer}.record-creator{display:block;color:#9da7b2;margin-top:12px}.growth-record-modal{width:min(620px,100%)}.attachment-picker>span{display:flex;align-items:center;gap:6px}.attachment-picker svg{width:16px}.selected-files{display:flex;flex-direction:column;gap:6px}.selected-files span{display:flex;align-items:center;gap:7px;background:#f5f8fb;border-radius:9px;padding:8px 10px;font-size:12px}.selected-files svg{width:15px;color:#518fc5}.selected-files small{margin-left:auto;color:#96a2af}.exam-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.exam-card{display:flex;align-items:center;gap:14px;padding:19px;cursor:pointer}.exam-card>div{flex:1}.exam-card h3{margin:5px 0}.exam-card p,.exam-card small{color:#929eab;margin:0;font-size:12px}.exam-card>em{font-style:normal;border-radius:999px;padding:5px 9px;background:#f0f2f5;color:#7f8b98;font-size:11px}.exam-card>em.published{background:#eaf8ee;color:#459c5b}.exam-card>svg{width:17px;color:#a3afbb}.exam-icon{width:46px;height:46px;border-radius:13px;background:#eaf4ff;color:#3f88c8;display:grid;place-items:center}.exam-icon svg{width:22px}.exam-meta-editor{padding:22px}.exam-meta-editor label{color:#687586;font-size:13px}.exam-subject-editor{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.exam-subject-editor>div{display:grid;grid-template-columns:110px 80px 30px;gap:5px}.exam-subject-editor input{padding:8px}.exam-subject-editor button,.subject-create-list>div button{border:0;background:#f3f5f7;color:#8995a2;border-radius:8px;display:grid;place-items:center;cursor:pointer}.exam-subject-editor button svg,.subject-create-list button svg{width:15px}.gradebook-panel{overflow:hidden}.gradebook-tip{display:flex;align-items:center;gap:8px;padding:14px 17px;background:#edf6ff;color:#4b83b2;font-size:12px}.gradebook-tip svg{width:18px}.gradebook-scroll{overflow:auto;max-height:62vh}.gradebook-table{min-width:max-content}.gradebook-table th{position:sticky;top:0;z-index:2;min-width:175px}.gradebook-table th:first-child{min-width:75px}.gradebook-table th:nth-child(2){min-width:110px}.gradebook-table th small{display:block;font-weight:400;margin-top:4px}.gradebook-table td{background:#fff}.gradebook-table td:nth-child(2) small{display:block;color:#b17b3f}.score-cell{display:grid;grid-template-columns:90px 68px;gap:5px}.score-cell input,.score-cell select{padding:7px 6px;border-radius:7px;font-size:12px}.subject-create-list>label{display:block;color:#687586;font-size:13px;margin:15px 0 8px}.subject-create-list>div{display:grid;grid-template-columns:1fr 110px 34px;gap:7px;margin:7px 0}.subject-create-list>div input{padding:9px}.outline-btn.danger{color:#d86666;border-color:#edcccc}@media (max-width:900px){.growth-student-grid,.exam-list{grid-template-columns:1fr}.growth-summary{grid-template-columns:1fr 1fr}}@media (max-width:760px){.growth-summary{grid-template-columns:1fr}.growth-profile>header{padding:18px}.growth-timeline{padding:15px 10px}.timeline-item{grid-template-columns:32px minmax(0,1fr);gap:9px}.timeline-dot{width:32px;height:32px}.timeline-item:not(:last-child):before{left:15px;top:29px}.timeline-content{padding:14px}.timeline-content>header{align-items:flex-start;flex-direction:column}.record-actions{width:100%;justify-content:flex-end}.growth-detail-heading,.exam-editor-heading{align-items:stretch}.exam-editor-heading>.toolbar-actions{width:100%}.exam-editor-heading>.toolbar-actions button{flex:1}.exam-subject-editor>div{grid-template-columns:minmax(100px,1fr) 75px 30px}.growth-card-stats{grid-template-columns:1fr 1fr}.growth-card-stats span:last-child{grid-column:1/-1}.gradebook-scroll{max-height:58vh}}.score-trend{border-top:1px solid #edf1f5;padding:18px 22px;display:grid;grid-template-columns:220px minmax(0,1fr);gap:22px;align-items:center}.score-trend>div:first-child{display:flex;align-items:center;gap:11px}.score-trend>div:first-child>svg{width:25px;color:#4b91cc}.score-trend>div:first-child b,.score-trend>div:first-child small{display:block}.score-trend>div:first-child small{color:#98a3b0;margin-top:4px;font-size:11px}.score-trend-bars{height:115px;display:flex;align-items:end;gap:8px;border-bottom:1px solid #dfe7ee}.score-trend-bars>span{height:100%;min-width:55px;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:end;position:relative}.score-trend-bars i{width:22px;min-height:3px;max-height:82px;background:linear-gradient(180deg,#69b9e6,#4187cc);border-radius:6px 6px 2px 2px}.score-trend-bars i.missing{height:3px!important;background:#ccd5dd}.score-trend-bars b{font-size:10px;color:#4d718f;margin:3px 0}.score-trend-bars small{max-width:78px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8f9aa7;font-size:9px}@media (max-width:760px){.score-trend{grid-template-columns:1fr}.score-trend-bars{overflow-x:auto}.score-trend-bars>span{min-width:58px}}.term-list{display:flex;flex-direction:column}.term-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #edf1f5}.term-row>svg{width:20px;color:var(--primary)}.term-row>div{flex:1}.term-row b,.term-row small{display:block}.term-row small{color:#8f9baa;margin-top:4px;font-size:12px}.history-modal{width:min(520px,100%)}.history-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #edf1f5}.history-row>div{flex:1}.history-row b,.history-row small{display:block}.history-row small{margin-top:4px;color:#8f9baa;font-size:12px}.students-table{table-layout:auto}.students-table th:last-child{min-width:410px;text-align:left}.students-table td:last-child{white-space:nowrap;vertical-align:middle;padding-top:11px;padding-bottom:11px}.students-table td:last-child .text-btn{height:34px;line-height:1;vertical-align:middle;margin:0 2px;padding:7px 6px;white-space:nowrap}.students-table td:last-child .text-btn svg{width:16px;height:16px;flex:0 0 16px}.students-table td{vertical-align:middle}.students-table th{vertical-align:middle;white-space:nowrap}.students-search-box{width:360px;max-width:100%;min-width:0;flex:0 0 360px}.students-search-box input{width:auto;min-width:0;flex:1}.students-search-box button{flex:0 0 64px;white-space:nowrap;height:52px;padding:0 12px}.students-search-box{min-height:52px;height:52px}@media (max-width:760px){.students-search-box{width:100%;flex-basis:auto}}.classroom-mode-switch{display:flex;align-items:center;gap:4px;padding:4px;background:#edf4fb;border:1px solid #d8e6f2;border-radius:12px}.classroom-mode-switch button{display:flex;align-items:center;gap:6px;border:0;border-radius:9px;background:transparent;color:#718294;padding:8px 12px;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}.classroom-mode-switch button svg{width:16px}.classroom-mode-switch button.active{background:#fff;color:#397fbc;box-shadow:0 3px 10px #2d52751a}.classroom-timetable .subject-cell{flex-direction:column;gap:5px}.classroom-timetable .subject-cell small{color:#8b98a6;font-size:11px}@media (max-width:760px){.classroom-mode-switch{position:absolute;top:76px;left:16px;right:16px;justify-content:center}.classroom-mode-switch button{flex:1;justify-content:center}.classroom-content{padding-top:78px}}.shout-page{max-width:1120px}.shout-hero{display:flex;align-items:center;justify-content:space-between;min-height:160px;padding:28px 32px;background:linear-gradient(115deg,#fff8ed,#fff 62%);border-color:#f2dfbf;overflow:hidden}.shout-kicker{display:inline-flex;align-items:center;gap:7px;color:#c47727;font-size:13px;font-weight:800}.shout-kicker svg{width:18px}.shout-hero h2{margin:11px 0 7px;font-size:32px;color:#3b4652}.shout-hero p{margin:0;color:#8995a2}.shout-hero-mark{width:96px;height:96px;border-radius:30px;background:#ffe7bc;color:#dd8e31;display:grid;place-items:center;transform:rotate(9deg)}.shout-hero-mark svg{width:44px;height:44px;transform:rotate(-9deg)}.shout-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);gap:18px}.shout-composer,.shout-history{padding:24px}.live-badge{display:inline-flex;align-items:center;gap:6px;color:#479562;background:#edf9f0;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:700}.live-badge i{width:7px;height:7px;border-radius:50%;background:#53b86d}.shout-label{display:block;margin-top:20px;color:#5d6b7a;font-size:13px;font-weight:700}.shout-label textarea{width:100%;margin-top:8px;min-height:150px;resize:vertical;border:1px solid #dce5ec;border-radius:14px;padding:14px 15px;line-height:1.7;font-size:16px;background:#fbfcfe}.shout-label textarea:focus{outline:0;border-color:#e2a15b;box-shadow:0 0 0 4px #e09d5421}.shout-count{text-align:right;color:#a1acb7;font-size:11px;margin-top:5px}.preset-row{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}.preset-row button{border:1px solid #eadfce;background:#fffaf2;color:#aa7132;border-radius:10px;padding:7px 10px;font-size:12px;cursor:pointer}.preset-row button:hover{background:#fff0d9}.shout-send{width:100%;justify-content:center;margin-top:20px;background:#df913b}.shout-send:hover{background:#ca7d28}.success-note{display:flex;align-items:center;gap:6px;color:#41955b;font-size:13px}.success-note svg{width:16px}.shout-history>.panel-head>svg{width:19px;color:#a2acb6}.shout-list{display:flex;flex-direction:column}.shout-item{display:flex;align-items:flex-start;gap:11px;padding:14px 0;border-bottom:1px solid #edf1f5}.shout-item-icon{width:34px;height:34px;border-radius:10px;background:#fff2df;color:#d98b36;display:grid;place-items:center;flex:0 0 auto}.shout-item-icon svg{width:17px}.shout-item>div{min-width:0;flex:1}.shout-item b,.shout-item small{display:block}.shout-item b{font-size:14px;line-height:1.5}.shout-item small{margin-top:5px;color:#9aa5b1;font-size:11px}.shout-item em{font-style:normal;color:#4b9a61;background:#eff9f1;padding:4px 7px;border-radius:8px;font-size:10px;white-space:nowrap}.shout-empty,.shout-loading{min-height:250px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9aa5b1;text-align:center}.shout-empty svg{width:38px;height:38px;color:#e5b36f}.shout-empty b{color:#667483;margin:11px 0 4px}.shout-empty span{font-size:12px}.classroom-screen-shout{background:radial-gradient(circle at 50% 18%,#fff8ea 0,#f8f4ec 37%,#eaeff4)}.classroom-shout-board{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:22px 6vw}.classroom-shout-label{display:flex;align-items:center;gap:10px;color:#ca7b26;font-size:16px;font-weight:800}.classroom-shout-label svg{width:24px}.classroom-shout-label i{font-style:normal;color:#5aa56b;background:#eaf7ed;border-radius:999px;padding:5px 9px;font-size:11px;margin-left:4px}.classroom-shout-message{width:min(1100px,100%);padding:clamp(32px,6vw,78px) clamp(24px,7vw,100px);margin-top:22px;border-radius:30px;background:#ffffffe6;border:1px solid #f0dfc3;box-shadow:0 24px 70px #91714824}.classroom-shout-message>span{color:#d38b3e;font-size:clamp(16px,2vw,22px);font-weight:800;letter-spacing:.14em}.classroom-shout-message h1{margin:24px auto;font-size:clamp(36px,6vw,82px);line-height:1.25;letter-spacing:.02em;color:#2f3b47;max-width:18ch;word-break:break-word}.classroom-shout-message footer{color:#9ba4aa;font-size:14px}.classroom-shout-empty{display:flex;flex-direction:column;align-items:center;color:#9aa5b1}.classroom-shout-empty svg{width:72px;height:72px;color:#ddb477}.classroom-shout-empty h1{color:#586775;font-size:clamp(28px,4vw,48px);margin:20px 0 8px}.classroom-shout-empty p{margin:0;font-size:16px}@media (max-width:900px){.shout-layout{grid-template-columns:1fr}.shout-hero-mark{width:70px;height:70px;border-radius:22px}.shout-hero h2{font-size:27px}}@media (max-width:760px){.shout-hero{padding:22px}.shout-hero-mark{display:none}.shout-composer,.shout-history{padding:18px}.classroom-shout-board{padding:16px}.classroom-shout-message{border-radius:22px;padding:34px 20px}.classroom-shout-message h1{font-size:clamp(32px,10vw,58px);max-width:100%}}.topbar h1{font-size:22px}@media (max-width:760px){.topbar h1{font-size:18px}}.page-heading h2,.page-heading p{display:none}.top-actions .account-menu-wrap,.top-actions>.logout-btn{display:none}.sidebar-foot{display:block;padding:16px 20px}.sidebar-status{display:flex;align-items:center;gap:9px;color:#8895a6;font-size:13px}.sidebar-status svg{width:18px}.sidebar-account-actions{display:flex;gap:8px;margin-top:12px}.sidebar-account-actions .account-menu-wrap{position:relative;flex:0 0 auto}.sidebar-account-actions .account-trigger,.sidebar-account-actions .logout-btn{width:100%;min-height:40px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--border);border-radius:10px;background:#fff;color:#566273;font-size:14px;cursor:pointer;padding:8px 10px}.sidebar-account-actions .icon-only{width:40px;height:40px;min-height:40px;padding:0;flex:0 0 40px}.sidebar-account-actions .icon-only span{display:none}.sidebar-account-actions .account-trigger:hover,.sidebar-account-actions .logout-btn:hover{border-color:color-mix(in srgb,var(--primary) 45%,#fff);color:var(--primary-strong);background:var(--primary-soft)}.sidebar-account-actions svg{width:17px;height:17px;color:var(--primary)}.sidebar-account-menu{left:0;right:auto;top:auto;bottom:48px;width:180px}.classroom-rollcall{grid-template-columns:1fr}.draw-stage.animating strong{animation:rollcall-name .08s steps(2,end) infinite;opacity:.92}@keyframes rollcall-name{50%{transform:translateY(-2px);opacity:.72}}@media (min-width:761px){.classroom-screen{height:100vh;overflow:hidden;display:flex;flex-direction:column}.classroom-topbar{position:relative;flex:0 0 76px}.classroom-content{width:100%;flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;padding-top:28px;padding-bottom:32px}.classroom-screen .classroom-task-grid{flex:1;min-height:0;overflow:auto}.classroom-screen .classroom-rollcall{flex:1;min-height:0}.classroom-screen .classroom-rollcall .roll-card{height:100%;display:flex;flex-direction:column}.classroom-screen .classroom-rollcall .draw-stage{flex:1;min-height:0}.classroom-screen .classroom-timetable{flex:1;min-height:0;overflow:auto}}.classroom-rollcall .draw-stage.active strong{font-size:clamp(72px,9vw,150px);line-height:1;letter-spacing:.04em}.classroom-rollcall .draw-stage.active small{font-size:clamp(72px,9vw,150px);line-height:1;font-weight:800;letter-spacing:.04em;margin-top:16px;opacity:.9}@media (max-width:760px){.classroom-rollcall .draw-stage.active strong{font-size:clamp(56px,18vw,108px)}.classroom-rollcall .draw-stage.active small{font-size:clamp(56px,18vw,108px);margin-top:12px}}.classroom-screen-noise{height:100vh;overflow:hidden;display:flex;flex-direction:column;background:#071018}.classroom-screen-noise .classroom-topbar{position:relative;flex:0 0 76px}.classroom-screen-noise .classroom-content{width:100%;max-width:none;flex:1;min-height:0;padding:0;overflow:hidden}.classroom-shout-audio-controls{position:fixed;z-index:12;left:50%;bottom:24px;transform:translate(-50%);display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:center;padding:10px 12px;border:1px solid rgba(224,188,133,.55);border-radius:16px;background:#fffcf6f0;box-shadow:0 14px 36px #57401f29;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.classroom-audio-button{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:10px;padding:10px 14px;background:#df913b;color:#fff;font-size:13px;font-weight:800;cursor:pointer}.classroom-audio-button svg{width:16px;height:16px}.classroom-audio-button:hover{background:#ca7d28}.classroom-audio-button:disabled{opacity:.7;cursor:wait}.classroom-audio-button.secondary{background:#fff4e3;color:#b66c24;border:1px solid #efd8b7}.classroom-audio-button.secondary.active{background:#e8f7ec;color:#428c58;border-color:#c9e8d0}.classroom-audio-status{color:#7f8b96;font-size:12px;font-weight:700}.classroom-audio-error{max-width:280px;color:#bc5c48;font-size:12px}.classroom-screen-shout .classroom-shout-board{padding-bottom:104px}.noise-playground{--noise-level:0%;position:relative;width:100%;height:100%;min-height:420px;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 45% 112%,rgba(36,117,139,.25),transparent 38%),linear-gradient(165deg,#1b3444,#0c1b26 47%,#03080c)}.noise-playground:after{content:"";position:absolute;z-index:0;left:0;right:0;bottom:0;height:20%;background:linear-gradient(180deg,transparent,rgba(0,0,0,.52));pointer-events:none}.noise-canvas{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.noise-ambient{position:absolute;z-index:0;left:50%;bottom:-24%;width:68vw;height:42vw;max-height:70vh;border-radius:50%;transform:translate(-50%) scale(1.12);background:radial-gradient(circle,rgba(55,211,224,.16),rgba(62,120,208,.06) 42%,transparent 70%);filter:blur(18px);pointer-events:none}.noise-readout{position:absolute;z-index:3;top:clamp(20px,3vw,42px);right:clamp(18px,3vw,46px);width:min(285px,calc(100% - 36px));padding:20px;border:1px solid rgba(190,224,241,.18);border-radius:22px;background:#07121bb3;color:#eefaff;box-shadow:0 20px 55px #00000042;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.noise-status{display:flex;align-items:center;gap:11px;padding-bottom:16px;border-bottom:1px solid rgba(215,236,248,.12)}.noise-status-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#ffffff14;color:#91a7b5}.noise-status-icon svg{width:21px;height:21px}.noise-status.active .noise-status-icon{color:#6fe8be;background:#47daaa21;box-shadow:0 0 0 5px #47daaa0a}.noise-status.requesting .noise-status-icon{color:#73c9f6;animation:noise-listening 1s ease-in-out infinite}.noise-status small,.noise-status b{display:block}.noise-status small{margin-bottom:3px;color:#7f9aab;font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.noise-status b{font-size:14px}@keyframes noise-listening{50%{transform:scale(1.08);box-shadow:0 0 0 9px #73c9f60f}}.noise-meter-row{display:flex;align-items:end;justify-content:space-between;margin:17px 0 8px}.noise-meter-row span{font-size:13px;color:#acc0cc}.noise-meter-row strong{font-size:27px;line-height:1}.noise-meter-row strong small{font-size:12px;margin-left:2px;color:#7f9aaa}.noise-meter{height:7px;border-radius:99px;background:#ffffff1a;overflow:hidden}.noise-meter i{display:block;width:var(--noise-level);height:100%;border-radius:inherit;background:linear-gradient(90deg,#5fdcae,#ffd75a 62%,#ff655f);box-shadow:0 0 12px #5fdcae59;transition:width .08s linear}.noise-control{display:block;margin-top:17px}.noise-control>span{display:flex;justify-content:space-between;color:#a9bdc9;font-size:12px}.noise-control>span b{color:#edf8fd;font-size:12px}.noise-control input{width:100%;height:4px;margin:11px 0 0;accent-color:#57d7bc;cursor:pointer}.noise-mic-button,.noise-welcome button{display:flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:12px;background:linear-gradient(135deg,#54d9b9,#3da7dc);color:#04131a;font-weight:800;cursor:pointer;box-shadow:0 12px 28px #32bebb33}.noise-mic-button{width:100%;min-height:43px;margin-top:18px}.noise-mic-button.stop{background:#ffffff17;color:#d8e8ef;box-shadow:none;border:1px solid rgba(255,255,255,.12)}.noise-mic-button:disabled,.noise-welcome button:disabled{opacity:.58;cursor:wait}.noise-mic-button svg,.noise-welcome button svg{width:18px;height:18px}.noise-privacy,.noise-error{margin:11px 0 0;text-align:center;font-size:10px;line-height:1.5;color:#6f8998}.noise-error{color:#ffaaa6}.noise-welcome{position:absolute;z-index:2;left:clamp(26px,7vw,110px);top:50%;width:min(500px,calc(100% - 390px));transform:translateY(-52%);color:#eef9fe;text-shadow:0 3px 18px rgba(0,0,0,.25)}.noise-welcome>span{width:66px;height:66px;display:grid;place-items:center;border-radius:20px;background:#66dcd51f;color:#63e0cc;border:1px solid rgba(126,231,221,.2);box-shadow:0 0 40px #48cdca1a}.noise-welcome>span svg{width:31px;height:31px}.noise-welcome h1{margin:20px 0 12px;font-size:clamp(34px,4vw,62px);line-height:1.08;letter-spacing:-.03em}.noise-welcome p{max-width:460px;margin:0;color:#9db4c1;font-size:clamp(14px,1.35vw,18px);line-height:1.75}.noise-welcome button{min-height:50px;margin-top:25px;padding:0 24px;font-size:15px}@media (max-width:900px){.noise-readout{top:18px;right:18px;width:230px;padding:15px}.noise-control{margin-top:12px}.noise-mic-button{margin-top:13px}.noise-welcome{left:32px;width:calc(100% - 300px)}}@media (max-width:760px){.classroom-mode-switch button{padding-left:4px;padding-right:4px;font-size:11px;gap:3px}.classroom-mode-switch button svg{width:14px}.classroom-screen-noise .classroom-content{padding:72px 0 0}.noise-playground{min-height:0}.noise-readout{top:12px;right:12px;width:190px;padding:12px;border-radius:16px}.noise-status{padding-bottom:10px}.noise-status-icon{width:34px;height:34px;border-radius:10px}.noise-status b{font-size:12px}.noise-meter-row{margin:10px 0 6px}.noise-control{margin-top:9px}.noise-control input{margin-top:6px}.noise-privacy,.noise-error{display:none}.noise-mic-button{min-height:36px;margin-top:9px;font-size:12px}.noise-welcome{left:20px;bottom:26px;top:auto;width:calc(100% - 230px);transform:none}.noise-welcome>span{width:48px;height:48px;border-radius:14px}.noise-welcome h1{margin:13px 0 7px;font-size:27px}.noise-welcome p{font-size:12px;line-height:1.5}.noise-welcome button{min-height:42px;margin-top:13px;padding:0 15px;font-size:12px}}@media (max-width:520px){.noise-readout{left:12px;right:12px;width:auto;display:grid;grid-template-columns:1fr 1fr;gap:9px 12px}.noise-status{grid-column:1/-1}.noise-meter-row{margin:0}.noise-meter{align-self:center}.noise-control{margin:0}.noise-mic-button{grid-column:1/-1;margin:0}.noise-welcome{left:20px;right:20px;bottom:24px;width:auto}.noise-welcome>span{display:none}.noise-welcome h1{font-size:25px}.noise-welcome p{max-width:290px}}@media (min-width:761px){.content{padding-top:22px;padding-bottom:40px}.page-stack,.page-heading{gap:12px}.page-heading>.toolbar-actions{gap:7px}.page-heading>.toolbar-actions .primary-btn,.page-heading>.toolbar-actions .outline-btn,.page-heading>button.primary-btn,.page-heading>button.outline-btn{min-height:38px;padding:7px 12px;border-radius:9px;font-size:15px;gap:6px}.page-heading>.toolbar-actions .primary-btn svg,.page-heading>.toolbar-actions .outline-btn svg,.page-heading>button.primary-btn svg,.page-heading>button.outline-btn svg{width:16px;height:16px}}.students-toolbar{gap:12px;margin-bottom:12px}.students-toolbar .students-search-box{height:44px;min-height:44px;flex:0 1 360px}.students-toolbar .students-search-box button{height:44px;padding:0 12px}.students-toolbar .toolbar-actions{gap:8px;flex-wrap:nowrap;justify-content:flex-end;min-width:0}.students-toolbar .toolbar-actions>*{flex:0 0 auto;min-height:44px;padding:8px 12px;font-size:15px;gap:6px}.students-toolbar .toolbar-actions svg{width:16px;height:16px}@media (min-width:761px){.students-toolbar{display:grid;grid-template-columns:minmax(260px,360px) minmax(0,1fr);align-items:center}}@media (max-width:1100px) and (min-width:761px){.students-toolbar{grid-template-columns:minmax(220px,1fr) minmax(0,1.35fr)}.students-toolbar .toolbar-actions{flex-wrap:wrap}}@media (max-width:760px){.students-toolbar{display:flex;flex-direction:column;align-items:stretch;gap:10px}.students-toolbar .students-search-box{width:100%;flex-basis:auto}.students-toolbar .toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.students-toolbar .toolbar-actions>*{width:100%;min-width:0;justify-content:center}}.search-box input{width:auto;min-width:0;flex:1}.search-box button{flex:0 0 auto;white-space:nowrap}.growth-page{gap:10px}.growth-search{padding:12px}.simple-list .import-code-entry{border:1px solid color-mix(in srgb,var(--primary) 24%,#fff);border-radius:8px;background:var(--primary-soft);color:var(--primary-strong);padding:6px 8px;font-weight:700;white-space:nowrap}.simple-list .import-code-entry:hover{border-color:var(--primary);background:#fff}.device-manager-modal{max-width:760px;width:min(92vw,760px)}.device-token-list{display:grid;gap:8px;max-height:48vh;overflow:auto;margin:12px 0}.device-token-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-muted,#f8fafc)}.device-token-row small{display:block;color:var(--muted);margin-top:3px}@media (max-width:760px){.device-token-row{grid-template-columns:minmax(0,1fr) auto}.device-token-row .text-btn{justify-self:end}}.content{padding-top:clamp(10px,1.5vw,25px)}.page-stack{gap:clamp(10px,1.5vw,18px)}.seat-card[draggable=true]{cursor:grab}.seat-card[draggable=true]:active{cursor:grabbing}.seat-card.dragging{opacity:.45}.seat-card.drag-over{border-color:#4d94d8;box-shadow:0 0 0 3px #4d94d82e;background:#eaf4ff}.committee-row[draggable=true]{cursor:grab}.committee-row[draggable=true]:active{cursor:grabbing}.committee-row.dragging{opacity:.45;background:#f1f7fd}.committee-row.drag-over{outline:2px solid #82b9e5;outline-offset:2px;background:#f5faff}@media (max-width:760px){.content{padding-top:clamp(10px,4vw,25px)}.page-stack{gap:clamp(10px,3vw,18px)}}
