:root{font-family:Inter,Microsoft YaHei,PingFang SC,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#172033;background:#eef2f6;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;overflow-x:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:grid;grid-template-columns:292px minmax(0,1fr)}.sidebar{background:#172033;color:#fff;padding:24px;display:flex;flex-direction:column;gap:22px;position:sticky;top:0;height:100vh}.brand{display:flex;gap:12px;align-items:center}.brand-mark{width:44px;height:44px;border-radius:8px;display:grid;place-items:center;background:#f3c74d;color:#172033;font-weight:900}.brand strong,.brand span,.brand small{display:block}.brand.large{gap:14px}.brand.large .brand-mark{width:52px;height:52px;font-size:20px}.brand span,.eyebrow{color:#738097;font-size:13px}.brand small{margin-top:2px;color:#2f6fed;font-size:12px;font-weight:800}.role-switch{display:grid;gap:8px}.role-switch button,.ghost-button,.primary-button,.icon-button,.button-row button{border:0;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px}.role-switch button,.ghost-button{color:#e9edf5;background:#ffffff14}.role-switch button.active{background:#42b883;color:#062616;font-weight:800}.role-switch button:only-child{grid-column:1 / -1}.ghost-button{margin-top:auto}.ghost-button.secondary{margin-top:0}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:#eef2f6}.login-panel{width:min(100%,430px);background:#fff;border:1px solid #d9e0ea;border-radius:8px;padding:22px;display:grid;gap:18px;box-shadow:0 18px 42px #17203314}.login-panel .brand{padding-bottom:2px}.login-copy h1{margin:0 0 6px;font-size:30px;line-height:1.15}.login-copy p{margin:0;color:#66748a;font-size:15px;line-height:1.6}.login-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:6px;border-radius:8px;background:#eef2f6}.login-tabs button{min-height:46px;border:0;border-radius:7px;background:transparent;color:#66748a;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:900;font-size:13px}.login-tabs button.active{color:#172033;background:#fff;box-shadow:0 4px 12px #17203314}.login-form{display:grid;gap:16px}.login-form .primary-button{min-height:48px}.login-hint{margin:-4px 0 0;color:#66748a;font-size:13px;line-height:1.6}.parent-app{min-height:100vh;width:min(100%,560px);margin:0 auto;padding:16px;display:grid;align-content:start;gap:12px;background:#eef2f6}.parent-header,.parent-camp-picker{background:#fff;border:1px solid #d9e0ea;border-radius:8px;padding:12px}.parent-header{display:flex;justify-content:space-between;gap:12px;align-items:center}.parent-header .brand span{color:#66748a}.parent-logout{min-height:38px;border:0;border-radius:8px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:6px;background:#eef4fb;color:#172033;font-weight:800;white-space:nowrap}.parent-camp-picker .field{margin:0}.parent-app .phone-stage{display:block}.parent-app .phone-shell{width:100%;border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.parent-app .phone-status{display:none}.parent-app .phone-content{min-height:0}.workspace{padding:26px;max-width:1780px;width:100%;min-width:0;margin:0 auto}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:22px}.topbar h1{margin:2px 0 0;font-size:clamp(28px,4vw,42px);line-height:1.12}.login-chip{background:#fff;border:1px solid #d9e0ea;border-radius:999px;padding:10px 14px;display:inline-flex;gap:8px;align-items:center;white-space:nowrap}.topbar-actions{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.sync-chip{min-height:38px;border:1px solid #c8d9f5;border-radius:999px;padding:8px 12px;display:inline-flex;align-items:center;background:#f4f8ff;color:#2f6fed;font-size:13px;font-weight:800;white-space:nowrap}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:14px;margin-bottom:18px}.metric{background:#fff;border:1px solid #d9e0ea;border-radius:8px;padding:16px;display:grid;grid-template-columns:42px 1fr;gap:4px 12px;align-items:center}.metric-icon{grid-row:span 2;width:42px;height:42px;border-radius:8px;display:grid;place-items:center;background:#eaf2ff;color:#2f6fed}.metric svg{width:20px}.metric span{color:#66748a;font-size:13px}.metric strong{font-size:24px}.teacher-grid{display:grid;grid-template-columns:330px minmax(620px,1fr) 340px;gap:16px;align-items:start}.teacher-mobile-tabs{display:none}.manage-column{gap:14px}.task-column{min-width:0}.review-column{position:sticky;top:18px;min-width:0}.manager-panel{padding:12px;overflow:hidden}.embedded-panel{padding:4px 2px 2px}.manager-panel .form-grid,.manager-panel .class-form,.manager-panel .student-form{grid-template-columns:1fr}.manager-panel .primary-button{width:100%}.manager-panel .field input,.manager-panel .field select,.manager-panel .field textarea{min-width:0}.manager-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:5px;margin-bottom:12px;border-radius:8px;background:#eef2f6}.manager-tabs button{min-height:36px;border:0;border-radius:7px;background:transparent;color:#66748a;font-weight:800}.manager-tabs button.active{background:#fff;color:#172033;box-shadow:0 4px 12px #17203314}.stack{display:grid;gap:18px;align-content:start}.panel{background:#fff;border:1px solid #d9e0ea;border-radius:8px;padding:14px;box-shadow:0 8px 22px #1720330a}.panel.accent{border-color:#42b883;box-shadow:inset 4px 0 #42b883}.panel-heading.split,.review-head,.split{display:flex;align-items:center;justify-content:space-between;gap:12px}.toolbar,.task-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.panel-title{display:flex;align-items:center;gap:9px;margin-bottom:14px}.panel-title h2{font-size:18px;margin:0}.panel-title svg{width:20px;color:#2f6fed}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.class-form{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(100px,.7fr) minmax(130px,.8fr) auto;gap:10px;align-items:end}.student-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:end}.class-list{display:grid;gap:9px;margin-top:14px;max-height:280px;overflow:auto}.student-list{display:grid;gap:9px;margin-top:14px;max-height:360px;overflow:auto}.class-row,.student-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:11px;border:1px solid #e1e7ef;border-radius:8px;background:#f7f9fc}.class-row strong,.class-row span,.student-row strong,.student-row span,.student-row em{display:block}.class-row span,.student-row span,.student-row em{margin-top:3px;color:#66748a;font-size:13px}.student-row em{color:#2f6fed;font-style:normal}.student-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.inline-editor,.inline-danger{grid-column:1 / -1;margin-top:4px;padding:9px;border-radius:8px;display:grid;gap:8px}.inline-editor{grid-template-columns:minmax(160px,1fr) auto auto;align-items:end;border:1px solid #c8d9f5;background:#f4f8ff}.inline-editor label{display:grid;gap:5px;color:#66748a;font-size:12px}.inline-editor input{width:100%;height:34px;border:1px solid #ccd5e2;border-radius:8px;padding:6px 9px}.inline-danger{grid-template-columns:1fr auto auto;align-items:center;border:1px solid #ffc6bc;background:#fff3f1;color:#9f2d1e;font-size:13px;font-weight:800}.field{display:grid;gap:7px;color:#66748a;font-size:13px}.sidebar .field{color:#dbe3ee}.field input,.field select,.field textarea{width:100%;border:1px solid #ccd5e2;border-radius:8px;height:44px;padding:9px 11px;color:#172033;background:#fff}.field select{display:block;line-height:22px}.sidebar .field select{border-color:#dbe3ee;box-shadow:0 0 0 1px #ffffff0f}.field select:disabled{color:#738097;background:#f1f5f9;opacity:1}.field textarea{height:auto;min-height:124px;resize:vertical}.toggle{display:flex;gap:8px;align-items:center;color:#334155}.primary-button{background:#2f6fed;color:#fff;font-weight:800;padding:0 16px}.primary-button:disabled{cursor:not-allowed;opacity:.62}.icon-button{width:38px;height:38px;background:#eef4fb;color:#172033}.soft-button{min-height:34px;border:1px solid #ccd5e2;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 10px;background:#fff;color:#334155}.soft-button.strong{border-color:#b7cdf6;background:#eaf2ff;color:#2f6fed;font-weight:800}.mini-danger{width:30px;height:30px;border:0;border-radius:8px;display:grid;place-items:center;background:#ffe7e2;color:#9f2d1e}.mini-danger.wide{width:auto;padding:0 10px}.mini-action{min-height:30px;border:0;border-radius:8px;padding:0 9px;background:#eaf2ff;color:#2f6fed;font-size:12px;font-weight:800}.danger-button{width:100%;min-height:42px;margin-top:14px;border:1px solid #ffc6bc;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#fff3f1;color:#9f2d1e;font-weight:800}.danger-confirm{margin-top:14px;padding:10px;border:1px solid #ffc6bc;border-radius:8px;background:#fff3f1}.danger-confirm p{margin:0 0 8px;color:#9f2d1e;font-size:13px;font-weight:800;line-height:1.5}.danger-confirm>div{display:grid;grid-template-columns:1fr 96px;gap:8px}.danger-confirm .danger-button{margin-top:0}.camp-danger-zone{margin-top:14px;padding:12px;border:1px solid #ffd4cc;border-radius:8px;background:#fff8f6;display:grid;gap:10px}.camp-danger-zone strong,.camp-danger-zone span{display:block}.camp-danger-zone span{margin-top:4px;color:#8a5a52;font-size:13px;line-height:1.5}.camp-danger-zone .danger-button{margin-top:0}.camp-danger-zone .danger-confirm{margin-top:0;background:#fff}.task-list,.review-list,.mobile-task-list,.ranking{display:grid;gap:10px}.batch-editor{margin-bottom:12px;padding:10px 12px;border:1px solid #e1e7ef;border-radius:8px;background:#f7f9fc}.batch-editor.open{background:#f4f8ff;border-color:#c8d9f5}.batch-summary{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center}.batch-summary p{margin:0;color:#66748a;font-size:13px}.batch-body{margin-top:12px;display:grid;gap:10px}.batch-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.batch-editor textarea{width:100%;min-height:220px;max-height:360px;border:1px solid #ccd5e2;border-radius:8px;padding:12px;resize:vertical;color:#172033;background:#fff;line-height:1.7;font-family:Consolas,Microsoft YaHei,monospace;font-size:14px}.material-uploader{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;margin-bottom:12px;padding:12px;border:1px solid #d7e3f5;border-radius:8px;background:#f8fbff}.material-uploader strong,.material-uploader span{display:block}.material-uploader span{margin-top:4px;color:#66748a;font-size:13px}.material-uploader label{position:relative;overflow:hidden}.material-uploader input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.material-status{margin:-4px 0 12px;color:#2f6fed;font-size:13px;font-weight:800}.mini-title{display:inline-flex;align-items:center;gap:7px;color:#334155;font-weight:800}.task-row{display:grid;grid-template-columns:52px minmax(0,1fr) 74px;gap:10px;align-items:start;padding:10px;background:#f7f9fc;border-radius:8px}.task-column .task-list{max-height:520px;overflow:auto;padding-right:4px}.task-toggle-button{width:100%;min-height:38px;margin-top:10px;border:1px solid #c8d9f5;border-radius:8px;background:#f4f8ff;color:#2f6fed;font-weight:800}.task-edit-grid{display:grid;grid-template-columns:120px minmax(220px,1fr) 82px;gap:8px}.task-edit-grid label{display:grid;gap:5px;color:#66748a;font-size:12px}.task-edit-grid label.wide{grid-column:1 / -1}.task-edit-grid input,.task-edit-grid textarea{width:100%;border:1px solid #ccd5e2;border-radius:8px;padding:8px 9px;color:#172033;background:#fff}.task-edit-grid textarea{min-height:52px;resize:vertical;line-height:1.5}.task-material{display:inline-flex;align-items:center;gap:7px;width:fit-content;max-width:100%;padding:6px 9px;border-radius:999px;background:#eaf2ff;color:#2f6fed;font-size:12px;overflow-wrap:anywhere}.task-row p,.review-item p,.today-task p,.progress-text{margin:4px 0 0;color:#66748a;line-height:1.6}.review-filters{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.review-filters button{min-height:32px;border:1px solid #d9e0ea;border-radius:999px;padding:0 10px;background:#fff;color:#5f6b7b;font-size:12px;font-weight:800}.review-filters button.active{border-color:#b9cdf4;background:#eaf2ff;color:#2f6fed}.review-filters span{margin-left:3px}.task-row span,.mobile-task em,.review-head em{border-radius:999px;padding:5px 9px;background:#eaf2ff;color:#2f6fed;font-size:12px;font-style:normal;text-align:center}.review-item{border:1px solid #e1e7ef;border-radius:8px;padding:14px}.review-head strong,.review-head span{display:block}.review-head span{margin-top:3px;color:#66748a;font-size:13px}.review-meta{display:flex;gap:8px 12px;flex-wrap:wrap;margin-top:8px;color:#7a8799;font-size:12px}.pending{background:#fff4d6!important;color:#805300!important}.passed{background:#e8f8ef!important;color:#167245!important}.excellent{background:#fff0f6!important;color:#a3195b!important}.redo{background:#ffe7e2!important;color:#9f2d1e!important}.button-row{display:flex;gap:8px;flex-wrap:wrap}.button-row button{min-height:34px;padding:0 12px;background:#eef4fb}.file-pill{display:inline-flex;width:fit-content;max-width:100%;margin:8px 0;padding:6px 9px;border-radius:999px;background:#eaf2ff;color:#2f6fed;font-size:12px;overflow-wrap:anywhere}.attachment-preview{margin:8px 0;display:grid;gap:6px}.attachment-preview img{width:min(100%,260px);max-height:240px;border:1px solid #d9e0ea;border-radius:8px;object-fit:cover;background:#fff}.attachment-preview figcaption{color:#66748a;font-size:12px;overflow-wrap:anywhere}.phone-stage{display:flex;justify-content:center}.phone-shell{width:min(100%,430px);display:grid;gap:12px;padding:12px;border:10px solid #172033;border-radius:34px;background:#eef2f6;box-shadow:0 20px 42px #1720332e}.phone-status{min-height:28px;padding:0 10px;display:flex;justify-content:space-between;align-items:center;color:#172033;font-size:12px;font-weight:800}.parent-mode-card{display:grid;gap:5px;padding:12px;border-radius:8px;color:#172033;background:#fff8df;border:1px solid #f3d87b}.parent-mode-card.middle{background:#eaf2ff;border-color:#b7cdf6}.parent-mode-card span{width:fit-content;padding:4px 8px;border-radius:999px;background:#ffffffbf;color:#805300;font-size:12px;font-weight:800}.parent-mode-card.middle span{color:#2f6fed}.parent-mode-card strong{font-size:17px}.parent-mode-card p{margin:0;color:#5f6b7b;line-height:1.45;font-size:13px}.phone-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:5px;border-radius:8px;background:#dfe7f1}.phone-tabs button{min-height:36px;border:0;border-radius:7px;background:transparent;color:#5f6b7b;font-weight:800}.phone-tabs button.active{background:#fff;color:#172033;box-shadow:0 4px 12px #17203314}.phone-content{min-height:390px}.compact-stack{gap:12px}.guide-list{display:grid;gap:9px}.guide-list.compact{gap:7px}.guide-list div{display:grid;grid-template-columns:20px 1fr;gap:8px;align-items:start;color:#334155;line-height:1.45}.guide-list svg{margin-top:2px;color:#42b883}.today-task{background:#f1fbf6;border-radius:8px;padding:12px;margin-bottom:12px}.today-task span{color:#167245;font-weight:800}.today-task strong{display:block;margin-top:4px}.material-download{width:100%;min-height:38px;margin-top:10px;border:1px solid #b7cdf6;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:7px;background:#fff;color:#2f6fed;font-weight:800}.submit-form{display:grid;gap:10px}.phone-shell .field textarea{min-height:92px}.phone-shell .panel{padding:14px}.upload-box{min-height:62px;border:1px dashed #8bb2eb;border-radius:8px;display:grid;grid-template-columns:28px 1fr;align-items:center;gap:8px;padding:12px;color:#2f6fed;background:#f4f8ff;position:relative;overflow:hidden}.upload-box span{color:#334155;overflow-wrap:anywhere}.upload-box input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.form-error{margin:-4px 0 0;color:#9f2d1e;font-size:13px;font-weight:800}.form-success{margin:10px 0 0;padding:9px 10px;border-radius:8px;background:#e8f8ef;color:#167245;font-size:13px;font-weight:800}.progress{height:14px;background:#e6edf5;border-radius:999px;overflow:hidden}.progress>div{height:100%;background:linear-gradient(90deg,#42b883,#f3c74d)}.mobile-task,.ranking article,.contact-box{border:1px solid #e1e7ef;border-radius:8px;padding:12px}.mobile-task{display:grid;grid-template-columns:52px 1fr auto;gap:10px;align-items:center}.mobile-task span{color:#2f6fed;font-weight:800}.ranking article{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:10px}.ranking span{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:#f3c74d;font-weight:900}.ranking em,.contact-box span{color:#66748a;font-style:normal}.contact-box{display:grid;gap:5px;margin-top:10px}.empty{color:#66748a;margin:0}@media(max-width:1380px){.teacher-grid{grid-template-columns:320px minmax(0,1fr)}.review-column{grid-column:1 / -1;position:static}}@media(max-width:1080px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.metric-grid,.teacher-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.task-column{grid-column:1 / -1}.review-column{position:static}}@media(max-width:740px){.login-page{padding:12px}.login-copy h1{font-size:28px}.login-panel{padding:16px}.parent-app{width:100%;padding:12px}.parent-header{align-items:flex-start}.workspace,.sidebar{padding:18px}.topbar,.review-head{align-items:flex-start;flex-direction:column}.review-filters{justify-content:flex-start}.login-chip{white-space:normal}.topbar-actions{width:100%;justify-content:flex-start}.metric-grid,.form-grid,.class-form,.student-form{grid-template-columns:1fr}.teacher-mobile-tabs{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:6px;margin-bottom:12px;border-radius:8px;background:#dfe7f1}.teacher-mobile-tabs button{min-height:42px;border:0;border-radius:7px;background:transparent;color:#5f6b7b;font-weight:900}.teacher-mobile-tabs button.active{background:#fff;color:#172033;box-shadow:0 4px 12px #17203314}.teacher-grid{display:block}.teacher-section{display:none}.teacher-section.active{display:grid}.task-row,.batch-summary,.material-uploader{grid-template-columns:1fr}.batch-actions{justify-content:stretch}.batch-actions .soft-button,.batch-summary .soft-button{width:100%}.task-actions{justify-content:space-between}.task-edit-grid,.mobile-task{grid-template-columns:1fr}.phone-shell{border-width:0;border-radius:8px;padding:0;box-shadow:none}.phone-status{display:none}}@media(max-width:640px){.login-page{min-height:100dvh}.login-tabs button{min-height:42px;font-size:14px}.login-form .primary-button{width:100%}.parent-app{min-height:100dvh}.parent-header,.parent-camp-picker{padding:10px}.app-shell{display:block;min-height:100dvh;background:#eef2f6}.sidebar{position:sticky;top:0;z-index:20;height:auto;padding:12px;gap:10px;border-bottom:1px solid rgba(255,255,255,.12)}.brand{gap:9px}.brand-mark{width:36px;height:36px}.brand strong{font-size:15px}.brand span{font-size:11px}.role-switch{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.role-switch button{min-height:40px;font-size:14px}.sidebar .field{gap:5px;font-size:12px}.sidebar .field select{height:40px;border-radius:8px}.ghost-button{min-height:38px;margin-top:0;font-size:13px}.workspace{padding:14px 12px 28px}.topbar{margin-bottom:14px;gap:10px}.eyebrow{font-size:12px}.topbar h1{font-size:28px}.login-chip{width:100%;justify-content:center;border-radius:8px;padding:9px 12px;font-size:13px}.topbar-actions,.sync-chip{width:100%}.sync-chip{justify-content:center;border-radius:8px}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}.metric{grid-template-columns:34px 1fr;padding:10px;gap:2px 9px}.metric-icon{width:34px;height:34px}.metric strong{font-size:19px}.panel{padding:12px;box-shadow:none}.teacher-grid{gap:12px}.manager-panel{padding:10px}.manager-tabs,.phone-tabs{position:sticky;top:0;z-index:2}.manager-tabs button,.phone-tabs button{min-height:38px;font-size:14px}.panel-title{margin-bottom:10px}.panel-title h2{font-size:17px}.form-grid,.class-form,.student-form,.task-edit-grid{gap:9px}.primary-button,.danger-button,.soft-button{min-height:44px}.batch-editor{padding:10px}.batch-editor textarea{min-height:180px;max-height:320px;font-size:13px}.material-uploader{gap:9px;padding:10px}.task-column .task-list{max-height:none;overflow:visible;padding-right:0}.task-row{padding:11px}.task-edit-grid input,.task-edit-grid textarea{font-size:14px}.task-edit-grid textarea{min-height:78px}.class-list,.student-list{max-height:280px}.review-list{max-height:none}.phone-stage{display:block}.phone-shell{width:100%;gap:10px;background:transparent}.parent-mode-card{padding:12px}.phone-content{min-height:0}.today-task{padding:11px}.phone-shell .field textarea{min-height:110px}.upload-box{min-height:58px}}
