:root{--blue:#006be6;--ink:#323639;--muted:#71717a;--white:#fff;--pale:#eef5ff;--line:#e7eaf0;--bg:#f6f8fc;--radius:24px;--small:2px;--pill:9999px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s6:24px;--s8:32px;--s10:40px;--login-width:448px;--shadow:0 6px 16px #006be60d,0 3px 6px -4px #006be60d,0 9px 28px 8px #006be60d;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;color:var(--ink);font-size:14px}
*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}a{color:var(--blue);text-decoration:none}h1,h2,h3,p{margin:0}h1{font-size:30px;letter-spacing:-.8px;line-height:1.4}h2{font-size:20px;font-weight:600}h3{font-size:16px}p{line-height:1.8}small,.muted{color:var(--muted)}small{font-size:12px}button{border:0;background:none;color:inherit}input,select,textarea{border:1px solid #dce1e9;border-radius:6px;background:#fff;color:var(--ink);padding:10px 12px;min-width:0;max-width:100%}input:focus,select:focus,textarea:focus{border-color:var(--blue);outline:2px solid #006be61a}input[type=checkbox],input[type=radio]{accent-color:var(--blue);width:16px;height:16px;vertical-align:middle}textarea{resize:vertical;min-height:80px}label.field{display:grid;gap:8px;font-size:13px}label.field>span{font-weight:500}.required{color:#d25942}svg.icon{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #dce1e9;border-radius:6px;padding:10px 16px;min-height:40px;background:#fff;font-weight:500;white-space:nowrap}.btn:hover{background:#f3f7fc;border-color:#b4c9e7}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fafafa}.btn.primary:hover{background:#005ac3}.btn.light{background:#eef5ff;border-color:#e1ecff;color:var(--blue)}.btn.danger{color:#c34537;border-color:#f0d3cd}.btn.small{padding:6px 10px;min-height:32px;font-size:12px}.linkbtn{color:var(--blue);padding:6px 0;display:inline-flex;align-items:center;gap:6px}.iconbtn{width:36px;height:36px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center}.iconbtn:hover{background:#eef3fa}.row{display:flex;align-items:center;gap:12px}.row.between{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.stack{display:grid;gap:16px}.stack.sm{gap:8px}.stack.lg{gap:24px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:24px}.tag{display:inline-flex;align-items:center;gap:5px;border-radius:4px;padding:4px 8px;font-size:12px;line-height:1.5;background:#f0f3f7;color:#687386;white-space:nowrap}.tag.blue{background:#eaf2ff;color:#006be6}.tag.green{background:#eaf7f0;color:#249467}.tag.orange{background:#fff4e4;color:#c48628}.tag.red{background:#fff0ef;color:#d15c4b}.dot{width:6px;height:6px;border-radius:50%;background:currentColor}.divider{height:1px;background:var(--line);margin:16px 0}
.sidebar{width:224px;position:fixed;inset:0 auto 0 0;background:#fff;border-right:1px solid var(--line);padding:28px 16px 20px;display:flex;flex-direction:column;z-index:35}.brand{display:flex;align-items:center;gap:10px;padding:0 8px 30px;white-space:nowrap}.brandmark{width:36px;height:36px;display:grid;place-items:center;background:var(--blue);border-radius:10px;color:#fff;box-shadow:0 4px 12px #006be62a}.brandmark svg{width:24px;height:24px}.brand strong{font-size:20px;letter-spacing:2px}.brand small{display:block;font-size:10px;letter-spacing:1px;margin-top:3px}.navlabel{font-size:11px;color:#a2a8b3;letter-spacing:1px;padding:16px 16px 8px}.navitem{display:flex;align-items:center;gap:12px;width:100%;padding:13px 16px;margin:3px 0;border-radius:7px;text-align:left;color:#697180;position:relative}.navitem.active{background:#eaf2ff;color:var(--blue);font-weight:600}.navitem.active:before{content:"";position:absolute;left:-16px;height:24px;width:3px;border-radius:0 3px 3px 0;background:var(--blue)}.navitem:hover{background:#f4f7fc}.navcount{margin-left:auto;background:#fff1e8;color:#d68d45;border-radius:4px;padding:1px 6px;font-size:11px}.sidebar-bottom{margin-top:auto}.localcard{background:#f6f8fc;border:1px solid #edf0f6;border-radius:8px;padding:12px;margin:20px 4px 16px}.localcard strong{font-size:12px}.localcard p{font-size:11px;color:#8b92a0;margin-top:4px}.avatar{display:inline-grid;place-items:center;flex:none;border-radius:50%;width:36px;height:36px;background:#e8f0fe;color:var(--blue);font-weight:600}.avatar.purple{background:#f0ebfc;color:#8c70cc}.workspace{margin-left:224px}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 32px;gap:16px;position:sticky;top:0;z-index:25}.breadcrumb{font-size:13px;color:#9ba2af}.breadcrumb strong{font-weight:400;color:#5d6776;margin-left:12px}.top-actions{display:flex;align-items:center;gap:16px}.role-select{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:12px}.role-select select{border:0;padding:0;background:none;max-width:160px}.top-sep{height:24px;width:1px;background:var(--line)}.main{max-width:1600px;padding:32px;margin:auto;min-height:calc(100vh - 76px)}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:20px}.page-head p{color:#939aa6;margin-top:6px;font-size:13px}.eyebrow{font-size:11px;color:#8f99a9;letter-spacing:1.8px;text-transform:uppercase;margin-bottom:8px}.hero{background:linear-gradient(110deg,#edf5ff 0%,#eff6ff 60%,#e6f0ff 100%);border:1px solid #e1ecfc;border-radius:12px;padding:28px 32px;display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:190px;position:relative;overflow:hidden}.hero h2{font-size:24px;letter-spacing:-.6px}.hero p{color:#7c8da5;font-size:13px;margin:9px 0 20px}.hero-art{width:230px;height:150px;flex:none;position:relative}.hero-art svg{width:100%;height:100%}.hero-tag{background:#fff9;color:#7d99bc;font-size:10px;padding:5px 9px;border-radius:20px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:24px 0}.stat{display:flex;gap:16px;align-items:center;padding:24px;background:#fff;border:1px solid var(--line);border-radius:10px}.stat-icon{height:48px;width:48px;display:grid;place-items:center;border-radius:12px;background:#eef4ff;color:var(--blue)}.stat:nth-child(2) .stat-icon{background:#f1edff;color:#9070db}.stat:nth-child(3) .stat-icon{background:#fff4e6;color:#db9d4d}.stat:nth-child(4) .stat-icon{background:#eaf7f1;color:#51a980}.stat strong{display:block;font-size:28px;font-weight:600;line-height:1.2;color:#2b3546}.stat small{display:block;margin-top:7px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:24px}.panel{border:1px solid var(--line);border-radius:10px;background:#fff;min-width:0;overflow:hidden}.panel-pad{padding:24px}.panel-head{padding:20px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line)}.panel-head h2{font-size:16px}.panel-head .sub{font-size:12px;color:#a2a8b3;margin-top:5px}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);padding:0 24px}.tabs button{padding:16px 0;color:#8c95a2;position:relative;white-space:nowrap}.tabs button.active{color:var(--blue);font-weight:500}.tabs button.active:after{position:absolute;content:"";height:2px;left:0;right:0;bottom:0;background:var(--blue)}.paper-row{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:14px;padding:20px 24px;align-items:center;border-bottom:1px solid #f0f2f6}.paper-row:last-child{border:0}.paper-icon{background:#eef4ff;color:#6395e0;border:1px solid #e0ebff;border-radius:7px;width:36px;height:42px;display:grid;place-items:center}.paper-row h3{font-size:14px;font-weight:500;margin-bottom:7px}.paper-row small{font-size:11px}.paper-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.quick{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:24px}.quick button{text-align:center;padding:12px 4px}.quick .stat-icon{margin:auto auto 12px;width:44px;height:44px;border-radius:12px}.quick span{font-size:12px}.todo{padding:18px 24px;display:flex;gap:12px;border-bottom:1px solid #f1f3f7}.todo .dot{margin-top:7px}.todo strong{font-size:13px;font-weight:500}.todo p{font-size:11px;color:#98a0ad;margin-top:4px}.demo-flow{margin-top:24px;background:#fff;padding:20px 24px;border:1px solid var(--line);border-radius:10px}.flow-steps{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:20px;font-size:12px;color:#8b95a5}.flow-steps span{display:flex;gap:8px;align-items:center}.step-num{width:22px;height:22px;display:inline-grid;place-items:center;border-radius:50%;color:var(--blue);background:#edf4ff;font-style:normal}.footer{display:flex;align-items:center;justify-content:space-between;color:#a8aeba;font-size:11px;margin-top:32px;gap:12px}.footer button{font-size:11px;color:#8b99af}.toolbar{padding:20px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.searchbox{position:relative;display:flex;align-items:center;gap:8px}.searchbox input{width:270px;padding-left:36px}.searchbox .icon{position:absolute;left:11px;color:#a1a9b6;width:17px}.filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:0 24px 20px}.filters label{font-size:12px;color:#929bad;display:grid;gap:6px}.filters select{font-size:12px;width:100%}.question-row{padding:20px 24px;border-top:1px solid var(--line);display:flex;gap:16px;align-items:flex-start}.question-row .qbody{flex:1;min-width:0}.question-row .rich{margin:12px 0;font-size:14px}.question-row.selected{background:#f7faff}.question-row .actions{display:flex;flex-direction:column;gap:6px}.rich{line-height:1.9;overflow-wrap:anywhere}.rich p{margin-bottom:8px}.rich img{max-width:100%;max-height:380px;object-fit:contain}.rich ul,.rich ol{padding-left:24px}.math{font-family:Georgia,"Times New Roman",serif;font-size:1.1em;letter-spacing:.3px;padding:0 3px}.options{display:grid;grid-template-columns:1fr 1fr;gap:10px;color:#6f7d90;margin-top:12px;font-size:13px}.pagination{border-top:1px solid var(--line);padding:16px 24px;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#8e98a9}.page-number{background:#edf4ff;border:1px solid #bad3fc;color:var(--blue);padding:6px 10px;border-radius:4px}.empty{padding:48px 24px;text-align:center;color:#98a2b3}.empty .icon{width:36px;height:36px;color:#bbc9dc;margin-bottom:12px}.notice{display:flex;gap:10px;align-items:flex-start;padding:12px 16px;border:1px solid #deebff;border-radius:6px;background:#f2f7ff;color:#6e86a7;font-size:12px;line-height:1.8}.notice.warning{background:#fff8ec;border-color:#f4e6cd;color:#ad8644}.notice.error{background:#fff2f1;border-color:#f3d5d0;color:#bd5647}.notice .icon{width:17px;height:17px;margin-top:2px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.full{grid-column:1/-1}.paper-edit-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px}.sortable{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--line);padding:16px;border-radius:8px;background:#fff;margin-top:12px}.drag{color:#b7bfcc;cursor:grab;padding-top:8px}.num{width:28px;height:28px;display:grid;place-items:center;background:#f3f6fa;color:#7d8ba0;border-radius:6px;font-size:12px;flex:none}.scoreinput{width:70px!important;text-align:center;padding:6px}.students{display:grid;gap:8px;max-height:240px;overflow:auto}.student-option{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:6px}.student-option .avatar{width:30px;height:30px;font-size:12px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px;text-align:left}th{background:#f9fafc;color:#929cad;font-size:12px;font-weight:400;padding:14px 20px;white-space:nowrap}td{padding:18px 20px;border-top:1px solid #f0f2f6;vertical-align:middle}td .muted{font-size:11px;margin-top:5px}.task-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.task-card{padding:24px}.task-card h2{margin:18px 0 12px;font-size:18px}.task-card .task-info{display:flex;gap:24px;color:#8793a5;font-size:12px;margin:20px 0}.exam-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px}.exam-sidebar{position:sticky;top:100px;align-self:start}.timer{font-size:32px;letter-spacing:2px;font-variant-numeric:tabular-nums;color:var(--blue);font-weight:600;margin:12px 0}.question-nav{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:20px 0}.question-nav button{aspect-ratio:1;border:1px solid #dfe5ee;border-radius:6px;background:#fff;color:#9ba6b7}.question-nav button.done{background:#eaf3ff;color:var(--blue);border-color:#c4dbfb}.question-nav button.current{background:var(--blue);color:#fff;border-color:var(--blue)}.answer-options{display:grid;gap:12px;margin-top:24px}.answer-option{display:flex;gap:12px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:7px;cursor:pointer}.answer-option:has(input:checked){background:#f0f6ff;border-color:#8bb9f6}.answer-option input{margin:0}.answer-option b{font-weight:500;color:#6b7a90}.answer-editor{border:1px solid #dfe5ee;border-radius:6px;overflow:hidden;background:#fff}.editor-toolbar{background:#fafbfc;border-bottom:1px solid var(--line);padding:6px 8px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}.editor-toolbar button{min-width:28px;height:28px;border-radius:4px}.editor-toolbar button:hover{background:#e9eef6}.editable{min-height:140px;padding:16px;line-height:1.8;outline:none;overflow-wrap:anywhere}.editable:empty:before{content:attr(data-placeholder);color:#b0b8c5}.editable img{max-width:100%;max-height:300px}.ink-wrap{border:1px solid #dfe5ee;border-radius:6px;overflow:hidden}.ink-toolbar{background:#fafbfc;border-bottom:1px solid var(--line);padding:8px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.ink-canvas{display:block;width:100%;height:auto;aspect-ratio:2.5;touch-action:none;background-color:#fff;background-image:linear-gradient(#e9eef580 1px,transparent 1px),linear-gradient(90deg,#e9eef580 1px,transparent 1px);background-size:24px 24px;cursor:crosshair}.ink-canvas.annotate{background:#fff}.ink-hint{font-size:11px;color:#9cabc0;padding:8px 12px;border-top:1px solid #eef1f6}.answer-foot{display:flex;align-items:center;justify-content:space-between;padding-top:24px;margin-top:24px;border-top:1px solid var(--line)}.review-question{border:1px solid var(--line);border-radius:10px;background:#fff;margin-bottom:20px;overflow:hidden}.review-qhead{padding:20px 24px;background:#fafbfe;border-bottom:1px solid var(--line)}.compare{display:grid;grid-template-columns:1fr 1fr}.compare>div{padding:24px;min-width:0}.compare>div+div{border-left:1px solid var(--line);background:#fbfcff}.compare-label{font-size:11px;color:#8d9ab0;letter-spacing:1px;margin-bottom:16px}.answer-image{width:100%;border:1px solid var(--line);border-radius:5px;background:#fff}.grading{display:flex;gap:16px;align-items:center;border-top:1px solid var(--line);padding:16px 24px;background:#fff;flex-wrap:wrap}.grading textarea{flex:1;min-height:40px;height:42px}.score-big{font-size:36px;color:var(--blue);font-weight:600}.grade-summary{padding:24px;display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px}.modal-overlay{position:fixed;inset:0;background:#18293c66;backdrop-filter:blur(3px);z-index:80;display:flex;align-items:center;justify-content:center;padding:24px}.modal{background:#fff;border-radius:12px;width:100%;max-width:780px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 24px 80px #0e244733}.modal.wide{max-width:1040px}.modal.small{max-width:460px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line)}.modal-header h2{font-size:18px}.modal-body{padding:24px;overflow:auto}.modal-footer{padding:16px 24px;border-top:1px solid var(--line);display:flex;gap:12px;justify-content:flex-end;flex-wrap:wrap}.modal-body .filters{padding:0 0 16px}.modal-body .toolbar{padding:0 0 16px}.modal-body .question-row{padding:16px 0}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#26374a;color:white;padding:13px 24px;border-radius:8px;box-shadow:0 8px 32px #132f4d33;z-index:120;max-width:90vw;font-size:13px;line-height:1.7}.mobile-menu{display:none}.backdrop-nav{display:none}.progressbar{height:5px;border-radius:4px;overflow:hidden;background:#edf1f7}.progressbar i{height:100%;display:block;background:var(--blue)}.login-page{height:100vh;min-height:780px;display:flex;justify-content:center;align-items:center;background:linear-gradient(151deg,#f5f5f5 20%,#d0e1f6 46%,#c8ddf5 54%,#ededed 75%,#f7f7f7);position:relative}.login-brand{position:absolute;top:16px;left:16px;display:flex;gap:8px;align-items:center;font-size:20px;font-weight:500}.login-brand .brandmark{background:#fff;color:#acc9f1;box-shadow:none}.language{position:absolute;right:8px;top:16px}.language-menu{position:absolute;right:0;top:37px;width:126px;background:#fff;padding:4px;border:1px solid #eee;box-shadow:0 2px 4px #0002;font-size:14px}.language-menu button{width:100%;text-align:left;padding:8px 10px}.language-menu button.active{background:#f4f4f5}.login-card{width:518px;border-radius:24px;background:#fff;padding:64px 35px 12px;box-shadow:var(--shadow);min-height:564px}.login-card h1{font-size:36px;font-weight:700}.login-card>p{font-size:14px;color:var(--muted);margin:12px 0 28px}.login-card form{display:grid;gap:16px}.login-card input:not([type=checkbox]){height:42px;border-radius:2px;width:100%;font-size:14px}.login-card .btn{border-radius:2px;min-height:36px;height:36px;padding:6px;width:100%;margin-top:8px}.login-meta{display:flex;justify-content:space-between;align-items:center;font-size:12px}.login-divider{display:flex;gap:12px;align-items:center;margin:20px 0;color:#8b95a1;font-size:12px;justify-content:center}.login-divider:before,.login-divider:after{content:"";height:1px;flex:1;background:#e5e7eb}.login-demos{display:flex;justify-content:center;gap:20px;font-size:12px;color:var(--blue)}.login-footer{font-size:12px;color:#9099a6;text-align:center;margin-top:56px}.password-wrap{position:relative}.password-wrap input{padding-right:40px}.password-wrap button{position:absolute;right:5px;top:3px}.requirements-table td{font-size:12px;line-height:1.8}.requirements-table td:last-child{min-width:260px}.requirements-table th:first-child{width:60px}.status-counts{display:flex;gap:8px;flex-wrap:wrap}.checklist li{margin:8px 0;color:#758196;line-height:1.8}
@media(min-width:1600px){.main{padding:40px}.dashboard-grid{grid-template-columns:minmax(0,1fr) 360px}}
@media(max-width:1180px){.sidebar{width:192px}.workspace{margin-left:192px}.main{padding:24px}.topbar{padding:0 24px}.dashboard-grid{grid-template-columns:minmax(0,1fr) 270px;gap:16px}.stat{padding:18px;gap:10px}.stat-icon{height:40px;width:40px}.hero-art{width:180px}.paper-edit-grid{grid-template-columns:minmax(0,1fr) 260px}.top-actions{gap:8px}.stat strong{font-size:24px}}
@media(max-width:950px){.sidebar{width:76px;padding:24px 12px}.brand{padding:0 6px 24px}.brand>div:last-child,.navitem>span,.navlabel,.sidebar-bottom .localcard,.sidebar-bottom>.row,.sidebar-bottom>.navitem{display:none}.navitem{justify-content:center;padding:14px 0}.navitem.active:before{left:-12px}.workspace{margin-left:76px}.dashboard-grid{grid-template-columns:1fr}.dashboard-right{display:grid;grid-template-columns:1fr 1fr;gap:16px}.dashboard-right>.panel{margin:0!important}.hero-art{width:160px}.stats{gap:12px}.stat{padding:16px;display:block}.stat-icon{height:32px;width:32px;margin-bottom:12px}.stat-icon .icon{width:17px}.hero{padding:24px}.paper-edit-grid{grid-template-columns:1fr}.exam-layout{grid-template-columns:1fr 210px;gap:16px}.filters{grid-template-columns:repeat(3,1fr)}.login-card{width:512px;padding:64px 32px 12px;min-height:560px}.login-card h1{font-size:30px}.top-actions .top-name,.top-sep{display:none}.flow-steps{gap:6px}.flow-steps .arrow{display:none}}
@media(max-width:620px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:224px;padding:24px 16px}.sidebar.open{transform:translateX(0)}.sidebar.open .brand>div:last-child,.sidebar.open .navitem>span,.sidebar.open .navlabel,.sidebar.open .localcard,.sidebar.open .sidebar-bottom>.row,.sidebar.open .sidebar-bottom>.navitem{display:revert}.sidebar.open .navitem{justify-content:flex-start;padding:12px 16px}.sidebar.open .brand{padding-bottom:24px}.backdrop-nav.show{display:block;position:fixed;inset:0;background:#152b4666;z-index:30}.workspace{margin-left:0}.topbar{height:64px;padding:0 16px;gap:8px}.mobile-menu{display:inline-flex}.breadcrumb{display:none}.top-actions{gap:6px}.top-actions>.iconbtn{display:none}.role-select{padding:7px}.role-select>span{display:none}.role-select select{max-width:160px;font-size:12px}.top-actions>.avatar{width:30px;height:30px;font-size:12px}.main{padding:24px 16px}.page-head{gap:12px;align-items:flex-start}.page-head h1{font-size:24px}.page-head p{font-size:12px}.page-head>.row{flex-wrap:wrap;justify-content:flex-end}.page-head .btn{padding:9px 10px;font-size:12px}.eyebrow{font-size:10px}.hero{padding:24px;min-height:200px}.hero h2{font-size:22px}.hero-art{position:absolute;right:-25px;bottom:-25px;opacity:.28;width:160px}.hero>div:first-child{z-index:1}.hero p{max-width:240px}.stats{grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.stat{display:flex;padding:18px;gap:12px}.stat-icon{margin:0;height:36px;width:36px}.stat strong{font-size:24px}.stat small{font-size:11px}.dashboard-right{grid-template-columns:1fr}.panel-head{padding:18px 16px}.paper-row{padding:18px 16px;gap:10px;grid-template-columns:30px minmax(0,1fr) auto}.paper-icon{width:30px;height:36px}.paper-row h3{font-size:13px}.paper-row .tag{font-size:10px;padding:3px 5px}.paper-row small{font-size:10px}.paper-row .linkbtn{font-size:12px}.tabs{padding:0 16px;gap:20px;font-size:12px}.flow-steps{flex-wrap:wrap;gap:16px}.flow-steps span{width:44%}.demo-flow{padding:18px 16px}.footer{align-items:flex-start;line-height:1.8;flex-wrap:wrap}.footer>span{max-width:200px}.panel-pad{padding:20px 16px}.filters{grid-template-columns:1fr 1fr;padding:0 16px 16px;gap:10px}.toolbar{padding:16px}.searchbox{width:100%}.searchbox input{width:100%}.question-row{padding:16px;gap:10px}.question-row .actions{gap:2px}.question-row .btn.small{padding:5px 7px}.question-row .options{grid-template-columns:1fr}.grid2,.form-grid,.compare,.task-grid{grid-template-columns:1fr;gap:16px}.compare{gap:0}.compare>div{padding:20px 16px}.compare>div+div{border-left:0;border-top:1px solid var(--line)}.full{grid-column:auto}.modal-overlay{padding:12px}.modal{max-height:94vh}.modal-body{padding:20px 16px}.modal-header{padding:16px}.modal-footer{padding:16px}.exam-layout{grid-template-columns:1fr}.exam-sidebar{position:static;grid-row:1}.exam-sidebar .panel-pad{padding:16px}.exam-sidebar .timer{font-size:24px;margin:6px 0}.question-nav{display:flex;flex-wrap:wrap;margin:12px 0}.question-nav button{width:32px;height:32px}.exam-sidebar .divider{margin:10px 0}.exam-sidebar .notice{display:none}.grade-summary{flex-wrap:wrap;padding:20px 16px}.review-qhead{padding:16px}.grading{padding:16px}.grading textarea{flex-basis:100%}.ink-toolbar{font-size:11px}.ink-toolbar .btn{font-size:11px;min-height:28px}.login-page{min-height:780px}.login-card{width:100%;padding:64px 24px 12px;min-height:576px}.login-card h1{font-size:30px}.login-demos{gap:14px}.login-footer{margin-top:56px}.login-brand{font-size:20px}.pagination{padding:16px;font-size:11px}.task-card{padding:20px}.task-card .task-info{gap:16px}.question-row .qbody{width:0}.question-row .row{gap:6px;flex-wrap:wrap}}

.role-control{position:relative}.role-menu{position:absolute;right:0;top:44px;width:210px;background:#fff;padding:4px;border:1px solid #eee;box-shadow:0 2px 4px #0002;z-index:50;border-radius:2px}.role-menu button{display:block;width:100%;padding:10px 12px;text-align:left;font-size:13px}.role-menu button:hover,.role-menu button.active{background:#f4f4f5}.role-select .icon:last-child{width:14px;height:14px}.sidebar .navitem span.navcount{display:inline-block}.sidebar-bottom .grow{line-height:1.5}@media(max-width:620px){.role-control .role-select>span{display:none}.role-select{gap:6px}.role-select b{font-size:11px!important}.role-menu{width:200px}}

.locale-wrap{position:relative;order:2}.locale-wrap .language-menu{top:40px;z-index:55}.locale-wrap .iconbtn .icon{width:16px;height:16px}@media(max-width:620px){.locale-wrap .iconbtn{width:28px}.top-actions{gap:4px}.top-actions>.tag{font-size:9px!important;padding:3px 5px}}

/* Reference login: 448 px form, 40 px title line and responsive centered card. */
.login-page{height:100vh;min-height:680px;background:#f7f7f7;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji";isolation:isolate}
.login-backdrop{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:-1}
.login-brand{top:16px;left:16px;gap:8px;height:34px}
.login-brand img{width:42px;height:34px}
.login-brand p{font-size:20px;font-weight:500;line-height:28px;color:#111}
.login-page .language{top:16px;right:8px;z-index:3}
.login-page .language>.iconbtn{width:32px;height:32px}
.login-page .language .icon{width:16px;height:16px}
.login-page .language-menu{width:126px;top:36px;border-radius:2px}
.login-card{width:518px;min-height:0;padding:64px 35px 12px;border-radius:24px}
.login-card h2{font-size:36px;line-height:40px;font-weight:700;letter-spacing:-.8px}
.login-card>p:not(.login-create){font-size:14px;line-height:20px;color:#71717a;margin:12px 0 28px}
.login-card form{display:grid;gap:16px}
.login-card input:not([type=checkbox]){height:42px;padding:8px 13px;border:1px solid #e4e4e7;font-size:14px;border-radius:2px}
.login-card input::placeholder{color:#a1a1aa;font-weight:400}
.login-card .password-wrap .iconbtn{top:5px;right:5px;width:32px;height:32px;color:#85858b}
.login-card .password-wrap .icon{width:16px;height:16px}
.login-meta{height:20px;font-size:14px;line-height:20px;color:#323639}
.login-meta label{display:flex;gap:8px;align-items:center}
.login-meta input[type=checkbox]{appearance:none;width:16px;height:16px;border:1px solid #e4e4e7;border-radius:0;margin:0;padding:0}
.login-meta input:checked{appearance:auto;accent-color:#006be6}
.login-meta .linkbtn{padding:0;line-height:20px;font-weight:400}
.login-card .btn{height:36px;min-height:36px;margin-top:8px;padding:0;border-radius:2px;font-size:14px;line-height:20px;box-shadow:0 1px 3px #0002}
.login-divider{margin:16px 0;gap:12px;color:#71717a;font-size:12px;line-height:16px}
.login-divider span{flex:0 1 auto;text-align:center}
.login-divider:before,.login-divider:after{flex:1 1 0}
.login-social{height:32px;display:flex;justify-content:center;position:relative}
.login-social>.iconbtn{height:32px;width:32px;border-radius:9999px}
.login-social .role-menu{top:36px;right:50%;transform:translateX(50%);width:224px}
.login-social small{display:block;padding:8px 12px}
.login-card .login-create{font-size:14px;line-height:20px;color:#323639;text-align:center;margin:24px 0 0}
.login-create .linkbtn{padding:0;font-weight:400}
.login-footer{font-size:12px;line-height:16px;color:#71717a;text-align:center;margin-top:52px}
[hidden]{display:none!important}
@media(max-width:950px){.login-card{width:512px;padding:64px 32px 12px}.login-card h2{font-size:30px;line-height:36px}}
@media(max-width:620px){.login-card{width:100%;padding:64px 24px 12px}.login-divider span{max-width:100px}.login-backdrop{opacity:.18}.login-card h2{font-size:30px;line-height:36px}}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.login-brand{gap:4px}.login-brand img{margin-right:4px}
.login-card{padding-top:32px}.login-card h2{margin-top:32px}
.login-social{padding-inline:40px}
.login-page .language-menu{right:-8px}
@media(max-width:950px){.login-card{padding-top:32px}}

.photo-panel {padding:16px;border:1px solid #ceddeb;border-radius:10px;background:#f8fbfe;display:grid;gap:10px;}
.photo-panel p,.photo-panel figcaption {font-size:12px;color:#455a70;overflow-wrap:anywhere;}
.photo-panel p:empty {display:none;}
.photo-pick {position:relative;overflow:hidden;cursor:pointer;}
.photo-pick input {position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;}
.photo-pick:focus-within {outline:2px solid #006be6;}
.photo-grid {display:flex;flex-wrap:wrap;gap:12px;}
.photo-grid:empty {display:none;}
.photo-grid figure {margin:0;max-width:180px;}
.photo-view {display:grid;gap:4px;padding:5px;border:1px solid #ceddeb;border-radius:6px;background:white;color:#174c83;cursor:zoom-in;}
.photo-view img {width:150px;max-width:100%;height:104px;object-fit:contain;}
.photo-dialog {position:fixed;margin:auto;padding:15px;max-width:96vw;max-height:94vh;overflow:auto;border:0;border-radius:12px;}
.photo-dialog img {display:block;width:auto;height:auto;max-width:none;}
.photo-dialog button {position:sticky;top:0;left:0;}
.photo-dialog::backdrop {background:#182333b3;}
.rich math {font-size:1.12em;math-style:normal;}

.service-login {max-width:460px;margin:8vh auto;padding:14px;}
.service-header {padding:16px clamp(16px,5vw,64px);background:#12365a;color:white;display:flex;gap:16px;align-items:center;}
.service-header strong {margin-right:auto;}
.service-header .btn[data-act="logout"] {color:#12365a;}
.service-main {max-width:1220px;margin:auto;}
.service-main nav {margin-bottom:24px;}

.photo-dialog:not(.original-size) img {max-width:min(88vw,1400px);max-height:78vh;object-fit:contain;}
.photo-dialog .btn + .btn {margin-left:8px;}

/* Service annotation layers keep every original separate from teacher ink. */
.annotation-preview{position:relative;width:100%;aspect-ratio:900/360;background:#fff;border:1px solid #d8e1ee;border-radius:6px;overflow:hidden}
.annotation-preview>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.annotation-preview>.annotation-overlay{pointer-events:none}
.service-main>nav{gap:8px}
.service-main [data-save-state]{font-size:12px;color:#3d607e}
/* Only the service administrator question form mounts Quill. */
.question-quill-editor .ql-editor{min-height:140px;padding:16px;line-height:1.8;overflow-wrap:anywhere;font-family:inherit;font-size:14px}
.question-quill-editor .ql-editor img{max-width:100%;max-height:300px}
.question-quill-editor .ql-toolbar.ql-snow,.question-quill-editor .ql-container.ql-snow{border-width:0}
.question-quill-editor .ql-toolbar.ql-snow{border-bottom:1px solid var(--line);background:#fafbfc}
.question-quill-editor .question-quill-host:not([data-quill-ready]){min-height:140px;padding:16px}
.question-quill-editor .editor-toolbar small{margin-left:auto}

