@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}}:root{--bg-dark:#081223;--ink:#f5f7ff;--ink-soft:#f5f7ffcc;--panel-bg:#070f1d73;--panel-line:#ffffff2e;--brand:#1ec8a5;--brand-strong:#00b996;--error-bg:#ff505f33;--error-line:#ff7f8a73}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}body{background:var(--bg-dark);color:var(--ink);font-family:Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif}.app-shell{min-height:100vh}.hero{isolation:isolate;justify-content:center;align-items:flex-end;min-height:100vh;padding:22px;display:flex;position:relative;overflow:hidden}.hero.hero-signed-in{align-items:stretch;height:100dvh;min-height:0;padding:10px}.hero:before{content:"";background-image:var(--hero-image);filter:blur(3px)saturate(1.08);z-index:-2;background-position:50%;background-size:cover;position:absolute;inset:-12px;transform:scale(1.06)}.hero-backdrop{z-index:-1;background:linear-gradient(#070d1833,#070d18b8 62%,#070d18eb),radial-gradient(circle at 10% 10%,#1ec8a538,#0000 45%);position:absolute;inset:0}.hero-content{border:1px solid var(--panel-line);background:var(--panel-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:24px;width:min(520px,100%);padding:24px;animation:.48s ease-out rise-up;transform:translateY(-34px);box-shadow:0 20px 60px #00000040}.hero-content.hero-content-signed-in{flex-direction:column;width:min(640px,100%);min-height:calc(100vh - 20px);padding:20px;display:flex;transform:none}.headline{letter-spacing:.01em;margin:12px 0 0;font-size:clamp(2rem,10vw,3.2rem);line-height:1}.sub-headline{color:#b8fff1;margin:8px 0 0;font-size:clamp(1.15rem,5vw,1.6rem);font-weight:600}.desc{color:var(--ink-soft);margin:14px 0 0;font-size:.98rem;line-height:1.6}.cta,.primary-btn,.ghost-btn{cursor:pointer;border-radius:14px;width:100%;padding:13px 14px;font-size:1rem;font-weight:700;transition:transform .18s,box-shadow .18s,background .18s}.cta,.primary-btn{background:linear-gradient(135deg,var(--brand),var(--brand-strong));color:#02231f;border:none;margin-top:20px;box-shadow:0 10px 28px #00b99657}.cta:active,.primary-btn:active{transform:translateY(1px)}.panel{margin-top:2px}.panel-title{margin:0;font-size:1.45rem;line-height:1.2}.panel-subtitle{color:var(--ink-soft);margin:6px 0 0;font-size:.88rem;line-height:1.4}.panel-text{color:var(--ink-soft);margin:10px 0 0;line-height:1.5}.bottom-nav{grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;display:grid}.nav-btn{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff40;border-radius:14px;padding:12px;font-size:1rem;font-weight:700;transition:background .18s,border-color .18s}.nav-btn.active{background:#1ec8a53d;border-color:#1ec8a5e6}.form{gap:10px;margin-top:16px;display:grid}label{color:#ffffffe6;font-size:.94rem;font-weight:600}input{color:#fff;background:#ffffff17;border:1px solid #ffffff3d;border-radius:13px;outline:none;width:100%;padding:12px 13px;font-size:1rem}input::placeholder{color:#ffffff8c}input:focus{border-color:#1ec8a5e6;box-shadow:0 0 0 3px #1ec8a533}.ghost-btn{color:#fff;background:#ffffff0a;border:1px solid #ffffff47;margin-top:12px}.ghost-btn:hover{background:#ffffff17}.error{border:1px solid var(--error-line);background:var(--error-bg);color:#ffd8dc;border-radius:12px;margin-top:14px;padding:10px 12px;font-weight:600}.hint{color:#ffffffa8;margin:14px 0 0;font-size:.84rem}.icp-footer{text-align:center;-webkit-backdrop-filter:blur(6px);background:#00000059;padding:10px 16px}.icp-footer span,.icp-footer a{color:#ffffff73;letter-spacing:.02em;font-size:.68rem;text-decoration:none}.icp-sep{opacity:.3;margin:0 6px}@keyframes rise-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media(min-width:768px){.hero,.hero.hero-signed-in{align-items:center;padding:28px}.hero-content{width:min(560px,92%);transform:translateY(-20px)}.hero-content.hero-content-signed-in{width:min(760px,92%);min-height:min(760px,86vh);padding:24px}}.student-home{flex-direction:column;flex:1;min-height:0;display:flex}.tab-content{-webkit-overflow-scrolling:touch;flex:1;min-height:0;padding-bottom:16px;overflow-y:auto}.tab-learn{animation:.32s ease-out rise-up}.lesson-stats{border:1px solid var(--panel-line);background:#ffffff0d;border-radius:16px;align-items:center;margin-top:18px;padding:18px 0;display:flex}.lesson-stat-item{flex-direction:column;flex:1;align-items:center;gap:4px;display:flex}.lesson-stat-num{font-size:1.8rem;font-weight:800;line-height:1}.lesson-stat-item.completed .lesson-stat-num{color:var(--brand)}.lesson-stat-item.remaining .lesson-stat-num{color:#f0c040}.lesson-stat-label{color:var(--ink-soft);font-size:.82rem;font-weight:500}.lesson-stat-divider{background:var(--panel-line);width:1px;height:36px}.course-prep-section{flex-direction:column;gap:10px;margin-top:20px;display:flex}.course-prep-btn{border:1px solid var(--panel-line);color:var(--ink);cursor:pointer;text-align:left;background:#ffffff0f;border-radius:14px;align-items:center;gap:12px;padding:14px 16px;transition:background .2s,transform .15s;display:flex}.course-prep-btn:active{background:#ffffff1a;transform:scale(.97)}.course-prep-icon{flex-shrink:0;font-size:1.5rem}.course-prep-text{flex-direction:column;flex:1;gap:2px;display:flex}.course-prep-title{color:var(--ink);font-size:.95rem;font-weight:700}.course-prep-sub{color:var(--ink-soft);font-size:.78rem}.course-prep-arrow{color:var(--ink-soft);flex-shrink:0;font-size:1.4rem}.next-lesson-card{border:1px solid var(--panel-line);background:#ffffff0f;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.next-lesson-info{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.next-lesson-icon{flex-shrink:0;font-size:1.6rem}.next-lesson-details{flex-direction:column;gap:3px;min-width:0;display:flex}.next-lesson-title{color:var(--ink);font-size:.95rem;font-weight:600}.next-lesson-time{color:var(--ink-soft);font-size:.82rem}.next-lesson-empty{opacity:.6}.next-lesson-join-btn{background:var(--brand);color:#02231f;border-radius:10px;flex-shrink:0;align-items:center;padding:8px 18px;font-size:.88rem;font-weight:600;text-decoration:none;transition:opacity .15s;display:inline-flex}.next-lesson-join-btn:active{opacity:.8}.next-lesson-no-link{color:var(--ink-soft);flex-shrink:0;font-size:.8rem}.next-lesson-leave-btn{color:var(--ink-soft);border:1px solid var(--panel-line);cursor:pointer;text-align:center;background:0 0;border-radius:8px;padding:5px 14px;font-size:.78rem;font-weight:600;transition:opacity .15s}.next-lesson-leave-btn:active{opacity:.7}.next-lesson-actions{flex-direction:column;flex-shrink:0;align-items:stretch;gap:6px;display:flex}.cefr-map{border:1px solid var(--panel-line);background:#ffffff0a;border-radius:16px;margin-top:20px;padding:18px 16px}.cefr-map-title{color:var(--ink);align-items:center;gap:8px;margin:0 0 16px;font-size:.95rem;font-weight:700;display:flex}.cefr-map-title svg{color:var(--brand)}.cefr-track{flex-direction:column;gap:0;display:flex}.cefr-node{align-items:flex-start;gap:14px;display:flex}.cefr-dot-col{flex-direction:column;flex-shrink:0;align-items:center;width:32px;display:flex}.cefr-dot{width:32px;height:32px;color:var(--ink-soft);background:#ffffff0f;border:2px solid #ffffff26;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.72rem;font-weight:700;transition:all .3s;display:flex}.cefr-line{background:#ffffff1a;flex-shrink:0;width:2px;height:28px}.cefr-line-done{background:var(--brand);opacity:.6}.cefr-line-half{background:linear-gradient(to bottom,var(--brand)50%,#ffffff1a 50%)}.cefr-info{flex:1;min-width:0;padding-bottom:18px}.cefr-node:last-child .cefr-info{padding-bottom:0}.cefr-level-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.cefr-level-badge{letter-spacing:.02em;color:var(--ink-soft);background:#ffffff0f;border-radius:6px;justify-content:center;align-items:center;padding:2px 10px;font-size:.78rem;font-weight:800;display:inline-flex}.cefr-label{color:var(--ink);font-size:.85rem;font-weight:600}.cefr-you{color:var(--brand);font-size:.72rem;font-weight:700;animation:2s ease-in-out infinite cefr-pulse}.cefr-desc{color:var(--ink-soft);opacity:.7;margin:4px 0 0;font-size:.78rem;line-height:1.4}.cefr-passed .cefr-dot{border-color:var(--brand);color:var(--brand);background:#1ec8a526;font-size:.8rem}.cefr-passed .cefr-level-badge{color:var(--brand);background:#1ec8a51a}.cefr-current .cefr-dot{background:var(--brand);border-color:var(--brand);color:#02231f;font-size:.85rem;box-shadow:0 0 16px #1ec8a566}.cefr-current .cefr-level-badge{background:var(--brand);color:#02231f}.cefr-current .cefr-label{color:var(--brand)}.cefr-current .cefr-desc{opacity:1;color:var(--ink)}@keyframes cefr-pulse{0%,to{opacity:1}50%{opacity:.5}}.lc-body{-webkit-overflow-scrolling:touch;flex:1;padding:20px 18px;overflow-y:auto}.lc-hero{flex-direction:column;align-items:center;margin-bottom:24px;display:flex}.lc-hero-level{background:linear-gradient(135deg,var(--brand),var(--brand-strong));color:#02231f;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;margin-bottom:6px;font-size:1.5rem;font-weight:800;display:flex;box-shadow:0 6px 24px #1ec8a559}.lc-hero-text{color:var(--ink-soft);margin:0;font-size:.82rem}.lc-hours{color:var(--ink-soft);opacity:.6;margin-top:2px;font-size:.7rem;display:inline-block}.lc-progress-row{margin-top:6px}.lc-progress-label{color:var(--brand);font-size:.72rem;font-weight:600}.cp-group{margin-bottom:24px}.cp-group-title{color:var(--ink-soft);letter-spacing:.04em;margin:0 0 10px;font-size:.85rem;font-weight:700}.cp-cards{gap:10px;display:flex}.cp-card{border:1px solid var(--panel-line);cursor:pointer;text-align:left;color:var(--ink);background:#ffffff0d;border-radius:14px;flex-direction:column;flex:1;padding:16px 14px;transition:border-color .2s,background .2s,transform .15s;display:flex}.cp-card:active{border-color:var(--brand);background:#ffffff1a;transform:scale(.97)}.cp-card-top{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.cp-lessons{color:var(--brand);font-size:1.6rem;font-weight:800;line-height:1}.cp-lessons small{margin-left:2px;font-size:.75rem;font-weight:600}.cp-duration{color:var(--ink-soft);background:#ffffff0f;border-radius:6px;padding:2px 8px;font-size:.72rem}.cp-card-bottom{border-top:1px solid #ffffff14;justify-content:space-between;align-items:baseline;padding-top:8px;display:flex}.cp-price{color:var(--ink);font-size:1.05rem;font-weight:700}.cp-unit{color:var(--ink-soft);font-size:.72rem}.cp-terms{flex-direction:column;height:100%;display:flex}.cp-terms-title{color:var(--ink);text-align:center;margin:0 0 14px;font-size:1rem;font-weight:700}.cp-terms-text{-webkit-overflow-scrolling:touch;color:var(--ink-soft);border:1px solid var(--panel-line);background:#ffffff08;border-radius:12px;flex:1;margin-bottom:16px;padding:14px;font-size:.78rem;line-height:1.65;overflow-y:auto}.cp-terms-text p{margin:0 0 10px}.cp-terms-text strong{color:var(--ink)}.declaration-agreed-badge{color:#07c160;background:#07c1601f;border:1px solid #07c1604d;border-radius:10px;align-items:center;gap:8px;margin-bottom:14px;padding:10px 16px;font-size:.85rem;font-weight:600;display:flex}.declaration-agreed-icon{color:#fff;background:#07c160;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:.75rem;display:flex}.cp-terms-actions{padding-bottom:env(safe-area-inset-bottom,0px);flex-shrink:0;gap:12px;display:flex}.cp-terms-back{border:1px solid var(--panel-line);color:var(--ink);cursor:pointer;background:0 0;border-radius:12px;flex:1;padding:14px;font-size:.9rem;font-weight:600}.cp-terms-agree{background:var(--brand);color:#02231f;cursor:pointer;border:none;border-radius:12px;flex:2;padding:14px;font-size:.9rem;font-weight:700;transition:opacity .15s}.cp-terms-agree:active{opacity:.8}.cp-payment{flex-direction:column;gap:20px;display:flex}.cp-payment-summary{border:1px solid var(--panel-line);background:#ffffff0a;border-radius:14px;padding:16px}.cp-payment-title{color:var(--ink);margin:0 0 12px;font-size:.88rem;font-weight:700}.cp-payment-row{color:var(--ink-soft);justify-content:space-between;padding:6px 0;font-size:.82rem;display:flex}.cp-payment-total{border-top:1px solid var(--panel-line);color:var(--brand);margin-top:8px;padding-top:10px;font-size:1rem;font-weight:700}.cp-payment-methods{border:1px solid var(--panel-line);background:#ffffff0a;border-radius:14px;padding:16px}.cp-pay-btn{cursor:pointer;border:none;border-radius:12px;justify-content:center;align-items:center;gap:10px;width:100%;margin-bottom:10px;padding:14px;font-size:.92rem;font-weight:600;transition:opacity .15s;display:flex}.cp-pay-btn:last-child{margin-bottom:0}.cp-pay-btn:active{opacity:.8}.cp-pay-wechat{color:#fff;background:#07c160}.cp-pay-alipay{color:#fff;background:#1677ff}.cp-pay-btn:disabled{opacity:.5;pointer-events:none}.cp-pay-loading{flex-direction:column;align-items:center;gap:16px;padding:48px 0;display:flex}.cp-pay-loading-icon{border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;animation:1s ease-in-out infinite cp-pay-bounce;display:flex}.cp-pay-loading-icon.wechat{background:#07c1601f}.cp-pay-loading-icon.alipay{background:#1677ff1f}.cp-pay-loading-text{color:#ffffffb3;font-size:.92rem;font-weight:500}.cp-pay-loading-spinner{border:3px solid #ffffff26;border-top-color:var(--brand);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite cp-spin}@keyframes cp-pay-bounce{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes cp-spin{to{transform:rotate(360deg)}}.cp-pay-qr{flex-direction:column;align-items:center;gap:12px;padding:16px 0;display:flex}.cp-pay-qr-hint{color:#ffffff8c;text-align:center;font-size:.82rem}.cp-pay-qr-box{background:#fff;border-radius:12px;justify-content:center;align-items:center;padding:12px;display:flex}.cp-pay-qr-box img{border-radius:4px;display:block}.cp-pay-qr-waiting{color:var(--brand);font-size:.85rem;animation:1.5s ease-in-out infinite cp-pulse}@keyframes cp-pulse{0%,to{opacity:1}50%{opacity:.4}}.cp-pay-success{flex-direction:column;align-items:center;gap:12px;padding:40px 0;display:flex}.cp-pay-success-icon{background:var(--brand);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;font-size:2rem;display:flex}.cp-pay-success h4{color:var(--ink);margin:0;font-size:1.2rem}.cp-pay-success p{color:#fff9;margin:0;font-size:.9rem}.cp-pay-cancel-btn{color:#ff6b6b;cursor:pointer;background:#ff50501a;border:1px solid #ff505066;border-radius:10px;margin-top:4px;padding:10px 32px;font-size:.88rem;font-weight:500;transition:all .15s}.cp-pay-cancel-btn:active{background:#ff505033}.order-history-body{-webkit-overflow-scrolling:touch;flex:1;min-height:0;padding:16px;overflow-y:auto}.order-history-loading,.order-history-empty{text-align:center;color:#ffffff73;padding:48px 0;font-size:.9rem}.order-history-list{flex-direction:column;gap:12px;display:flex}.order-history-action-loading{color:#ffffffbf;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:200px;font-size:.9rem;display:flex}.order-history-action-spinner{border:3px solid #fff3;border-top-color:var(--brand);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}.order-card{background:#ffffff0f;border:1px solid #ffffff14;border-radius:12px;padding:14px 16px}.order-card-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.order-card-id{color:#ffffff59;text-overflow:ellipsis;white-space:nowrap;max-width:70%;font-family:monospace;font-size:.72rem;overflow:hidden}.order-card-status{border-radius:6px;padding:2px 8px;font-size:.75rem;font-weight:600}.status-paid{color:#07c160;background:#07c16026}.status-pending{color:#fa0;background:#ffaa0026}.status-failed{color:#ff6b6b;background:#ff505026}.status-cancelled{color:#999;background:#99999926}.order-card-body{flex-direction:column;gap:8px;display:flex}.order-card-plan{justify-content:space-between;align-items:center;display:flex}.order-card-lessons{color:var(--ink);font-size:.95rem;font-weight:600}.order-card-price{color:var(--brand);font-size:1rem;font-weight:700}.order-card-meta{justify-content:space-between;align-items:center;display:flex}.order-card-method{color:#ffffff73;font-size:.78rem}.order-card-time{color:#ffffff59;font-size:.78rem}.order-card-actions{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.order-card-action-btn{cursor:pointer;border:1px solid #0000;border-radius:8px;padding:6px 12px;font-size:.78rem;font-weight:600;transition:all .15s}.order-card-action-btn:disabled{opacity:.6;cursor:not-allowed}.order-card-action-btn.pay{color:#67f2cf;background:#1ec8a526;border-color:#1ec8a573}.order-card-action-btn.cancel{color:#ff8e96;background:#ff50501f;border-color:#ff505059}.order-card-action-btn:active{transform:translateY(1px)}.leave-confirm-overlay{z-index:100;background:#00000026;justify-content:center;align-items:center;padding:10px;display:flex;position:fixed;inset:0}.leave-confirm-card{background:var(--panel-bg);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-align:center;border-radius:20px;width:min(300px,90%);padding:28px 24px 20px;animation:.48s ease-out rise-up;box-shadow:0 20px 60px #00000040}.leave-confirm-text{color:var(--ink);margin:0 0 6px;font-size:1.05rem;font-weight:600}.leave-confirm-sub{color:var(--ink-soft);margin:0 0 20px;font-size:.82rem}.leave-confirm-actions{gap:10px;display:flex}.leave-confirm-cancel,.leave-confirm-ok{cursor:pointer;border:none;border-radius:10px;flex:1;padding:10px 0;font-size:.9rem;font-weight:600;transition:opacity .15s}.leave-confirm-cancel{color:var(--ink-soft);border:1px solid var(--panel-line);background:#ffffff14}.leave-confirm-ok{color:#fff;background:#ef4444}.leave-confirm-cancel:active,.leave-confirm-ok:active{opacity:.7}.leave-confirm-cancel:disabled,.leave-confirm-ok:disabled{opacity:.5;cursor:not-allowed}.review-menu-card{background:var(--panel-bg);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:24px;flex-direction:column;width:min(400px,100%);padding:24px 20px 20px;animation:.48s ease-out rise-up;display:flex;box-shadow:0 20px 60px #00000040}.review-menu-title{color:var(--ink);text-align:center;margin:0 0 16px;font-size:1.15rem;font-weight:700}.review-menu-options{flex-direction:column;gap:10px;margin-bottom:16px;display:flex}.review-menu-btn{border:1px solid var(--panel-line);cursor:pointer;text-align:left;background:#ffffff0f;border-radius:14px;align-items:center;gap:12px;padding:14px 16px;transition:background .15s;display:flex}.review-menu-btn:active{background:#ffffff1f}.review-menu-icon{flex-shrink:0;font-size:1.5rem}.review-menu-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.review-menu-label{color:var(--ink);font-size:.95rem;font-weight:600}.review-menu-sub{color:var(--ink-soft);font-size:.78rem}.review-menu-arrow{color:var(--ink-soft);flex-shrink:0;font-size:1.2rem}.vocab-list-body{flex:1;padding:16px;overflow-y:auto}.vocab-empty{text-align:center;color:var(--ink-soft);padding:40px 0;font-size:.9rem}.vocab-section{margin-bottom:20px}.vocab-section-title{color:var(--ink);border-bottom:1px solid var(--panel-line);margin:0 0 10px;padding-bottom:6px;font-size:.9rem;font-weight:700}.vocab-item{border:1px solid var(--panel-line);background:#ffffff0a;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;padding:10px 12px;display:flex}.vocab-item-left{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.vocab-play-btn{cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;padding:4px;font-size:1.2rem;transition:background .15s}.vocab-play-btn:active{background:#ffffff1a}.vocab-play-btn.vocab-playing{color:var(--brand)}@keyframes vocab-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vocab-spin{animation:.8s linear infinite vocab-spin}.vocab-item-text{flex-direction:column;gap:2px;min-width:0;display:flex}.vocab-word{color:var(--ink);font-size:.92rem;font-weight:600}.vocab-chinese{color:var(--ink-soft);font-size:.78rem}.vocab-complete-btn{background:var(--brand);color:#02231f;cursor:pointer;border:none;border-radius:8px;flex-shrink:0;padding:5px 14px;font-size:.78rem;font-weight:700;transition:opacity .15s}.vocab-complete-btn:active{opacity:.7}.course-modal-overlay{z-index:1000;background:var(--bg-dark);-webkit-overflow-scrolling:touch;flex-direction:column;animation:.2s ease-out fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.course-modal{flex-direction:column;flex:1;width:100%;max-width:640px;min-height:0;margin:0 auto;display:flex;overflow:hidden}.course-modal-header{border-bottom:1px solid var(--panel-line);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.course-modal-title{color:var(--ink);font-size:1rem;font-weight:700}.course-modal-close{width:34px;height:34px;color:var(--ink);cursor:pointer;background:#ffffff1a;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1rem;transition:background .2s;display:flex}.course-modal-close:hover{background:#fff3}.course-pdf-wrapper{-webkit-overflow-scrolling:touch;flex:1;min-height:0;display:flex;position:relative;overflow-y:auto}.course-pdf-loading{color:var(--ink-soft);background:var(--panel-bg);z-index:0;justify-content:center;align-items:center;font-size:1rem;display:flex;position:absolute;inset:0}.course-pdf-pages{flex-direction:column;align-items:center;gap:8px;width:100%;padding:8px 0;display:flex}.course-pdf-page{width:100%;height:auto;display:block}.course-pdf-iframe{-webkit-overflow-scrolling:touch;z-index:1;background:#fff;border:none;flex:1;width:100%;height:100%;min-height:0;position:relative}.audio-input-modal{flex-direction:column;flex:1;width:100%;max-width:640px;min-height:0;margin:0 auto;display:flex;overflow:hidden}.audio-input-body{flex-direction:column;flex:1;gap:16px;padding:20px 18px;display:flex;overflow-y:auto}.audio-round-dots{justify-content:center;gap:14px;display:flex}.audio-round-dot{color:#ffffff4d;border:2px solid #ffffff26;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:.85rem;font-weight:700;transition:all .3s;display:flex}.audio-round-dot.active{border-color:var(--brand);color:var(--brand)}.audio-round-dot.current{background:var(--brand);color:#02231f;border-color:var(--brand);box-shadow:0 0 16px #1ec8a566}.audio-guide-text{text-align:center;color:var(--ink-soft);min-height:1.4em;font-size:.88rem;font-weight:500;animation:.3s ease-out fade-in}.audio-transcript-area{border-radius:14px;flex:1;justify-content:center;align-items:center;min-height:0;max-height:40vh;transition:all .3s;display:flex;overflow:hidden}.audio-transcript-area.visible,.audio-transcript-area.hidden{background:#ffffff0a}.lyrics-viewport{scrollbar-width:none;-webkit-overflow-scrolling:touch;width:100%;height:100%;padding:24px 16px;overflow-y:auto}.lyrics-viewport::-webkit-scrollbar{display:none}.lyrics-line{text-align:center;color:#ffffff40;letter-spacing:.01em;margin:0;padding:8px 12px;font-size:.92rem;font-weight:400;line-height:1.7;transition:color .4s,font-size .4s,opacity .4s}.lyrics-line.lyrics-active{color:#fffffff2;font-size:1.05rem;font-weight:500}.audio-transcript-hidden{color:var(--ink-soft);flex-direction:column;align-items:center;gap:8px;padding:40px 20px;font-size:.9rem;display:flex}.audio-hidden-icon{opacity:.6;font-size:2.5rem;animation:2s ease-in-out infinite pulse-soft}@keyframes pulse-soft{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}.audio-player-card{border:1px solid var(--panel-line);background:#ffffff0f;border-radius:16px;flex-shrink:0;padding:16px}.audio-player-controls{align-items:center;gap:12px;display:flex}.audio-play-btn{background:var(--brand);color:#02231f;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;transition:transform .15s,box-shadow .2s;display:flex}.audio-play-btn:active{transform:scale(.92)}.audio-play-btn svg{width:24px;height:24px}.audio-progress-bar{cursor:pointer;flex:1;padding:8px 0}.audio-progress-track{background:#ffffff1f;border-radius:2px;height:4px;overflow:hidden}.audio-progress-fill{background:var(--brand);border-radius:2px;height:100%;transition:width .1s linear}.audio-time{color:var(--ink-soft);font-variant-numeric:tabular-nums;text-align:right;flex-shrink:0;min-width:80px;font-size:.75rem}.audio-complete-msg{flex-direction:column;align-items:center;gap:12px;padding:24px 16px;animation:.4s ease-out rise-up;display:flex}.audio-complete-icon{font-size:2.5rem}.audio-complete-msg p{color:var(--ink);text-align:center;font-size:1rem;font-weight:600}.tab-profile{flex-direction:column;align-items:center;gap:6px;padding-bottom:24px;animation:.32s ease-out rise-up;display:flex}.profile-avatar{background:linear-gradient(135deg,var(--brand),var(--brand-strong));color:#02231f;border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;margin-bottom:4px;font-size:1.8rem;font-weight:800;display:flex;box-shadow:0 6px 20px #00b9964d}.profile-name{margin:0;font-size:1.35rem}.profile-name-btn{color:var(--ink);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:6px;margin:0;padding:6px 14px;font-size:1.35rem;font-weight:700;transition:border-color .2s,background .2s;display:inline-flex}.profile-name-btn svg{opacity:.4;flex-shrink:0}.profile-name-btn:active{background:#ffffff0f;border-color:#ffffff26}.profile-actions{flex-direction:column;gap:12px;width:100%;margin-top:20px;display:flex}.profile-btn{width:100%;color:var(--ink);cursor:pointer;background:#ffffff0f;border:1px solid #ffffff26;border-radius:14px;align-items:center;gap:12px;padding:14px 18px;font-size:1rem;font-weight:600;transition:background .18s;display:flex}.profile-btn:active{background:#ffffff1f}.profile-btn.logout{color:#ff8a94;border-color:#ff505f4d}.profile-btn-icon{font-size:1.2rem}.tab-bar{border-top:1px solid var(--panel-line);border-radius:0 0 24px 24px;margin:0 -24px -24px;display:flex;overflow:hidden}.tab-bar-item{color:#ffffff80;cursor:pointer;background:#070f1d80;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:12px 0 14px;font-size:.78rem;font-weight:600;transition:color .18s,background .18s;display:flex}.tab-bar-item.active{color:var(--brand);background:#1ec8a514}.tab-bar-icon{width:22px;height:22px}.loading-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999;background:#08122399;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.spinner{border:3px solid #ffffff26;border-top-color:var(--brand);border-radius:50%;width:42px;height:42px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.eval-btn{color:#c084fc;border-color:#a855f759}.student-home.blurred{filter:blur(8px);pointer-events:none;transition:filter .3s}.eval-report-overlay{z-index:100;background:#00000026;justify-content:center;align-items:flex-start;padding:10px;display:flex;position:fixed;inset:0;overflow-y:auto}.eval-report-card{background:var(--panel-bg);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:24px;flex-direction:column;width:min(640px,100%);min-height:calc(100vh - 20px);padding:28px 24px;animation:.48s ease-out rise-up;display:flex;box-shadow:0 20px 60px #00000040}.eval-report-title{text-align:center;color:#e2e8f0;margin-bottom:16px;font-size:1.2rem;font-weight:700}.eval-level-badge{text-align:center;color:#a855f7;letter-spacing:2px;width:100%;margin-bottom:20px;font-size:2rem;font-weight:800;display:inline-block}.eval-bar-row{align-items:center;gap:10px;margin-bottom:14px;display:flex}.eval-bar-label{color:#94a3b8;flex-shrink:0;width:80px;font-size:.82rem;font-weight:600}.eval-bar-track{background:#ffffff14;border-radius:6px;flex:1;height:10px;overflow:hidden}.eval-bar-fill{background:linear-gradient(90deg,#a855f7,#6366f1);border-radius:6px;height:100%;transition:width .4s}.eval-bar-value{text-align:right;color:#c084fc;flex-shrink:0;width:40px;font-size:.82rem;font-weight:700}.eval-comments{background:#ffffff0a;border:1px solid #ffffff14;border-radius:12px;margin-top:18px;padding:14px}.eval-comments-label{color:#94a3b8;margin-bottom:8px;font-size:.82rem;font-weight:600}.eval-comments-text{color:#e2e8f0;white-space:pre-wrap;font-size:.9rem;line-height:1.6}.eval-close-btn{color:#c084fc;cursor:pointer;background:#a855f733;border:none;border-radius:12px;width:100%;margin-top:auto;padding:12px;font-size:1rem;font-weight:600;transition:background .18s}.eval-close-btn:active{background:#a855f759}.schedule-btn{color:#38bdf8;border-color:#38bdf859}.replay-btn{color:#fbbf24;border-color:#fbbf2459}.schedule-month-nav{justify-content:center;align-items:center;gap:16px;margin-bottom:16px;display:flex}.schedule-nav-btn{color:#e2e8f0;cursor:pointer;background:#ffffff14;border:1px solid #ffffff1f;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.3rem;transition:background .15s;display:flex}.schedule-nav-btn:active{background:#ffffff29}.schedule-month-label{color:#e2e8f0;text-align:center;min-width:100px;font-size:1rem;font-weight:700}.schedule-calendar{margin-bottom:18px;overflow:hidden}.schedule-weekdays{grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px;display:grid}.schedule-weekday{text-align:center;color:#94a3b8;padding:4px 0;font-size:.72rem;font-weight:600}.schedule-days{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.schedule-day{background:#ffffff08;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;height:38px;padding:3px 2px;display:flex;overflow:hidden}.schedule-day.empty{background:0 0}.schedule-day.today .schedule-day-num{background:var(--brand);color:#02231f;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:flex}.schedule-day.has-lesson{background:#38bdf814;border:1px solid #38bdf833}.schedule-day-num{color:#cbd5e1;font-size:.75rem;font-weight:600}.schedule-lesson-dot{color:#38bdf8;background:#38bdf826;border-radius:4px;padding:1px 4px;font-size:.58rem;font-weight:600;line-height:1.3}.schedule-lesson-dot.dot-finished{color:#4ade80;background:#4ade8026}.schedule-lesson-dot.dot-other{color:#f87171;background:#f8717126}.schedule-dot-row{justify-content:center;gap:3px;display:flex}.schedule-status-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.schedule-status-dot.dot-pending{background:#38bdf8}.schedule-status-dot.dot-finished{background:#4ade80}.schedule-status-dot.dot-other{background:#f87171}.schedule-list{flex-direction:column;gap:8px;max-height:180px;margin-top:4px;margin-bottom:18px;display:flex;overflow-y:auto}.schedule-list-item{background:#ffffff0d;border:1px solid #ffffff14;border-radius:10px;align-items:center;gap:10px;padding:10px 12px;display:flex}.schedule-list-date{color:#e2e8f0;min-width:58px;font-size:.82rem;font-weight:600}.schedule-list-time{color:#38bdf8;font-size:.82rem;font-weight:700}.schedule-list-teacher{color:#94a3b8;margin-left:auto;font-size:.78rem}.schedule-list-status{border-radius:6px;padding:2px 6px;font-size:.7rem;font-weight:600}.schedule-list-status.status-pending{color:#38bdf8;background:#38bdf81f}.schedule-list-status.status-finished{color:#4ade80;background:#4ade801f}.schedule-list-status.status-other{color:#f87171;background:#f871711f}.schedule-empty{text-align:center;color:#64748b;padding:16px;font-size:.88rem}.replay-body{justify-content:center}.replay-info{flex-direction:column;align-items:center;gap:8px;padding:32px 16px;display:flex}.replay-icon{opacity:.8;font-size:3rem}.replay-date{color:#e2e8f0;font-size:1rem;font-weight:600}.replay-teacher{color:#94a3b8;font-size:.85rem}@media(min-width:768px){.eval-report-overlay{align-items:center;padding:28px}.eval-report-card{width:min(760px,92%);min-height:min(760px,86vh);padding:24px}}
