*{box-sizing:border-box}:root{--bg:#fdfdfd;--text:#1a1a1a;--muted:#555;--link:#0066cc;--soft:#f2f2f2;--line:#d5d5d5}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 Verdana,Arial,"Noto Sans SC",sans-serif}body.dark{--bg:#171717;--text:#eee;--muted:#bbb;--link:#68aaf0;--soft:#252525;--line:#414141}header{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;max-width:780px;margin:auto;padding:14px 30px}.brand{font-weight:700;color:var(--text);text-decoration:none}nav{display:flex;gap:14px;align-items:center;font-size:13px}nav a,nav button,nav label{color:var(--link);background:none;border:0;padding:0;font:inherit;cursor:pointer;text-decoration:underline}nav input{display:none}main,footer{max-width:720px;margin:auto;padding:0 20px}.intro{padding:70px 0 30px}h1,h2,h3{line-height:1.3}h1{font-size:32px;margin:0 0 20px}h1 span{font-size:22px;color:var(--muted)}h2{font-size:24px;margin-top:54px}.intro>p{color:var(--muted)}.controls{display:flex;gap:8px;flex-wrap:wrap;margin:28px 0}.controls select,.controls input,.controls button{border:1px solid var(--line);background:var(--bg);color:var(--text);font:inherit;padding:8px 10px}.controls input{flex:1;min-width:200px}.progress{font-size:13px}.progress i{display:block;height:5px;background:var(--soft);margin-top:7px}.progress i span{display:block;width:0;height:100%;background:var(--link);transition:.2s}.toc{padding:5px 0 20px}.toc a{display:block;color:var(--link);margin:7px 0}.group{scroll-margin-top:74px}.group>h2{margin-bottom:0}.group-zh{margin-top:2px;color:var(--muted);font-weight:700}.task{scroll-margin-top:72px;border-top:1px solid var(--line);padding:28px 0}.task-top{display:flex;justify-content:space-between;align-items:center}.task-no{font-size:13px;font-weight:700;color:var(--link)}.done{border:1px solid var(--line);width:30px;height:30px;border-radius:50%;background:none;color:var(--muted);cursor:pointer}.task.complete .done{background:var(--link);border-color:var(--link);color:white}.task h3{font-size:18px;margin:14px 0 7px}.task>.zh{color:var(--muted);margin:0 0 22px}.task label{display:block;font-weight:700;font-size:13px;margin-bottom:7px}.task label span{display:block}textarea{width:100%;min-height:170px;resize:vertical;background:var(--bg);color:var(--text);border:1px solid var(--line);padding:12px;font:15px/1.6 Verdana,Arial,"Noto Sans SC",sans-serif}textarea:focus{outline:2px solid color-mix(in srgb,var(--link) 30%,transparent);border-color:var(--link)}.task small{display:flex;justify-content:space-between;color:var(--muted);margin-top:5px}.save{opacity:0}.save.show{opacity:1}.task.hidden{display:none}body.lang-en .zh,body.lang-en .group-zh{display:none}body.lang-zh .en{display:none}body.lang-zh .task>.zh{color:var(--text);font-weight:700;font-size:18px}body.lang-zh .group>h2{display:none}.tools{border-top:1px solid var(--line);margin-top:60px;padding-bottom:50px}.tools button{border:1px solid var(--line);background:var(--bg);color:var(--text);padding:9px 12px}footer{border-top:1px solid var(--line);padding-top:22px;padding-bottom:40px;display:flex;justify-content:space-between;color:var(--muted);font-size:12px}a{color:var(--link)}@media(max-width:650px){header{padding:12px 18px}.brand{font-size:13px}nav a:first-child{display:none}nav{gap:9px}main{padding:0 18px}.intro{padding-top:48px}h1{font-size:28px}}@media print{header,.controls,.progress,.toc,.tools,footer,.done{display:none}.intro{padding:0}.group{break-before:page}.task{break-inside:avoid}textarea{min-height:120px}.save,.count{display:none}}
/* per-task save button */
.tasksave{border:1px solid var(--line);background:none;color:var(--muted);font:inherit;font-size:12px;padding:5px 10px;border-radius:6px;cursor:pointer;white-space:nowrap}
.tasksave:hover{border-color:var(--link);color:var(--link)}
.tasksave.dirty{background:var(--link);border-color:var(--link);color:#fff}
.tasksave[disabled]{opacity:.6;cursor:default}
.task small{align-items:center;gap:10px}
