:root{font-synthesis:none;color:#172033;background:#f3f6fb;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}body{background:#f3f6fb;min-width:320px;min-height:100dvh;margin:0}button,input{font:inherit}button{cursor:pointer}.app-shell{width:min(100%,520px);min-height:100dvh;padding:22px 18px calc(36px + env(safe-area-inset-bottom));margin:0 auto}.topbar{justify-content:space-between;align-items:center;margin:6px 2px 20px;display:flex}.topbar p,.section-title p{color:#7b8aa5;letter-spacing:.13em;margin:0 0 3px;font-size:10px;font-weight:800}.topbar h1{letter-spacing:-.03em;margin:0;font-size:23px}.icon-button{color:#64748b;background:#fff;border:1px solid #e5eaf1;border-radius:13px;width:38px;height:38px}.score-card{color:#fff;background:linear-gradient(135deg,#1747d1,#1676ef 58%,#24a8e8);border-radius:25px;padding:27px;position:relative;overflow:hidden;box-shadow:0 20px 40px #1e5ed240}.score-glow{background:#ffffff24;border-radius:50%;width:210px;height:210px;position:absolute;top:-80px;right:-60px}.score-card>p{opacity:.8;margin:0;font-size:13px;position:relative}.score-card>strong{letter-spacing:-.05em;margin:5px 0 0;font-size:54px;line-height:1.05;display:block;position:relative}.score-card>span{background:#ffffff29;border:1px solid #ffffff2e;border-radius:99px;padding:6px 10px;font-size:12px;font-weight:700;position:absolute;top:28px;right:25px}.level-line{margin-top:25px;position:relative}.level-line>div{background:#ffffff3d;border-radius:99px;height:6px;overflow:hidden}.level-line i{border-radius:inherit;background:#fff;height:100%;display:block}.level-line small{opacity:.86;margin-top:9px;display:block}.check-in-button{text-align:left;background:#fff;border:1px solid #dce7ff;border-radius:18px;grid-template-columns:42px 1fr;width:100%;margin-top:15px;padding:14px 17px;display:grid;box-shadow:0 8px 26px #1c2c4a0d}.check-in-button>span{color:#184ed5;grid-row:1/3;align-self:center;font-size:25px}.check-in-button strong{color:#17315f}.check-in-button small{color:#8490a4;margin-top:2px}.check-in-button:disabled{cursor:default;opacity:.72}.learning-entry{color:#17315f;text-align:left;background:#fff;border:1px solid #dce7ff;border-radius:18px;align-items:center;gap:13px;width:100%;margin-top:12px;padding:15px 17px;display:flex}.learning-entry>span{color:#fff;background:#184ed5;border-radius:12px;place-items:center;width:38px;height:38px;display:grid}.learning-entry div{flex:1}.learning-entry strong,.learning-entry small{display:block}.learning-entry small{color:#8490a4;margin-top:3px}.learning-entry i{color:#9aa8bc;font-size:24px;font-style:normal}.source-entry-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.source-entry-grid .learning-entry{padding:13px}.source-entry-grid .learning-entry>span{width:34px;height:34px}.source-entry-grid .learning-entry small{font-size:10px}.source-summary{width:100%;color:inherit;text-align:left;background:0 0;border:0;border-bottom:1px solid #eef1f5;justify-content:space-between;align-items:center;padding:15px 0;display:flex}.source-summary:last-child{border-bottom:0}.source-summary div,.source-summary strong,.source-summary small{display:block}.source-summary span,.source-summary small{color:#8794a8;margin-bottom:4px;font-size:11px}.source-summary>b{color:#245bc4}.source-summary:disabled,.source-course:disabled{cursor:default;opacity:.55}.source-hero{color:#fff;background:linear-gradient(135deg,#1747d1,#24a8e8);border-radius:20px;align-items:center;gap:16px;margin-bottom:14px;padding:20px;display:flex}.source-hero>strong{font-size:34px}.source-hero span,.source-hero small{display:block}.source-hero small{opacity:.8;margin-top:5px}.source-stage{margin-top:14px}.source-copy{color:#66758d;margin-bottom:14px;line-height:1.7}@media (width<=410px){.source-entry-grid{grid-template-columns:1fr}}.quick-grid{grid-template-columns:1fr 1fr;gap:12px;margin:15px 0;display:grid}.quick-grid article,.content-card{background:#fff;border:1px solid #e9edf3;box-shadow:0 8px 26px #1c2c4a0d}.learning-shell .topbar{gap:12px}.learning-shell .topbar>div{flex:1}.learning-shell .topbar h1{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.assignment-row,.chapter-row{width:100%;color:inherit;text-align:left;background:0 0;border:0;border-bottom:1px solid #eef1f5;align-items:center;gap:12px;padding:14px 0;display:flex}.assignment-row:last-child,.chapter-row:last-child{border-bottom:0}.assignment-row>span:nth-child(2),.chapter-row>div{flex:1;min-width:0}.assignment-row strong,.assignment-row small,.chapter-row strong,.chapter-row small,.history-row strong,.history-row small{display:block}.assignment-row small,.chapter-row small,.history-row small{color:#8794a8;margin-top:4px;font-size:11px}.assignment-row i,.chapter-row i{color:#a2adbd;font-size:24px;font-style:normal}.assignment-progress{background:conic-gradient(#1f62df var(--progress), #e8eef8 0);border-radius:50%;flex:none;place-items:center;width:48px;height:48px;display:grid;position:relative}.assignment-progress:before{content:"";background:#fff;border-radius:50%;width:38px;height:38px}.assignment-progress b{font-size:10px;position:absolute}.version-badge{color:#245bc4;background:#eaf1ff;border-radius:99px;padding:2px 7px;display:inline-block}.version-badge.historical{color:#9a5b10;background:#fff1d8}.history-banner{color:#784b12;background:#fff6e6;border:1px solid #ffe0ac;border-radius:14px;margin-bottom:15px;padding:13px 15px;font-size:12px;line-height:1.6}.lesson-player{background:#101827;border-radius:20px;overflow:hidden;box-shadow:0 14px 30px #0a19322e}.lesson-player video{aspect-ratio:16/9;background:#05080e;width:100%;display:block}.media-unavailable{color:#aab7cb;text-align:center;place-items:center;min-height:180px;padding:24px;display:grid}.document-reader{align-content:center}.document-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.primary-button{color:#fff;background:#245bc4;border:0;border-radius:10px;justify-content:center;align-items:center;padding:10px 16px;text-decoration:none;display:inline-flex}.secondary-button{color:#245bc4;background:#eef4ff}.secondary-button:disabled{cursor:default;opacity:.7}.chapter-row>span{color:#245bc4;background:#eef4ff;border-radius:11px;flex:none;place-items:center;width:34px;height:34px;font-weight:800;display:grid}.history-row{border-bottom:1px solid #eef1f5;justify-content:space-between;align-items:center;gap:12px;padding:13px 0;display:flex}.history-row:last-child{border-bottom:0}.history-row>span{color:#245bc4;text-align:right;flex:none;font-weight:800}.quick-grid article{border-radius:18px;min-height:92px;padding:17px;position:relative}.quick-grid span,.quick-grid small{color:#8490a4;font-size:11px;display:block}.quick-grid strong{color:#184ed5;margin-top:5px;font-size:24px;display:block}.quick-grid small{margin-top:3px}.content-card{border-radius:21px;margin-top:15px;padding:19px}.section-title{justify-content:space-between;align-items:flex-end;margin-bottom:9px;display:flex}.section-title h2{margin:0;font-size:17px}.section-title>span{color:#91a0b5;font-size:11px}.ledger-item,.rank-item{border-bottom:1px solid #f0f2f6;align-items:center;gap:11px;padding:13px 0;display:flex}.ledger-item:last-child,.rank-item:last-of-type{border-bottom:0}.ledger-icon{color:#2762df;background:#eef4ff;border-radius:12px;flex:none;place-items:center;width:38px;height:38px;display:grid}.ledger-copy,.rank-item>div{flex:1;min-width:0}.ledger-copy strong,.ledger-copy small,.rank-item strong,.rank-item small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.ledger-copy strong,.rank-item strong{font-size:13px}.ledger-copy small,.rank-item small{color:#919cb0;margin-top:3px;font-size:10px}.ledger-item>b{font-size:15px}.positive{color:#0c9d67}.negative{color:#db3a55}.rank-item{border-radius:12px}.rank-item.is-me{background:#f0f6ff;border-bottom-color:#0000;padding-left:9px;padding-right:9px}.rank-index{color:#8490a4;text-align:center;width:20px;font-weight:800}.rank-item:nth-child(-n+3) .rank-index{color:#ed8b00}.avatar{color:#fff;background:linear-gradient(145deg,#3b70e7,#35b6d5);border-radius:50%;place-items:center;width:34px;height:34px;font-size:12px;font-weight:700;display:grid}.rank-note{color:#476181;background:#f5f8fc;border-radius:10px;margin:8px 0 0;padding:9px 11px;font-size:11px}.badge-grid{grid-template-columns:repeat(3,1fr);gap:9px;display:grid}.badge{text-align:center;background:#fbfcff;border:1px solid #edf0f6;border-radius:15px;min-width:0;padding:13px 6px}.badge span{font-size:28px;display:block}.badge strong,.badge small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.badge strong{margin-top:6px;font-size:12px}.badge small{color:#909bb0;margin-top:3px;font-size:9px}.empty{color:#97a3b6;text-align:center;padding:25px 8px;font-size:12px}footer{color:#9ba7b9;text-align:center;padding:25px 0 5px;font-size:10px}.loading-shell,.auth-shell{place-items:center;min-height:100dvh;padding:24px;display:grid}.loading-shell{color:#73809a;text-align:center}.loader{border:3px solid #dce6f7;border-top-color:#2563eb;border-radius:50%;width:34px;height:34px;margin:0 auto 13px;animation:.8s linear infinite spin;display:block}.auth-shell{background:radial-gradient(circle at 15% 10%,#2563eb26,#0000 35%),#f4f7fb}.auth-card{background:#ffffffeb;border:1px solid #e6ebf2;border-radius:26px;width:min(100%,390px);padding:36px 28px;box-shadow:0 28px 70px #18294a1f}.brand-mark{color:#fff;background:linear-gradient(145deg,#1747d1,#24a8e8);border-radius:17px;place-items:center;width:54px;height:54px;font-size:23px;font-weight:800;display:grid}.eyebrow{color:#3266d5;letter-spacing:.14em;margin:24px 0 5px;font-size:10px;font-weight:800}.auth-card h1{margin:0;font-size:25px}.auth-copy{color:#78869c;margin:10px 0 24px;font-size:13px;line-height:1.7}.auth-card label{margin-bottom:7px;font-size:12px;font-weight:700;display:block}.auth-card input{border:1px solid #dce2eb;border-radius:12px;outline:none;width:100%;height:46px;padding:0 13px}.auth-card input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.auth-card button{color:#fff;background:#1c57dd;border:0;border-radius:12px;justify-content:space-between;align-items:center;width:100%;height:46px;margin-top:13px;padding:0 17px;font-weight:700;display:flex}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=700px){.app-shell{padding-top:36px}}
