:root{color:#202124;background:#f5f5f4;font-family:Segoe UI,Microsoft YaHei,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{color:#fff;cursor:pointer;background:#2f3133;border:1px solid #2f3133;padding:7px 12px}button:disabled{opacity:.55;cursor:wait}button.ghost,aside button,.tabs button{color:#2f3133;background:#fff;border-color:#d8d8d5}button.on,aside button.on,.tabs button.on{color:#fff;background:#2f3133}button.danger{color:#9f1d1d}button.danger.ghost{background:#fff7f7;border-color:#e0b4b4}.header-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.token-panel{margin:12px 0;padding:12px 14px}.token-row{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.token-row input{background:#fff;border:1px solid #d8d8d5;flex:1;min-width:220px;padding:7px 10px}.token-status{color:#5c5d60;margin-top:8px;font-size:12px}.login-page{background:radial-gradient(1200px 500px at 10% -10%,#e8ecef 0%,#0000 55%),radial-gradient(900px 400px at 100% 0,#ece8e2 0%,#0000 50%),#f5f5f4;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:#fff;border:1px solid #e4e4e1;width:min(420px,100%);padding:28px 28px 22px;box-shadow:0 12px 40px #2021240f}.login-brand{letter-spacing:.08em;color:#6c6d70;margin-bottom:8px;font-size:12px;font-weight:700}.login-card h1{margin:0 0 8px;font-size:22px}.login-sub{color:#5c5d60;margin:0 0 18px;font-size:13px;line-height:1.5}.login-form{gap:12px;display:grid}.login-form label{color:#5c5d60;gap:6px;font-size:12px;display:grid}.login-form input{color:#202124;background:#fff;border:1px solid #d8d8d5;padding:9px 11px}.login-form button[type=submit]{width:100%;margin-top:4px;padding:10px 12px}.login-error{color:#9f1d1d;margin:0;font-size:13px}.login-advanced{color:#5c5d60;margin-top:18px;font-size:12px}.login-advanced summary{cursor:pointer;-webkit-user-select:none;user-select:none}.login-hint{margin:8px 0;line-height:1.45}.login-warn{color:#6a5410;background:#fff8e8;border:1px solid #f0e0b8;margin:14px 0 0;padding:10px 12px;font-size:12px;line-height:1.45}.login-warn code,.login-hint code,.login-sub code{font-size:11px}.toolbar-actions{flex-wrap:wrap;gap:6px;display:flex}.list-pager{border-top:1px solid #ececea;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px 14px;display:flex}.list-pager-meta{color:#5c5d60;font-size:12px}.list-pager-actions{gap:6px;display:flex}.ops-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;padding:14px;display:grid}.ops-card{background:#fafaf9;border:1px solid #e7e7e4;padding:12px 14px}.ops-card h3{margin-bottom:8px}.ops-result{margin:0 14px 14px}.ops-pre{min-height:0;max-height:280px;margin:8px 0 0;padding:10px;font-size:12px}.kv{gap:6px;margin:0;display:grid}.kv>div{grid-template-columns:96px 1fr;gap:8px;font-size:12px;display:grid}.kv dt{color:#6c6d70}.kv dd{color:#2f3133;margin:0}.empty-inline{color:#85868a;margin-top:8px;font-size:12px}.audit-filters{border-bottom:1px solid #e7e7e4;flex-wrap:wrap;align-items:end;gap:10px;padding:12px 14px;display:flex}.audit-filters label{flex:1;min-width:180px}.pager{border-top:1px solid #e7e7e4;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-size:12px;display:flex}.actions{flex-wrap:wrap;gap:6px;display:flex}.recycle-tabs{margin-top:0;padding:0 14px}.recycle-tabs button{align-items:center;gap:6px;display:inline-flex}.count-chip{color:#5c5d60;text-align:center;background:#f3f3f0;border:1px solid #d0d0cc;border-radius:999px;min-width:18px;padding:0 6px;font-size:11px;line-height:16px;display:inline-block}button.on .count-chip{color:#fff;background:#3a3b3d;border-color:#5a5b5e}.badge.passed{color:#1f6d3a;background:#eef7f1;border-color:#aacbb5}.badge.failed{color:#9f1d1d;background:#fbf0f0;border-color:#d9b2b2}.shell{min-height:100vh;display:flex}aside{background:#eeeeeb;border-right:1px solid #dededb;width:176px;padding:18px 12px}.brand{letter-spacing:.12em;margin:0 0 18px 4px;font-weight:700}aside button{text-align:left;width:100%;margin-bottom:8px;display:block}.nav-group{gap:6px;display:grid}.nav-parent{justify-content:space-between;align-items:center;font-weight:600;display:flex}.nav-children{border-left:1px solid #d2d2ce;gap:6px;padding-left:10px;display:grid}.nav-children button{margin-bottom:0}.chevron{color:#777}main{flex:1;min-width:0;padding:18px 22px}header,.toolbar,.editor-head{justify-content:space-between;align-items:center;gap:16px;display:flex}h1,h2,h3,p{margin:0}h1{font-size:20px}h2{font-size:16px}h3{font-size:15px}p{color:#6c6d70;margin-top:4px;font-size:12px}.tabs{gap:6px;margin:18px 0 12px;display:flex}.notice{color:#4f5052;background:#f7f7f5;border:1px solid #d8d8d5;margin:12px 0;padding:9px 12px;font-size:12px}.notice.error{color:#9f1d1d;background:#fbf0f0;border-color:#d9b2b2}.learn-api-error strong{margin-bottom:6px;display:block}.learn-api-error p{color:inherit;margin:6px 0;line-height:1.5}.learn-api-hint{opacity:.95;font-size:12px}.learn-api-error code{background:#9f1d1d14;padding:1px 4px;font-family:ui-monospace,Consolas,monospace;font-size:11px}.learn-api-error button{margin-top:10px}.panel{background:#fff;border:1px solid #dededb}.toolbar{border-bottom:1px solid #e7e7e4;padding:12px 14px}table{border-collapse:collapse;width:100%}th,td{text-align:left;vertical-align:top;border-bottom:1px solid #ececea;padding:9px 10px}th{color:#5c5d60;background:#fafaf9;font-size:12px;font-weight:600}.strong{font-weight:600}.mono{font-family:Consolas,monospace;font-size:12px}.truncate{text-overflow:ellipsis;white-space:nowrap;max-width:360px;overflow:hidden}.actions{white-space:nowrap}.actions button{margin-right:6px;padding:5px 8px}.badge{color:#5d5e61;background:#f5f5f3;border:1px solid #cfd0cc;padding:0 7px;font-size:11px;line-height:18px;display:inline-block}.badge.active{color:#1f6d3a;background:#eef7f1;border-color:#aacbb5}.badge.inactive{color:#777;background:#efefec}.ad-thumb{object-fit:cover;background:#f5f5f3;border:1px solid #d8d8d5;width:86px;height:46px}.ad-preview{object-fit:contain;background:#f5f5f3;border:1px solid #d8d8d5;width:100%;max-height:160px}.empty{text-align:center;color:#85868a;padding:28px}.drawer{background:#fff;border-left:1px solid #d8d8d5;width:360px;padding:16px}.editor{gap:12px;display:grid}.editor .hint{color:#777;margin:-4px 0 0;font-size:12px;line-height:1.4}.batch-body{grid-template-columns:1fr 320px;gap:12px;padding:14px;display:grid}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.level-preview{padding:14px;overflow:auto}.level-preview textarea{min-width:220px;margin-top:8px}.level-question-cell{min-width:260px}.level-images{grid-template-columns:1fr 1fr;gap:10px;min-width:360px;display:grid}.level-image-box,.level-audio-box{gap:8px;display:grid}.level-image-box img{object-fit:cover;border:1px solid #d8d8d5;width:100%;height:120px}.gen-state{color:#6c6d70;min-height:16px;font-size:12px}.image-prompt-used{color:#5f6064;font-size:12px}.image-prompt-used summary{cursor:pointer}.image-prompt-used p{white-space:pre-wrap;word-break:break-word;margin:6px 0 0}.save-progress{background:#f7f7f5;border:1px solid #d8d8d5;gap:8px;margin-bottom:12px;padding:10px 12px;display:grid}.save-progress-head{color:#3f4042;align-items:center;gap:8px;font-size:12px;display:flex}.progress-track{background:#e5e5e1;border:1px solid #d4d4cf;height:6px;overflow:hidden}.progress-track span{background:#2f3133;height:100%;transition:width .2s;display:block}.muted{opacity:.68}.level-audio-box audio{width:100%}label{color:#555;gap:5px;font-size:12px;display:grid}input,select,textarea{color:#202124;background:#fff;border:1px solid #d5d5d1;width:100%;padding:7px 8px}textarea{resize:vertical}.invoke{padding-bottom:14px}.invoke-grid{grid-template-columns:1fr 1fr;gap:12px;padding:14px;display:grid}pre{background:#f3f3f0;border:1px solid #dededb;min-height:160px;margin:0 14px;padding:12px;overflow:auto}.preview-row{grid-template-columns:220px 1fr;gap:12px;padding:0 14px 14px;display:grid}.preview-row pre{margin:0}.image-placeholder{text-align:center;color:#636467;background:repeating-linear-gradient(45deg,#f8f8f6,#f8f8f6 8px,#eeeeeb 8px 16px);border:1px dashed #bcbdb8;place-content:center;gap:6px;min-height:180px;display:grid}.image-placeholder span{letter-spacing:.12em;font-size:11px}.image-placeholder strong{color:#2f3133;font-size:14px}.image-placeholder.ready{background:#fff;border-style:solid;place-content:stretch}.image-placeholder.failed{background:#fbf0f0;border-color:#d9b2b2}.image-placeholder img,.image-placeholder video{object-fit:cover;width:100%;height:100%;min-height:180px;display:block}.learn-stage{gap:16px;display:grid}.learn-hero{background:radial-gradient(circle at 88% 18%,#ffcf5673,#0000 26%),linear-gradient(135deg,#fffaf0 0%,#f6efe0 52%,#e9f2ec 100%);border:1px solid #26282a;justify-content:space-between;gap:18px;padding:24px;display:flex;box-shadow:8px 8px #2f3133}.learn-hero h2{letter-spacing:-.04em;margin-top:4px;font-size:30px}.eyebrow{color:#9f5b1d;letter-spacing:.16em;text-transform:uppercase;font-size:11px;font-weight:800}.learn-stats-col{flex-direction:column;align-items:stretch;gap:8px;min-width:112px;display:flex}.learn-stats{text-align:center;background:#ffffffb8;border:1px solid #2f3133;place-content:center;min-width:112px;padding:10px 8px;display:grid}.learn-stats.sub strong{font-size:22px}.learn-stats strong{font-size:34px;line-height:1}.learn-stats span{color:#6c6d70;font-size:12px}.learn-reset{padding:6px 8px;font-size:12px}.learn-empty{color:#6c6d70;text-align:center;background:#fff;border:1px dashed #b9bab5;padding:32px}.level-picker{gap:10px;padding:8px 0 12px;display:flex;overflow-x:auto}.level-chip{text-align:left;color:#2f3133;background:#fff;border:1px solid #d8d8d5;gap:4px;min-width:148px;display:grid}.level-chip small{color:#76777a}.level-chip.on{color:#fff;background:#2f3133;transform:translateY(-2px)}.level-chip.on small{color:#e5e5e1}.level-chip.done{border-color:#9ec6a9}.practice-card{background:linear-gradient(90deg,#2f31330d 1px,#0000 1px) 0 0/18px 18px,linear-gradient(#fff,#fff);border:1px solid #dededb;gap:16px;padding:20px;display:grid}.practice-topbar{justify-content:space-between;align-items:center;gap:16px;display:flex}.practice-topbar h3{margin-top:4px;font-size:22px}.progress-ring{background:conic-gradient(#2f3133 var(--progress), #e9e9e5 0);color:#2f3133;border-radius:50%;place-items:center;width:78px;height:78px;display:grid}.progress-ring strong{background:#fff;border-radius:50%;place-items:center;width:58px;height:58px;display:grid}.learn-progress{margin-top:-8px}.listen-panel{background:#fffaf0;border:1px solid #e2dfd6;grid-template-columns:150px 1fr;align-items:center;gap:12px;padding:14px;display:grid}.listen-panel p{color:#4f5052;grid-column:1/-1;font-size:14px}.listen-panel audio{width:100%}.play-button{min-height:44px;font-weight:700}.choice-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.choice-card{color:#202124;text-align:left;background:#fff;border:2px solid #d8d8d5;gap:10px;padding:10px;transition:transform .16s,box-shadow .16s,border-color .16s;display:grid}.choice-card:hover{transform:translateY(-3px);box-shadow:0 10px 22px #2021241f}.choice-card img,.choice-placeholder{object-fit:cover;background:#f3f3f0;border:1px solid #ececea;width:100%;height:240px}.choice-placeholder{color:#85868a;place-items:center;display:grid}.mobile-play-dock{display:none}.choice-card span{font-size:16px;font-weight:700}.choice-card.correct{background:#eefaf2;border-color:#1f8f4d}.choice-card.wrong{background:#fff0ee;border-color:#c94134;animation:.18s linear 2 shake}.choice-card.picked{box-shadow:0 0 0 3px #2f31331f}.learn-ad-slot{contain:layout paint;box-sizing:border-box;color:#a0a19d;letter-spacing:.18em;background:repeating-linear-gradient(45deg,#f7f7f5,#f7f7f5 8px,#eeeeeb 8px 16px);border:1px dashed #d4d4cf;place-items:center;width:100%;min-width:0;font-size:12px;text-decoration:none;display:none;position:relative;overflow:hidden}.learn-ad-slot img{object-fit:cover;width:100%;max-width:none;height:100%;max-height:none;display:block;position:absolute;inset:0}.learn-ad-top{height:96px;min-height:96px;max-height:96px}.learn-ad-bottom{height:150px;min-height:150px;max-height:150px}.pass-dialog-backdrop{z-index:20;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#2021246b;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.pass-dialog{text-align:center;background:radial-gradient(circle at 20% 12%,#ffcf568c,#0000 24%),linear-gradient(145deg,#fffdf5,#edf7f0);border:2px solid #2f3133;justify-items:center;gap:14px;width:min(420px,100%);padding:30px 26px 24px;animation:.18s ease-out pop-in;display:grid;box-shadow:10px 10px #2f3133}.pass-dialog h3{letter-spacing:-.04em;font-size:28px}.pass-dialog p{color:#4f5052;font-size:14px}.pass-dialog button{min-width:132px;font-weight:800}.pass-burst{color:#2f3133;background:#ffcf56;border:2px solid #2f3133;border-radius:50%;place-items:center;width:58px;height:58px;font-size:30px;display:grid}@keyframes pop-in{0%{opacity:0;transform:translateY(12px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes shake{0%,to{transform:translate(0)}50%{transform:translate(5px)}}@media (width<=900px){.shell{display:block}aside,.drawer{width:auto}aside button{width:auto;display:inline-block}.drawer{border-top:1px solid #d8d8d5;border-left:0}.choice-grid,.listen-panel{grid-template-columns:1fr}.learn-hero{box-shadow:none}}@media (width<=640px){:root{font-size:13px}body{background:#fff}.learn-app{padding:0}.learn-app-head,.learn-hero,.learn-progress,.listen-panel audio,.listen-panel p,.choice-card span{display:none}.learn-stage{background:#f3f3f0;gap:6px;min-height:100dvh;padding-bottom:118px}.level-picker{z-index:15;padding:8px 104px calc(8px + env(safe-area-inset-bottom)) 10px;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;background:#fffffff0;border-top:1px solid #d7d7d3;border-bottom:0;gap:8px;position:fixed;bottom:0;left:0;right:0;overflow-x:auto;box-shadow:0 -8px 24px #2021241f}.level-picker::-webkit-scrollbar{display:none}.level-chip{border-radius:12px;flex:none;min-width:92px;min-height:52px;padding:6px 8px;font-size:12px}.level-chip small{white-space:nowrap;margin-top:auto;font-size:10px}.level-chip.mock{opacity:.5;border-style:dashed}.level-chip.mock small:after{content:" · mock"}.practice-card{background:#fff;border:0;gap:7px;padding:8px}.learn-ad-top{order:-2;display:grid;height:72px!important;min-height:72px!important;max-height:72px!important}.learn-ad-bottom{display:grid;height:110px!important;min-height:110px!important;max-height:110px!important}.practice-topbar{align-items:center;min-height:34px}.practice-topbar .eyebrow{display:none}.practice-topbar h3{font-size:16px}.progress-ring{width:44px;height:44px}.progress-ring strong{width:34px;height:34px;font-size:11px}.listen-panel{display:none}.mobile-play-dock{right:10px;bottom:calc(8px + env(safe-area-inset-bottom));z-index:17;width:86px;display:block;position:fixed}.mobile-play-dock .play-button{text-align:center;border-radius:14px;width:100%;min-height:52px;padding:6px 8px;font-weight:800;box-shadow:0 5px 14px #20212438}.learn-ad-slot img{object-fit:cover!important;width:100%!important;max-width:none!important;height:100%!important;max-height:none!important;position:absolute!important;inset:0!important}.choice-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.choice-card{border-width:2px;gap:0;padding:4px}.choice-card:hover{box-shadow:none;transform:none}.choice-card img,.choice-placeholder{object-position:center top;object-fit:cover!important;height:220px!important;min-height:0!important;max-height:220px!important}.pass-dialog-backdrop{padding:14px}.pass-dialog{gap:10px;padding:22px 18px 18px;box-shadow:6px 6px #2f3133}.pass-dialog h3{font-size:22px}.pass-burst{width:46px;height:46px;font-size:24px}}
