:root{--ink:#213b38;--muted:#74817c;--green:#126b5e;--deep:#153f38;--line:#dce4dd;--bg:#f4f5ef;--orange:#b86b2b;--white:#fff;--shadow:0 12px 40px #183c3710;font-family:Inter,"Microsoft YaHei","PingFang SC",sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer}button{border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);padding:10px 16px;font-size:13px;line-height:1.5;transition:.18s}button:hover{border-color:var(--green);background:#f0f6f1}button:disabled{opacity:.48;cursor:not-allowed}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#0d554b;color:white}.quiet{background:transparent;border-color:transparent}.danger{color:#b64b3a}.small{padding:6px 10px;font-size:12px}input,select,textarea{border:1px solid #ced9d0;border-radius:7px;background:#fff;padding:10px 11px;width:100%;color:var(--ink);min-width:0}textarea{resize:vertical;line-height:1.6}input:focus,select:focus,textarea:focus{outline:2px solid #72ab9770;border-color:var(--green)}label{display:block;font-size:12px;font-weight:600;margin-bottom:7px}h1,h2,h3,p{margin:0}h1{font-size:32px;letter-spacing:-1px;font-weight:650}h2{font-size:21px;font-weight:650}h3{font-size:15px}p{line-height:1.8}.muted{color:var(--muted)}.eyebrow{font-size:10px;letter-spacing:2.5px;font-weight:700;color:#789387;text-transform:uppercase;margin-bottom:13px}.tag{display:inline-block;border-radius:5px;padding:4px 8px;background:#ecf0e9;color:#64746b;font-size:11px;font-weight:600}.tag.submitted{background:#fff0d8;color:#9b6018}.tag.reviewed{background:#e0f0e6;color:#237b50}.tag.returned{background:#fbe8de;color:#ac572e}.flex{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.row{display:flex;gap:12px}.field{margin-bottom:17px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.note{font-size:12px;line-height:1.8;color:var(--muted)}.error{background:#fbece7;border:1px solid #edcabc;color:#a0472d;padding:12px;border-radius:7px;font-size:13px;line-height:1.6;margin:12px 0}.hidden{display:none!important}.brand{display:flex;align-items:center;gap:11px;font-size:19px;font-weight:700;letter-spacing:1px}.brand-icon{width:33px;height:33px;border-radius:9px;background:var(--green);color:white;display:grid;place-items:center;font-size:22px;font-weight:400}.brand small{display:block;font-size:10px;font-weight:400;letter-spacing:1.7px;color:var(--muted);margin-top:3px}.login-page{min-height:100vh;display:grid;grid-template-columns:1.15fr 1fr}.login-art{background:var(--deep);padding:48px 8%;color:#e7eee6;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.login-art .brand-icon{background:#d6eac4;color:var(--deep)}.login-art .brand small{color:#9fb9ac}.login-art .eyebrow{color:#9bbba5}.login-art h1{font-size:45px;line-height:1.4;letter-spacing:1px;margin-top:22px}.login-art p{color:#a8c2b5;font-size:14px;max-width:400px;margin-top:20px}.hero-sketch{width:100%;max-height:300px;margin:20px 0;color:#bad6b8}.login-footer{font-size:11px;color:#8aab99;letter-spacing:1px}.login-form-wrap{display:flex;align-items:center;justify-content:center;padding:45px}.login-form{max-width:360px;width:100%}.login-form h2{font-size:28px;margin-bottom:10px}.login-form>.note{margin-bottom:30px}.role-switch{display:flex;padding:4px;background:#e8ece4;border-radius:9px;gap:5px;margin-bottom:25px}.role-switch button{flex:1;border:0;background:transparent;color:#74817c}.role-switch button.active{background:white;color:var(--green);box-shadow:0 2px 6px #00000008}.login-form .primary{width:100%;margin-top:6px;padding:12px}.login-note{margin-top:25px;padding-top:20px;border-top:1px solid var(--line);font-size:11px;color:var(--muted);line-height:1.8}.layout{min-height:100vh;display:grid;grid-template-columns:235px 1fr}.sidebar{background:#fafbf6;border-right:1px solid var(--line);padding:29px 20px;display:flex;flex-direction:column;gap:28px;position:sticky;top:0;height:100vh}.sidebar .brand{padding:0 9px}.nav-label{font-size:10px;letter-spacing:1.5px;color:#929d93;margin:0 13px 12px}.nav-item{width:100%;text-align:left;border:0;background:transparent;color:#687a6d;padding:12px;border-radius:7px;display:flex;justify-content:space-between;gap:8px;margin-bottom:4px}.nav-item.active{background:#e4eee1;color:#235a40;font-weight:600}.nav-dot{font-size:10px;background:#fff9;padding:2px 6px;border-radius:4px}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding-top:18px}.avatar{width:34px;height:34px;display:grid;place-items:center;background:#e7dfce;color:#7e6b42;border-radius:50%;font-weight:650}.user-name{font-size:13px}.user-role{font-size:10px;color:var(--muted);margin-top:4px}.sidebar-actions{margin-top:12px;display:flex;gap:4px}.workspace{min-width:0}.topbar{height:72px;padding:0 38px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#6b7b70;background:#fafbf680}.online{display:flex;align-items:center;gap:7px;font-size:11px}.online:before{content:'';width:6px;height:6px;background:#80a365;border-radius:50%}.content{max-width:1500px;margin:auto;padding:36px 38px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px}.page-heading p{font-size:13px;color:var(--muted);margin-top:10px}.welcome{background:#e9eedf;border:1px solid #dbe4d0;border-radius:12px;padding:25px 28px;display:flex;justify-content:space-between;align-items:center;margin-bottom:26px;gap:20px}.welcome h2{font-size:18px;margin-bottom:8px}.welcome p{font-size:12px;color:#72806b}.welcome-number{font-size:45px;font-weight:300;color:#5d7d4a}.stats{display:flex;gap:35px}.stat strong{font-size:25px;font-weight:500;display:block;margin-bottom:5px}.stat span{font-size:11px;color:var(--muted)}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:26px 0 18px}.tabs{display:flex;gap:20px}.tabs button{border:0;border-radius:0;background:transparent;padding:10px 1px;color:var(--muted)}.tabs button.active{color:var(--green);border-bottom:2px solid var(--green);font-weight:600}.search{max-width:260px;font-size:12px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:20px}.doc-card{background:#fff;border:1px solid var(--line);border-radius:11px;overflow:hidden;box-shadow:0 2px 8px #183c3703;transition:.2s;cursor:pointer;text-align:left;padding:0;display:block}.doc-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.doc-thumb{height:158px;background-color:#f4f7f2;background-image:linear-gradient(#dfe6dc50 1px,transparent 1px),linear-gradient(90deg,#dfe6dc50 1px,transparent 1px);background-size:17px 17px;display:flex;justify-content:center;align-items:center;position:relative;color:#608477}.doc-thumb svg{width:76%;height:110px}.doc-thumb .tag{position:absolute;top:12px;left:12px}.doc-card-body{padding:18px}.doc-card h3{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.doc-card p{font-size:11px;color:var(--muted);margin-top:8px}.doc-meta{border-top:1px solid #edf0ea;margin-top:15px;padding-top:12px;display:flex;justify-content:space-between;font-size:10px;color:#849084}.empty{background:white;border:1px dashed #cdd9cc;border-radius:12px;text-align:center;padding:65px 25px}.empty-icon{font-size:40px;color:#719178;margin-bottom:20px}.empty h3{font-size:18px;margin-bottom:10px}.empty p{color:var(--muted);font-size:13px;margin-bottom:20px}table{width:100%;border-collapse:collapse;font-size:12px;background:white;border:1px solid var(--line)}th{text-align:left;background:#edf1e8;padding:13px 16px;color:#788473;font-weight:500}td{padding:13px 16px;border-bottom:1px solid #e7ece3}.table-wrap{overflow:auto;border-radius:9px}.editor-heading{margin-bottom:20px}.editor-heading h1{font-size:25px}.crumb{font-size:11px;color:var(--muted);margin-bottom:10px}.editor-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:22px;align-items:start}.panel{background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden}.panel-head{padding:17px 19px;border-bottom:1px solid #e8ede6;display:flex;justify-content:space-between;align-items:center}.panel-head h3{font-size:13px}.panel-body{padding:18px}.panel+.panel{margin-top:16px}.section-number{font-size:10px;color:#8e9b89;letter-spacing:1px;margin-bottom:7px}.upload-box{display:block;text-align:center;background:#f7f8f3;border:1px dashed #bdccb9;border-radius:8px;padding:20px 10px;cursor:pointer;color:#6b8267}.upload-box strong{font-size:12px;display:block;margin:8px 0}.upload-box span{font-size:10px}.sketch-image{display:block;width:100%;max-height:180px;object-fit:contain;margin-bottom:12px;border-radius:5px;background:#f6f6f1}.feature{padding:13px;background:#f7f8f3;border:1px solid #e4e9df;border-radius:8px;margin-top:12px}.feature .grid2,.feature .grid3{gap:8px}.feature input,.feature select{padding:8px;font-size:12px}.feature label{font-size:10px}.feature .field{margin:9px 0 0}.editor-form label{font-size:11px}.editor-form input{font-size:12px}.feature-head{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#6b8065;margin-bottom:7px}.feature-actions{display:flex;gap:8px;margin-top:14px}.feature-actions button{flex:1}.drawing-toolbar{background:#fff;padding:13px 17px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:11px;gap:10px}.drawing-canvas{padding:22px;background-color:#e9ede6;background-image:radial-gradient(#c9d4c6 1px,transparent 1px);background-size:12px 12px;min-height:420px;display:grid;place-items:center;overflow:auto}.drawing-canvas img{width:100%;background:white;box-shadow:0 5px 25px #263c3220;display:block}.drawing-note{font-size:11px;color:#809078;line-height:1.8;padding:12px 18px;background:#fbfcf8;border-top:1px solid var(--line)}.editor-note{font-size:11px;line-height:1.8;background:#f0f4e8;border:1px solid #dce6cf;border-radius:8px;padding:13px 16px;margin-bottom:18px;color:#697d5d}.review-box{margin-top:18px;padding:18px;background:white;border:1px solid var(--line);border-radius:10px}.review-box h3{margin-bottom:12px}.review-box p{font-size:13px;white-space:pre-wrap}.review-box textarea{margin-bottom:12px}.history{margin-top:15px;padding:16px;font-size:11px;color:#809078}.history summary{cursor:pointer;color:#50694e}.history p{margin-top:8px}.save-indicator{font-size:11px;color:#829279}.save-indicator.dirty{color:#b67929}.editor-actions{display:flex;gap:8px;flex-wrap:wrap}.loading{text-align:center;padding:100px;color:var(--muted)}dialog{border:1px solid var(--line);border-radius:14px;max-width:560px;width:calc(100% - 32px);padding:28px;box-shadow:0 25px 100px #102e3240;color:var(--ink)}dialog::backdrop{background:#122f2860;backdrop-filter:blur(3px)}dialog h2{margin-bottom:12px}dialog .note{margin-bottom:22px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.credentials{background:#f1f5eb;border-radius:8px;padding:14px;overflow:auto;white-space:pre;font-family:monospace;font-size:12px;line-height:1.9;max-height:280px;margin:15px 0}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(20px);padding:13px 22px;background:#1a4239;color:#fff;border-radius:8px;z-index:1000;font-size:13px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.2s;max-width:90vw}#toast.show{opacity:1;transform:translateX(-50%)}.mobile-brand{display:none}.topbar .tag{margin-left:12px}.form-hint{font-size:10px;color:var(--muted);line-height:1.6;margin-top:6px}.bottom-note{text-align:center;color:#9aa495;font-size:10px;letter-spacing:.7px;margin-top:35px}.check-row{font-size:12px;display:flex;gap:9px;align-items:flex-start;line-height:1.7;margin-top:15px}.check-row input{width:16px;margin-top:4px;flex-shrink:0}@media(min-width:1600px){.editor-layout{grid-template-columns:340px minmax(0,1fr)}}@media(max-width:1100px){.layout{grid-template-columns:200px 1fr}.sidebar{padding:25px 13px}.content{padding:28px 24px}.topbar{padding:0 24px}.editor-layout{grid-template-columns:260px minmax(0,1fr)}.drawing-canvas{padding:10px;min-height:300px}.editor-actions button{padding:8px 10px}.login-art h1{font-size:36px}}@media(max-width:850px){.editor-layout{grid-template-columns:1fr}.editor-form{display:grid;grid-template-columns:1fr 1fr;gap:15px}.editor-form .panel+.panel{margin-top:0}.drawing-canvas{min-height:260px}.login-page{grid-template-columns:1fr}.login-art{padding:30px}.login-art h1{font-size:29px}.login-art p,.hero-sketch,.login-footer{display:none}.login-form-wrap{padding:30px}.login-art .eyebrow{display:none}.login-art h1{margin-top:20px}.stats{gap:20px}}@media(max-width:620px){.layout{display:block}.sidebar{position:relative;height:auto;padding:18px;border-right:0;border-bottom:1px solid var(--line);gap:15px}.sidebar .brand{padding:0}.sidebar nav{display:flex;gap:5px;overflow:auto}.sidebar nav .nav-label{display:none}.nav-item{white-space:nowrap;min-width:fit-content;width:auto}.sidebar-bottom{display:flex;align-items:center;justify-content:space-between;padding-top:12px}.sidebar-actions{margin:0}.topbar{height:48px;padding:0 20px}.content{padding:23px 18px}.page-heading{align-items:flex-start}.page-heading h1{font-size:26px}.page-heading p{font-size:12px}.welcome{padding:20px;display:block}.stats{margin-top:22px}.toolbar{align-items:flex-start;flex-wrap:wrap}.search{max-width:100%}.editor-form{display:block}.editor-form .panel+.panel{margin-top:16px}.editor-heading{display:block}.editor-actions{margin-top:15px}.cards{grid-template-columns:1fr}.drawing-canvas{overflow-x:auto}.drawing-canvas img{min-width:480px}.online{font-size:10px}.welcome-number{display:none}h1{font-size:27px}}

.password-control{position:relative}.password-control input{padding-right:78px}.password-control .password-toggle{position:absolute;right:7px;top:50%;transform:translateY(-50%);min-width:52px;min-height:32px;padding:5px 9px;border:0;border-radius:5px;background:#edf3ed;color:#126b5e;font-size:12px;line-height:1.4;white-space:nowrap;visibility:visible;opacity:1;z-index:1}.password-control .password-toggle:hover,.password-control .password-toggle[aria-pressed="true"]{background:#dfebdf}.password-control .password-toggle:focus-visible{outline:2px solid #126b5e;outline-offset:1px}.password-control input::-ms-reveal,.password-control input::-ms-clear{display:none}

.ai-entry{margin-top:18px;border-top:1px solid var(--line);padding-top:18px}.ai-entry .primary{width:100%}.ai-values{max-height:36vh;overflow:auto;margin:16px 0}.ai-values table{width:100%;border-collapse:collapse}.ai-values td,.ai-values th{padding:8px 12px;text-align:left;border-bottom:1px solid var(--line)}

.roster-preview{max-height:42vh;overflow:auto;margin:16px 0}.roster-preview table{width:100%;border-collapse:collapse;font-size:13px}.roster-preview td,.roster-preview th{padding:9px 10px;text-align:left;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.roster-error{color:#a43828}.roster-preview th{position:sticky;top:0;background:#edf3ed}

.group-intro{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin:8px 0 20px}.group-intro h2{font-size:19px;margin-bottom:9px}.group-intro p{font-size:12px;color:var(--muted);line-height:1.8}.group-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;align-items:start}.group-column{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}.group-column>header{display:flex;justify-content:space-between;align-items:center;background:#edf3ed;padding:16px}.group-column h3{font-size:14px}.group-column>header>span{font-size:12px;color:var(--muted)}.group-column.unassigned>header{background:#f4eddd}.group-dropzone{padding:12px;min-height:160px;max-height:430px;overflow-y:auto;transition:background .15s}.group-dropzone.drop-active{background:#dfeee6;box-shadow:inset 0 0 0 2px #126b5e}.group-student{display:flex;gap:10px;align-items:center;border:1px solid #e1e7df;border-radius:8px;padding:9px 10px;background:#fbfcf9;margin-bottom:8px;min-height:45px;cursor:grab}.group-student-name{flex:1;overflow-wrap:anywhere;font-size:13px}.group-student button{font-size:11px;padding:4px 7px;cursor:pointer}.group-grip{color:#839482;font-size:19px}.group-student.dragging{opacity:.4}.group-empty{font-size:12px;color:#98a294;text-align:center;padding:40px 6px}.group-saving{pointer-events:none;opacity:.65}@media(max-width:620px){.group-board{grid-template-columns:1fr}.group-intro{display:block}.group-intro>.tag{display:inline-block;margin-top:10px}.toolbar .tabs{flex-wrap:wrap}}

/* Space for the shared platform navigation. */
.layout{min-height:calc(100vh - 82px)}.sidebar{top:82px;height:calc(100vh - 82px)}.ui-header a{text-decoration:none}.sidebar-actions a{font-size:12px;color:#126b5e}.ui-header .ui-user form{margin:0}.ui-header .ui-brand-text{line-height:1.35}.ui-header .ui-nav{min-width:0}.ui-header .ui-nav-link{white-space:nowrap}.ui-header button{font:inherit}@media(max-width:1100px){.ui-header-inner{gap:12px}.ui-header .ui-brand-text small{display:none}.ui-header .ui-nav-link{padding:10px 12px;font-size:14px}}@media(max-width:760px){.sidebar{height:auto;top:0}.layout{min-height:calc(100vh - 120px)}.ui-header{position:relative}}
.page-heading a.primary{display:inline-flex;align-items:center;padding:10px 16px;border-radius:8px;text-decoration:none;font-size:13px}.content a:not(.primary){color:var(--green);text-decoration:none}
