.grading-workspace{margin:-26px;min-height:calc(100vh - 76px);background:#ebe9e2}.grading-shell>.ant-layout-sider,.grading-shell .app-header{display:none}.grading-shell .app-content{padding:0}.grading-shell .grading-workspace{margin:0;min-height:100vh}.grading-shell .grading-grid{height:calc(100vh - 96px)}.grading-header{min-height:96px;padding:18px 24px;background:#fff;border-bottom:1px solid #dedbd1;display:flex;align-items:center;justify-content:space-between;gap:20px}.grading-title{display:flex;align-items:center;gap:18px;min-width:0}.grading-title h3{margin:0 0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grading-grid{display:grid;grid-template-columns:220px minmax(460px,1fr) 370px;height:calc(100vh - 172px);min-height:640px}.student-queue,.grading-panel{background:#fff;min-width:0;overflow:hidden;display:flex;flex-direction:column}.student-queue{border-right:1px solid #dedbd1}.grading-panel{border-left:1px solid #dedbd1}.queue-head,.panel-head{padding:16px;min-height:70px;border-bottom:1px solid #ebe7dc;display:flex;justify-content:space-between;align-items:center;gap:10px}.queue-head{align-items:flex-start;flex-direction:column;gap:2px}.queue-list{overflow:auto;padding:8px}.queue-list button{appearance:none;width:100%;padding:12px 10px;border:1px solid transparent;border-radius:10px;background:transparent;color:inherit;display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;text-align:left}.queue-list button:hover{background:#f5f3ed}.queue-list button.active{background:#e7f0ed;border-color:#9bbab1;box-shadow:inset 3px 0 #315f55}.queue-list button>span:first-child{min-width:0}.queue-list strong,.queue-list small{display:block}.queue-list small{color:#77847f;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue-status{flex:0 0 auto;text-align:right}.queue-status .ant-tag{margin:0}.paper-stage{min-width:0;overflow:auto;padding:16px 22px 28px}.stage-toolbar{min-height:54px;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:-16px;z-index:3;padding:10px 0;background:#ebe9e2}.annotation-hint{width:min(760px,100%);margin:0 auto 12px;padding:9px 12px;background:#fff;border:1px solid #e2d1cf;border-radius:10px;display:flex;align-items:center;gap:8px;font-size:12px}.red-pen-dot{width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:#d23535;box-shadow:0 0 0 3px #d235351f}.stage-empty,.grading-loading{min-height:50vh;display:grid;place-items:center}.paper-viewer{width:min(760px,100%);margin:0 auto}.paper-canvas{position:relative;width:100%;background:#d8d5cc;padding:12px;border-radius:14px;box-shadow:0 12px 34px #242d2a1f}.paper-sheet{position:relative;width:100%;line-height:0}.paper-sheet.tool-pen{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none}.paper-sheet.tool-pen .ant-image{pointer-events:none}.paper-canvas .ant-image{display:block;width:100%;line-height:0}.paper-canvas .ant-image-img{display:block;width:100%;height:auto;background:#fff}.annotation-layer{position:absolute;inset:0;z-index:5;width:100%;height:100%;overflow:visible;pointer-events:none}.drawn-mark{fill:none;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.94}.drawn-mark.correct,.drawn-mark.wrong,.drawn-mark.pen{stroke:#d23535}.drawn-mark.selected{filter:drop-shadow(0 0 3px rgba(255,198,42,.95))}.drawn-mark.draft{opacity:.72;stroke-dasharray:2 1}.paper-mark{appearance:none;position:absolute;z-index:4;padding:0;background:transparent;cursor:pointer;font-family:KaiTi,STKaiti,serif;font-weight:700;line-height:1}.paper-mark small{position:absolute;left:50%;top:100%;transform:translate(-50%);padding:2px 5px;border-radius:4px;color:#fff;background:#142a3bd1;font:500 10px/1.2 sans-serif;white-space:nowrap;opacity:0}.paper-mark:hover small,.paper-mark.selected small{opacity:1}.paper-mark.correct{width:54px;height:54px;border:0;color:#d14343;font-size:62px;transform:translate(-50%,-50%) rotate(-8deg);text-shadow:0 2px 0 rgba(255,255,255,.9)}.paper-mark.wrong{border:5px solid #d14343;border-radius:50%;color:#d14343;font-size:0;box-shadow:0 0 0 2px #ffffffb3}.paper-mark.wrong:after{content:"×";position:absolute;right:-20px;top:-28px;font:700 46px/1 KaiTi,STKaiti,serif;color:#d14343;text-shadow:0 2px 0 #fff}.paper-mark.selected{filter:drop-shadow(0 0 5px rgba(239,199,94,.95))}.paper-thumbnails{display:flex;gap:10px;overflow-x:auto;padding:14px 2px 4px}.paper-thumbnails button{appearance:none;flex:0 0 68px;height:86px;padding:3px;border:2px solid transparent;border-radius:9px;background:#fff;position:relative;cursor:pointer}.paper-thumbnails button.active{border-color:#315f55}.paper-thumbnails img{width:100%;height:100%;object-fit:contain}.paper-thumbnails span{position:absolute;right:3px;bottom:3px;min-width:18px;height:18px;border-radius:9px;background:#173f38e6;color:#fff;font-size:11px;line-height:18px}.grading-panel{overflow-y:auto}.grading-panel>.ant-alert,.grading-panel>.ant-empty,.grading-panel>.ant-spin{margin:16px}.grade-list{padding:14px 14px 92px;display:flex;flex-direction:column;gap:12px}.grade-list .ant-card-head{min-height:42px}.grade-list .selected-grade{border-color:#315f55;box-shadow:0 0 0 2px #315f551f}.grade-select{appearance:none;border:0;padding:0;color:inherit;background:transparent;cursor:pointer;font-weight:650;text-align:left}.grade-select small{display:block;margin-top:2px;color:#77847f;font-size:11px;font-weight:400}.publish-bar{position:sticky;bottom:0;margin-top:auto;padding:14px;background:#fffffff5;border-top:1px solid #ebe7dc;z-index:3}@media(max-width:1280px){.grading-grid{grid-template-columns:190px minmax(380px,1fr) 330px}}@media(max-width:1000px){.grading-workspace{margin:-16px}.grading-header{align-items:flex-start;flex-direction:column}.grading-grid{height:auto;grid-template-columns:1fr}.student-queue,.grading-panel{border:0}.queue-list{display:flex;overflow-x:auto}.queue-list button{min-width:180px}.paper-stage{min-height:620px}.grading-panel{max-height:none}}@media(max-width:800px){.page-head{align-items:stretch;flex-direction:column}.page-head .ant-input-affix-wrapper{width:100%!important}}.image-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}.image-item{min-width:0}.image-item>.ant-typography{display:block;margin-top:6px;font-size:12px}.image-grid .ant-image,.review-image .ant-image{display:block;width:100%}.image-grid .ant-image-img,.review-image .ant-image-img{display:block;width:100%;aspect-ratio:3 / 4;object-fit:contain;background:#f4f2ec;border:1px solid #e3dfd5;border-radius:12px}.review-image{position:relative;display:block;width:100%}.bbox{border-width:4px;box-shadow:0 0 0 2px #fffc}.sider-brand strong{font-size:17px;white-space:nowrap}*{box-sizing:border-box}body{margin:0;color:#20332f;background:#f5f3ed}.full-spin{min-height:100vh;display:grid;place-items:center}.auth-page{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;background:#f5f3ed}.auth-story{padding:10vh 8vw;background:linear-gradient(145deg,#173f38,#315f55);color:#fff;position:relative;overflow:hidden}.auth-story:after{content:"答";position:absolute;right:-30px;bottom:-140px;font:700 420px/1 serif;color:#ffffff0a}.brand{display:flex;gap:14px;align-items:center}.brand-mark{width:48px;height:48px;border-radius:16px;background:#f1c979;color:#173f38;display:grid;place-items:center;font:700 26px serif}.auth-story h1{font:600 48px/1.2 serif;margin:18vh 0 20px}.auth-story p{font-size:18px;line-height:1.8;max-width:560px;color:#dce9e5}.auth-panel{display:grid;place-items:center;padding:40px}.auth-card{width:min(440px,100%);box-shadow:0 24px 80px #2635311a}.app-shell{min-height:100vh}.sider-brand{height:82px;padding:18px 22px;color:#fff;display:flex;gap:12px;align-items:center}.sider-brand strong{display:block;font:600 21px serif}.sider-brand span{color:#a9c4bc;font-size:12px}.app-header{height:76px;padding:0 28px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ebe7dc}.app-content{padding:26px;min-width:0}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:20px}.page-head h2{font:600 30px serif;margin:0}.page-head p{margin:6px 0 0;color:#77847f}.metric{border:0;box-shadow:0 8px 28px #2a3b360f}.metric .ant-statistic-title{color:#77847f}.metric .ant-statistic-content{font:600 34px serif}.table-card{border:0;box-shadow:0 8px 30px #2835310d}.activation{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top,#e5f0eb,#f5f3ed 55%)}.activation-card{width:min(620px,92vw);text-align:center;padding:30px}.activation-icon{width:84px;height:84px;margin:auto;border-radius:28px;background:#f1c979;display:grid;place-items:center;font-size:36px;color:#173f38}.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.image-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;border:1px solid #e3dfd5}.review-image{position:relative;display:inline-block;max-width:100%}.review-image img{max-width:100%;border-radius:12px}.bbox{position:absolute;border:3px solid #d14343;border-radius:50%;pointer-events:none}.mobile-only-note{color:#77847f}@media(max-width:800px){.auth-page{grid-template-columns:1fr}.auth-story{display:none}.app-content{padding:16px}}.app-header{line-height:normal;gap:20px;flex-shrink:0}.header-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-account{display:flex;align-items:center;gap:12px;flex-shrink:0;margin-left:auto}.header-account>.ant-avatar,.header-account>.ant-btn{flex-shrink:0}.header-account-copy{display:flex;flex-direction:column;justify-content:center;gap:3px;min-width:0;max-width:180px}.header-account-copy>.ant-typography{display:block;margin:0;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-account-copy>.header-subjects{font-size:12px;line-height:18px}.sider-brand{overflow:hidden}.sider-brand>.brand-mark{flex-shrink:0}.sider-brand>div:last-child{min-width:0;white-space:nowrap}.sider-brand strong{font-size:18px}.ant-layout-sider-collapsed .sider-brand{padding:18px 12px;justify-content:center}.ant-layout-sider-collapsed .sider-brand>div:last-child{display:none}@media(max-width:800px){.app-header{padding:0 16px;gap:12px}.header-account{gap:10px}}@media(max-width:600px){.app-header>.header-title{display:none}.header-account-copy{max-width:140px}}
