.studio{position:fixed;inset:0;z-index:100;background:var(--color-canvas);display:none;overflow:auto}.studio.open{display:block;animation:studioIn .28s ease}@keyframes studioIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.studio-head{height:72px;padding:0 max(28px,calc((100vw - 1180px)/2));display:grid;grid-template-columns:280px 1fr auto;align-items:center;gap:25px;background:color-mix(in srgb,var(--color-white) 94%,transparent);border-bottom:1px solid var(--color-line);position:sticky;top:0;z-index:4;backdrop-filter:blur(18px)}.studio-brand{display:flex;align-items:center;gap:10px}.studio-brand b,.studio-brand small{display:block}.studio-brand small{font-size:var(--font-xs);color:var(--color-muted)}.mini-seal{width:34px;height:34px;border:1px solid var(--color-brand);color:var(--color-brand);display:grid;place-items:center;font:700 var(--font-base) var(--font-heading)}.studio-progress{height:3px;background:var(--color-surface-3);border-radius:var(--radius-md);overflow:hidden}.studio-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--color-brand),var(--color-gold-soft));transition:var(--transition-base)}.studio-tools{display:flex;gap:4px}.studio-body{width:min(1120px,calc(100% - 40px));margin:0 auto;padding:48px 0 70px}
/* 课程弹层专用header：进度条移到header下方 */
.lesson-head{position:sticky;top:0;z-index:4}.lesson-progress-bar{position:sticky;top:72px;z-index:3;height:3px;background:var(--color-surface-3);border-radius:0}.lesson-progress-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--color-brand),var(--color-gold-soft));transition:width var(--transition-base)}
/* 步骤圆点导航 */
.lesson-step-dots{display:flex;align-items:center;justify-content:center;gap:0}.step-dot{width:28px;height:28px;border-radius:var(--radius-round);border:2px solid var(--color-line);background:var(--color-surface);color:var(--color-muted);font:600 var(--font-xs) var(--font-heading);cursor:default;display:grid;place-items:center;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast);padding:0;flex-shrink:0}.step-dot:disabled{cursor:not-allowed;opacity:.5}.step-dot.done{border-color:var(--color-success);background:var(--color-success);color:var(--color-white)}.step-dot.active{border-color:var(--color-brand);background:var(--color-brand);color:var(--color-white);box-shadow:0 0 0 4px color-mix(in srgb,var(--color-brand) 15%,transparent);transform:scale(1.1)}.step-dot:not(:disabled):not(.active):hover{border-color:var(--color-brand-soft);background:var(--color-brand-soft);color:var(--color-brand);cursor:pointer}.dot-num{font-size:var(--font-xs);line-height:1}.dot-line{flex:1;height:2px;background:var(--color-line);min-width:12px;max-width:40px}.step-dot.done+.dot-line{background:var(--color-success)}
.certificate-body{width:min(1900px,calc(100% - 12px));margin:0 auto;padding:10px 0 30px}
.certificate-body .certificate-toolbar{margin-bottom:8px}
.certificate-body .certificate-canvas{padding:8px}
.certificate-body .certificate-canvas svg{max-height:calc(100vh - 130px)}.diag-shell{max-width:930px;margin:auto}.step-kicker{display:flex;align-items:center;justify-content:space-between;color:var(--color-muted);font-size:var(--font-xs)}.step-kicker b{color:var(--color-brand);letter-spacing:.16em}.diag-shell h1,.lesson-screen h1{font:600 clamp(34px,5vw,58px)/1.12 var(--font-heading);margin:16px 0}.diag-shell>.lead,.lesson-screen>.lead{font-size:var(--font-xl);color:var(--color-muted);max-width:780px}.instruction{display:flex;align-items:center;gap:10px;background:var(--color-surface-3);border-radius:var(--radius-md);padding:11px 14px;margin:22px 0;color:var(--color-muted);font-size:var(--font-md)}.instruction b{width:25px;height:25px;border-radius:var(--radius-round);background:var(--color-brand);color:var(--color-white);display:grid;place-items:center}.inquiry-card{background:var(--color-surface);border:1px solid var(--color-line-strong);border-radius:var(--radius-lg);padding:22px;margin:18px 0 24px;display:flex;justify-content:space-between;align-items:center;box-shadow:var(--shadow-card)}.inquiry-card span{font-size:var(--font-xs);letter-spacing:.17em;color:var(--color-muted)}.inquiry-card strong{font:600 23px var(--font-heading)}.inquiry-card small{color:var(--color-error)}.select-tags{display:flex;flex-wrap:wrap;gap:10px}.select-tag{border:1px solid var(--color-line);background:var(--color-surface);border-radius:var(--radius-pill);padding:11px 16px;cursor:pointer;color:var(--color-muted);transition:var(--transition-fast);position:relative}.select-tag:before{content:"+";display:inline-grid;place-items:center;width:18px;height:18px;border-radius:var(--radius-round);background:var(--color-surface-3);margin-right:7px;font-size:var(--font-sm)}.select-tag.selected{background:var(--color-brand-soft);border-color:var(--color-brand);color:var(--color-brand)}.select-tag.selected:before{content:"";background:var(--color-brand) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 12 10 16 18 8'/%3E%3C/svg%3E") center/55% no-repeat}
.diag-actions,.lesson-actions{display:flex;align-items:center;justify-content:space-between;margin-top:32px;padding-top:20px;border-top:1px solid var(--color-line);gap:12px}.diag-actions small{color:var(--color-muted)}.feedback-panel{margin-top:20px;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:20px}.feedback-panel h3{margin:0 0 8px;font:600 var(--font-2xl) var(--font-heading)}.feedback-panel p{color:var(--color-muted);margin:0}.answer-line{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.answer-chip{border-radius:var(--radius-pill);padding:5px 9px;font-size:var(--font-xs)}.answer-chip.ok{background:var(--color-success-soft);color:var(--color-success)}.answer-chip.miss{background:var(--color-error-soft);color:var(--color-error)}.choice-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:25px}.choice-card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:20px;text-align:left;cursor:pointer;min-height:125px;transition:var(--transition-fast)}.choice-card:hover{border-color:var(--color-brand);transform:translateY(-2px)}.choice-card.selected{border-color:var(--color-brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-brand) 8%,transparent)}.choice-card span{font-size:9px;color:var(--color-subtle);letter-spacing:.12em}.choice-card b{display:block;font:600 var(--font-xl) var(--font-heading);margin-top:12px}.claim-card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:28px;margin-top:25px}.claim-card blockquote{font:600 25px/1.55 var(--font-heading);margin:0}.evidence-buttons{display:flex;gap:10px;margin-top:20px}.evidence-buttons button{flex:1;border:1px solid var(--color-line-strong);background:var(--color-surface-2);border-radius:var(--radius-md);padding:13px;cursor:pointer}.evidence-buttons button.selected{border-color:var(--color-brand);background:var(--color-brand-soft);color:var(--color-brand)}.report-card{background:linear-gradient(150deg,var(--color-surface),var(--color-surface-3));border:1px solid var(--color-line);border-radius:28px;padding:34px;box-shadow:var(--shadow-card)}.report-top{display:flex;justify-content:space-between;gap:20px}.report-score{font:600 74px var(--font-heading);color:var(--color-brand)}.report-score small{font:var(--font-sm) var(--font-body);color:var(--color-muted)}.report-card h1{font-size:44px}.report-bars{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:25px 0}.report-bar{background:color-mix(in srgb,var(--color-white) 55%,transparent);border:1px solid var(--color-line);border-radius:13px;padding:14px}.report-bar header{display:flex;justify-content:space-between;font-size:var(--font-sm)}.report-bar i{display:block;height:6px;background:var(--color-surface-3);border-radius:var(--radius-pill);margin-top:9px;overflow:hidden}.report-bar i b{display:block;height:100%;background:linear-gradient(90deg,var(--color-brand),var(--color-gold-soft))}.lesson-body{width:min(1200px,calc(100% - 40px))}.lesson-screen{max-width:1050px;margin:auto}.lesson-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:28px}.scenario-card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-xl);padding:26px}.scenario-card.quote{background:linear-gradient(145deg,var(--color-surface),var(--color-surface));color:var(--color-body);border:1px solid var(--color-warning-soft);border-left:6px solid var(--color-warning);position:relative}.scenario-card.quote p{font:600 25px/1.55 var(--font-heading)}.decision-options{display:grid;gap:10px}.decision-option{background:var(--color-surface);border:1px solid var(--color-line);border-radius:15px;padding:16px;text-align:left;cursor:pointer}.decision-option b{display:block}.decision-option small{color:var(--color-muted)}.decision-option.correct{border-color:var(--color-success);background:var(--color-success-soft)}.decision-option.wrong{border-color:var(--color-error);background:var(--color-error-soft)}.definition-lab{display:grid;grid-template-columns:380px 1fr;gap:34px;align-items:center;margin-top:30px}.definition-art{height:350px;background:linear-gradient(145deg,var(--color-surface-3),var(--color-surface));border:1px solid var(--color-line);border-radius:28px;display:grid;place-items:center;position:relative;overflow:hidden}.definition-art:before,.definition-art:after{content:"";position:absolute;border-radius:var(--radius-round);border:1px solid color-mix(in srgb,var(--color-brand) 24%,transparent)}.definition-art:before{width:280px;height:280px}.definition-art:after{width:220px;height:320px;transform:rotate(35deg)}.definition-core{width:180px;height:180px;border-radius:var(--radius-round);display:grid;place-content:center;text-align:center;z-index:2;color:var(--color-white);background:radial-gradient(circle at 32% 26%,var(--color-white),var(--color-subtle) 27%,var(--color-muted) 52%,var(--color-ink) 73%,var(--color-line) 75%,var(--color-muted));box-shadow:inset -15px -20px 30px color-mix(in srgb,var(--color-black) 35%,transparent),0 24px 40px color-mix(in srgb,var(--color-black) 24%,transparent)}.definition-core b{font:600 var(--font-2xl) var(--font-heading)}.definition-core small{font-size:var(--font-xs)}.lab-control{margin:21px 0}.lab-control header{display:flex;justify-content:space-between}.lab-control input{width:100%;accent-color:var(--color-brand)}.verdict{border-left:3px solid var(--color-brand);padding:12px 15px;background:var(--color-surface-3);border-radius:0 12px 12px 0}.family-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0}.family-tabs button{border:1px solid var(--color-line);background:var(--color-surface);border-radius:var(--radius-pill);padding:9px 14px;cursor:pointer}.family-tabs button.active{background:var(--color-brand);color:var(--color-white);border-color:var(--color-brand)}.family-panel{display:grid;grid-template-columns:240px 1fr;gap:28px;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-xl);padding:28px;align-items:start}.family-3d-wrap{width:100%;max-width:220px;aspect-ratio:1;display:grid;place-items:center;background:linear-gradient(145deg,var(--color-surface-2),var(--color-surface-3));border-radius:var(--radius-lg);border:1px solid var(--color-line);box-shadow:var(--shadow-card);margin:0 auto}.crystal-svg{width:90%;height:90%;filter:drop-shadow(0 2px 8px color-mix(in srgb,var(--color-ink) 8%,transparent))}.family-mnemonic{margin:14px 0 16px;padding:14px 16px;background:linear-gradient(135deg,color-mix(in srgb,var(--color-gold) 8%,var(--color-surface)),color-mix(in srgb,var(--color-gold) 5%,var(--color-surface-2)));border:1px solid color-mix(in srgb,var(--color-gold) 25%,transparent);border-radius:var(--radius-md)}.mnemonic-label{display:inline-block;font-size:11px;font-weight:700;color:var(--color-warning-dark,#92400e);background:var(--color-gold);padding:2px 8px;border-radius:4px;margin-bottom:10px;letter-spacing:1px}.mnemonic-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 12px}.mnemonic-item{font-size:14px;font-weight:600;color:var(--color-warning-dark,#78350f);position:relative;padding-left:16px}.mnemonic-item::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:6px;height:6px;background:var(--color-warning);border-radius:50%}.family-mark{width:170px;height:170px;border-radius:var(--radius-round);display:grid;place-items:center;text-align:center;background:radial-gradient(circle,var(--color-white),var(--color-line) 52%,var(--color-subtle));color:var(--color-ink);font:600 var(--font-2xl) var(--font-heading)}.family-facts{margin-top:16px}.family-facts h4{font:600 13px var(--font-body);color:var(--color-ink);letter-spacing:.04em;text-transform:uppercase;margin:0 0 8px}.family-facts ul{list-style:none;padding:0;margin:0;display:grid;gap:6px}.family-facts li{font-size:13px;color:var(--color-muted);line-height:1.5;padding-left:18px;position:relative}.family-facts li:before{content:"";position:absolute;left:0;top:8px;width:6px;height:6px;border-radius:50%;background:var(--color-brand)}.family-grades{margin-top:12px}.family-grades h4{font:600 13px var(--font-body);color:var(--color-ink);letter-spacing:.04em;text-transform:uppercase;margin:0 0 6px}.family-grades p{font-size:13px;color:var(--color-brand);font-weight:600}.family-ref{display:block;margin-top:12px;color:var(--color-subtle);font-size:11px}.family-panel h2{font:600 var(--font-3xl) var(--font-heading)}.family-panel p{color:var(--color-muted)}.evidence-progress{display:flex;align-items:center;gap:12px;margin:18px 0 4px}.evidence-progress-bar{flex:1;height:6px;background:var(--color-surface-3);border-radius:var(--radius-pill);overflow:hidden}.evidence-progress-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--color-success),var(--color-brand));border-radius:var(--radius-pill);transition:width var(--transition-base)}.evidence-progress span{font-size:var(--font-xs);color:var(--color-muted);white-space:nowrap}.evidence-stack{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-top:14px}.evidence-card{background:var(--color-surface);border:1px solid var(--color-line);border-top:4px solid var(--color-success);border-radius:var(--radius-lg);padding:20px;cursor:pointer;min-height:230px}.evidence-card.synthesis-card{border-top-color:var(--color-warning)}.evidence-card.boundary-card{border-top-color:var(--color-error)}.evidence-card span{font-size:9px;letter-spacing:.13em;color:var(--color-muted)}.evidence-card h3{font:600 var(--font-2xl) var(--font-heading)}.evidence-card p{color:var(--color-muted);font-size:var(--font-md)}.evidence-card .more{display:none;border-top:1px solid var(--color-line);padding-top:12px;margin-top:12px;font-size:var(--font-sm)}.evidence-card.open .more{display:block}.teachback{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-xl);padding:26px;margin-top:24px}.teachback textarea{width:100%;min-height:170px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-2);padding:16px;resize:vertical}.coach-result{margin-top:15px;padding:16px;background:var(--color-surface-3);border-radius:var(--radius-md)}.coach-result h3{margin-top:0}.rubric-line{display:flex;align-items:center;gap:8px;font-size:var(--font-md);margin:6px 0}.rubric-line.hit{color:var(--color-success)}.rubric-line.miss{color:var(--color-error)}.completion-card{text-align:center;background:linear-gradient(145deg,var(--color-surface),var(--color-surface-3));border:1px solid var(--color-line);border-radius:28px;padding:48px;box-shadow:var(--shadow-card);position:relative;overflow:hidden}.completion-card.completion-celebrate{animation:completionPop .5s cubic-bezier(.34,1.56,.64,1)}.completion-seal{width:84px;height:84px;margin:auto;border:1px solid var(--color-brand);border-radius:var(--radius-round);display:grid;place-items:center;color:var(--color-brand);font:700 var(--font-3xl) var(--font-heading);animation:sealPop .6s cubic-bezier(.34,1.56,.64,1) .15s both}.completion-seal-big{width:96px;height:96px;font-size:var(--font-4xl);border-width:3px;box-shadow:0 0 0 6px color-mix(in srgb,var(--color-brand) 8%,transparent)}.completion-sub{color:var(--color-muted);font-size:var(--font-lg);margin:4px 0 16px}.quiz-badge{display:inline-flex;align-items:center;gap:6px;background:var(--color-brand-soft);color:var(--color-brand);padding:6px 16px;border-radius:var(--radius-pill);font-size:var(--font-sm);font-weight:600;margin:8px 0}.quiz-badge b{font-size:var(--font-xl);font-family:var(--font-heading)}.checkin-stats{display:flex;justify-content:center;gap:12px;margin:16px 0;flex-wrap:wrap}.stat-chip{background:var(--color-surface-2);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:12px 20px;text-align:center;min-width:100px}.stat-chip span{display:block;font-size:var(--font-xs);color:var(--color-muted);letter-spacing:.08em}.stat-chip b{display:block;font:700 var(--font-2xl) var(--font-heading);color:var(--color-brand);margin-top:2px}.learning-tip{background:linear-gradient(135deg,color-mix(in srgb,var(--color-gold) 8%,var(--color-surface)),color-mix(in srgb,var(--color-gold) 4%,var(--color-surface-2)));border:1px solid color-mix(in srgb,var(--color-gold) 25%,transparent);border-radius:var(--radius-lg);padding:14px 20px;margin:20px auto;text-align:left;max-width:520px;font-size:var(--font-md);color:var(--color-body);line-height:1.6}.learning-tip b{color:var(--color-warning-dark,#92400e)}.confetti-container{position:absolute;top:0;left:0;right:0;height:100%;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:-10px;animation:confettiFall linear forwards}@keyframes confettiFall{0%{transform:translateY(0) rotate(0);opacity:1}100%{transform:translateY(400px) rotate(720deg);opacity:0}}@keyframes completionPop{from{opacity:0;transform:scale(.92) translateY(20px)}to{opacity:1;transform:none}}@keyframes sealPop{from{opacity:0;transform:scale(.3) rotate(-15deg)}to{opacity:1;transform:scale(1) rotate(0)}}.notes-drawer,.detail-drawer{position:fixed;z-index:125;top:0;right:0;bottom:0;width:min(430px,92vw);background:var(--color-surface);border-left:1px solid var(--color-line);box-shadow:-20px 0 60px color-mix(in srgb,var(--color-ink) 14%,transparent);padding:26px;transform:translateX(105%);transition:var(--transition-base);overflow:auto}.notes-drawer.open,.detail-drawer.open{transform:none}.notes-drawer header,.detail-drawer header{display:flex;justify-content:space-between;align-items:start}.notes-drawer h2,.detail-drawer h2{font:600 27px var(--font-heading);margin:5px 0}.notes-drawer>p{font-size:var(--font-sm);color:var(--color-muted)}.notes-drawer textarea{width:100%;height:calc(100vh - 270px);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-2);padding:15px;resize:none;min-height:120px}.notes-foot{display:flex;justify-content:space-between;align-items:center;margin-top:10px}.drawer-backdrop{position:fixed;z-index:120;inset:0;background:color-mix(in srgb,var(--color-ink) 18%,transparent);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:var(--transition-fast)}.drawer-backdrop.open{opacity:1;pointer-events:auto}.detail-drawer section{border-top:1px solid var(--color-line);padding:18px 0}.detail-drawer h3{font:600 var(--font-xl) var(--font-heading)}.detail-drawer p,.detail-drawer li{color:var(--color-muted);font-size:var(--font-md)}.source-role-list{display:grid;gap:8px}.source-role-list div{background:var(--color-surface-2);border-radius:var(--radius-md);padding:11px}.record-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px}.record-summary div{background:var(--color-surface-2);border-radius:var(--radius-md);padding:14px}.record-summary b{display:block;font:600 var(--font-3xl) var(--font-heading);color:var(--color-brand)}.record-list{margin-top:18px}.record-item{display:flex;justify-content:space-between;border-bottom:1px solid var(--color-line);padding:12px 0}.record-item small{color:var(--color-muted)}.purchase-sheet{position:fixed;inset:0;background:color-mix(in srgb,var(--color-ink) 28%,transparent);z-index:130;display:none;align-items:flex-end;justify-content:center;backdrop-filter:blur(8px)}.purchase-sheet.open{display:flex}.sheet-panel{width:min(620px,calc(100% - 24px));background:var(--color-surface);border-radius:26px 26px 0 0;padding:32px;position:relative;box-shadow:0 -20px 60px color-mix(in srgb,var(--color-black) 18%,transparent)}.sheet-close{position:absolute;right:20px;top:18px;border:0;background:transparent;font-size:var(--font-2xl);cursor:pointer}.sheet-panel pre{white-space:pre-wrap;background:var(--color-surface-3);border-radius:var(--radius-md);padding:15px}.sheet-actions{display:flex;gap:10px}.toast{position:fixed;z-index:200;left:50%;bottom:24px;translate:-50% 20px;background:var(--color-ink);color:var(--color-white);padding:11px 16px;border-radius:var(--radius-pill);font-size:var(--font-sm);opacity:0;pointer-events:none;transition:var(--transition-fast)}.toast.show{opacity:1;translate:-50% 0}.notes-foot .ghost-btn.danger{color:var(--color-error);border-color:var(--color-error)}.notes-foot .ghost-btn.danger:hover{background:var(--color-error-soft)}
.studio.pdf-studio{display:none;flex-direction:column}.studio.pdf-studio.open{display:flex!important;flex-direction:column}.pdf-studio .studio-head{flex-shrink:0}.pdf-body{flex:1;position:relative;overflow:hidden;background:var(--color-surface-3);display:flex;align-items:center;justify-content:center;padding:16px;min-height:0}.pdf-body iframe{width:100%;height:100%;border:none;background:var(--color-white);box-shadow:var(--shadow-md)}.pdf-watermark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-30deg);font-size:var(--font-4xl);font-weight:700;color:color-mix(in srgb,var(--color-brand) 4%,transparent);white-space:nowrap;pointer-events:none;z-index:1;letter-spacing:4px}
.pdf-paywall{position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--color-surface-2) 85%,transparent),color-mix(in srgb,var(--color-surface-2) 95%,transparent));backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:20;padding:24px}.pdf-paywall .paywall-card{background:var(--color-white);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:36px 32px;max-width:420px;width:100%;text-align:center;box-shadow:var(--shadow-xl)}.pdf-paywall .paywall-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto 16px;border-radius:var(--radius-round);background:var(--color-brand-soft);color:var(--color-brand)}.pdf-paywall h3{font:600 var(--font-2xl) var(--font-heading);color:var(--color-ink);margin:0 0 10px}.pdf-paywall p{font-size:var(--font-base);color:var(--color-muted);line-height:1.6;margin:0 0 20px}.pdf-paywall .paywall-benefits{list-style:none;padding:0;margin:0 0 24px;text-align:left}.pdf-paywall .paywall-benefits li{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:var(--font-md);color:var(--color-ink);border-bottom:1px solid var(--color-line)}.pdf-paywall .paywall-benefits li:last-child{border-bottom:0}.pdf-paywall .paywall-benefits li .check-mark{display:inline-block;width:16px;height:16px;flex-shrink:0;position:relative}.pdf-paywall .paywall-benefits li .check-mark:before{content:"";position:absolute;left:3px;top:7px;width:4px;height:8px;border-right:2px solid var(--color-success);border-bottom:2px solid var(--color-success);transform:rotate(45deg)}.pdf-paywall .primary-btn{width:100%;justify-content:center;margin-bottom:10px}.pdf-paywall .paywall-note{font-size:var(--font-sm);color:var(--color-subtle)}.pdf-footer{display:flex;justify-content:space-between;align-items:center;padding:8px 20px;background:var(--color-surface-2);border-top:1px solid var(--color-line);font-size:var(--font-xs);color:var(--color-muted);flex-shrink:0}.pdf-loading{position:absolute;top:0;left:0;right:0;bottom:0;background:color-mix(in srgb,var(--color-surface-2) 95%,transparent);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10;gap:12px}.pdf-loading-spinner{width:36px;height:36px;border:3px solid var(--color-surface-3);border-top-color:var(--color-brand);border-radius:var(--radius-round);animation:pdfSpin 1s linear infinite}@keyframes pdfSpin{to{transform:rotate(360deg)}}.pdf-loading p{margin:0;font-size:var(--font-md);color:var(--color-muted);font-weight:500}.pdf-loading small{font-size:var(--font-xs);color:var(--color-muted)}
@media(max-width:1050px) and (min-width:769px){.source-gallery{grid-template-columns:repeat(3,1fr)}}@media(max-width:1050px){.record-btn{display:none}.main-nav{display:none}.mobile-menu-btn{display:block}.topbar{padding:0 18px}.brand{min-width:0;flex:1}.hero-grid,.dashboard-grid,.course-stage,.definition-lab,.evidence-method{grid-template-columns:1fr}.home-aux-grid{grid-template-columns:1fr;gap:16px;padding:20px 0 0}.module-intro{position:relative;top:0;min-height:230px}.source-gallery{grid-template-columns:1fr 1fr}.course-list{grid-template-columns:1fr}.pricing-grid{grid-template-columns:1fr}.price-card.featured{transform:none}.studio-head{grid-template-columns:230px 1fr auto;padding:0 18px}.lesson-grid,.evidence-stack{grid-template-columns:1fr}.family-panel{grid-template-columns:1fr}.family-3d-wrap{max-width:200px;margin:0 auto 12px}.family-mark{width:140px;height:140px}.report-bars{grid-template-columns:1fr}.method-steps{grid-template-columns:1fr}.outcome-strip{grid-template-columns:1fr}}
@media(max-width:680px){.app-shell{width:min(100% - 28px,1280px);padding-top:24px}.topbar{height:68px}.brand b{font-size:var(--font-sm)}.outline-btn{display:none}.hero-grid{min-height:auto;gap:20px}.hero-copy h1{font-size:var(--font-4xl)}.hero-copy>p{font-size:var(--font-lg)}.hero-actions{display:grid}.hero-proof{gap:14px;flex-wrap:wrap}.home-aux-grid{grid-template-columns:1fr;gap:16px;padding:20px 0 0}.testimonials-bar{margin-top:32px}.testimonials-inner{grid-template-columns:1fr;gap:14px}.metal-orbit{width:280px;height:280px;right:2px}.metal-disc{width:145px;height:145px}.orbit-a{width:210px;height:210px}.orbit-b{width:250px;height:175px}.orbit-c{width:235px;height:270px}.dashboard-grid{grid-template-columns:1fr}.view-head{display:block}.curriculum-tools{justify-items:stretch;margin-top:18px}.search-box{min-width:0}.segmented{overflow:auto}.source-gallery{grid-template-columns:1fr}.source-principle{grid-template-columns:1fr}.studio-head{grid-template-columns:1fr auto;height:70px}.studio-progress{position:absolute;left:0;right:0;bottom:0}.studio-brand small{display:none}.studio-tools{grid-column:2}.studio-body{width:min(100% - 26px,1120px);padding-top:26px}.diag-shell h1,.lesson-screen h1{font-size:var(--font-3xl)}.inquiry-card{display:block}.inquiry-card strong,.inquiry-card small{display:block;margin-top:7px}.choice-grid{grid-template-columns:1fr}.evidence-buttons{display:grid}.report-top{display:block}.report-card h1{font-size:35px}.report-score{font-size:var(--font-hero)}.definition-art{height:290px}.family-panel{padding:19px}.source-book{min-height:260px}.art-note{max-width:190px}.sheet-actions,.completion-actions{display:grid}.compare-row{grid-template-columns:1.4fr repeat(3,.55fr);padding:12px 10px;font-size:var(--font-xs)}.lesson-actions{align-items:stretch}.lesson-actions .primary-btn,.lesson-actions .ghost-btn{flex:1}.method-steps{grid-template-columns:1fr}.evidence-method{padding:20px}.outcome-strip{padding:22px}.record-summary{grid-template-columns:1fr}.invoice-grid{grid-template-columns:1fr}.lesson-head{grid-template-columns:auto 1fr auto;gap:8px;padding:0 12px}.lesson-step-dots{gap:0;transform:scale(.85)}.step-dot{width:24px;height:24px}.lesson-progress-bar{top:70px}.lesson-body{width:calc(100% - 24px);padding-top:20px;padding-bottom:100px}.evidence-progress{margin:12px 0 4px}.evidence-stack{gap:10px}.evidence-card{min-height:auto;padding:16px}.completion-card{padding:28px 20px;border-radius:20px}.completion-seal-big{width:72px;height:72px;font-size:var(--font-2xl)}.stat-chip{padding:10px 14px;min-width:80px}.learning-tip{padding:12px 14px;font-size:var(--font-sm)}.lesson-actions{padding-bottom:env(safe-area-inset-bottom,12px)}}
@media(max-width:420px){.brand small{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}.orbit{animation:none}}


