.recap-page{background:var(--color-bg);min-height:100vh;padding:32px 20px 64px}.recap-container{flex-direction:column;gap:18px;max-width:560px;margin:0 auto;display:flex}.recap-grid,.recap-col{flex-direction:column;gap:18px;min-width:0;display:flex}@media (width<=959px){.recap-col{display:contents}.recap-feedback{order:1}.recap-progress{order:2}.recap-phrases{order:3}.recap-memory{order:4}.recap-next{order:5}.recap-actions{order:6}}@media (width>=960px){.recap-page{padding:56px 32px 96px}.recap-container{gap:28px;max-width:1080px}.recap-grid{grid-template-columns:minmax(0,1fr) 400px;align-items:start;gap:24px;display:grid}.recap-col{gap:24px}}.recap-header{flex-direction:column;gap:6px;padding:0 4px;display:flex}.recap-eyebrow{color:var(--color-success);align-items:center;gap:6px;margin:0;font-size:13px;font-weight:700;display:flex}.recap-title{font-family:var(--font-display);color:var(--color-text-primary);text-wrap:balance;margin:0;font-size:30px;font-style:italic;font-weight:400;line-height:1.2}@media (width>=960px){.recap-title{font-size:38px}}.recap-meta{color:var(--color-text-secondary);margin:0;font-size:14px}.recap-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);flex-direction:column;gap:12px;padding:18px;animation:.32s both fadeInUp;display:flex;box-shadow:0 1px 2px #2a211d0d,0 10px 24px -14px #2a211d40}.recap-card-head{align-items:center;gap:10px;display:flex}.recap-avatar{background:var(--color-secondary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:16px;font-weight:700;display:flex}.recap-card-title{margin:0;font-size:15px;font-weight:700;line-height:1.4}.recap-card-sub{color:var(--color-text-secondary);margin:0;font-size:13.5px;line-height:1.5}.recap-label{letter-spacing:.07em;text-transform:uppercase;color:var(--color-text-secondary);margin:0;font-size:11px;font-weight:700}.recap-body{color:var(--color-text-primary);margin:0;font-size:15.5px;line-height:1.6}.recap-tip{background:var(--color-suggestions-panel);border-radius:12px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.recap-tip-text{margin:0;font-size:14.5px;line-height:1.5}.recap-waiting{color:var(--color-text-secondary);align-items:center;gap:8px;margin:0;font-size:13.5px;display:flex}.recap-spinner{border:2px solid var(--color-primary);border-top-color:#0000;border-radius:50%;width:14px;min-width:14px;height:14px;animation:.7s linear infinite recap-spin;display:inline-block}@keyframes recap-spin{to{transform:rotate(360deg)}}.recap-loading{min-height:50vh;color:var(--color-text-secondary);justify-content:center;align-items:center;gap:10px;font-size:15px;display:flex}.recap-endstats-row{display:flex}.recap-endstat{text-align:center;flex-direction:column;flex:1;align-items:center;gap:2px;display:flex}.recap-endstat+.recap-endstat{border-left:1px solid var(--color-border)}.recap-endstat-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-text-primary);font-size:28px;font-weight:700;line-height:1.2}.recap-endstat-label{color:var(--color-text-secondary);font-size:13px}.recap-comparison{color:var(--color-success);align-items:center;gap:6px;margin:0;font-size:14px;font-weight:600;display:flex}.recap-endstats .recap-comparison{border-top:1px solid var(--color-border);justify-content:center;padding-top:10px}.recap-finishing{flex-direction:row;align-items:center;gap:12px;padding:20px 18px}.recap-spinner-lg{border-width:3px;width:22px;min-width:22px;height:22px}.recap-finishing-text{color:var(--color-text-secondary);margin:0;font-size:15px;animation:.3s both recap-fade-in}@keyframes recap-fade-in{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.recap-finishing-text{animation:none}}.recap-error{align-items:flex-start}.recap-error p{margin:0}.recap-card-foot{border-top:1px solid var(--color-border);color:var(--color-text-secondary);justify-content:space-between;align-items:center;gap:12px;padding-top:8px;font-size:13.5px;display:flex}.recap-divider{background:var(--color-border);height:1px}.recap-link{min-height:44px;font:inherit;color:var(--color-primary-hover);text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:10px 4px;font-size:14px;font-weight:600;text-decoration:underline}.recap-link:hover{color:var(--color-text-primary)}.recap-link:disabled{opacity:.6;cursor:default}.recap-icon-btn{border:1px solid var(--color-border);background:var(--color-surface);width:44px;height:44px;color:var(--color-text-primary);cursor:pointer;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.recap-icon-btn:hover,.recap-icon-btn.is-playing{border-color:var(--color-primary);color:var(--color-primary-hover)}.recap-page button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.recap-headline{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.recap-headline-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin:0;font-size:30px;font-weight:700;line-height:1.2}.recap-headline-unit{font-family:var(--font-family);color:var(--color-text-secondary);font-size:13px;font-weight:400}.recap-tier{color:#085041;background:#e1f5ee;border-radius:999px;margin:6px 0 0;padding:4px 12px;font-size:12px;font-weight:500;line-height:1.5;display:inline-block}.recap-delta{color:var(--color-text-secondary);margin:6px 0 0;font-size:13px;line-height:1.45}.recap-delta.is-up,.recap-metric-delta.is-up{color:color-mix(in srgb, var(--color-success) 75%, var(--color-text-primary));font-weight:600}.recap-spark-wrap{color:var(--color-success);flex-shrink:0}.recap-more-metrics{border-top:1px solid var(--color-border)}.recap-expander{cursor:pointer;width:100%;min-height:44px;font:inherit;color:var(--color-text-primary);background:0 0;border:none;justify-content:space-between;align-items:center;padding:0;font-size:14px;font-weight:600;display:flex}.recap-expander svg{color:var(--color-text-secondary);transition:transform .15s}.recap-expander svg.is-open{transform:rotate(180deg)}.recap-metric-list{flex-direction:column;display:flex}.recap-metric-row{border-bottom:1px solid var(--color-suggestions-panel);justify-content:space-between;align-items:baseline;gap:12px;padding:10px 0;display:flex}.recap-metric-name{margin:0;font-size:13.5px;font-weight:600}.recap-metric-delta{color:var(--color-text-secondary);margin:0;font-size:12.5px}.recap-metric-value{font-family:var(--font-mono);white-space:nowrap;margin:0;font-size:18px;font-weight:700}.recap-metric-value span{font-family:var(--font-family);color:var(--color-text-secondary);font-size:12px;font-weight:400}.recap-metric-list .recap-link{align-self:flex-start}.recap-path{border-bottom:1px solid var(--color-border);flex-direction:column;gap:4px;padding-bottom:12px;display:flex}.recap-path-title{margin:0;font-size:15px;font-weight:700}.recap-path-stats{color:var(--color-text-secondary);margin:0;font-size:13.5px}.recap-path-done{font:inherit;text-align:left;color:var(--color-primary-hover);background:0 0;border:none;align-items:center;gap:7px;margin:0;padding:0;font-size:15px;font-weight:700;display:flex}button.recap-path-done{cursor:pointer;text-underline-offset:3px;min-height:44px;text-decoration:underline}.recap-review-row{background:color-mix(in srgb, var(--color-success) 12%, var(--color-surface));border-radius:12px;justify-content:space-between;align-items:center;gap:10px;margin-top:6px;padding:4px 12px;font-size:13.5px;display:flex}.recap-phrase-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.recap-phrase{border-top:1px solid var(--color-suggestions-panel);flex-direction:column;gap:8px;padding:14px 0;display:flex}.recap-phrase:first-child{border-top:none;padding-top:4px}.recap-phrase-top{align-items:flex-start;gap:10px;display:flex}.recap-phrase-text{flex:1;min-width:0}.recap-phrase-target{overflow-wrap:anywhere;margin:0;font-size:16px;font-weight:700;line-height:1.35}.recap-phrase-english{color:var(--color-text-secondary);margin:2px 0 0;font-size:14px}.recap-phrase-english.is-waiting{font-style:italic}.recap-why{background:var(--color-suggestions-panel);height:36px;color:var(--color-text-primary);font:inherit;cursor:pointer;border:none;border-radius:999px;align-self:flex-start;padding:0 14px;font-size:13px;font-weight:700}.recap-why:hover{background:color-mix(in srgb, var(--color-suggestions-panel) 80%, var(--color-border))}.recap-why-box{background:var(--color-suggestions-panel);border-radius:12px;flex-direction:column;gap:4px;padding:10px 12px;font-size:14px;line-height:1.5;display:flex}.recap-why-box p{margin:0}.recap-said{color:var(--color-text-secondary)}.recap-said s{text-decoration-thickness:1.5px}.recap-mem-block{flex-direction:column;gap:8px;display:flex}.recap-mem-block+.recap-mem-block{border-top:1px solid var(--color-border);padding-top:12px}.recap-label-recall,.recap-label-learned{align-items:center;gap:7px;display:flex}.recap-label-recall{color:color-mix(in srgb, var(--color-secondary) 55%, var(--color-text-primary) 45%)}.recap-label-learned{color:color-mix(in srgb, var(--color-primary) 65%, var(--color-text-primary) 35%)}.recap-dot{border-radius:50%;width:7px;height:7px;display:inline-block}.recap-dot.recall{background:var(--color-secondary)}.recap-dot.learned{background:var(--color-primary)}.recap-recall-list,.recap-fact-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.recap-recall-list li{background:color-mix(in srgb, var(--color-secondary) 7%, var(--color-surface));border:1px solid color-mix(in srgb, var(--color-secondary) 30%, var(--color-border));border-radius:12px;padding:10px 12px;font-size:15px;line-height:1.45}.recap-fact{align-items:center;gap:8px;font-size:15px;line-height:1.45;display:flex}.recap-fact-text{flex:1;min-width:0}.recap-fact-actions{gap:6px;display:flex}.recap-fact-edit{flex-direction:column;flex:1;gap:6px;display:flex}.recap-fact-edit input{width:100%;font-size:16px}.recap-fact-edit-actions{justify-content:flex-end;align-items:center;gap:10px;display:flex}.recap-small-btn{padding:9px 16px;font-size:14px}.recap-next-row{align-items:center;gap:12px;display:flex}.recap-next-topic{min-width:0;font-family:var(--font-display);flex:1;margin:0;font-size:19px;font-style:italic;line-height:1.35}.recap-switch{background:var(--color-border);cursor:pointer;border:none;border-radius:999px;flex-shrink:0;justify-content:flex-start;width:52px;height:32px;padding:3px;transition:background .15s;display:flex}.recap-switch span{background:#fff;border-radius:50%;width:26px;height:26px;box-shadow:0 1px 3px #00000040}.recap-switch.is-on{background:var(--color-success);justify-content:flex-end}.recap-reminder{flex-direction:column;gap:10px;display:flex}.recap-reminder-q{align-items:center;gap:8px;margin:0;font-size:14.5px;font-weight:600;display:flex}.recap-reminder-q svg{color:var(--color-text-secondary)}.recap-chips{flex-wrap:wrap;gap:8px;display:flex}.recap-chip{border:1.5px solid var(--color-border);background:var(--color-surface);min-height:44px;font:inherit;color:var(--color-text-primary);cursor:pointer;border-radius:999px;padding:0 16px;font-size:14px;font-weight:600}.recap-chip:hover{border-color:var(--color-primary)}.recap-chip.is-selected{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, var(--color-surface))}.recap-cal-btns{flex-direction:column;gap:8px;display:flex}.recap-cal-row{flex-wrap:wrap;gap:8px;display:flex}.recap-cal-btn{border:1.5px solid var(--color-border);background:var(--color-surface);min-height:44px;font:inherit;color:var(--color-text-primary);cursor:pointer;border-radius:12px;flex:140px;padding:0 14px;font-size:14.5px;font-weight:500}.recap-cal-btn:hover{border-color:var(--color-text-secondary)}.recap-confirm{background:color-mix(in srgb, var(--color-success) 13%, var(--color-surface));color:color-mix(in srgb, var(--color-success) 70%, var(--color-text-primary));border-radius:12px;align-items:center;gap:8px;padding:12px 14px;font-size:14px;font-weight:600;display:flex}.recap-actions{flex-direction:column;align-items:center;gap:2px;padding-top:4px;display:flex}.recap-done{width:100%}.recap-another{font-size:14px}.recap-credits{color:var(--color-text-secondary);text-align:center;margin:6px 0 0;font-size:13px}.recap-bye{text-align:center;font-family:var(--font-display);margin:0;padding:18px 0;font-size:22px;font-style:italic;animation:.28s both fadeInUp}.recap-short{gap:6px}@media (prefers-reduced-motion:reduce){.recap-card,.recap-bye{animation:none}.recap-spinner{animation-duration:2s}}
