:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#17243d;background:#f3f5fa;font-size:16px;--blue:#265af5;--muted:#69758b;--border:#e4e9f2;--navy:#14223e;--green:#14836e}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,textarea,select{outline-offset:4px}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:var(--blue);text-decoration:none}button{border:0;background:none;color:inherit}h1,h2,h3,p{margin:0}h1{font-size:28px;letter-spacing:-.7px}h2{font-size:20px}h3{font-size:16px}small{font-size:13px;color:var(--muted)}p{line-height:1.7}.muted{color:var(--muted)}.shell{display:grid;grid-template-columns:228px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:var(--navy);color:#d6def2;padding:30px 20px;display:flex;flex-direction:column;gap:32px}.brand{display:flex;align-items:center;gap:12px;font-weight:700;letter-spacing:.5px;font-size:19px;color:inherit}.brand img{width:36px;height:36px}.brand small{display:block;font-size:12px;letter-spacing:1.7px;color:#98a8c8;font-weight:500;margin-top:5px}.nav{display:grid;gap:9px}.nav button{text-align:left;display:flex;gap:12px;align-items:center;padding:13px 15px;border-radius:9px;color:#aab9d6;font-size:15px}.nav button.active{background:#2d5ff1;color:white}.nav button:hover{background:#223554}.nav button.active:hover{background:#2d5ff1}.icon{width:20px;height:20px;flex-shrink:0}.side-bottom{margin-top:auto;display:grid;gap:10px;border-top:1px solid #2b3952;padding-top:20px}.side-bottom button{text-align:left;color:#aab9d6;padding:8px;font-size:14px}.side-note{padding:16px;border-radius:10px;background:#1d2e4b;font-size:13px;line-height:1.8;color:#aebdd7}.main{min-width:0}.topbar{height:78px;border-bottom:1px solid var(--border);background:white;padding:0 40px;display:flex;align-items:center;justify-content:space-between;font-size:14px;color:var(--muted)}.topbar strong{color:#33425d;font-weight:500}.avatar{height:32px;width:32px;display:inline-grid;place-items:center;background:#eaf0ff;border-radius:50%;color:var(--blue);margin-right:9px}.content{max-width:1500px;margin:0 auto;padding:34px 40px 60px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px}.page-head p{color:var(--muted);font-size:14px;margin-top:8px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.btn{border:1px solid var(--border);padding:10px 16px;min-height:42px;border-radius:8px;background:white;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:14px;font-weight:500;white-space:nowrap}.btn:hover{background:#f5f7ff;border-color:#bdcbf3}.btn.primary{background:var(--blue);color:white;border-color:var(--blue);box-shadow:0 3px 6px #265af515}.btn.primary:hover{background:#1748d9}.btn.danger{color:#c34150}.btn.small{padding:6px 11px;min-height:32px}.link{color:var(--blue);padding:6px;font-size:14px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:24px}.metric{border:1px solid var(--border);border-radius:12px;padding:22px;background:white;position:relative}.metric-label{color:var(--muted);font-size:14px;display:flex;justify-content:space-between;align-items:center}.metric-icon{background:#edf2ff;padding:7px;display:flex;border-radius:8px;color:var(--blue)}.metric-value{font-size:34px;line-height:1.5;margin-top:7px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-1px}.metric-value span{font-size:14px;color:var(--muted);font-weight:400;letter-spacing:0;margin-left:5px}.metric-foot{font-size:13px;color:var(--muted);margin-top:5px}.card{background:white;border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-bottom:24px}.card-head{padding:22px 24px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);gap:16px}.card-head h2{font-size:17px}.card-body{padding:24px}.filters{display:flex;gap:12px;padding:18px 24px;align-items:center;flex-wrap:wrap}.field{display:grid;gap:8px;font-size:14px;min-width:0}.field input,.field select,.field textarea,input.control,select.control{border:1px solid #d9e0ec;border-radius:7px;padding:10px 12px;background:white;color:#23324e;min-width:0;width:100%;min-height:42px}.field textarea{resize:vertical;line-height:1.8}.filters input{max-width:260px}.filters select{width:auto;max-width:190px}.control:focus,.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--blue);outline:2px solid #dbe5ff}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap;font-size:14px}th{background:#f8faff;color:#758198;font-weight:500;padding:13px 24px;font-size:13px}td{padding:19px 24px;border-bottom:1px solid #eef1f6}tr:last-child td{border-bottom:0}.name-cell{display:flex;gap:11px;align-items:center}.name-cell .avatar{border-radius:9px;background:#eef1f7;color:#5c6e8e;margin:0}.name-cell strong{display:block;font-weight:600}.name-cell small{display:block;margin-top:5px}.badge{display:inline-flex;align-items:center;border-radius:5px;padding:5px 9px;font-size:12px;font-weight:500;background:#eff2f7;color:#728098}.badge.submitted{background:#e6f5ef;color:#147358}.badge.active{background:#eaf0ff;color:#2d61d9}.badge.review{background:#fff2dd;color:#a46712}.badge.rejected{background:#ffedf0;color:#b64051}.badge.pending{background:#f0f2f7;color:#748096}.table-footer{padding:16px 24px;border-top:1px solid var(--border);font-size:13px;color:var(--muted)}.empty{padding:50px 20px;text-align:center;color:var(--muted)}.empty .empty-icon{width:54px;height:54px;display:grid;place-items:center;margin:0 auto 16px;border-radius:14px;background:#f0f4ff;color:var(--blue)}.empty h3{font-size:16px;color:#3e4d67;margin-bottom:8px}.empty p{font-size:14px;margin:0 auto 18px;max-width:420px}.bottom-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:24px}.note{border-radius:9px;background:#f2f6ff;color:#52658a;padding:15px 18px;font-size:14px;line-height:1.8}.note.warning{background:#fff7e9;color:#926728}.mini-list{display:grid;gap:17px}.mini-list>div{display:flex;justify-content:space-between;gap:15px;font-size:14px}.mini-list span{color:var(--muted)}.progress{height:7px;background:#edf1f8;border-radius:5px;overflow:hidden}.progress>div{height:100%;background:var(--blue);border-radius:5px}.month-title{font-size:14px;color:var(--muted);margin-bottom:12px}.panel-title{display:flex;gap:15px;align-items:center}.report-title{margin-bottom:26px}.report-title p{margin-top:10px;color:var(--muted);font-size:14px}.diff{line-height:2.2;font-size:17px;white-space:pre-wrap;overflow-wrap:anywhere;letter-spacing:.5px}.diff .wrong{background:#ffdee4;color:#b82947;border-bottom:2px solid #e68e9d}.diff .missing{color:#b3700e;background:#fff0cf;border-bottom:2px dashed #d5a346}.diff .extra{color:#7c4dc7;background:#efe5ff;text-decoration:line-through}.diff .untyped{color:#b1b8c5}.answer-block{padding:20px 0;border-bottom:1px solid var(--border)}.answer-block:last-child{border:0}.answer-label{font-size:13px;color:var(--muted);margin-bottom:10px;display:flex;gap:12px}.legend{display:flex;gap:15px;flex-wrap:wrap;font-size:13px}.chart{width:100%;height:180px;overflow:visible}.chart text{font-family:inherit;font-size:12px;fill:#7c88a0}.chart .chart-line{stroke:var(--blue);stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round}.chart .grid{stroke:#edf0f5;stroke-dasharray:4 4}.question-row{padding:16px;border:1px solid var(--border);border-radius:9px;display:grid;gap:10px;margin-bottom:12px}.question-row .field textarea{min-height:90px}.question-list{max-height:56vh;overflow:auto;padding-right:8px}.paper-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.paper-grid .card{margin:0}.paper-meta{display:flex;gap:12px;color:var(--muted);font-size:14px;margin:15px 0 20px}.pill-row{display:flex;gap:8px;flex-wrap:wrap}.pill{padding:5px 9px;border-radius:5px;background:#f3f5fa;font-size:12px;color:#64718b}.loading{padding:90px;text-align:center;color:var(--muted)}dialog{padding:0;border:1px solid var(--border);border-radius:14px;box-shadow:0 30px 100px #14223e33;width:580px;max-width:calc(100vw - 30px);max-height:90vh;color:inherit}dialog::backdrop{background:#101e3d70;backdrop-filter:blur(3px)}.modal-head{padding:22px 26px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border)}.modal-head button{font-size:24px;color:#7b879c}.modal-body{padding:24px 26px;display:grid;gap:18px}.modal-foot{padding:18px 26px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px;background:#fafbfe}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-error{color:#be344b;font-size:14px;line-height:1.7}.tabs{display:flex;gap:8px;background:#f1f4fa;border-radius:8px;padding:4px}.tabs button{flex:1;font-size:14px;padding:10px;border-radius:6px;color:var(--muted)}.tabs button.selected{background:white;box-shadow:0 2px 5px #2035570a;color:var(--blue)}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);padding:13px 24px;border-radius:9px;background:#152642;color:white;box-shadow:0 7px 25px #11234430;z-index:1000;max-width:90vw;font-size:14px;opacity:0;pointer-events:none;transition:opacity .15s}#toast.show{opacity:1}.login-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:white}.login-art{background:#152645;color:white;padding:60px;display:flex;flex-direction:column;justify-content:space-between}.login-art h1{font-size:43px;line-height:1.4;max-width:450px}.login-art p{color:#aabbd8;max-width:430px;margin-top:24px}.login-form{max-width:370px;width:calc(100% - 48px);margin:auto;display:grid;gap:24px}.login-form form{display:grid;gap:20px}.login-form h2{font-size:27px}.login-form p{font-size:14px;color:var(--muted);margin-top:7px}.login-stat{display:flex;gap:40px;margin-top:50px}.login-stat strong{display:block;font-size:36px;color:#a6c3ff}.login-stat small{display:block;color:#9aaccd;margin-top:7px}.exam-shell{min-height:100vh;background:#f3f5fa}.exam-header{height:82px;background:white;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 max(25px,calc((100vw - 1120px)/2))}.exam-header .brand{color:var(--navy)}.exam-content{max-width:1120px;margin:0 auto;padding:36px 24px 60px}.exam-intro{max-width:720px;margin:32px auto}.exam-intro h1{margin-bottom:16px}.exam-intro .card-body{padding:36px}.rule-list{display:grid;gap:16px;line-height:1.8;font-size:15px;padding:20px}.exam-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px}.timer{font-size:48px;font-weight:650;letter-spacing:-2px;font-variant-numeric:tabular-nums;line-height:1.4}.timer.urgent{color:#c34251}.timer-label{color:var(--muted);font-size:14px}.message{font-size:21px;line-height:2;letter-spacing:.7px;background:#f1f5ff;padding:23px 26px;border-radius:0 12px 12px 12px;margin-top:17px;overflow-wrap:anywhere;user-select:none}.source-label{display:flex;gap:9px;align-items:center;font-size:14px;color:#647695}.typing-area{width:100%;min-height:210px;padding:22px;border:2px solid #dce4f3;border-radius:10px;background:white;font-size:20px;line-height:1.9;resize:vertical;color:#233451}.typing-area:focus{outline:0;border-color:var(--blue);box-shadow:0 0 0 4px #265af50a}.typing-area:disabled{background:#f7f8fb}.typing-footer{display:flex;align-items:center;justify-content:space-between;margin-top:15px;gap:15px;font-size:13px;color:var(--muted)}.exam-side .card-body{padding:24px}.exam-side .note{margin-top:20px;font-size:13px}.save-state{margin:17px 0;font-size:13px;color:var(--green)}.side-details{display:grid;gap:18px;font-size:14px;margin-top:20px}.side-details>div{display:flex;justify-content:space-between}.side-details span{color:var(--muted)}.mobile-warning{display:none}.practice-badge{padding:6px 10px;background:#eef3ff;color:var(--blue);font-size:13px;border-radius:5px}.checklist{max-height:250px;overflow:auto;display:grid;gap:12px}.checklist label{display:flex;align-items:center;gap:10px;font-size:14px}.checklist input{width:18px;height:18px}.spacer{height:16px}.export-link{font-size:14px}.cell-value{font-variant-numeric:tabular-nums;font-weight:600}.back{font-size:14px;color:var(--muted);margin-bottom:18px;padding:0}.review-actions{margin-top:14px}.report-status{margin-bottom:20px}.small-text{font-size:14px}.nowrap{white-space:nowrap}@media(max-width:1150px){.shell{grid-template-columns:190px minmax(0,1fr)}.sidebar{padding:26px 14px}.content{padding:28px 24px}.topbar{padding:0 24px}.metric{padding:16px}.metric-value{font-size:29px}td,th{padding-left:18px;padding-right:18px}.metrics{gap:12px}.bottom-grid{grid-template-columns:1fr 1fr}.brand{font-size:17px}}@media(max-width:800px){.shell{display:block}.sidebar{position:static;height:auto;padding:16px 20px;gap:18px}.sidebar .brand small,.side-bottom,.side-note{display:none}.nav{display:flex;gap:6px;overflow:auto}.nav button{white-space:nowrap;font-size:14px;padding:9px 13px}.nav .icon{display:none}.topbar{height:56px;padding:0 20px}.content{padding:25px 18px}.page-head{align-items:flex-start;flex-wrap:wrap}h1{font-size:24px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.bottom-grid,.paper-grid{grid-template-columns:1fr}.exam-layout{grid-template-columns:1fr}.exam-side{grid-row:1;display:flex;gap:14px}.exam-side .card{flex:1}.exam-side .note{display:none}.exam-header{padding:0 20px}.exam-content{padding:24px 16px}.mobile-warning{display:block}.login-page{grid-template-columns:1fr}.login-art{display:none}.login-form{padding:50px 0}.form-grid{grid-template-columns:1fr}.timer{font-size:36px}.card-head{padding:18px}.card-body{padding:20px}.chart{height:160px}.filters{padding:16px}.exam-intro .card-body{padding:24px}.message{font-size:19px;padding:20px}.typing-footer{flex-wrap:wrap}.legend{font-size:12px}}@media print{.sidebar,.topbar,.page-head .actions,.back,.exam-header,.no-print,#toast{display:none!important}.shell{display:block}.content,.exam-content{padding:0;max-width:none}.card{break-inside:avoid;box-shadow:none}.metrics{grid-template-columns:repeat(4,1fr)}.answer-block{break-inside:avoid}body{background:white;font-size:12px}.diff{font-size:14px}.metric-value{font-size:26px}.card-body{padding:15px}.bottom-grid{display:block}.chart{height:120px}}
/* Company IP: original artwork, non-destructive presentation crops. */
.ip-frame{display:inline-block;position:relative;overflow:hidden;flex-shrink:0;background:#fff;isolation:isolate}
.ip-frame>img{position:absolute;max-width:none;height:auto;display:block}
.ip-avatar{width:40px;height:40px;border-radius:12px}
.ip-avatar>img{width:301.6667%;left:-108.3333%;top:-95.8333%}
.ip-body{width:240px;aspect-ratio:280/580;background:#fff}
.ip-body>img{width:258.5714%;left:-78.5714%;top:-39.6552%}
.brand .ip-avatar{box-shadow:0 0 0 1px #c3d2f025}
.brand .ip-avatar>img{width:301.6667%;height:auto}
.login-page{grid-template-columns:minmax(460px,1.08fr) minmax(400px,1fr)}
.login-art{background:#eef3ff;color:#14223e;padding:38px 52px;overflow:hidden;min-height:100vh}
.login-art .brand small{color:#7385a8}
.login-story{position:relative;max-width:660px;min-height:560px;width:100%;margin:30px auto 0;display:flex;flex-direction:column;justify-content:center;padding:20px 0}
.login-art h1{position:relative;z-index:1;font-size:clamp(30px,2.8vw,43px);line-height:1.5;max-width:420px}
.login-art p{position:relative;z-index:1;color:#586e93;max-width:320px;font-size:15px;margin-top:20px}
.login-character{align-self:flex-end;margin-top:-25px;margin-right:-20px;mix-blend-mode:multiply}
.login-character .ip-body{width:clamp(160px,18vw,240px)}
.login-stat{margin-top:-150px;position:relative;width:fit-content;gap:30px;flex-wrap:wrap;max-width:200px}
.login-stat strong{color:#265af5;font-size:30px}.login-stat small{color:#647ba2}.login-art>small{color:#7385a8;margin-top:30px}
.intro-character{display:flex;align-items:center;gap:26px;background:#f1f5ff;border-radius:12px;margin-bottom:24px;padding:14px 24px 0;overflow:hidden}
.intro-character .ip-body{width:95px;mix-blend-mode:multiply;align-self:flex-end}
.intro-character strong{font-size:19px;line-height:1.6}.intro-character p{font-size:14px;color:#697d9e;margin-top:8px;max-width:300px}
.report-companion{display:flex;align-items:center;gap:14px;margin:0 0 20px;padding:17px 20px;border-radius:10px;background:#eaf0ff}
.report-companion .ip-avatar{width:54px;height:54px;border-radius:16px}.report-companion strong{font-size:16px}.report-companion p{font-size:14px;color:#65799c;margin-top:5px}
@media(min-width:1550px){.login-story{min-height:650px}.login-character{margin-top:-40px}.login-character .ip-body{width:260px}.login-stat{margin-top:-200px}}
@media(max-width:1100px) and (min-width:801px){.login-art{padding:32px}.login-art h1{font-size:30px}.login-story{min-height:600px}.login-character{margin-top:5px;margin-right:0}.login-character .ip-body{width:160px}.login-stat{max-width:150px;margin-top:-140px;gap:15px}}
@media(max-width:800px){.login-page{display:flex;flex-direction:column}.login-art{display:flex;min-height:0;padding:22px 24px 0;gap:0}.login-art .brand{font-size:17px}.login-story{min-height:0;margin:18px 0 0;padding:0 135px 24px 0;display:block}.login-art h1{font-size:25px}.login-art p{font-size:14px;margin-top:12px}.login-character{position:absolute;right:0;bottom:0;margin:0}.login-character .ip-body{width:112px}.login-stat,.login-art>small{display:none}.login-form{padding:30px 0 40px;margin:0 auto;gap:24px}.intro-character{padding:12px 14px 0;gap:14px}.intro-character .ip-body{width:72px}.intro-character strong{font-size:16px}.intro-character p{font-size:13px;margin:4px 0 10px}.report-companion{padding:14px}.report-companion .ip-avatar{width:42px;height:42px}.exam-header .brand .ip-avatar{width:36px;height:36px}}
@media(max-width:390px){.login-story{padding-right:100px}.login-character .ip-body{width:92px}.login-art h1{font-size:22px}}
@media print{.login-character,.intro-character{display:none!important}.report-companion{background:transparent;border-bottom:1px solid #dbe2ef;padding:0 0 10px;break-inside:avoid}.report-companion .ip-avatar{width:36px;height:36px}.report-companion p{font-size:12px}}