/* ── PDF 暗色阅读模式 ── */
.pdf-studio.pdf-dark{background:var(--color-ink)}
.pdf-studio.pdf-dark .studio-head{background:color-mix(in srgb,var(--color-ink) 94%,transparent);border-bottom-color:var(--color-line-strong)}
.pdf-studio.pdf-dark .studio-brand small{color:var(--color-muted)}
.pdf-studio.pdf-dark .mini-seal{border-color:var(--color-muted);color:var(--color-muted)}
.pdf-studio.pdf-dark .studio-progress{background:var(--color-line-strong)}
.pdf-studio.pdf-dark .icon-btn{color:var(--color-muted)}
.pdf-studio.pdf-dark .icon-btn:hover{color:var(--color-surface-2);background:var(--color-line-strong)}
.pdf-studio.pdf-dark .pdf-body{background:var(--color-canvas)}
.pdf-studio.pdf-dark .pdf-body iframe{box-shadow:var(--shadow-lg);filter:invert(.92) hue-rotate(180deg)}
.pdf-studio.pdf-dark .pdf-watermark{color:color-mix(in srgb,var(--color-white) 2%,transparent)}
.pdf-studio.pdf-dark .pdf-footer{background:var(--color-ink);border-top-color:var(--color-line-strong);color:var(--color-muted)}
.pdf-studio.pdf-dark .pdf-loading{background:color-mix(in srgb,var(--color-black) 95%,transparent)}
.pdf-studio.pdf-dark .pdf-loading-spinner{border-color:var(--color-line-strong);border-top-color:var(--color-muted)}
.pdf-studio.pdf-dark .pdf-loading p{color:var(--color-muted)}
.pdf-studio.pdf-dark .pdf-loading small{color:var(--color-muted)}
.pdf-studio.pdf-dark .pdf-paywall{background:linear-gradient(180deg,color-mix(in srgb,var(--color-black) 90%,transparent),color-mix(in srgb,var(--color-black) 97%,transparent))}
.pdf-studio.pdf-dark .pdf-paywall .paywall-card{background:var(--color-surface);border-color:var(--color-line-strong);box-shadow:var(--shadow-card)}
.pdf-studio.pdf-dark .pdf-paywall h3{color:var(--color-surface-2)}
.pdf-studio.pdf-dark .pdf-paywall p{color:var(--color-muted)}
.pdf-studio.pdf-dark .pdf-paywall .paywall-benefits li{color:var(--color-subtle);border-bottom-color:var(--color-line-strong)}

