@font-face{font-family:"LXGW WenKai Lite";src:url("fonts/LXGWWenKaiLite-Medium.ttf") format("truetype");font-style:normal;font-weight:500;font-display:swap}
:root{--ink:#24201d;--muted:#817a72;--paper:#fff;--card:#fff;--orange:#ef6735;--orange-dark:#d94d1f;--cream:#fff2df;--green:#25876d;--red:#c7463c;--line:#e9e4dc;--shadow:0 18px 45px rgba(63,48,35,.10);--student-content-width:1200px;font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--paper)}
.auth-panel{position:relative;width:min(100%,520px);margin-right:auto;margin-left:auto;padding:27px 24px 25px;overflow:hidden;border:1px solid rgba(239,103,53,.16);background:radial-gradient(circle at 92% 3%,rgba(239,103,53,.105),transparent 29%),linear-gradient(180deg,#fff 0%,#fffdfb 100%);box-shadow:0 22px 55px rgba(63,48,35,.12),0 3px 12px rgba(63,48,35,.045)}.auth-panel::before{content:"";position:absolute;inset:0 0 auto;height:4px;background:linear-gradient(90deg,#f7aa80,var(--orange) 48%,#dc5425)}.auth-panel::after{content:"";position:absolute;width:150px;height:150px;right:-82px;top:-88px;border:1px solid rgba(239,103,53,.12);border-radius:50%;pointer-events:none}.auth-panel .panel-heading{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center;gap:10px;margin-bottom:24px;text-align:center}.auth-panel .panel-heading h2{margin:0;font-size:19px;letter-spacing:.01em}.auth-panel-heading small{display:block;margin-bottom:4px;color:#bf6948;font-size:9px;font-weight:900;letter-spacing:.2em}.auth-lock{position:relative;width:48px;height:48px;display:block;margin:auto;border-radius:15px;background:linear-gradient(145deg,#f48550,#df5629);box-shadow:0 10px 22px rgba(224,82,35,.24)}.auth-lock::before{content:"";position:absolute;left:15px;top:9px;width:14px;height:15px;border:3px solid #fff;border-bottom:0;border-radius:9px 9px 0 0}.auth-lock::after{content:"";position:absolute;left:12px;top:21px;width:24px;height:19px;border-radius:5px;background:#fff;box-shadow:inset 0 -3px 0 rgba(220,84,37,.08)}.student-auth-form{position:relative;z-index:1;display:grid;width:min(100%,400px);margin:0 auto;gap:15px}.student-auth-form .field-row{width:100%;grid-template-columns:minmax(0,1fr);gap:14px}.student-auth-form .field{width:100%;gap:8px}.student-auth-form .field>span{text-align:center;color:#4f4944;font-size:12px;letter-spacing:.02em}.student-auth-form .field input{width:100%;height:51px;border-color:#e5ddd6;background:#faf9f7;text-align:center;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease,transform .18s ease}.student-auth-form .field input:hover{border-color:#d8ccc3;background:#fff}.student-auth-form .field input:focus{border-color:#ef8b64;background:#fff;box-shadow:0 0 0 4px rgba(239,103,53,.11),0 8px 20px rgba(70,52,41,.06);transform:translateY(-1px)}.auth-detect-status{display:flex;align-items:center;justify-content:center;min-height:42px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:#faf9f7;color:var(--muted);font-size:11px;line-height:1.5;text-align:center;transition:border-color .18s ease,background .18s ease,color .18s ease}.auth-detect-status::before{content:"";width:7px;height:7px;margin-right:8px;flex:none;border-radius:50%;background:#b9b1a9}.auth-detect-status.checking::before{border:2px solid #f2c7b3;border-top-color:var(--orange);background:transparent;animation:spin .7s linear infinite}.auth-detect-status.setup{border-color:#f1d5b2;background:#fff8e9;color:#8b641b}.auth-detect-status.setup::before{background:#e6a737}.auth-detect-status.verified{border-color:#c9e6d9;background:#eff9f4;color:#1c745c}.auth-detect-status.verified::before{background:var(--green)}.auth-detect-status.error{border-color:#f0cbc5;background:#fff3f1;color:#9c3026}.auth-detect-status.error::before{background:var(--red)}.password-stage{display:grid;width:100%;gap:13px;animation:auth-stage-in .2s ease-out}.password-stage[hidden],[data-password-confirm][hidden]{display:none!important}.auth-tip{margin:0;color:var(--muted);font-size:11px;line-height:1.65;text-align:center}.auth-panel .submit-btn{width:max-content;min-width:0;height:46px;margin:4px auto 0;padding:0 23px;justify-content:center;justify-self:center;border-radius:12px;box-shadow:0 10px 22px rgba(239,103,53,.22);transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}.auth-panel .submit-btn:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 14px 27px rgba(239,103,53,.28);filter:saturate(1.05)}.auth-panel .submit-btn:not(:disabled):active{transform:translateY(0)}@keyframes auth-stage-in{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}@media(max-width:480px){.auth-panel{padding:24px 17px 22px;border-radius:19px}.auth-panel .panel-heading{margin-bottom:21px}.auth-lock{width:44px;height:44px}.auth-lock::before{left:14px;top:8px}.auth-lock::after{left:11px;top:20px;width:22px;height:18px}}@media(prefers-reduced-motion:reduce){.student-auth-form .field input,.auth-detect-status,.auth-panel .submit-btn{transition:none}.password-stage{animation:none}}
*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:var(--paper)}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.no-scroll{overflow:hidden}.mobile-hero{position:relative;overflow:hidden;min-height:205px;padding:36px 24px 34px;background:linear-gradient(145deg,#24bce9,#33ccff 58%,#65d9ff);color:#fff;border-radius:0 0 28px 28px}.hero-content{position:relative;z-index:2;max-width:620px;margin:auto}.eyebrow{font-size:10px;letter-spacing:.22em;font-weight:800;opacity:.82}.mobile-hero h1{font-size:29px;line-height:1.2;margin:11px 0 8px;letter-spacing:.04em}.mobile-hero p{margin:0;opacity:.9;font-size:14px}.hero-orb{position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.25)}.hero-orb.one{width:210px;height:210px;right:-64px;top:-88px}.hero-orb.two{width:88px;height:88px;right:35px;bottom:-38px;background:rgba(255,255,255,.1)}.mobile-main{width:min(100%,var(--student-content-width));margin:-14px auto 0;padding:0 16px 30px;position:relative;z-index:3}.section-title{display:flex;align-items:center;justify-content:space-between;margin:22px 3px 15px}.section-title>div{display:flex;gap:9px;align-items:baseline}.section-title span{font-size:19px;font-weight:800}.section-title small{color:var(--muted)}.section-title .live-dot{font-size:11px;color:var(--green);font-weight:700}.live-dot:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#36b38e;margin-right:6px;box-shadow:0 0 0 4px rgba(54,179,142,.12)}.task-grid{display:grid;gap:16px}.task-card{display:grid;grid-template-columns:126px 1fr;min-height:148px;background:var(--card);border-radius:20px;padding:10px;text-decoration:none;color:inherit;box-shadow:0 8px 28px rgba(70,55,42,.08);border:1px solid var(--line)}.task-card.closed{opacity:.78}.task-cover{position:relative;border-radius:14px;overflow:hidden;background:#eee7dc}.task-cover img{width:100%;height:100%;object-fit:cover;display:block}.cover-placeholder{height:100%;display:grid;place-items:center;font-size:24px;font-weight:900;color:#c7aa8d}.status-pill,.count-pill{position:absolute;font-size:10px;font-weight:800;border-radius:999px;padding:5px 8px}.status-pill{left:7px;top:7px}.status-pill.open{background:#e5f7ef;color:#187057}.status-pill.ended{background:#eeeae6;color:#726b64}.count-pill{right:7px;bottom:7px;background:rgba(27,24,22,.72);color:#fff}.task-body{padding:8px 6px 6px 14px;display:flex;min-width:0;flex-direction:column}.task-body h2{font-size:18px;margin:3px 0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.deadline{display:flex;align-items:flex-start;gap:6px;color:var(--muted);font-size:12px;line-height:1.5}.clock{font-size:16px;color:var(--orange)}.task-action{display:inline-flex;align-items:center;justify-content:center;align-self:center;min-width:112px;margin-top:auto;padding:8px 18px;border-radius:999px;background:linear-gradient(135deg,var(--orange),#f08540);box-shadow:0 7px 16px rgba(239,103,53,.2);color:#fff;font-size:13px;font-weight:800}.empty-state{text-align:center;background:#fff;border:1px solid var(--line);border-radius:22px;padding:45px 20px;box-shadow:var(--shadow)}.empty-icon{display:grid;place-items:center;margin:auto;width:52px;height:52px;border-radius:50%;background:#e8f6ef;color:var(--green);font-size:24px}.empty-state h2{font-size:18px;margin:16px 0 7px}.empty-state p{margin:0;color:var(--muted);font-size:13px}.notice{padding:13px 15px;border-radius:12px;background:#fff3d7;color:#7c5b10;margin:14px 0;font-size:14px;line-height:1.5;border:1px solid #f2dda9}.notice.error{background:#fff0ed;color:#9c3026;border-color:#f5c9c2}.notice.success{background:#eaf8f1;color:#17684f;border-color:#bee8d8}.topbar{width:min(100%,var(--student-content-width));height:58px;position:sticky;top:0;z-index:20;margin:0 auto;background:rgba(255,255,255,.92);backdrop-filter:blur(16px);display:grid;grid-template-columns:40px 1fr 40px;align-items:center;padding:0 14px;border-bottom:1px solid rgba(220,213,203,.65)}.topbar a{text-decoration:none;color:var(--ink);font-size:34px;font-weight:300}.topbar strong{text-align:center;font-size:16px}.submit-main{width:min(100%,var(--student-content-width));margin:auto;padding:16px 14px 50px}.detail-head{padding:20px 6px 12px}.eyebrow.dark{color:var(--orange)}.detail-head h1{margin:9px 0 13px;font-size:28px;letter-spacing:-.035em}.detail-meta{display:flex;align-items:center;gap:11px;color:var(--muted);font-size:13px}.detail-meta .status-pill{position:static}.panel{background:#fff;border:1px solid var(--line);border-radius:23px;padding:18px;margin-top:15px;box-shadow:0 8px 28px rgba(64,51,42,.07)}.panel-heading{display:flex;gap:12px;align-items:center;margin-bottom:16px}.step-no{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--cream);color:var(--orange);font-size:12px;font-weight:900}.panel-heading h2{font-size:17px;margin:0 0 3px}.panel-heading p{font-size:12px;color:var(--muted);margin:0}.assignment-gallery{display:grid;grid-auto-flow:column;grid-auto-columns:82%;overflow-x:auto;gap:10px;scroll-snap-type:x mandatory;padding-bottom:3px;scrollbar-width:none}.assignment-gallery::-webkit-scrollbar{display:none}.assignment-image{position:relative;padding:0;border:0;border-radius:15px;overflow:hidden;background:#eee;aspect-ratio:4/3;scroll-snap-align:start}.assignment-image img{width:100%;height:100%;object-fit:cover}.assignment-image span{position:absolute;right:9px;bottom:8px;padding:4px 8px;border-radius:99px;background:rgba(0,0,0,.62);color:#fff;font-size:11px}.field-row{display:grid;gap:13px}.field{display:grid;gap:7px}.field span,.field-label span{font-size:13px;font-weight:750}.field b,.field-label b{color:var(--orange)}.field input{width:100%;height:49px;border:1px solid var(--line);border-radius:13px;padding:0 14px;background:#fbfaf8;outline:none;font-size:15px}.field input:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(239,103,53,.12);background:#fff}.camera-field{margin-top:18px}.field-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.field-label small{color:var(--muted)}.field-label small strong{color:var(--orange)}.camera-trigger{width:100%;min-height:132px;border:1.5px dashed #e1b99e;background:#fffaf5;border-radius:16px;color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px}.camera-trigger strong{font-size:14px}.camera-trigger small{font-size:11px;color:var(--muted)}.camera-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:2px solid var(--orange);color:var(--orange);font-size:13px}.privacy-tip{font-size:11px;line-height:1.5;color:#928a82;margin:9px 2px 0}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.photo-grid:empty{display:none}.photo-item{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;background:#eee}.photo-item img{width:100%;height:100%;object-fit:cover}.photo-item span{position:absolute;left:5px;bottom:5px;width:20px;height:20px;display:grid;place-items:center;background:rgba(0,0,0,.62);color:#fff;border-radius:50%;font-size:10px}.photo-item button{position:absolute;right:5px;top:5px;width:25px;height:25px;border:0;border-radius:50%;background:rgba(0,0,0,.65);color:#fff;font-size:19px;line-height:20px}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:13px;padding:13px 18px;text-decoration:none;font-weight:800;cursor:pointer}.btn.primary{background:linear-gradient(135deg,var(--orange),#f08540);color:#fff;box-shadow:0 10px 22px rgba(239,103,53,.24)}.btn.block{display:flex;width:100%}.submit-btn{width:100%;margin-top:20px;height:53px;justify-content:space-between;padding:0 20px}.submit-btn:disabled{opacity:.6}.submit-btn i{font-style:normal;font-size:21px}.disabled-panel{opacity:.8}.camera-sheet{position:fixed;inset:0;z-index:100;background:#080808;color:#fff}.camera-toolbar{height:64px;display:grid;grid-template-columns:70px 1fr 70px;align-items:center;padding:0 10px;background:#080808}.camera-toolbar strong{text-align:center}.camera-toolbar button{background:none;border:0;color:#fff}.camera-stage{position:absolute;left:0;right:0;top:64px;bottom:126px;overflow:hidden;background:#111}.camera-stage video{width:100%;height:100%;object-fit:cover}.camera-guide{position:absolute;inset:7%;border:1px solid rgba(255,255,255,.55);border-radius:10px}.camera-guide:before,.camera-guide:after{content:"";position:absolute;width:35px;height:35px;border-color:#fff}.camera-guide:before{left:-2px;top:-2px;border-left:3px solid;border-top:3px solid;border-radius:8px 0 0}.camera-guide:after{right:-2px;bottom:-2px;border-right:3px solid;border-bottom:3px solid;border-radius:0 0 8px}.camera-guide span{position:absolute;left:50%;top:12px;transform:translateX(-50%);white-space:nowrap;background:rgba(0,0,0,.45);padding:6px 10px;border-radius:99px;font-size:11px}.camera-controls{height:126px;position:absolute;bottom:0;left:0;right:0;display:grid;grid-template-columns:1fr 82px 1fr;align-items:center;text-align:center;padding:0 16px}.camera-controls>span{font-size:10px;color:#aaa}.camera-controls button{width:70px;height:70px;border-radius:50%;border:4px solid #fff;background:transparent;padding:5px}.camera-controls button i{display:block;width:100%;height:100%;background:#fff;border-radius:50%}.image-viewer{position:fixed;inset:0;z-index:110;background:rgba(0,0,0,.92);padding:50px 10px 20px}.image-viewer img{width:100%;height:100%;object-fit:contain}.image-viewer button{position:absolute;right:14px;top:12px;color:#fff;background:none;border:0;font-size:36px}.loading-mask{position:fixed;inset:0;z-index:120;background:rgba(255,255,255,.96);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.loading-mask[hidden],.camera-sheet[hidden],.image-viewer[hidden]{display:none}.loading-mask span{font-size:12px;color:var(--muted)}.spinner{width:42px;height:42px;border:4px solid #f4d7c8;border-top-color:var(--orange);border-radius:50%;animation:spin .8s linear infinite}.camera-toast{position:fixed;z-index:200;left:50%;bottom:32px;max-width:82%;transform:translate(-50%,20px);padding:11px 15px;background:rgba(30,27,25,.92);color:#fff;border-radius:10px;opacity:0;pointer-events:none;transition:.2s;font-size:13px;text-align:center}.camera-toast.show{opacity:1;transform:translate(-50%,0)}@keyframes spin{to{transform:rotate(360deg)}}.install-page{display:grid;place-items:center;min-height:100vh;padding:20px;background:linear-gradient(145deg,#f9eee5,#f7f4ee 45%,#efe7dc)}.install-card{width:min(460px,100%);background:#fff;padding:30px;border-radius:24px;box-shadow:var(--shadow)}.brand-mark{width:50px;height:50px;border-radius:16px;background:var(--orange);color:#fff;display:grid;place-items:center;font-size:25px;font-weight:900}.install-card h1{font-size:25px;margin:18px 0 5px}.muted{color:var(--muted)}.stack-form{display:grid;gap:13px;margin-top:22px}.stack-form label{display:grid;gap:6px;font-size:13px;font-weight:700}.stack-form input{height:45px;border:1px solid var(--line);border-radius:10px;padding:0 12px}
@media(min-width:600px){.mobile-hero{min-height:220px;padding-top:42px}.mobile-hero h1{font-size:34px}.task-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.task-card{grid-template-columns:112px 1fr}.field-row{grid-template-columns:1fr 1fr}.assignment-gallery{grid-auto-columns:56%}.panel{padding:24px}.submit-main{padding-top:26px}}
@media(min-width:1000px){.task-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.photo-item>span{top:5px;bottom:auto}.photo-item .preview-watermark{position:absolute;right:4px;bottom:4px;white-space:pre-line;text-align:left;background:rgba(0,0,0,.55);color:#fff;border-radius:3px;padding:3px 4px;font-size:6px;line-height:1.25}
.photo-item img{cursor:zoom-in}.photo-item img:focus-visible{outline:3px solid #f5b800;outline-offset:-3px}.image-viewer .viewer-watermark{position:absolute;right:20px;bottom:30px;max-width:calc(100% - 40px);padding:8px 11px;border-radius:7px;background:rgba(0,0,0,.55);color:#fff;font-size:12px;line-height:1.45;white-space:pre-line;text-align:right;letter-spacing:.02em;transform-origin:right bottom;pointer-events:none}

.submission-success{position:fixed;inset:0;z-index:130;display:grid;place-items:center;padding:16px;background:rgba(8,38,58,.78);backdrop-filter:blur(9px)}
.submission-success[hidden]{display:none}
.submission-success-card{position:relative;width:min(440px,100%);max-height:calc(100vh - 32px);overflow:auto;background:linear-gradient(180deg,#f7fdff,#fff);border:1px solid rgba(51,204,255,.32);border-radius:26px;padding:18px;text-align:center;box-shadow:0 26px 80px rgba(0,21,35,.4)}
.submission-success-x{position:absolute;z-index:2;right:12px;top:12px;width:32px;height:32px;border:1px solid rgba(13,68,98,.08);border-radius:50%;background:rgba(255,255,255,.92);color:#17445e;font-size:22px;line-height:1;box-shadow:0 5px 16px rgba(12,62,90,.1)}
.submission-success-heading{display:block;padding:0 36px 12px;text-align:center}.submission-success-heading span{display:block;margin-bottom:3px;color:#1387ad;font-size:8px;font-weight:900;letter-spacing:.18em}.submission-success-heading h2{margin:0;color:#103f59;font-size:19px}
.submission-receipt-preview{display:grid;place-items:center;width:100%;min-height:360px;overflow:hidden;border-radius:18px;background:linear-gradient(145deg,#dff6ff,#bcecff);color:#34738f;font-size:12px;box-shadow:0 14px 35px rgba(17,124,163,.16)}.submission-receipt-preview img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:contain;-webkit-touch-callout:default}
.submission-success-actions{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(92px,.65fr);gap:9px;margin-top:14px}.submission-success-actions .btn{width:100%;min-height:46px}.submission-success-actions .btn.primary{background:linear-gradient(135deg,#16b9f0,#33ccff);box-shadow:0 10px 22px rgba(31,178,226,.27)}
.submission-success-done{background:#e9f6fb;color:#17445e}
#saveSubmissionResult:disabled{opacity:.65}
@media(max-width:390px){.submission-success{padding:10px}.submission-success-card{max-height:calc(100vh - 20px);padding:13px;border-radius:21px}.submission-success-heading{padding-bottom:9px}.submission-success-actions{margin-top:10px}.submission-success-actions .btn{min-height:43px;padding:10px 12px;font-size:13px}}
.personal-link-card{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 15px;padding:13px 16px;border:1px solid #f0d7c8;border-radius:15px;background:#fff8f3}.personal-link-card>div{display:grid;gap:3px}.personal-link-card strong{font-size:14px}.personal-link-card span{font-size:11px;color:var(--muted)}.personal-link-card button{border:0;border-radius:9px;background:var(--orange);color:#fff;padding:8px 11px;font-size:11px;font-weight:800;white-space:nowrap}
.assignment-image.remote-stored{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:linear-gradient(145deg,#edf4fa,#f8fbfd);color:#3f6f9d}.assignment-image.remote-stored>strong{font-size:36px}.assignment-image.remote-stored>small{font-size:12px;font-weight:750}.submission-check-result{display:grid;gap:5px;margin-top:14px;padding:15px;border-radius:15px;text-align:left}.submission-check-result.matched{background:#eaf8f1;color:#17684f}.submission-check-result.mismatched{background:#fff0ed;color:#982f26}.submission-check-result strong{font-size:16px}.submission-check-result span{font-size:12px;font-weight:700}.submission-check-result p{margin:3px 0 0;font-size:12px;line-height:1.55;color:inherit}
.task-package-name{display:inline-flex;margin-bottom:6px;padding:3px 7px;border-radius:99px;background:#f2edf9;color:#755c9d;font-size:9px;font-weight:800}
.homework-submit-panel{padding-bottom:22px}.pair-progress{display:flex;align-items:center;justify-content:space-between;margin:2px 0 12px;padding:10px 12px;border-radius:11px;background:#faf8f4;color:var(--muted);font-size:11px}.pair-progress strong{color:var(--ink);font-size:12px}.pair-progress b{color:var(--orange);font-size:16px}.homework-pair-list{display:grid;gap:12px}.homework-pair-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px;padding:10px;border:1px solid var(--line);border-radius:16px;background:#fcfbf9}.homework-pair-pane{min-width:0}.pair-pane-label{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-bottom:7px}.pair-pane-label strong{font-size:11px}.pair-pane-label span{font-size:9px;color:var(--muted);white-space:nowrap}.pair-pane-label span.ready{color:var(--green);font-weight:800}.pair-original-image{display:block;width:100%;aspect-ratio:4/3;border-radius:11px;background:#f0ede8}.pair-original-image img{object-fit:contain}.row-camera-trigger{width:100%;aspect-ratio:4/3;min-height:0;border:1.5px dashed #e1b99e;background:#fff8f2;border-radius:11px;color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px}.row-camera-trigger strong{font-size:11px}.row-camera-trigger small{font-size:8px;color:var(--muted)}.row-camera-trigger .camera-icon{width:28px;height:28px;font-size:10px}.row-camera-trigger:disabled{opacity:.55}.row-capture-result{position:relative;width:100%;aspect-ratio:4/3;border-radius:11px;overflow:hidden;background:#f0ede8}.row-capture-result[hidden],.row-camera-trigger[hidden]{display:none}.row-capture-result>img{width:100%;height:100%;object-fit:contain;cursor:zoom-in}.row-capture-result .capture-page-badge{position:absolute;left:5px;top:5px;width:21px;height:21px;display:grid;place-items:center;border-radius:50%;background:rgba(0,0,0,.62);color:#fff;font-size:9px}.row-capture-result .preview-watermark{position:absolute;right:4px;bottom:4px;white-space:pre-line;text-align:left;background:rgba(0,0,0,.55);color:#fff;border-radius:3px;padding:3px 4px;font-size:5px;line-height:1.25}.remove-row-capture{position:absolute;right:5px;top:5px;width:24px;height:24px;border:0;border-radius:50%;background:rgba(0,0,0,.68);color:#fff;font-size:18px;line-height:20px}.homework-submit-panel .privacy-tip{margin-top:12px}.homework-submit-panel .submit-btn{display:flex;width:max-content;margin:16px auto 0;padding:0 24px;justify-content:center}
.current-submission-list{margin-top:2px}.current-answer-image{display:block;width:100%;aspect-ratio:4/3;border-radius:11px;background:#f0ede8}.current-answer-image img{object-fit:contain}.current-answer-missing{display:grid;width:100%;aspect-ratio:4/3;place-items:center;border:1.5px dashed #ddd5ca;border-radius:11px;background:#f8f6f2;color:var(--muted);font-size:11px}
.current-status-icon{background:#e8f6ef;color:var(--green);font-size:17px}.current-submission-panel .panel-heading p{line-height:1.65}
.camera-heading-icon{position:relative}.camera-heading-icon::before{content:"";width:20px;height:14px;border:2px solid currentColor;border-radius:4px}.camera-heading-icon::after{content:"";position:absolute;width:6px;height:6px;border:2px solid currentColor;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-43%);box-shadow:-7px -8px 0 -5px currentColor}.row-camera-trigger{position:relative;isolation:isolate;border-color:#efb793;background:linear-gradient(145deg,#fffaf6 0%,#fff3e9 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.75),0 5px 14px rgba(133,84,52,.07);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.capture-camera-visual{position:relative;z-index:1;margin:0 0 3px;animation:capture-camera-float 1.8s ease-in-out infinite}.capture-camera-visual svg{display:block;width:48px;height:48px}.row-camera-trigger strong{position:relative;z-index:2;margin-top:1px;color:#4a352b;font-weight:850}.row-camera-trigger small{position:relative;z-index:2;color:#9a7460}.row-camera-trigger:not(:disabled):hover,.row-camera-trigger:not(:disabled):focus-visible{border-color:var(--orange);box-shadow:0 0 0 3px rgba(239,103,53,.1),0 9px 20px rgba(133,84,52,.12);transform:translateY(-1px);outline:none}.row-camera-trigger:not(:disabled):active{transform:translateY(0)}@keyframes capture-camera-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}@media(prefers-reduced-motion:reduce){.capture-camera-visual{animation:none}}
@media(min-width:600px){.homework-pair-list{gap:16px}.homework-pair-row{gap:16px;padding:15px}.pair-pane-label strong{font-size:13px}.pair-pane-label span{font-size:10px}.row-camera-trigger strong{font-size:13px}.row-camera-trigger small{font-size:10px}.row-capture-result .preview-watermark{font-size:7px}}
.panel.auth-panel{padding:27px 24px 25px}
@media(max-width:480px){.panel.auth-panel{padding:24px 17px 22px}}
.auth-panel::before{content:none}
.auth-lock{width:48px;height:52px;border-radius:0;clip-path:polygon(50% 0,90% 14%,88% 58%,70% 84%,50% 100%,30% 84%,12% 58%,10% 14%)}
.auth-lock::before{content:"";left:15px;top:17px;width:16px;height:9px;border:solid #fff;border-width:0 0 3px 3px;border-radius:1px;transform:rotate(-45deg)}
.auth-lock::after{content:none}
@media(max-width:480px){.auth-lock{width:44px;height:48px}.auth-lock::before{left:14px;top:16px}}
.submit-page .detail-head{text-align:center}
.submit-page .detail-meta{justify-content:center}
.camera-controls button:disabled{opacity:.55}.camera-controls button:disabled i{transform:scale(.86)}
.mobile-hero{width:min(calc(100% - 28px),var(--student-content-width));height:132px;min-height:0;margin:12px auto 0;padding:16px 20px;background:#33ccff;border-radius:22px}.mobile-hero .hero-content{position:relative;width:100%;height:100%;max-width:none}.mobile-hero .eyebrow{position:absolute;left:0;top:0}.mobile-hero h1{position:absolute;left:50%;top:50%;width:100%;margin:0;transform:translate(-50%,-50%);font-size:25px;line-height:1.2;text-align:center;white-space:nowrap}.mobile-hero p{position:absolute;right:0;bottom:0;margin:0;font-size:12px;text-align:right}.mobile-main{margin:0 auto;padding-top:0}.mobile-main .section-title{margin-top:18px}
@media(min-width:600px){.mobile-hero{height:142px;min-height:0;padding:18px 24px}.mobile-hero h1{font-size:29px}}
@media(max-width:360px){.mobile-hero{height:126px;padding:14px 16px}.mobile-hero h1{font-size:22px}.mobile-hero p{font-size:11px}}

/* 申论作答：同一原题的多张照片始终收纳在原尺寸预览容器内。 */
.capture-grid{display:grid;width:100%;aspect-ratio:4/3;gap:3px;padding:3px;background:#f0ede8}
.capture-grid.capture-count-1{grid-template-columns:1fr;grid-template-rows:1fr;gap:0;padding:0}
.capture-grid.capture-count-2{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr}
.capture-grid.capture-count-3,.capture-grid.capture-count-4{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
.capture-grid-item{position:relative;min-width:0;min-height:0;overflow:hidden;border-radius:7px;background:#fff}
.capture-grid-item>img{display:block;width:100%;height:100%;object-fit:contain;cursor:zoom-in}
.capture-grid-item .preview-watermark{right:3px;bottom:3px;max-width:calc(100% - 6px);padding:2px 3px;font-size:4px}
.capture-grid-item .remove-row-capture{right:3px;top:3px;width:20px;height:20px;font-size:15px;line-height:17px}
.capture-grid.capture-count-1 .capture-grid-item{border-radius:0}.capture-grid.capture-count-1 .capture-grid-item .preview-watermark{right:4px;bottom:4px;padding:3px 4px;font-size:5px}.capture-grid.capture-count-1 .capture-grid-item .remove-row-capture{right:5px;top:5px;width:24px;height:24px;font-size:18px;line-height:20px}
.capture-grid-add{position:absolute;z-index:4;left:7px;bottom:7px;width:30px;height:30px;border:1px solid rgba(255,255,255,.9);border-radius:50%;background:rgba(239,103,53,.92);color:#fff;font-size:21px;line-height:26px;box-shadow:0 3px 9px rgba(78,44,25,.22)}
.current-answer-grid{display:grid;width:100%;aspect-ratio:4/3;gap:3px;padding:3px;overflow:hidden;border-radius:11px;background:#f0ede8}
.current-answer-grid.capture-count-1{grid-template-columns:1fr}.current-answer-grid.capture-count-2{grid-template-columns:repeat(2,minmax(0,1fr))}.current-answer-grid.capture-count-3,.current-answer-grid.capture-count-4{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
.current-answer-grid>button{min-width:0;min-height:0;padding:0;overflow:hidden;border:0;border-radius:7px;background:#fff;cursor:zoom-in;aspect-ratio:auto}.current-answer-grid img{display:block;width:100%;height:100%;object-fit:contain}
@media(min-width:600px){.capture-grid{gap:5px;padding:5px}.capture-grid-item .preview-watermark{font-size:6px}.capture-grid-add{left:9px;bottom:9px;width:34px;height:34px;font-size:23px}}

/* Shared in-app image viewer */
.image-viewer{position:fixed;z-index:110;inset:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;padding:0;background:#11100f;color:#fff}
.image-viewer-toolbar{min-height:60px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px 9px 15px;border-bottom:1px solid rgba(255,255,255,.12);background:#211f1d}
.image-viewer-toolbar>strong{min-width:0;overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.image-viewer-controls{display:flex;align-items:center;gap:5px;flex:none}
.image-viewer .image-viewer-controls button{position:static;right:auto;top:auto;height:36px;min-width:36px;padding:0 9px;border:1px solid rgba(255,255,255,.15);border-radius:9px;background:#35312e;color:#fff;font-size:12px;font-weight:800}
.image-viewer .image-viewer-controls button:first-child,.image-viewer .image-viewer-controls button:nth-of-type(2){padding:0;font-size:20px}
.image-viewer-controls output{width:44px;color:#d5cfca;font-size:10px;text-align:center}
.image-viewer .image-viewer-controls .image-viewer-close{border-color:rgba(239,112,87,.3);background:#4a2924;color:#ffb7aa;font-size:21px;font-weight:500}
.image-viewer-stage{position:relative;display:grid;min-width:0;min-height:0;place-items:center;overflow:hidden;background:#0d0c0b;touch-action:none}
.image-viewer .image-viewer-stage img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;transform-origin:center center;will-change:transform;user-select:none;-webkit-user-drag:none}
.image-viewer-stage.is-zoomed{cursor:grab}.image-viewer-stage.is-dragging{cursor:grabbing}
.image-viewer>p{margin:0;padding:9px 12px;background:#211f1d;color:#aaa29c;font-size:9px;text-align:center}
.image-viewer-stage .viewer-watermark{right:16px;bottom:16px;max-width:calc(100% - 32px)}

/* Keep the task-list clock optically centered with its deadline text. */
.deadline{align-items:center}
.deadline .clock{display:inline-flex;flex:0 0 16px;width:16px;height:16px;align-items:center;justify-content:center;line-height:1}
.deadline .clock svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* Separate camera and library actions remain available while a page has room. */
.image-input-help{margin:0 0 10px;color:var(--muted);font-size:11px;line-height:1.65;overflow-wrap:anywhere}
.image-input-status{margin:0 0 10px;padding:9px 11px;border-radius:9px;background:#fff4e9;color:#8b4c2d;font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.image-input-status:empty{display:none}
.visually-hidden-input{position:fixed;left:-10000px;top:0;width:1px;height:1px;padding:0;border:0;opacity:0;overflow:hidden;pointer-events:none}
.camera-request-status{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;margin:0 0 12px;padding:9px 11px;border:1px solid #efdabf;border-radius:11px;background:#fff8ed;color:#795030;font-size:12px;line-height:1.6}
.camera-request-status[hidden]{display:none}
.camera-request-status>span{flex:1 1 180px;min-width:0;overflow-wrap:anywhere}
.camera-request-actions{display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.camera-request-actions button{min-height:44px;padding:8px 11px;border:1px solid #e5c8ad;border-radius:9px;background:#fff;color:#795030;font-size:12px;line-height:1.4;cursor:pointer;touch-action:manipulation}
.camera-request-actions button:focus-visible{outline:3px solid var(--orange);outline-offset:2px}
.row-input-actions{--input-tile-size:clamp(44px,12vw,56px);display:grid;width:100%;aspect-ratio:4/3;grid-template-columns:repeat(2,var(--input-tile-size));align-content:center;justify-content:center;gap:8px}
.row-input-actions[hidden]{display:none}
.row-capture-result:not([hidden])+.row-input-actions{aspect-ratio:auto;margin-top:10px}
.row-input-trigger{display:flex;width:var(--input-tile-size);height:var(--input-tile-size);min-width:0;min-height:0;aspect-ratio:1;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:3px;border:1px solid #efb793;border-radius:12px;background:linear-gradient(145deg,#fffaf6,#fff3e9);color:#69432f;box-shadow:inset 0 0 0 1px rgba(255,255,255,.75),0 3px 9px rgba(63,48,35,.06);cursor:pointer;touch-action:manipulation}
.row-input-trigger svg{width:20px;height:20px;flex:0 0 20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.row-input-trigger strong{margin:0;font-size:10px;font-weight:800;line-height:1.2;white-space:nowrap;color:inherit}
.row-upload-trigger{border-color:#c9deec;background:#f0f8fc;color:#2f637f}
.row-input-trigger:disabled{opacity:.55;cursor:default}
.row-input-actions .row-input-trigger:focus-visible{outline:3px solid var(--orange);outline-offset:2px}
.homework-submit-panel .panel-heading>div{min-width:0}
.homework-submit-panel .step-no{flex-shrink:0}
.homework-submit-panel .panel-heading p{line-height:1.6}
.camera-sheet{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%;height:100dvh;overflow:hidden}
.camera-toolbar{height:auto;min-height:64px;padding:env(safe-area-inset-top,0px) max(10px,env(safe-area-inset-right,0px)) 0 max(10px,env(safe-area-inset-left,0px))}
.camera-toolbar button{min-height:44px;border-radius:8px;touch-action:manipulation}
.camera-stage{position:relative;inset:auto;min-height:0}
.camera-stage video{display:block;object-fit:cover}
.camera-controls{position:relative;inset:auto;height:auto;min-height:126px;gap:10px;padding:12px max(12px,env(safe-area-inset-right,0px)) max(12px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px))}
.camera-controls>span{font-size:11px;line-height:1.5}
.camera-controls #useSystemCamera{width:100%;min-height:44px;height:auto;padding:10px 7px;border:1px solid #6d6965;border-radius:10px;background:#282523;color:#fff;font-size:12px;line-height:1.4;touch-action:manipulation}
.camera-controls #takePhoto{justify-self:center;touch-action:manipulation}
.camera-sheet button:focus-visible{outline:3px solid #ffbe95;outline-offset:2px}
@media(min-width:600px){.row-input-actions{--input-tile-size:72px;gap:14px}.row-input-trigger{gap:6px;padding:7px;border-radius:17px}.row-input-trigger svg{width:28px;height:28px;flex-basis:28px}.row-input-trigger strong{font-size:12px}}
@media(max-width:360px){.homework-pair-row{gap:7px;padding:8px}.pair-pane-label{align-items:flex-start;flex-direction:column;gap:2px;min-height:30px}.pair-progress{gap:7px;padding:9px}.pair-progress strong{font-size:11px}.camera-controls{grid-template-columns:minmax(0,1fr) 72px minmax(0,1fr);gap:8px}}

.student-auth-form > .field-row{grid-template-columns:1fr}
