:root{font-family:system-ui,-apple-system,"Microsoft YaHei",sans-serif;color:#172e4c;background:#f3f6fc;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,textarea,select{touch-action:manipulation}button{cursor:pointer;border:0;border-radius:12px;padding:12px 20px;background:#125bdb;color:white;font-weight:600}button:hover{filter:brightness(.95)}button:disabled{opacity:.5;cursor:wait}button.secondary{background:#e9f0fd;color:#164fa5}button.danger{background:#ffe9ed;color:#a22}a{color:#125bdb}input,textarea,select{width:100%;border:1px solid #ccd6e5;border-radius:10px;padding:12px;background:white;color:#172e4c}label{display:block;margin:15px 0 7px;font-size:.9rem;font-weight:600}textarea{min-height:120px;resize:vertical}h1{font-size:2rem;line-height:1.25;letter-spacing:-1px}h2{font-size:1.3rem}p{line-height:1.7}small,.muted{color:#63738a}.login{max-width:420px;margin:9vh auto;padding:32px}.logo{display:flex;align-items:center;gap:12px;font-size:1.2rem;font-weight:800}.logo img{width:44px;height:44px}.shell{display:grid;grid-template-columns:235px 1fr;min-height:100vh}.sidebar{padding:30px 20px;background:white;border-right:1px solid #e0e7f1;display:flex;flex-direction:column;gap:30px;position:sticky;top:0;height:100vh}.nav{display:grid;gap:8px}.nav button{text-align:left;background:transparent;color:#65748a;padding:15px}.nav button.active{background:#eaf1ff;color:#125bdb}.sidebar footer{margin-top:auto;font-size:.85rem;line-height:1.8}.main{max-width:1160px;width:100%;padding:35px 5vw 60px}.top{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:30px}.tag{background:#e1edff;color:#125bdb;border-radius:20px;padding:7px 13px;font-size:.85rem}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.card{background:white;border:1px solid #e1e8f3;border-radius:20px;padding:25px;margin-bottom:20px}.hero{background:#125bdb;color:white;position:relative;overflow:hidden}.hero p{color:#dbe9ff}.hero button{background:white;color:#125bdb}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.grid.two{grid-template-columns:repeat(2,1fr)}.stat strong{font-size:2rem;display:block;margin:10px 0}.stat{border-top:4px solid #a7c9ff}.stat:nth-child(2){border-top-color:#ffbf42}.stat:nth-child(3){border-top-color:#2bb7a0}.wordcard{text-align:center;min-height:340px;display:flex;align-items:center;justify-content:center;flex-direction:column}.wordcard h2{font-size:3rem;color:#125bdb;margin:22px 0}.wordcard .meaning{font-size:1.4rem}.wordcard p{margin:6px 0}.actions{display:flex;gap:15px;justify-content:center;margin-top:25px}.question{font-size:1.25rem;line-height:1.7}.options{display:grid;gap:12px;margin:20px 0}.option{text-align:left;background:#f5f7fc;color:#213958;border:1px solid #dce4f0;font-weight:400}.option.selected{border-color:#125bdb;background:#e7efff}.option.correct{background:#e2f6ef;border-color:#28a675;color:#166344}.option.wrong{background:#ffe8ec;border-color:#d56a7a}.feedback{padding:18px;border-radius:12px;background:#edf4ff;line-height:1.8}.empty{text-align:center;padding:40px;color:#687b94}.noteimg{max-width:100%;max-height:480px;object-fit:contain;border-radius:12px;margin-top:15px}.note-body{white-space:pre-wrap;overflow-wrap:anywhere}progress{width:100%;height:10px;accent-color:#125bdb}.listitem{padding:15px 0;border-bottom:1px solid #edf0f5}.listitem:last-child{border:0}.loading{padding:40px}.error{color:#b32b42}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#142d4d;color:white;border-radius:12px;padding:13px 20px;max-width:90vw;display:none;z-index:10}button:focus-visible,a:focus-visible{outline:3px solid #ffbc39;outline-offset:3px}.hidden{display:none}@media(max-width:760px){.shell{display:block}.sidebar{height:auto;position:static;padding:18px;gap:16px;border-right:0}.sidebar footer{display:none}.nav{display:flex;overflow-x:auto;gap:6px}.nav button{white-space:nowrap;padding:10px 14px}.main{padding:20px 18px 65px}.top{margin-bottom:18px}h1{font-size:1.65rem}.grid{gap:10px}.grid.two{grid-template-columns:1fr}.card{padding:19px;border-radius:16px}.stat{padding:14px 10px}.stat strong{font-size:1.7rem}.stat small{font-size:.75rem}.wordcard h2{font-size:2.4rem}.login{margin:3vh auto}.actions button{padding:12px 17px}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s,transform .15s}.card{animation:appear .2s ease-out}@keyframes appear{from{opacity:.6;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}}