/* ── 专业主题 Toast 颜色修复 ── */
body.theme-coursera .toast{background:var(--color-brand-active);color:var(--color-white)}

/* ── 键盘快捷键提示 ── */
.keyboard-hint{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:14px;font-size:var(--font-xs);color:var(--color-subtle)}.keyboard-hint kbd{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 5px;border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface-3);font:600 var(--font-xs) var(--font-heading);color:var(--color-muted);box-shadow:0 1px 0 var(--color-line);font-family:inherit}
.quiz-keyboard-hint{margin-top:16px}

/* ── 关闭确认弹窗 ── */
.lesson-close-confirm{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity var(--transition-fast)}.lesson-close-confirm.show{opacity:1;pointer-events:auto}.lesson-close-confirm .confirm-mask{position:absolute;inset:0;background:color-mix(in srgb,var(--color-ink) 45%,transparent);backdrop-filter:blur(4px)}.lesson-close-confirm .confirm-dialog{position:relative;background:var(--color-white);border-radius:var(--radius-xl);padding:32px;max-width:380px;width:calc(100% - 32px);box-shadow:var(--shadow-modal);transform:translateY(12px) scale(.96);transition:transform .25s cubic-bezier(.34,1.56,.64,1)}.lesson-close-confirm.show .confirm-dialog{transform:translateY(0) scale(1)}.lesson-close-confirm h3{font:600 var(--font-xl) var(--font-heading);margin:0 0 8px;color:var(--color-ink)}.lesson-close-confirm p{font-size:var(--font-md);color:var(--color-muted);margin:0 0 22px;line-height:1.6}.lesson-close-confirm .confirm-actions{display:flex;gap:10px;justify-content:flex-end}

