.chapter-recap{background:linear-gradient(#ff6b350d 0%,#0000 100%);border-top:2px solid #ff6b354d;border-radius:16px 16px 0 0;margin-top:40px;padding:32px 20px}.recap-header{text-align:center;margin-bottom:32px}.recap-celebration-emoji{margin-bottom:12px;font-size:48px;animation:.6s ease-out recapBounce}@keyframes recapBounce{0%{opacity:0;transform:scale(.5)}50%{transform:scale(1.2)}to{opacity:1;transform:scale(1)}}.recap-title{color:#ff6b35;margin:0;font-size:22px;font-weight:700;line-height:1.5}.recap-section{margin-bottom:24px}.recap-section-title{text-align:center;color:#888;letter-spacing:1px;margin:20px 0 16px;font-size:14px}.recap-cards{flex-direction:column;gap:12px;display:flex}.recap-card{background:#ffffff0a;border:1px solid #ffffff14;border-radius:12px;align-items:flex-start;gap:14px;padding:16px;transition:border-color .2s;display:flex}.recap-card:hover{border-color:#ff6b354d}.recap-card-icon{background:#ff6b351a;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:24px;display:flex}.recap-card-content{flex:1}.recap-card-title{color:#e0e0e0;margin:0 0 4px;font-size:15px;font-weight:600}.recap-card-desc{color:#999;margin:0;font-size:13px;line-height:1.6}.recap-pro-tip{background:#ff6b3514;border:1px solid #ff6b3533;border-radius:12px;margin:20px 0;padding:16px}.recap-pro-tip-header{color:#ff6b35;margin-bottom:8px;font-size:15px;font-weight:600}.recap-pro-tip-text{color:#ccc;margin:0;font-size:14px;line-height:1.7}.recap-quote{background:#ff6b350d;border-right:3px solid #ff6b35;border-radius:0 8px 8px 0;margin:20px 0;padding:12px 16px}.recap-quote p{color:#ddd;margin:0;font-size:15px;font-style:italic;line-height:1.6}.recap-quote cite{color:#888;margin-top:8px;font-size:12px;display:block}.recap-stats{margin:24px 0}.recap-stats-grid{justify-content:center;gap:32px;display:flex}.recap-stat{text-align:center;flex-direction:column;align-items:center;display:flex}.recap-stat-icon{margin-bottom:4px;font-size:20px}.recap-stat-num{color:#ff6b35;font-size:24px;font-weight:700}.recap-stat-label{color:#888;margin-top:2px;font-size:12px}.recap-next-teaser{margin:24px 0}.recap-teaser-text{text-align:center;color:#bbb;margin:0;font-size:15px;line-height:1.7}.recap-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:28px;display:flex}.recap-btn{cursor:pointer;border:none;border-radius:10px;padding:12px 24px;font-family:inherit;font-size:15px;font-weight:600;transition:all .2s}.recap-btn-primary{color:#fff;background:#ff6b35}.recap-btn-primary:hover{background:#e55a2b;transform:translateY(-1px)}.recap-btn-secondary{color:#ff6b35;background:#ff6b351f;border:1px solid #ff6b354d}.recap-btn-secondary:hover{background:#ff6b3533}.quick-recap-btn{color:#ff6b35;cursor:pointer;background:#ff6b351a;border:1px solid #ff6b3540;border-radius:8px;margin-bottom:12px;padding:8px 16px;font-family:inherit;font-size:13px;transition:all .2s}.quick-recap-btn:hover{background:#ff6b352e;border-color:#ff6b3566}.quick-recap-backdrop{z-index:999;background:#000000b3;position:fixed;inset:0}.quick-recap-modal{z-index:1000;background:#111;border:1px solid #ff6b354d;border-radius:16px;width:90%;max-width:500px;max-height:80vh;padding:0;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.quick-recap-header{z-index:1;background:#111;border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;padding:16px 20px;display:flex;position:sticky;top:0}.quick-recap-header h3{color:#ff6b35;margin:0;font-size:16px}.quick-recap-close{color:#888;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 8px;font-size:18px}.quick-recap-close:hover{color:#fff;background:#ffffff1a}.quick-recap-content{padding:16px 20px}.quick-recap-dismiss{color:#fff;cursor:pointer;background:#ff6b35;border:none;border-radius:10px;width:calc(100% - 40px);margin:0 20px 16px;padding:12px;font-family:inherit;font-size:14px;font-weight:600;transition:background .2s;display:block}.quick-recap-dismiss:hover{background:#e55a2b}@media (max-width:640px){.chapter-recap{padding:24px 16px}.recap-title{font-size:18px}.recap-stats-grid{gap:20px}.recap-stat-num{font-size:20px}.recap-actions{flex-direction:column}.recap-btn{text-align:center;width:100%}}
