#week-recap{--recap-border:#dfd7c5;scroll-margin-top:90px}
#week-recap [hidden]{display:none!important}
#week-recap .recap-shell{background:#fffdf8;border:1px solid var(--recap-border);border-radius:20px;overflow:hidden;box-shadow:0 5px 18px #1e4a3808}
#week-recap .recap-intro{padding:22px 24px 18px;background:#f0f4ed;border-bottom:1px solid var(--recap-border)}
#week-recap .recap-kicker{font-size:12px;font-weight:700;letter-spacing:.06em;color:#576c58;margin-bottom:7px}
#week-recap h2{margin:0 0 6px;font-size:24px;color:#234b39}
#week-recap .recap-intro p{font-size:14px;color:#5e6b5e;margin:0}
#week-recap .recap-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;font-size:12px;color:#596650}
#week-recap a{color:#28543e;text-underline-offset:4px}
#week-recap .recap-meta a{white-space:nowrap}
#week-recap .recap-body{padding:20px 24px 24px}
#week-recap .recap-tracker{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:20px}
#week-recap .recap-steps{display:flex;gap:6px}
#week-recap button{font-family:inherit;cursor:pointer;touch-action:manipulation}
#week-recap .recap-step{width:36px;height:36px;border:1px solid var(--recap-border);border-radius:50%;background:#fffdf8;color:#697060;font-size:13px;font-weight:700}
#week-recap .recap-step[data-done="true"]{background:#e9f1e6;border-color:#b0c1a7;color:#28543e}
#week-recap .recap-step[aria-current="step"]{background:#28543e;border-color:#28543e;color:#fff}
#week-recap .recap-progress{font-size:12px;color:#65705f;white-space:nowrap}
#week-recap .recap-panel{scroll-margin-top:100px}
#week-recap .recap-type{color:#88672e;font-size:12px;font-weight:700;margin-bottom:6px}
#week-recap h3{margin:0 0 12px;font-size:19px;line-height:1.6;color:#2c3a30;outline:none}
#week-recap .recap-sentence{font-family:"Noto Sans KR",sans-serif;font-size:22px;font-weight:700;line-height:1.75;margin:0 0 14px;color:#28543e;overflow-wrap:anywhere}
#week-recap .recap-instruction{font-size:13px;line-height:1.75;color:#65705f;margin-bottom:12px}
#week-recap .recap-options{display:grid;gap:8px}
#week-recap .recap-option{display:flex;align-items:center;gap:12px;text-align:left;border:1.5px solid var(--recap-border);border-radius:11px;padding:11px 14px;min-height:48px;background:#fff;color:#2c3a30;font-size:17px}
#week-recap .recap-letter{display:flex;align-items:center;justify-content:center;width:25px;height:25px;flex-shrink:0;border-radius:7px;background:#f4f0e6;font-size:12px;color:#78715f}
#week-recap .recap-option[aria-pressed="true"]{border-color:#28543e;background:#edf3e9}
#week-recap .recap-option[aria-pressed="true"] .recap-letter{background:#28543e;color:white}
#week-recap .recap-option[data-result="right"]{border-color:#3b7548;background:#eff6eb}
#week-recap .recap-option[data-result="wrong"]{border-color:#b35445;background:#fbefec}
#week-recap .recap-option:disabled{cursor:default;opacity:1}
#week-recap .recap-result-symbol{margin-left:auto;font-size:15px;font-weight:700}
#week-recap label.recap-field-label{display:block;color:#64705f;font-size:12px;margin-bottom:6px}
#week-recap .recap-input,#week-recap .recap-writing{display:block;width:100%;box-sizing:border-box;border:1.5px solid #b6bdad;border-radius:10px;background:#fff;color:#293d30;padding:12px 14px;font-family:"Noto Sans KR",sans-serif;font-size:18px;line-height:1.6}
#week-recap .recap-input{max-width:340px}
#week-recap .recap-writing{min-height:120px;resize:vertical}
#week-recap .recap-input[readonly]{background:#f6f7f2}
#week-recap :is(button,input,textarea,a):focus-visible{outline:3px solid #b8873a;outline-offset:3px}
#week-recap .recap-notice{font-size:13px;color:#a04c3f;margin-top:8px}
#week-recap .recap-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}
#week-recap .recap-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 18px;border:1.5px solid #28543e;border-radius:10px;background:#28543e;color:#fff;font-size:14px;font-weight:700;line-height:1.5;text-decoration:none}
#week-recap a.recap-button{color:#fff}
#week-recap .recap-button.secondary{background:transparent;color:#28543e;border-color:#b6c1ae}
#week-recap .recap-button:disabled{opacity:.4;cursor:default}
#week-recap .recap-feedback{margin-top:16px;padding:14px 16px;border-radius:11px;background:#eff4e9;border-left:3px solid #62825b;color:#44543d;font-size:14px;line-height:1.8}
#week-recap .recap-feedback[data-tone="review"]{background:#faf2e4;border-left-color:#b8873a}
#week-recap .recap-feedback strong{display:block;color:#315139;font-size:14px;margin-bottom:3px}
#week-recap .recap-model{font-family:"Noto Sans KR",sans-serif;font-size:17px;color:#28543e;line-height:1.8;margin:6px 0}
#week-recap .recap-checklist{padding-left:20px;margin:8px 0}
#week-recap .recap-checklist li{margin:4px 0;font-size:13px}
#week-recap .recap-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #e9e2d3;margin-top:22px;padding-top:16px}
#week-recap .recap-nav button{font-size:13px;min-height:44px;padding:7px 12px;border:0;border-radius:9px;background:#f2f0e6;color:#36513a}
#week-recap .recap-nav button:disabled{opacity:.35;cursor:default}
#week-recap .recap-summary h3{font-size:22px;margin-bottom:10px}
#week-recap .recap-summary p{font-size:14px;color:#5e6b5e;margin:8px 0}
#week-recap .recap-summary-list{list-style:none;padding:0;margin:16px 0;display:grid;gap:8px}
#week-recap .recap-summary-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f6f3ea;border-radius:9px;padding:10px 12px;font-size:13px}
#week-recap .recap-summary-list button{border:0;background:none;color:#315c3f;text-decoration:underline;text-underline-offset:3px;font-size:13px;padding:4px}
@media(max-width:600px){#week-recap h2{font-size:21px}#week-recap .recap-intro{padding:18px 16px}#week-recap .recap-body{padding:16px}#week-recap .recap-meta{font-size:11px}#week-recap .recap-tracker{flex-wrap:wrap;gap:8px;margin-bottom:16px}#week-recap .recap-step{width:34px;height:34px}#week-recap h3{font-size:18px}#week-recap .recap-sentence{font-size:20px}#week-recap .recap-option{font-size:16px;padding:10px 12px}#week-recap .recap-progress{font-size:11px}#week-recap .recap-meta a{font-size:12px}}
@media(prefers-reduced-motion:reduce){#week-recap{scroll-behavior:auto}}

#week-recap .recap-option .kr{min-width:0;overflow-wrap:anywhere}
@media(max-width:380px){#week-recap .recap-meta{flex-wrap:wrap}}