/* ── 测验选项字母标识 ── */
.exam-option{display:flex;align-items:center;gap:14px;padding:16px 20px;background:var(--color-surface-2);border:1.5px solid var(--color-line);border-radius:12px;cursor:pointer;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast)}.exam-option .option-letter{width:32px;height:32px;border-radius:var(--radius-round);border:2px solid var(--color-line);background:var(--color-surface);display:grid;place-items:center;font:700 var(--font-sm) var(--font-heading);color:var(--color-muted);flex-shrink:0;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast)}.exam-option .option-text{flex:1;text-align:left;font-size:var(--font-md)}.exam-option:hover{border-color:var(--color-brand);background:var(--color-brand-soft)}.exam-option:hover .option-letter{border-color:var(--color-brand);background:var(--color-brand);color:var(--color-white)}.exam-option.selected{border-color:var(--color-brand);background:var(--color-brand-soft)}.exam-option.selected .option-letter{border-color:var(--color-brand);background:var(--color-brand);color:var(--color-white)}.exam-option.option-picked{transform:scale(.98);opacity:.7}.exam-option.correct{border-color:var(--color-success);background:var(--color-success-soft)}.exam-option.correct .option-letter{border-color:var(--color-success);background:var(--color-success);color:var(--color-white)}.exam-option.wrong{border-color:var(--color-error);background:var(--color-error-soft)}.exam-option.wrong .option-letter{border-color:var(--color-error);background:var(--color-error);color:var(--color-white)}

/* ── 决策选项字母标识（与测验选项一致） ── */
.decision-option{display:flex;align-items:center;gap:14px;padding:16px 20px;background:var(--color-surface-2);border:1.5px solid var(--color-line);border-radius:12px;cursor:pointer;position:relative;overflow:hidden;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast)}.decision-option b{flex:1;display:block}.decision-option small{display:block}.decision-option .option-letter{width:32px;height:32px;border-radius:var(--radius-round);border:2px solid var(--color-line);background:var(--color-surface);display:grid;place-items:center;font:700 var(--font-sm) var(--font-heading);color:var(--color-muted);flex-shrink:0;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast)}.decision-option:hover{border-color:var(--color-brand);background:var(--color-brand-soft)}.decision-option:hover .option-letter{border-color:var(--color-brand);background:var(--color-brand);color:var(--color-white)}.decision-option.correct{border-color:var(--color-success);background:var(--color-success-soft)}.decision-option.correct .option-letter{border-color:var(--color-success);background:var(--color-success);color:var(--color-white)}.decision-option.wrong{border-color:var(--color-error);background:var(--color-error-soft)}.decision-option.wrong .option-letter{border-color:var(--color-error);background:var(--color-error);color:var(--color-white)}.decision-option.option-picked{transform:scale(.98);opacity:.7}

