:root{color:#242424;font-synthesis:none;--accent:#ff702f;--muted:#8a8a8d;--border:#f0f0f0;background:#f6f6f6;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline-offset:4px;outline:2px solid #ff702f}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}img{max-width:100%}button{color:inherit;background:0 0;border:0}p{line-height:1.7}h2{font-size:22px}h3{font-size:16px;line-height:1.6}.page{max-width:1024px;padding:26px 24px calc(36px + env(safe-area-inset-bottom));margin:auto}.header{z-index:10;border-bottom:1px solid var(--border);padding-top:env(safe-area-inset-top);background:#fff;position:sticky;top:0}.header-inner{align-items:center;gap:14px;max-width:1024px;min-height:62px;margin:auto;padding:12px 24px;display:flex}.header h1{font-size:18px;font-weight:600}.header-actions{margin-left:auto}.back{min-width:32px;padding:0 8px 5px 0;font-size:34px;line-height:1}.text-button{color:var(--accent);padding:8px 4px;font-size:13px}.button{background:var(--accent);color:#fff;white-space:nowrap;border:0;border-radius:8px;justify-content:center;align-items:center;min-height:44px;padding:13px 24px;font-weight:500;display:inline-flex}.button.secondary{color:#db5a20;background:#fff1e9}.button.small{min-height:38px;padding:9px 16px;font-size:13px}.card{background:#fff;border-radius:12px}.muted,.footnote{color:var(--muted);font-size:13px}.footnote{text-align:center;padding:16px 0}.error-text{margin-top:12px;font-size:13px;line-height:1.6;color:#c43131!important}.notice{color:#358546;margin-top:12px;font-size:13px}.state{text-align:center;color:#8b8b8e;padding:64px 20px;line-height:1.8}.state .button{margin-top:16px}.empty-symbol{color:#ccc;margin-bottom:8px;font-size:42px;display:block}.spinner{border:2px solid #eee;border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;margin:0 auto 14px;animation:1s linear infinite spin;display:block}@keyframes spin{to{transform:rotate(360deg)}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.login-page{background:#fff;max-width:470px;min-height:100dvh;margin:0 auto;padding:64px 32px 48px}.login-page h1{margin:40px 0 12px;font-size:28px;font-weight:500}.login-brand{align-items:center;gap:10px;font-size:16px;font-weight:600;display:flex}.login-brand img{object-fit:contain;width:38px;height:38px}.login-note{color:#8a8a8d;margin-bottom:42px;font-size:14px}.login-page input{color:#222;outline-offset:0;background:0 0;border:0;border-bottom:1px solid #eee;border-radius:0;width:100%;height:54px;font-size:16px}.login-page input::placeholder{color:#b1b1b5}.code-row{border-bottom:1px solid #eee;align-items:center;margin-top:18px;display:flex;position:relative}.code-row input{border:0;flex:1;min-width:0;padding-right:10px}.code-button{color:#e6652b;white-space:nowrap;padding:14px 0 14px 8px;font-size:13px}.login-submit{border-radius:25px;width:100%;min-height:48px;margin-top:30px;font-size:16px}.login-submit:disabled{opacity:1;background:#c5c7c9}.login-footer{color:#a2a2a7;text-align:center;margin-top:36px;font-size:12px}.welcome{align-items:center;gap:16px;margin-bottom:24px;display:flex}.welcome img{object-fit:contain;width:48px;height:48px}.welcome-copy{flex:1;min-width:0}.welcome-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.welcome-heading .logout-button{color:#555;background:#e5e5e5;flex-shrink:0}.welcome h2{font-size:22px}.welcome p{color:var(--muted);margin-top:5px;font-size:13px}.calendar{padding:16px 24px 20px}.calendar-title{justify-content:center;align-items:center;gap:20px;margin-bottom:14px;display:flex;position:relative}.icon-button{min-width:38px;min-height:38px;font-size:26px}.calendar-title .today{position:absolute;right:0}.calendar-grid{text-align:center;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px 0;display:grid}.weekday{color:#999;padding:6px;font-size:12px}.calendar-day{flex-direction:column;justify-content:center;align-items:center;min-height:40px;padding:4px;display:flex;position:relative}.calendar-day span{border-radius:50%;place-items:center;width:32px;height:32px;display:grid}.calendar-day.selected span{background:var(--accent);color:#fff}.calendar-day i{background:var(--accent);border-radius:50%;width:4px;height:4px;position:absolute;bottom:1px}.section{margin-top:24px}.section-title{align-items:center;gap:10px;margin-bottom:12px;font-size:18px;display:flex}.section-title:before{content:"";background:var(--accent);border-radius:2px;width:4px;height:17px}.section-title>span{color:#aaa;font-size:13px;font-weight:400}.course-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.course-card,.live-card{padding:16px}.course-card{text-align:left;width:100%;transition:box-shadow .15s}.course-card:hover{box-shadow:0 4px 18px #00000009}.course-card h3{gap:10px;margin-bottom:8px;display:flex}.course-icon{color:var(--accent);font-size:20px}.course-card p{color:#999;margin-top:4px;font-size:12px}.course-bottom{justify-content:space-between;align-items:center;margin-top:12px;display:flex}.course-bottom>span{color:#aaa;text-align:right;font-size:12px}.course-bottom strong{color:var(--accent);font-size:24px;font-weight:500}.course-bottom small{margin-top:2px;font-size:11px;display:block}.avatars{flex-shrink:0;align-items:center;padding-left:6px;display:flex}.avatars img{object-fit:cover;border:2px solid #fff;border-radius:50%;flex:0 0 34px;width:34px;max-width:none;height:34px;margin-left:-6px}.live-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.live-card>div:first-child{align-items:center;gap:12px;margin-bottom:8px;display:flex}.badge{color:#888;background:#eee;border-radius:4px;padding:3px 8px;font-size:12px;display:inline-flex}.badge.live{color:#f0642e;background:#fff0e8}.live-card h3{margin-bottom:8px}.live-card p{color:#999;margin-bottom:12px;font-size:13px}.page.course-page{padding-top:16px}.course-page .section{margin-top:18px}.course-page .section-title{margin-bottom:10px}.course-summary{padding:16px}.eyebrow{color:var(--accent);margin-bottom:9px;font-size:12px}.course-summary h2{margin-bottom:8px}.course-summary>p:not(.eyebrow){color:#8a8a8d;font-size:13px}.course-summary>p>span{margin-left:12px}.chapter-group{margin-bottom:12px}.chapter-group summary{cursor:pointer;padding:12px 16px;font-size:14px;font-weight:600;line-height:1.6}.chapter{border-top:1px solid #f5f5f5;align-items:center;gap:10px;padding:12px 16px;display:flex}.chapter-number{color:#ccc;align-self:flex-start;padding-top:2px;font-size:13px}.chapter-info{flex:1;min-width:0}.chapter-info h3{overflow-wrap:anywhere;font-size:14px;font-weight:500}.chapter-info p{color:#999;margin-top:4px;font-size:12px}.chapter-info .progress-note{color:#f08049;font-size:11px}.button.compact,.chapter .chapter-action{border:1px solid #0000;border-radius:6px;min-width:64px;min-height:30px;padding:6px 8px;font-size:11px;line-height:1.3}.chapter .chapter-action--new{color:#ce4d14;background:#fff0e8;border-color:#ffd7c2}.material-list{padding:0 24px}.material{border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:24px 0;display:flex}.material:last-child{border:0}.material>div{flex:1;min-width:0}.material h3{overflow-wrap:anywhere;font-size:15px}.material p{color:#aaa;margin-top:6px;font-size:12px}.contact-card{text-align:center;max-width:580px;margin:auto;padding:36px 24px}.teacher-avatar{object-fit:cover;border-radius:50%;width:72px;height:72px;margin-bottom:14px}.contact-card h2{margin-bottom:8px;font-size:20px}.qr-code{object-fit:contain;width:220px;height:220px;margin:28px auto 18px;display:block}.contact-card>p{color:#888;font-size:13px}.teacher-intro{text-align:left;color:#888;max-width:340px;margin:28px auto 0;font-size:13px;line-height:1.8}.playback-card{overflow:hidden}.playback-heading{padding:24px 28px}.playback-heading h2{margin-bottom:8px;font-size:20px}.video-shell{aspect-ratio:16/9;background:#090909;position:relative}.video-shell video{object-fit:contain;width:100%;height:100%;display:block}.video-error{color:#ddd;text-align:center;background:#111e;flex-direction:column;justify-content:center;align-items:center;gap:20px;padding:24px;font-size:14px;display:flex;position:absolute;inset:0}.player-controls{justify-content:space-between;align-items:center;padding:18px 24px;font-size:13px;display:flex}.playback-rate{align-items:center;gap:8px;display:flex;position:relative}.playback-rate-trigger{background:#fff;border:1px solid #e5e5e5;border-radius:6px;justify-content:space-between;align-items:center;gap:16px;min-width:76px;min-height:36px;padding:7px 10px;display:flex}.playback-rate-menu{z-index:20;background:#fff;border:1px solid #ededed;border-radius:9px;width:100px;max-height:min(300px,60vh);padding:5px;position:absolute;bottom:calc(100% + 8px);right:0;overflow-y:auto;box-shadow:0 4px 20px #0002}.playback-rate-menu button{text-align:left;border-radius:5px;justify-content:space-between;align-items:center;width:100%;min-height:36px;padding:8px 10px;display:flex}.playback-rate-menu button[aria-selected=true],.playback-rate-menu button:hover,.playback-rate-menu button:focus-visible{color:#de591c;background:#fff0e8}.progress-status{color:#aaa;margin:0;padding:0 24px 20px;font-size:12px}.is-live video::-webkit-media-controls-timeline{display:none}@media (min-width:768px){.login-page{border-radius:16px;min-height:auto;margin-top:8vh;margin-bottom:8vh;box-shadow:0 6px 30px #00000005}.calendar{max-width:640px;margin:auto}.welcome{margin-top:6px}.live-list{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:600px){.page{padding:20px 16px calc(30px + env(safe-area-inset-bottom))}.header-inner{min-height:54px;padding:10px 16px}.header h1{font-size:16px}.login-page{padding:48px 26px}.calendar{padding:14px 10px 16px}.calendar-day{min-height:38px}.course-grid,.live-list{grid-template-columns:1fr;gap:12px}.course-summary h2{font-size:20px}.course-summary>p>span{margin-top:4px;margin-left:0;display:block}.chapter-number{font-size:11px}.chapter-info h3{font-size:13px}.material-list{padding:0 16px}.material{gap:10px}.material .button.small{padding:8px 10px;font-size:12px}.playback-heading{padding:20px}.playback-heading h2{font-size:18px}.player-controls{padding:15px 16px}.progress-status{padding:0 16px 18px}.welcome h2{font-size:20px}.section-title{font-size:17px}.calendar-title{gap:10px}.calendar-title .today{right:7px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
