.wechat-banner[data-v-e67227c2]{z-index:500;color:#713f12;background:#fef9c3;border-bottom:1px solid #fde047;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;font-size:.86rem;line-height:1.45;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #0000000d}.wechat-banner-content[data-v-e67227c2]{align-items:center;gap:8px;display:flex}.wechat-text[data-v-e67227c2]{margin:0}.banner-icon[data-v-e67227c2]{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;flex:none;width:18px;height:18px}.close-icon[data-v-e67227c2]{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.8px;width:16px;height:16px;display:block}.wechat-close-btn[data-v-e67227c2]{color:#854d0e;cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:4px 8px;font-size:1rem}.wechat-close-btn[data-v-e67227c2]:hover{background:#0000000d}.pwa-install-banner[data-v-e67227c2]{z-index:450;color:#166534;background:#f0fdf4;border-bottom:1px solid #bbf7d0;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;font-size:.86rem;line-height:1.45;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #0000000d}.pwa-banner-content[data-v-e67227c2]{align-items:center;gap:8px;display:flex}.pwa-actions[data-v-e67227c2]{flex-shrink:0;align-items:center;gap:8px;display:flex}.pwa-install-btn[data-v-e67227c2]{color:#fff;cursor:pointer;background:#15803d;border:none;border-radius:6px;padding:5px 10px;font-size:.82rem;font-weight:600}.pwa-install-btn[data-v-e67227c2]:hover{background:#166534}.pwa-close-btn[data-v-e67227c2]{color:#15803d;cursor:pointer;background:0 0;border:none;border-radius:4px;place-items:center;padding:4px 8px;font-size:1rem;display:grid}.pwa-close-btn[data-v-e67227c2]:hover{background:#0000000d}.persistent-audio[data-v-e67227c2]{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:0;position:fixed;overflow:hidden}.mini-player[data-v-e67227c2]{right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:80;-webkit-backdrop-filter:blur(16px);background:#fffffff7;border:1px solid #5b7c6429;border-radius:19px;grid-template-columns:minmax(0,1fr) 48px 44px;align-items:center;width:min(100% - 32px,430px);min-height:72px;margin:0 auto;display:grid;position:fixed;left:16px;overflow:hidden;box-shadow:0 18px 44px #1b3a2a2e}.mini-player--above-action[data-v-e67227c2]{bottom:calc(94px + env(safe-area-inset-bottom))}.mini-player button[data-v-e67227c2]{cursor:pointer;border:0}.mini-player__track[data-v-e67227c2]{color:#173429;text-align:left;background:0 0;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:11px;min-width:0;min-height:70px;padding:10px 4px 10px 11px;display:grid}.mini-player__cover[data-v-e67227c2]{color:#f7faf5;background:#88aa91;border-radius:14px;place-items:center;width:48px;height:48px;font-family:Songti SC,Noto Serif CJK SC,serif;font-size:18px;display:grid}.mini-player__copy[data-v-e67227c2]{min-width:0;display:grid}.mini-player__copy small[data-v-e67227c2],.mini-player__copy strong[data-v-e67227c2],.mini-player__copy span[data-v-e67227c2]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mini-player__copy small[data-v-e67227c2]{color:#74857e;font-size:10px}.mini-player__copy strong[data-v-e67227c2]{margin-top:2px;font-size:14px;font-weight:720}.mini-player__copy span[data-v-e67227c2]{color:#829089;font-variant-numeric:tabular-nums;margin-top:2px;font-size:10px}.mini-player__play[data-v-e67227c2],.mini-player__dismiss[data-v-e67227c2]{place-items:center;min-width:44px;min-height:44px;display:grid}.mini-player__play[data-v-e67227c2]{color:#fff;background:#315e49;border-radius:50%;width:44px;height:44px}.mini-player__play svg[data-v-e67227c2]{width:20px;height:20px}.mini-player__dismiss[data-v-e67227c2]{color:#71827a;background:0 0;font-size:22px;line-height:1}.mini-player__progress[data-v-e67227c2]{background:#e8eee9;height:3px;position:absolute;bottom:0;left:0;right:0}.mini-player__progress span[data-v-e67227c2]{background:#6e987a;height:100%;transition:width .2s linear;display:block}.dialog-backdrop[data-v-e67227c2]{z-index:1000;padding:calc(18px + env(safe-area-inset-top)) 18px calc(18px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(5px);touch-action:none;background:#0f1c189e;place-items:center;animation:.18s ease-out fade-in-e67227c2;display:grid;position:fixed;inset:0}.dialog-card[data-v-e67227c2]{background:#fff;border:1px solid #ffffff4d;border-radius:22px;outline:none;width:min(100%,430px);padding:26px 22px 22px;animation:.2s ease-out rise-in-e67227c2;box-shadow:0 30px 80px #08141059}.dialog-eyebrow[data-v-e67227c2]{color:#9a332b;letter-spacing:.14em;margin:0 0 8px;font-size:.74rem;font-weight:800}h2[data-v-e67227c2]{color:#16302b;margin:0;font-size:1.42rem;line-height:1.25}.dialog-text[data-v-e67227c2]{color:#53655f;margin:12px 0 22px;font-size:.94rem;line-height:1.7}.dialog-button[data-v-e67227c2]{min-height:52px}@keyframes fade-in-e67227c2{0%{opacity:0}to{opacity:1}}@keyframes rise-in-e67227c2{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#eef3ee;--surface:#fff;--ink:#17211f;--ink-soft:#53655f;--line:#dbe4dc;--brand:#16302b;--brand-soft:#245045;--accent:#2f7a5d;--danger:#9a332b;--danger-soft:#fff2f0;--radius-lg:22px;--radius-md:15px;--shadow-card:0 18px 45px #16302b17;font-synthesis:none;text-rendering:optimizelegibility;font-family:PingFang SC,Noto Sans SC,Microsoft YaHei,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%;min-width:320px}body{min-width:320px;min-height:100vh;color:var(--ink);-webkit-font-smoothing:antialiased;background-color:#0000;background-image:radial-gradient(circle at 15% -10%,#c4decda6,#0000 42%),radial-gradient(circle at 100% 0,#e2ebdacc,#0000 34%),linear-gradient(160deg,#f5f8f3 0%,#e9f0e9 55%,#dfeae2 100%);background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;margin:0}html,body{touch-action:manipulation}button,a,input,select,textarea,[role=button]{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,p{overflow-wrap:break-word}:focus-visible{outline-offset:3px;outline:3px solid #7fb39a}.page{width:min(100%,760px);min-height:100vh;padding:calc(18px + env(safe-area-inset-top)) 18px calc(36px + env(safe-area-inset-bottom));margin:0 auto}.eyebrow{color:#5f766d;letter-spacing:.13em;text-transform:uppercase;margin:0 0 8px;font-size:.75rem;font-weight:750}.button{cursor:pointer;border:1px solid #0000;border-radius:14px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:12px 20px;font-size:1rem;font-weight:700;line-height:1.2;transition:background .15s,border-color .15s,box-shadow .15s,transform .1s;display:inline-flex}.button:active:not(:disabled){transform:scale(.985)}.button:disabled{cursor:not-allowed;opacity:.6}.button--primary{color:#fff;background:var(--brand);box-shadow:0 10px 24px #16302b2e}.button--primary:hover:not(:disabled){background:var(--brand-soft)}.button--ghost{border-color:var(--line);color:var(--brand);background:#ffffffb8}.button--ghost:hover:not(:disabled){background:#fff}.button--block{width:100%}.button--lg{border-radius:16px;min-height:54px;font-size:1.05rem}.alert{color:var(--danger);background:var(--danger-soft);border:1px solid #efc9c4;border-radius:12px;margin:0;padding:12px 14px;font-size:.92rem;line-height:1.55}.alert--info{color:#2a5d48;background:#eef8f1;border-color:#cfe0d4}.text-button{color:var(--brand-soft);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:4px 2px;font-weight:700;text-decoration:underline}@media (width<=480px){.page{padding-left:14px;padding-right:14px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.student-page{--student-bg:#f7f8f4;--student-surface:#fff;--student-ink:#273f34;--student-muted:#5e7165;--student-line:#e3ebe2;--student-soft:#edf4ed;--student-accent:#315e49;--student-accent-strong:#244d39;--student-accent-pale:#d7e7da;isolation:isolate;color:var(--student-ink);font-size:15px;line-height:1.6;position:relative}.student-page:before{content:"";z-index:-1;background:var(--student-bg);pointer-events:none;position:fixed;inset:0}.student-page.page{width:min(100%,760px);padding:calc(18px + env(safe-area-inset-top)) 20px calc(34px + env(safe-area-inset-bottom))}.student-page button,.student-page a,.student-page summary{-webkit-tap-highlight-color:transparent}.student-page .button--primary{border-color:var(--student-accent);background:var(--student-accent);box-shadow:none}.student-page .button--primary:hover:not(:disabled){background:var(--student-accent-strong)}.student-page .button--ghost{border-color:var(--student-line);color:var(--student-accent);background:#fff}.student-page .button{font-weight:650}.student-brand{flex:none;align-items:center;gap:9px;min-width:0;display:inline-flex}.student-brand__icon{background:var(--student-accent);border-radius:13px;place-items:center;width:38px;height:38px;display:grid;overflow:hidden}.student-brand__icon img{width:100%;height:100%;display:block}.student-brand__name{color:var(--student-ink);letter-spacing:.08em;white-space:nowrap;font-size:20px;font-weight:760}.student-brand__en{color:var(--student-muted);letter-spacing:.08em;font-size:11px;font-weight:650}.student-page .unit-path{color:#496752;font-size:13px;font-weight:650;line-height:1.7}.student-page .course-cover{color:#355f49;background:linear-gradient(145deg,#d5e5d7,#a8c5ae);flex:none;place-items:center;font-family:Songti SC,Noto Serif CJK SC,serif;display:grid;position:relative;overflow:hidden}.student-page .course-cover:after{content:"";aspect-ratio:1;opacity:.3;border:1px solid;border-radius:50%;width:112%;position:absolute;top:44%;left:42%}.student-page .course-cover__glyph{z-index:1;font-size:28px;font-weight:500;position:relative}.student-page .state-block{background:#fff;border:1px dashed #c9d8cc;border-radius:18px;justify-items:start;gap:14px;padding:26px 20px;display:grid}.student-page .state-block.empty{text-align:center;justify-items:center;padding-block:44px}.student-page .empty-title{margin:0;font-size:18px;font-weight:680}.student-page .empty-text{max-width:34ch;color:var(--student-muted);margin:0;font-size:14px;line-height:1.85}.student-page .skeleton-list{gap:11px;display:grid}.student-page .skeleton-card,.student-page .skeleton-panel{background:#e8eee5;border-radius:20px;min-height:116px}.student-page .toast{bottom:calc(22px + env(safe-area-inset-bottom));z-index:60;color:#fff;background:var(--student-accent);border-radius:16px;width:max-content;max-width:calc(100% - 32px);padding:12px 16px;font-size:14px;line-height:1.6;position:fixed;left:50%;transform:translate(-50%)}.student-page .student-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:22px;height:22px;display:block}@media (width<=480px){.student-page.page{padding:calc(12px + env(safe-area-inset-top)) 20px calc(28px + env(safe-area-inset-bottom))}}
