:root{--forest:#215941;--dark:#173e30;--mint:#e6f3e8;--paper:#f7f6f1;--line:#dbe5dd;--ink:#1e2b25;--muted:#607267}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.65 "PingFang SC","Microsoft YaHei",sans-serif}
button,input,select{font:inherit}
button{cursor:pointer;background:var(--forest);color:#fff;border:0;border-radius:10px;padding:10px 18px;font-weight:700}
button:disabled{opacity:.5;cursor:not-allowed}
[hidden]{display:none!important}
:focus-visible{outline:3px solid #237b58;outline-offset:3px}
.skip{position:absolute;left:-9999px;top:8px;background:#fff;padding:8px 12px;z-index:10}
.skip:focus{left:8px}
.top{max-width:920px;margin:auto;padding:20px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px}
.brand{font-size:19px;font-weight:800;color:var(--forest);text-decoration:none}
.top nav{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:14px}.top nav a{color:var(--dark);text-decoration:none}
.shell{max-width:920px;margin:auto;padding:0 24px 64px}
.hero{background:linear-gradient(135deg,#173f32,#2b7757);color:#fff;border-radius:22px;padding:52px 44px}
.hero h1{font-size:clamp(30px,5vw,45px);margin:0 0 12px}.hero p:last-child{max-width:620px;margin:0;color:#e5f1e8}
.eyebrow{font-size:12px;font-weight:800;letter-spacing:.12em;color:#b3e5c6;margin:0 0 8px}
.status{margin:17px 0;color:var(--dark);min-height:25px}
.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;margin-top:18px}
.panel h2{font-size:23px;margin:0 0 5px;color:var(--dark)}.panel h3{font-size:17px;color:var(--dark);margin:0 0 12px}
.hint{font-size:13px;color:var(--muted);margin:0 0 16px}
form label{display:block;font-size:13px;font-weight:700;margin-bottom:6px}
form input,form select{display:block;width:100%;max-width:440px;border:1px solid #b9cbc0;border-radius:9px;padding:10px 12px;background:#fff;color:var(--ink);margin:0 0 11px}
form button{margin-bottom:7px}
#codeForm,#bindCodeForm{margin-top:18px;border-top:1px solid var(--line);padding-top:18px}
.login-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:20px}
.login-card{border:1px solid var(--line);border-radius:14px;padding:20px;background:#fbfcfa}.login-card h3{margin-top:2px}
.role-tag{display:inline-block;margin:0 0 8px;padding:3px 9px;border-radius:99px;background:#dfeee2;color:var(--forest);font-size:12px;font-weight:800}
.login-privacy{margin-top:18px}.student-login{background:#f3f8f2}
.panel-head{display:flex;justify-content:space-between;align-items:start;gap:15px}
.quiet{background:#edf4ee;color:var(--forest);white-space:nowrap}
.profile-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:11px;margin:16px 0 28px}
.profile-card{padding:16px;background:#f3f8f2;color:var(--dark);border:1px solid #c9ddcf;border-radius:12px;text-align:left}
.profile-card strong,.profile-card span{display:block}.profile-card span{font-size:12px;font-weight:400}
.profile-card.is-selected{background:#d9f0df;border-color:#237b58;box-shadow:0 0 0 2px #237b58}
.new-profile,.bind{border-top:1px solid var(--line);padding-top:20px;margin-top:20px}
.identity-list{display:grid;gap:9px}.identity-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:11px;background:#f8faf8}.identity-copy strong,.identity-copy span{display:block}.identity-copy span{font-size:12px;color:var(--muted)}.identity-row button{padding:7px 12px}
.danger{border-top:1px solid #e7c8c8;padding-top:20px;margin-top:20px}
.danger h3{color:#8c2424!important}.danger-button{background:#a12e2e}.danger-button:hover{background:#7e2020}
.fields{display:flex;flex-wrap:wrap;gap:10px}.fields label{flex:1 1 180px}.fields input,.fields select{max-width:none}
.selected{margin-top:20px;background:#f1f7ef;border-radius:14px;padding:19px}
.selected-head{display:flex;justify-content:space-between;align-items:start;gap:16px}.selected-head h3{margin-bottom:4px!important}
.selected .confirm{display:flex;align-items:start;gap:9px;font-size:13px;margin:12px 0;cursor:pointer}
.selected input{accent-color:var(--forest);margin-top:4px}
.profile-manage{border-top:1px solid var(--line);margin-top:20px;padding-top:14px}.profile-manage summary{cursor:pointer;color:var(--forest);font-weight:800}.profile-manage h4{margin:16px 0 10px;color:var(--dark);font-size:15px}.profile-delete{border-top:1px solid #e7c8c8;margin-top:18px;padding-top:4px}.profile-delete h4{color:#8c2424}
.progress-detail{display:grid;gap:8px;margin:14px 0}.progress-row{display:flex;justify-content:space-between;gap:12px;padding:9px 11px;border-radius:9px;background:#fff;font-size:13px}.progress-row span{color:var(--muted);text-align:right}.progress-empty{font-size:13px;color:var(--muted);margin:8px 0}
.student-account{background:#fff;border:1px solid #c9ddcf;border-radius:12px;padding:16px;margin-top:17px}.student-account h4{margin:0 0 7px;color:var(--dark)}
.account-settings{margin-top:24px;border-top:1px solid var(--line);padding-top:16px}.account-settings>summary{cursor:pointer;color:var(--forest);font-weight:800}
.student-actions{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}.student-actions a{display:inline-block;border:1px solid #b8cdbf;border-radius:10px;padding:10px 15px;color:var(--forest);font-weight:700;text-decoration:none}.student-actions .primary-link{background:var(--forest);color:#fff;border-color:var(--forest)}
.student-summary{background:#f1f7ef;border-radius:12px;padding:15px;color:var(--dark)}
.privacy{font-size:12px;color:var(--muted);margin:22px 4px}.privacy a,.hint a{color:var(--forest)}
footer{text-align:center;border-top:1px solid var(--line);padding:24px;color:var(--muted);font-size:12px}
footer a{color:var(--forest)}
@media(max-width:700px){.login-grid{grid-template-columns:1fr}}
@media(max-width:600px){.top,.shell{padding-left:15px;padding-right:15px}.top{align-items:start;flex-direction:column}.top nav{gap:10px;font-size:12px}.hero{padding:34px 23px}.panel{padding:19px}.panel-head,.selected-head{flex-direction:column}.identity-row{align-items:flex-start}.identity-row button{white-space:nowrap}.progress-row{display:block}.progress-row span{display:block;text-align:left}}