/* ── Lesson 1 测验选项字母标识 ── */
.quiz-options{display:flex;flex-direction:column;gap:14px;margin-top:20px}
.quiz-option{display:flex;align-items:center;gap:14px;padding:18px 22px;background:var(--color-surface-2);border:1.5px solid var(--color-line);border-radius:12px;cursor:pointer;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast);text-align:left;font-size:var(--font-base);color:var(--color-ink);font-family:inherit;width:100%}.quiz-option .quiz-letter{width:32px;height:32px;border-radius:var(--radius-round);border:2px solid var(--color-line);background:var(--color-surface);display:grid;place-items:center;font:700 var(--font-sm) var(--font-heading);color:var(--color-muted);flex-shrink:0;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast)}.quiz-option .option-text{flex:1;text-align:left;font-size:var(--font-md)}.quiz-option:hover:not(:disabled){border-color:var(--color-brand);background:var(--color-brand-soft);transform:translateX(4px)}.quiz-option:disabled{cursor:default}.quiz-option:hover:not(:disabled) .quiz-letter{border-color:var(--color-brand);background:var(--color-brand);color:var(--color-white)}.quiz-option.selected{border-color:var(--color-brand);background:var(--color-brand-soft)}.quiz-option.selected .quiz-letter{border-color:var(--color-brand);background:var(--color-brand);color:var(--color-white)}.quiz-option.correct{border-color:var(--color-success);background:var(--color-success-soft);color:var(--color-success-dark,#166534)}.quiz-option.correct .quiz-letter{border-color:var(--color-success);background:var(--color-success);color:var(--color-white)}.quiz-option.wrong{border-color:var(--color-error);background:var(--color-error-soft);color:var(--color-error)}.quiz-option.wrong .quiz-letter{border-color:var(--color-error);background:var(--color-error);color:var(--color-white)}.quiz-option.option-picked{transform:scale(.98);opacity:.7}

/* ── 答题反馈动画 ── */
.feedback-animate{animation:feedbackIn .3s cubic-bezier(.34,1.56,.64,1)}@keyframes feedbackIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.coach-animate{animation:coachIn .4s cubic-bezier(.34,1.56,.64,1)}@keyframes coachIn{from{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}

/* ── 选词加摘录（浮动按钮 + 摘录卡）── */
.clip-fab{position:fixed;z-index:400;display:inline-flex;align-items:center;gap:6px;background:var(--color-ink,#1f2937);color:var(--color-white);border:none;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:0 8px 24px color-mix(in srgb,var(--color-ink) 25%,transparent);font-family:inherit;opacity:0;transform:translateY(-4px) scale(.95);transition:opacity var(--transition-fast),transform .2s cubic-bezier(.34,1.56,.64,1),background var(--transition-fast)}
.clip-fab.show{opacity:1;transform:translateY(0) scale(1)}
.clip-fab:hover{background:var(--color-brand,#0056d2);transform:translateY(-1px) scale(1.02)}
.clip-fab svg{flex-shrink:0}
.clip-fab.leaving{opacity:0;transform:translateY(-4px) scale(.95);pointer-events:none}
.clip-quote{margin:8px 0 14px;padding:12px 14px;border-left:3px solid var(--color-brand,#0056d2);background:var(--color-surface-2);border-radius:0 var(--radius-md) var(--radius-md) 0;font-size:14px;line-height:1.7;color:var(--color-ink);max-height:180px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-style:normal}
body.theme-coursera .clip-quote{background:var(--color-surface-2);color:var(--color-ink)}
.clipping-item .clip-source{font-size:11px;color:var(--color-brand);background:var(--color-brand-soft);padding:3px 10px;border-radius:999px;letter-spacing:.04em;font-weight:600}
.clipping-item .clip-my-note{margin-top:10px;padding:8px 12px;background:var(--color-surface-2);border-radius:6px;font-size:13px;line-height:1.65;color:var(--color-ink)}
.clipping-item .clip-my-note b{color:var(--color-brand);margin-right:4px;font-weight:700}
.clipping-item .clip-actions{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:10px;border-top:1px dashed var(--color-line);font-size:12px}
.clipping-item .clip-jump{color:var(--color-brand);text-decoration:none;font-weight:600;cursor:pointer}
.clipping-item .clip-jump:hover{text-decoration:underline}
.clipping-item .clip-delete{background:transparent;border:none;color:var(--color-muted);cursor:pointer;font-size:12px;padding:4px 10px;border-radius:6px;font-family:inherit;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast)}
.clipping-item .clip-delete:hover{background:var(--color-error-soft);color:var(--color-error)}
.clip-count{display:inline-block;min-width:18px;height:18px;line-height:18px;padding:0 6px;background:var(--color-brand);color:var(--color-white);border-radius:9px;font-size:10px;text-align:center;margin-left:4px;font-weight:600;vertical-align:middle}
.clip-count[data-empty="true"]{display:none}

/* ── 完成页动画增强 ── */
.seal-animate{animation:sealPopCustom .5s cubic-bezier(.34,1.56,.64,1) .15s both}@keyframes sealPopCustom{from{transform:scale(0) rotate(-15deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}
.celebrate-title{animation:titleIn .5s ease .3s both}@keyframes titleIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.completion-card.pass .completion-seal{background:var(--color-success);border-color:var(--color-success);color:var(--color-white)}.completion-card.fail .completion-seal{background:var(--color-error);border-color:var(--color-error);color:var(--color-white)}
.quiz-result-score.pass-text b{color:var(--color-success)}
.quiz-badge.badge-pass{background:var(--color-success-soft);color:var(--color-success);border-color:var(--color-success);border:1px solid var(--color-success)}

/* ── 移动端适配补充 ── */
@media(max-width:680px){
  .lesson-close-confirm .confirm-dialog{padding:24px;margin:0 16px}
  .lesson-close-confirm .confirm-actions{flex-direction:column-reverse}
  .lesson-close-confirm .confirm-actions button{width:100%;justify-content:center}
  .exam-option{gap:12px;padding:14px 16px}
  .exam-option .option-letter{width:30px;height:30px;font-size:var(--font-xs)}
  .decision-option{gap:12px;padding:14px 16px}
  .decision-option .option-letter{width:30px;height:30px;font-size:var(--font-xs)}
  .quiz-options{gap:12px}
  .quiz-option{gap:12px;padding:16px 16px}
  .quiz-option .quiz-letter{width:30px;height:30px;font-size:var(--font-xs)}
  .keyboard-hint{display:none}
  .quiz-keyboard-hint{display:none}
}
@media(max-width:420px){
  .evidence-progress{flex-direction:column;align-items:stretch;gap:6px}
  .evidence-progress span{text-align:center}
}

/* ── 测验通过仪式感界面 ── */
.quiz-pass-ceremony{position:relative;text-align:center;padding:20px 0;overflow:hidden}
.ceremony-confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.ceremony-glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);width:400px;height:400px;background:radial-gradient(circle,color-mix(in srgb,var(--color-success) 15%,transparent) 0%,transparent 70%);pointer-events:none;animation:glowPulse 2s ease-in-out infinite}
@keyframes glowPulse{0%,100%{opacity:.6;transform:translate(-50%,-60%) scale(1)}50%{opacity:1;transform:translate(-50%,-60%) scale(1.1)}}
.pass-medal{position:relative;width:120px;height:120px;margin:0 auto 20px;z-index:1}
.medal-ring-outer{position:absolute;inset:0;border-radius:var(--radius-round);background:linear-gradient(135deg,#d4af37,#f4d03f,#aa8c2c,#d4af37);animation:medalSpin 8s linear infinite;box-shadow:0 8px 32px color-mix(in srgb,#d4af37 40%,transparent)}
.medal-ring-inner{position:absolute;inset:6px;border-radius:var(--radius-round);background:linear-gradient(145deg,#22c55e,#16a34a);display:grid;place-items:center}
.medal-check{position:absolute;inset:0;display:grid;place-items:center;animation:checkPop .5s cubic-bezier(.34,1.56,.64,1) .3s both}
@keyframes medalSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes checkPop{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
.medal-sparkle{position:absolute;width:12px;height:12px;background:#fbbf24;border-radius:var(--radius-round);animation:sparkle 1.5s ease-in-out infinite}
.medal-sparkle:before,.medal-sparkle:after{content:"";position:absolute;background:inherit;border-radius:var(--radius-round)}
.medal-sparkle:before{width:100%;height:3px;top:50%;left:0;transform:translateY(-50%)}
.medal-sparkle:after{width:3px;height:100%;top:0;left:50%;transform:translateX(-50%)}
.medal-sparkle-1{top:-5px;right:10px;animation-delay:0s}
.medal-sparkle-2{bottom:10px;left:-5px;animation-delay:.5s}
.medal-sparkle-3{top:20px;left:-10px;animation-delay:1s}
@keyframes sparkle{0%,100%{opacity:0;transform:scale(0)}50%{opacity:1;transform:scale(1)}}
.pass-badge{display:inline-block;padding:6px 20px;background:linear-gradient(90deg,#d4af37,#f4d03f);color:var(--color-white);font-size:11px;font-weight:700;letter-spacing:.2em;border-radius:var(--radius-pill);margin-bottom:12px;animation:badgeIn .5s ease .2s both}
@keyframes badgeIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
.pass-title{font:700 clamp(28px,4vw,42px)/1.1 var(--font-heading);color:var(--color-success);margin:0 0 8px;animation:titleSlide .5s ease .35s both}
.pass-subtitle{font:600 var(--font-xl) var(--font-heading);color:var(--color-ink);margin:0 0 12px;animation:titleSlide .5s ease .45s both}
.pass-desc{font-size:var(--font-md);color:var(--color-muted);line-height:1.7;margin:0 auto 24px;max-width:420px;animation:titleSlide .5s ease .55s both}
@keyframes titleSlide{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.pass-stats{display:flex;align-items:center;justify-content:center;gap:28px;margin-bottom:28px;animation:titleSlide .5s ease .65s both}
.pass-stat{text-align:center}
.pass-stat b{display:block;font:700 var(--font-3xl) var(--font-heading);color:var(--color-brand)}
.pass-stat span{font-size:var(--font-xs);color:var(--color-muted)}
.pass-stat-divider{width:1px;height:40px;background:var(--color-line)}
.quiz-confetti-piece,.final-confetti-piece{position:absolute;top:-10px;animation:confettiFall linear forwards;pointer-events:none}
@keyframes confettiFall{0%{transform:translateY(0) rotate(0deg);opacity:1}100%{transform:translateY(400px) rotate(720deg);opacity:0}}
.ceremony-primary{display:inline-flex;align-items:center;gap:8px;padding:14px 32px;font-size:var(--font-lg);box-shadow:0 4px 20px color-mix(in srgb,var(--color-brand) 30%,transparent)}
.ceremony-primary svg{animation:checkBounce 1s ease infinite}
@keyframes checkBounce{0%,100%{transform:scale(1)}50%{transform:scale(1.2)}}

/* ── 课程完成最终庆祝界面 ── */
.completion-ceremony{position:relative;text-align:center;padding:30px 20px;overflow:hidden;max-width:520px;margin:0 auto}
.ceremony-rays{position:absolute;top:-80px;left:50%;transform:translateX(-50%);width:500px;height:500px;background:conic-gradient(from 0deg,transparent 0deg,color-mix(in srgb,#d4af37 8%,transparent) 10deg,transparent 20deg,color-mix(in srgb,#d4af37 8%,transparent) 30deg,transparent 40deg,color-mix(in srgb,#d4af37 8%,transparent) 50deg,transparent 60deg,color-mix(in srgb,#d4af37 8%,transparent) 70deg,transparent 80deg,color-mix(in srgb,#d4af37 8%,transparent) 90deg,transparent 100deg,color-mix(in srgb,#d4af37 8%,transparent) 110deg,transparent 120deg,color-mix(in srgb,#d4af37 8%,transparent) 130deg,transparent 140deg,color-mix(in srgb,#d4af37 8%,transparent) 150deg,transparent 160deg,color-mix(in srgb,#d4af37 8%,transparent) 170deg,transparent 180deg,color-mix(in srgb,#d4af37 8%,transparent) 190deg,transparent 200deg,color-mix(in srgb,#d4af37 8%,transparent) 210deg,transparent 220deg,color-mix(in srgb,#d4af37 8%,transparent) 230deg,transparent 240deg,color-mix(in srgb,#d4af37 8%,transparent) 250deg,transparent 260deg,color-mix(in srgb,#d4af37 8%,transparent) 270deg,transparent 280deg,color-mix(in srgb,#d4af37 8%,transparent) 290deg,transparent 300deg,color-mix(in srgb,#d4af37 8%,transparent) 310deg,transparent 320deg,color-mix(in srgb,#d4af37 8%,transparent) 330deg,transparent 340deg,color-mix(in srgb,#d4af37 8%,transparent) 350deg,transparent 360deg);animation:raysRotate 20s linear infinite;pointer-events:none;opacity:.6}
@keyframes raysRotate{from{transform:translateX(-50%) rotate(0deg)}to{transform:translateX(-50%) rotate(360deg)}}
.ceremony-glow-big{position:absolute;top:40px;left:50%;transform:translateX(-50%);width:350px;height:350px;background:radial-gradient(circle,color-mix(in srgb,#d4af37 20%,transparent) 0%,color-mix(in srgb,var(--color-brand) 10%,transparent) 40%,transparent 70%);pointer-events:none;animation:bigGlow 3s ease-in-out infinite}
@keyframes bigGlow{0%,100%{opacity:.5;transform:translateX(-50%) scale(1)}50%{opacity:.8;transform:translateX(-50%) scale(1.15)}}
.completion-trophy{position:relative;width:110px;height:110px;margin:0 auto 16px;z-index:1;animation:trophyBounce .6s cubic-bezier(.34,1.56,.64,1) .2s both}
@keyframes trophyBounce{from{transform:translateY(-30px) scale(.5);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
.trophy-cup{width:100%;height:100%;display:grid;place-items:center;filter:drop-shadow(0 6px 20px color-mix(in srgb,#d4af37 50%,transparent))}
.trophy-sparkle{position:absolute;width:16px;height:16px;background:#fff;border-radius:var(--radius-round);animation:trophySparkle 2s ease-in-out infinite}
.trophy-sparkle:before{content:"";position:absolute;width:100%;height:3px;background:inherit;border-radius:2px;top:50%;left:0;transform:translateY(-50%)}
.trophy-sparkle:after{content:"";position:absolute;width:3px;height:100%;background:inherit;border-radius:2px;top:0;left:50%;transform:translateX(-50%)}
.trophy-s1{top:-8px;right:5px;animation-delay:0s}
.trophy-s2{top:10px;right:-12px;animation-delay:.5s}
.trophy-s3{bottom:15px;left:-8px;animation-delay:1s}
.trophy-s4{top:-5px;left:10px;animation-delay:1.5s}
@keyframes trophySparkle{0%,100%{opacity:0;transform:scale(0) rotate(0deg)}50%{opacity:1;transform:scale(1) rotate(180deg)}}
.checkin-ribbon{display:inline-block;padding:8px 28px;background:linear-gradient(90deg,var(--color-success),#16a34a);color:var(--color-white);font-size:13px;font-weight:700;letter-spacing:.1em;border-radius:var(--radius-pill);margin-bottom:12px;box-shadow:0 4px 16px color-mix(in srgb,var(--color-success) 35%,transparent);animation:ribbonSlip .5s ease .4s both}
@keyframes ribbonSlip{from{opacity:0;transform:translateY(-10px) scaleX(.5)}to{opacity:1;transform:translateY(0) scaleX(1)}}
.ceremony-title{font:700 clamp(30px,5vw,48px)/1.1 var(--font-heading);color:var(--color-brand);margin:0 0 6px;animation:ceremonyTitleIn .6s ease .5s both}
.ceremony-subtitle{font:600 var(--font-lg) var(--font-heading);color:var(--color-muted);margin:0 0 16px;animation:ceremonyTitleIn .6s ease .6s both}
@keyframes ceremonyTitleIn{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}
.ceremony-score-badge{display:inline-block;padding:6px 16px;background:var(--color-success-soft);color:var(--color-success);border:1px solid var(--color-success);border-radius:var(--radius-pill);font-size:var(--font-sm);font-weight:600;margin-bottom:20px;animation:ceremonyTitleIn .6s ease .7s both}
.ceremony-score-badge b{font-size:var(--font-lg)}
.ceremony-stats{display:flex;justify-content:center;gap:32px;margin-bottom:20px;animation:ceremonyTitleIn .6s ease .8s both}
.ceremony-stat{text-align:center}
.ceremony-stat b{display:block;font:700 var(--font-3xl) var(--font-heading);color:var(--color-brand);line-height:1}
.ceremony-stat span{font-size:var(--font-xs);color:var(--color-muted);margin-top:4px;display:block}
.ceremony-progress-track{position:relative;height:8px;background:var(--color-surface-3);border-radius:var(--radius-pill);overflow:hidden;margin:0 auto 20px;max-width:320px;animation:ceremonyTitleIn .6s ease .9s both}
.progress-fill-gold{height:100%;background:linear-gradient(90deg,var(--color-brand),#d4af37,var(--color-gold-soft));border-radius:var(--radius-pill);position:relative;transition:width 1s ease}
.progress-fill-gold:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);animation:progressShine 2s ease-in-out infinite}
@keyframes progressShine{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.progress-milestone{position:absolute;top:-2px;width:3px;height:12px;background:var(--color-line-strong);border-radius:2px;transform:translateX(-50%)}
.ceremony-tip{animation:ceremonyTitleIn .6s ease 1s both;background:color-mix(in srgb,var(--color-gold-soft) 30%,var(--color-surface-2));border:1px solid var(--color-gold-soft)}
.ceremony-actions{animation:ceremonyTitleIn .6s ease 1.1s both;gap:12px;justify-content:center}
.ceremony-primary-btn{padding:14px 28px;font-size:var(--font-md);box-shadow:0 4px 20px color-mix(in srgb,var(--color-brand) 30%,transparent);background:linear-gradient(135deg,var(--color-brand),var(--color-brand-active))}

/* ── 题目反馈按钮和弹窗 ── */
.question-wrap{position:relative}
.feedback-btn{position:absolute;top:0;right:0;width:30px;height:30px;border:none;background:transparent;color:var(--color-subtle);cursor:pointer;border-radius:var(--radius-md);display:grid;place-items:center;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast);opacity:.5;font-size:18px;line-height:1}
.feedback-btn:hover{opacity:1;color:var(--color-warning);background:var(--color-warning-soft,#fef3c7)}
.feedback-dialog{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s ease}
.feedback-dialog.show{opacity:1;pointer-events:auto}
.feedback-mask{position:absolute;inset:0;background:color-mix(in srgb,var(--color-ink) 50%,transparent);backdrop-filter:blur(4px)}
.feedback-panel{position:relative;background:var(--color-white);border-radius:var(--radius-xl);width:calc(100% - 32px);max-width:440px;box-shadow:var(--shadow-modal);transform:translateY(16px) scale(.97);transition:transform .25s cubic-bezier(.34,1.56,.64,1)}
.feedback-dialog.show .feedback-panel{transform:translateY(0) scale(1)}
.feedback-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 0}
.feedback-head h3{margin:0;font:600 var(--font-lg) var(--font-heading);color:var(--color-ink)}
.feedback-close{width:32px;height:32px;border:none;background:transparent;font-size:22px;color:var(--color-muted);cursor:pointer;border-radius:var(--radius-md);display:grid;place-items:center;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast)}
.feedback-close:hover{background:var(--color-surface-3);color:var(--color-ink)}
.feedback-body{padding:16px 20px}
.feedback-context{margin:0 0 14px;padding:10px 12px;background:var(--color-surface-2);border-radius:var(--radius-md);font-size:var(--font-sm);color:var(--color-muted);line-height:1.5}
.feedback-label{display:block;font-size:var(--font-sm);font-weight:600;color:var(--color-ink);margin:12px 0 6px}
.feedback-types{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:4px}
.feedback-types label{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--color-line);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-sm);transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast)}
.feedback-types label:hover{border-color:var(--color-brand-soft);background:var(--color-brand-soft)}
.feedback-types label:has(input:checked){border-color:var(--color-brand);background:var(--color-brand-soft);color:var(--color-brand);font-weight:600}
.feedback-types input{accent-color:var(--color-brand)}
#feedbackText,#feedbackContact,.feedback-dialog input[type="text"],.feedback-dialog textarea{width:100%;padding:10px 12px;border:1px solid var(--color-line);border-radius:var(--radius-md);font:inherit;font-size:var(--font-md);background:var(--color-surface);color:var(--color-ink);resize:vertical;box-sizing:border-box}
#feedbackText:focus,#feedbackContact:focus,.feedback-dialog input[type="text"]:focus,.feedback-dialog textarea:focus{outline:none;border-color:var(--color-brand);box-shadow:0 0 0 3px var(--color-brand-soft)}
.suggest-context{background:transparent!important;padding:0!important;color:var(--color-muted)!important;font-size:var(--font-md)!important}
.feedback-foot{display:flex;gap:10px;justify-content:flex-end;padding:0 20px 20px}
.feedback-foot button{min-width:80px}

/* ── PDF免费预览 ── */
.pdf-preview-banner{background:linear-gradient(90deg,var(--color-warning-soft,#fef3c7),color-mix(in srgb,var(--color-gold-soft) 40%,var(--color-surface)));border-bottom:1px solid var(--color-warning,#f59e0b);padding:8px 16px;flex-shrink:0;animation:bannerSlide .3s ease}
@keyframes bannerSlide{from{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}
.preview-banner-inner{display:flex;align-items:center;justify-content:center;gap:12px;font-size:var(--font-sm);color:var(--color-warning-dark,#92400e);max-width:1200px;margin:0 auto}
.preview-tag{background:var(--color-warning,#f59e0b);color:var(--color-white);font-size:11px;font-weight:700;padding:2px 8px;border-radius:var(--radius-pill);letter-spacing:.05em}
.banner-upgrade-btn{margin-left:auto;background:var(--color-warning,#f59e0b);color:var(--color-white);border:none;padding:6px 14px;border-radius:var(--radius-pill);font-size:var(--font-sm);font-weight:600;cursor:pointer;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast);white-space:nowrap}
.banner-upgrade-btn:hover{background:var(--color-warning-dark,#d97706);transform:translateY(-1px)}
.pdf-preview-paywall{background:linear-gradient(180deg,transparent 0%,color-mix(in srgb,var(--color-surface-2) 40%,transparent) 30%,color-mix(in srgb,var(--color-surface-2) 95%,transparent) 60%);align-items:flex-end;padding-bottom:40px}
.pdf-preview-paywall .preview-card{margin-top:auto;animation:previewCardIn .4s cubic-bezier(.34,1.56,.64,1) .5s both}
@keyframes previewCardIn{from{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}

/* 移动端适配 */
@media(max-width:600px){
  .pass-medal{width:100px;height:100px}
  .pass-stats{gap:20px}
  .pass-stat b{font-size:var(--font-2xl)}
  .completion-trophy{width:90px;height:90px}
  .ceremony-stats{gap:20px}
  .ceremony-stat b{font-size:var(--font-2xl)}
  .ceremony-actions{flex-direction:column-reverse}
  .ceremony-actions button{width:100%;justify-content:center}
  .pdf-page-nav{display:none}
  .pdf-canvas-container{padding:8px}
}

/* ── PDF.js Canvas 渲染器样式 ── */
.pdf-reader-head{position:relative}
.pdf-page-nav{display:flex;align-items:center;gap:8px;color:var(--color-muted);font-size:var(--font-sm)}
.pdf-page-nav .icon-btn{width:32px;height:32px;padding:0;font-size:var(--font-xl);display:grid;place-items:center}
#pdfZoomLevel{font-size:var(--font-xs);color:var(--color-muted);min-width:38px;text-align:center}
.pdf-body{overflow:auto!important;display:block!important;align-items:stretch!important;justify-content:flex-start!important;padding:0!important}
.pdf-canvas-container{width:100%;max-width:900px;margin:0 auto;padding:20px;display:flex;flex-direction:column;gap:16px}
.pdf-page-wrapper{background:var(--color-white);box-shadow:var(--shadow-md);border-radius:var(--radius-sm);overflow:hidden;position:relative;display:inline-block;margin:0 auto}
.pdf-page-canvas{display:block;max-width:100%}
.pdf-page-label{text-align:center;padding:8px;font-size:var(--font-xs);color:var(--color-muted);background:var(--color-surface-2);border-top:1px solid var(--color-line)}
.pdf-upgrade-hint{padding:20px}
.pdf-studio.pdf-dark .pdf-body{background:#1a1a1a}
.pdf-studio.pdf-dark .pdf-page-wrapper{box-shadow:0 4px 20px color-mix(in srgb,var(--color-ink) 50%,transparent)}
.pdf-studio.pdf-dark .pdf-page-canvas{filter:invert(.92) hue-rotate(180deg)}
.pdf-studio.pdf-dark .pdf-page-label{background:#2d2d2d;color:#999;border-top-color:#3d3d3d}

/* PDF加载进度条 */
.pdf-loading-content{display:flex;flex-direction:column;align-items:center;gap:12px}
.pdf-progress-wrap{width:240px;height:6px;background:var(--color-surface-3);border-radius:var(--radius-pill);overflow:hidden}
.pdf-progress-bar{height:100%;background:linear-gradient(90deg,var(--color-brand),var(--color-gold-soft));border-radius:var(--radius-pill);transition:width .2s ease}
#pdfLoadingText{margin:0;font-size:var(--font-md);color:var(--color-ink)}
#pdfProgressText{font-size:var(--font-xs);color:var(--color-muted);min-width:40px}

/* 书籍卡片锁定状态 */
.source-book.locked-book{opacity:.75}
.source-book.locked-book::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,color-mix(in srgb,var(--color-ink) 50%,transparent));z-index:1}
.source-book .book-lock{position:absolute;top:12px;right:12px;background:color-mix(in srgb,var(--color-ink) 60%,transparent);color:var(--color-white);border-radius:var(--radius-pill);padding:4px 10px;font-size:var(--font-xs);z-index:2;display:flex;align-items:center;gap:4px;backdrop-filter:blur(4px)}
.source-book .book-lock svg{width:12px;height:12px}
.source-book .book-tag-access{position:absolute;top:12px;right:12px;background:var(--color-success);color:var(--color-white);border-radius:var(--radius-pill);padding:3px 8px;font-size:10px;font-weight:600;z-index:2}

/* KB Tab计数 */
.kb-tabs button .kb-count{display:inline-block;margin-left:4px;font-size:11px;opacity:.7;font-weight:400}

/* ── 新定价页面布局（个人+企业两行，共4卡） ── */
.pricing-grid{display:block;overflow:visible}
.pricing-section-title{display:flex;align-items:baseline;gap:12px;max-width:1100px;margin:0 auto 16px;padding:0 16px}
.pricing-section-title span{font:700 var(--font-xl) var(--font-heading);color:var(--color-ink)}
.pricing-section-title small{font-size:var(--font-sm);color:var(--color-muted)}
.pricing-row{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;max-width:1100px;margin:0 auto;padding:24px 16px 0;overflow:visible}
.pricing-row.personal-row{margin-bottom:0}
.price-card{position:relative;display:flex;flex-direction:column;padding:28px 24px;border-radius:var(--radius-lg);background:var(--color-surface);border:1px solid var(--color-line);transition:transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);margin-top:24px;overflow:visible}
.price-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.price-card-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.card-tag{display:inline-block;padding:3px 10px;border-radius:var(--radius-pill);font-size:var(--font-xs);font-weight:600;background:var(--color-brand-soft);color:var(--color-brand)}
.price-card h3{margin:0;font:700 var(--font-2xl) var(--font-heading);color:var(--color-ink)}
.price-card .price{font:800 var(--font-hero) var(--font-heading);color:var(--color-ink);margin:12px 0 4px;line-height:1}
.price-card .price small{font-size:var(--font-lg);font-weight:500;color:var(--color-muted)}
.price-card .price-desc{font-size:var(--font-sm);color:var(--color-muted);margin:0 0 16px;line-height:1.5}
.price-card ul{list-style:none;padding:0;margin:0 0 20px;flex:1}
.price-card ul li{padding:7px 0;font-size:var(--font-sm);color:var(--color-ink);display:flex;align-items:baseline;gap:8px;border-bottom:1px solid var(--color-line)}
.price-card ul li:last-child{border-bottom:0}
.price-card ul li::before{content:"";display:inline-block;width:5px;height:5px;border-radius:var(--radius-round);background:var(--color-brand);flex-shrink:0;margin-top:6px}
.price-card ul li b{color:var(--color-brand);font-weight:700}
.price-card.featured{border-color:var(--color-brand);background:linear-gradient(145deg,color-mix(in srgb,var(--color-brand-soft) 8%,var(--color-surface)),var(--color-surface));box-shadow:0 8px 32px color-mix(in srgb,var(--color-brand) 15%,transparent)}
.price-card.featured .price-desc{color:var(--color-muted)}
.price-card.featured ul li{color:var(--color-ink)}
.price-card.featured ul li::before{background:var(--color-brand)}
.price-card.featured .price small{color:var(--color-muted)}
.price-card.enterprise-card{border-color:color-mix(in srgb,var(--color-ink) 15%,var(--color-line));background:linear-gradient(145deg,color-mix(in srgb,var(--color-surface-3) 30%,var(--color-surface)),var(--color-surface))}
.price-card.featured-enterprise{border-color:var(--color-brand);background:linear-gradient(145deg,color-mix(in srgb,var(--color-brand-soft) 8%,var(--color-surface)),var(--color-surface))}
.price-card.featured-enterprise .price-desc{color:var(--color-muted)}
.price-card.featured-enterprise ul li{color:var(--color-ink)}
.pricing-row.enterprise-row{margin-top:0}
.recommend-badge{position:absolute;top:-1px;left:50%;transform:translate(-50%,-50%);background:linear-gradient(135deg,var(--color-gold),#f59e0b);color:#422006;font-size:var(--font-xs);font-weight:700;padding:7px 20px;border-radius:var(--radius-pill);white-space:nowrap;box-shadow:0 4px 14px rgba(245,158,11,.35);z-index:2;letter-spacing:.5px}
.recommend-badge.enterprise-badge{background:var(--color-brand-gradient);color:var(--color-white);box-shadow:0 4px 12px color-mix(in srgb,var(--color-brand) 25%,transparent)}
.price-card button{margin-top:auto;width:100%;justify-content:center}

@media(max-width:768px){
  .pricing-row{grid-template-columns:1fr;gap:18px;padding:28px 14px 24px;overflow:visible}
  .price-card{padding:24px 18px 20px;margin-top:28px;overflow:visible}
  .price-card .price{font-size:var(--font-3xl)}
  .price-card h3{font-size:var(--font-xl)}
  .recommend-badge{font-size:12px;padding:6px 16px;top:-2px}
  .pricing-section-title{padding:0 14px}
  .plan-compare{padding:0 14px;margin:20px auto 0;overflow-x:auto}
  .plan-compare-table{min-width:520px}
  .study-report-section{padding:0 14px 24px}
  .study-report-section .report-card{padding:20px 18px;border-radius:var(--radius-lg)}
  .study-report-section .report-head{flex-direction:column;gap:10px;align-items:flex-start}
  .study-report-section .report-actions{width:100%}
  .study-report-section .report-actions button{flex:1}
}

/* ── Hero信任条 ── */
.hero-trust{margin:20px 0 0}
.trust-row{font-size:var(--font-xs);color:var(--color-muted);display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.trust-dot{display:inline-block;width:6px;height:6px;border-radius:var(--radius-round);background:var(--color-success);flex-shrink:0}
.trust-sep{color:var(--color-line);margin:0 2px}
.trust-row b{color:var(--color-brand);font-weight:700}

/* ── 学员口碑条 ── */
.testimonials-bar{max-width:1100px;margin:56px auto 0;padding:0 16px;overflow:hidden}
.testimonials-inner{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:0 0 4px}
.testi-item{position:relative;padding:18px 18px 16px 22px;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);transition:transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast)}
.testi-item:hover{border-color:var(--color-brand-soft);box-shadow:var(--shadow-sm)}
.testi-quote{position:absolute;top:8px;left:12px;font:800 40px/1 Georgia,serif;color:var(--color-brand-soft)}
.testi-item p{margin:0 0 8px;font-size:var(--font-sm);color:var(--color-ink);line-height:1.6;font-style:italic}
.testi-item b{font-size:var(--font-xs);color:var(--color-muted);font-weight:600}

/* ── 套餐对比表 ── */
.plan-compare{max-width:1100px;margin:28px auto 0;padding:0 16px}
.plan-compare h3{font:700 var(--font-lg) var(--font-heading);color:var(--color-ink);margin:0 0 14px;text-align:center}
.plan-compare-table{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);overflow:hidden}
.plan-compare-table .compare-row{display:grid;grid-template-columns:2fr repeat(4,1fr);padding:11px 16px;border-bottom:1px solid var(--color-line);font-size:var(--font-sm);align-items:center}
.plan-compare-table .compare-row:last-child{border-bottom:0}
.plan-compare-table .compare-row.head{background:var(--color-surface-3);font-weight:700;color:var(--color-ink)}
.plan-compare-table .compare-row.head span{color:var(--color-muted);font-weight:600;font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.05em}
.plan-compare-table .compare-row.head b{text-align:center;font-size:var(--font-sm)}
.plan-compare-table .compare-row span{color:var(--color-ink)}
.plan-compare-table .compare-row b{text-align:center;color:var(--color-muted);font-weight:500}
.plan-compare-table .compare-row b.recommend-col{color:var(--color-brand);font-weight:700;background:color-mix(in srgb,var(--color-brand-soft) 20%,transparent);margin:-11px -8px;padding:11px 8px;border-radius:0}
.plan-compare-table .compare-row.price-row{background:color-mix(in srgb,var(--color-brand-soft) 8%,var(--color-surface));font-weight:700}
.plan-compare-table .compare-row.price-row b{font-weight:800;font-family:var(--font-heading);font-size:var(--font-base);color:var(--color-ink)}
.plan-compare-table .compare-row.price-row b.recommend-col{color:var(--color-brand);font-size:var(--font-lg)}

/* ── ROI价值主张条 ── */
.value-roi{max-width:1100px;margin:24px auto 0;padding:0 16px}
.roi-inner{display:flex;align-items:center;justify-content:center;gap:20px;padding:28px 24px;background:linear-gradient(135deg,color-mix(in srgb,var(--color-brand-soft) 15%,var(--color-surface)),var(--color-surface));border:1px solid color-mix(in srgb,var(--color-brand) 20%,var(--color-line));border-radius:var(--radius-lg)}
.roi-item{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;flex:1}
.roi-num{font:800 clamp(28px,4vw,42px) var(--font-heading);color:var(--color-ink);line-height:1}
.roi-num small{font-size:var(--font-sm);font-weight:600;color:var(--color-muted);margin-left:2px}
.roi-num.highlight{color:var(--color-brand);font-size:clamp(32px,5vw,48px)}
.roi-text b{display:block;font-size:var(--font-md);font-weight:700;color:var(--color-ink)}
.roi-text span{font-size:var(--font-xs);color:var(--color-muted);display:block;margin-top:2px}
.roi-arrow{font-size:var(--font-2xl);color:var(--color-brand-soft);font-weight:300;flex-shrink:0}
.roi-note{text-align:center;margin:14px 0 0;font-size:var(--font-xs);color:var(--color-muted);letter-spacing:.02em}

@media(max-width:768px){
  .testimonials-bar{margin-top:36px}
  .testimonials-inner{grid-template-columns:1fr}
  .plan-compare-table .compare-row{grid-template-columns:1.5fr repeat(4,1fr);padding:9px 10px;font-size:var(--font-xs)}
  .plan-compare-table .compare-row.head b{font-size:var(--font-xs)}
  .roi-inner{flex-direction:column;gap:14px;padding:20px}
  .roi-arrow{transform:rotate(90deg)}
}

/* ── 底部悬浮CTA（移动端） ── */
.floating-cta-bar{position:fixed;bottom:0;left:0;right:0;z-index:90;background:var(--color-white);border-top:1px solid var(--color-line);padding:10px 16px calc(10px + env(safe-area-inset-bottom));display:none;box-shadow:0 -4px 20px color-mix(in srgb,var(--color-ink) 8%,transparent);backdrop-filter:blur(12px)}
.floating-cta-bar.show{display:flex;align-items:center;gap:12px}
.floating-cta-bar .cta-price{font:800 var(--font-xl) var(--font-heading);color:var(--color-brand);line-height:1}
.floating-cta-bar .cta-price small{font-size:var(--font-xs);font-weight:500;color:var(--color-muted)}
.floating-cta-bar .cta-info{flex:1;min-width:0}
.floating-cta-bar .cta-info b{display:block;font-size:var(--font-sm);color:var(--color-ink);font-weight:600}
.floating-cta-bar .cta-info small{font-size:var(--font-xs);color:var(--color-muted)}
.floating-cta-bar .cta-btn{flex-shrink:0;padding:10px 20px;font-size:var(--font-sm);white-space:nowrap}
@media(max-width:768px){
  .floating-cta-bar.show{display:flex}
  .app-shell{padding-bottom:64px!important}
}
