:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#20242b;background:#f7f8fa;font-size:16px;line-height:1.65;--ink:#253448;--accent:#e5edf8;--line:#dce1e7;--muted:#606975;--red:#a33432}*{box-sizing:border-box}body{margin:0}a{color:inherit}button,input,select{font:inherit}button,.button{cursor:pointer;border:1px solid var(--line);background:white;color:var(--ink);border-radius:12px;min-height:48px;padding:10px 18px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600}button:hover,.button:hover{border-color:#2563a6}button:disabled{opacity:.5;cursor:default}button.primary,.button.primary{background:var(--ink);color:white;border-color:var(--ink)}button.lime,.button.lime{background:var(--accent);color:var(--ink);border-color:var(--accent)}button.quiet{background:transparent}button.danger{color:var(--red)}:focus-visible{outline:3px solid #2563a6;outline-offset:4px}header{max-width:1140px;margin:auto;padding:28px 32px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-weight:750;font-size:24px}.mark{display:grid;place-items:center;background:var(--ink);color:var(--accent);width:44px;height:44px;border-radius:13px;font-family:serif}.brand-sub{font-size:14px;font-weight:500;margin-left:14px;color:var(--muted)}.local-label{font-size:13px;color:var(--muted)}main{max-width:1080px;margin:0 auto;padding:10px 24px 120px}h1,h2,h3,p{margin-top:0}h1{font-size:36px;line-height:1.35;letter-spacing:-1px;margin-bottom:16px}h2{font-size:23px;line-height:1.4;margin-bottom:16px}h3{font-size:18px;margin-bottom:8px}.eyebrow{font-size:13px;letter-spacing:2px;font-weight:700;color:var(--muted);margin-bottom:14px}.hero{background:var(--ink);color:white;border-radius:24px;padding:32px;position:relative;overflow:hidden}.hero .eyebrow,.hero .muted{color:#dfe8f5}.hero p{max-width:650px}.hero .number{font-family:Georgia,serif;color:var(--accent);font-size:76px;line-height:1}.hero-grid{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center}.day-ring{border:1px solid #8aa4c5;border-radius:50%;height:154px;width:154px;display:flex;flex-direction:column;align-items:center;justify-content:center}.day-ring small{font-size:12px;color:#e4ebf5}.panel{background:white;border:1px solid var(--line);border-radius:20px;padding:24px;margin-top:20px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.grid.two{grid-template-columns:repeat(2,1fr)}.task{padding:22px;border:1px solid var(--line);border-radius:18px;background:white;display:flex;flex-direction:column;gap:10px}.task .big{font-size:36px;font-weight:650;line-height:1.3}.task .big small{font-size:14px;font-weight:400;margin-left:8px}.task p{font-size:14px;margin:0;color:var(--muted)}.task .button{margin-top:auto}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:28px 0 14px}.section-head h2{margin:0}.muted{color:var(--muted)}.small,small{font-size:14px}.note{background:#edf3fb;border-radius:12px;padding:14px 18px;font-size:14px;color:#24558b;margin:18px 0}.warning{background:#fff4db;color:#7c5514}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:grid;gap:12px}.pill{display:inline-flex;background:#eef1f5;color:#48586b;border-radius:8px;padding:3px 9px;font-size:13px}.pill.red{color:#9e3432;background:#fff0ef}.pill.blue{color:#266770;background:#e5f3f4}.pill.green{color:#276647;background:#e9f5e9}.progress{height:7px;border-radius:10px;background:#e3e8ef;overflow:hidden}.progress span{display:block;height:100%;background:#2563a6;border-radius:10px}nav{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);display:flex;padding:6px;background:var(--ink);border-radius:20px;box-shadow:0 10px 35px #152f382a;z-index:10;gap:3px}nav a{padding:12px 28px;white-space:nowrap;text-decoration:none;color:#e4ebf5;border-radius:14px;font-size:14px}nav a.active{background:var(--accent);color:var(--ink);font-weight:700}.group-row{display:grid;grid-template-columns:44px 1fr auto;gap:14px;align-items:center;padding:18px 0;border-bottom:1px solid var(--line)}.group-row:last-child{border-bottom:0}.group-num{font-family:Georgia,serif;font-size:25px;color:#60748c}.group-row p{margin:3px 0;font-size:14px;color:var(--muted)}.back{font-size:14px;text-decoration:none;display:inline-block;margin:8px 0 22px}.study{max-width:760px;margin:auto}.flash{min-height:330px;text-align:center;display:flex;flex-direction:column;justify-content:center}.flash h1{font-family:"Songti SC","STSong",serif;font-size:46px;letter-spacing:4px;margin:25px 0}.definition{text-align:left;background:#f7f8fa;border-radius:14px;padding:22px;margin:12px 0}.definition p:last-child{margin-bottom:0}.actions{display:flex;gap:10px;flex-wrap:wrap}.actions>*{flex:1}.question{font-size:21px;line-height:1.9}.options{display:grid;gap:12px}.option{justify-content:flex-start;text-align:left;font-weight:500;width:100%}.option.correct{background:#e7f3e4;border-color:#65965e}.option.wrong{background:#ffebe6;border-color:#bd7061}.source{font-size:13px;color:var(--muted);display:inline-flex;margin-top:12px}.source-image{display:block;width:100%;height:auto;border-radius:10px;background:white}.term-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.term{padding:18px;border:1px solid var(--line);border-radius:14px}.term h3{font-family:"Songti SC",serif;font-size:23px}.term p{font-size:14px}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin:20px 0}.calendar a{padding:14px 4px;text-align:center;border:1px solid var(--line);border-radius:10px;text-decoration:none;font-size:14px;background:white}.calendar a.review{background:#eaf5ee}.calendar a.current{background:var(--ink);color:white}.calendar small{font-size:12px;display:block}input[type=date],input[type=search],select{width:100%;padding:12px;border:1px solid #b9c4d1;border-radius:10px;background:white;color:var(--ink)}label{display:block;font-weight:600;margin:14px 0 6px}details{border-bottom:1px solid var(--line);padding:14px 0}summary{cursor:pointer;font-weight:600}.empty{text-align:center;padding:40px 20px}.empty h2{font-family:serif;font-size:28px}.number-row{display:flex;gap:30px;flex-wrap:wrap}.number-row strong{font-size:32px;display:block}.number-row small{color:var(--muted)}#toast{position:fixed;top:20px;left:50%;transform:translateX(-50%);background:#253448;color:white;border-radius:12px;padding:12px 22px;z-index:100;display:none;max-width:90vw}#toast.visible{display:block}.file-input{max-width:100%;font-size:14px;padding:8px 0}blockquote{border-left:3px solid #b8c2cf;margin:14px 0;padding:8px 18px;color:#20242b}hr{border:0;border-top:1px solid var(--line);margin:22px 0}.page-title{margin-top:18px}.wide{width:100%}.inline-link{background:none;border:0;padding:0;min-height:auto;text-decoration:underline;font-weight:400;font-size:14px}.stats-line{font-size:14px;color:var(--muted);margin-top:12px}dialog{max-width:520px;width:90%;border:1px solid var(--line);border-radius:20px;padding:25px;color:var(--ink)}dialog::backdrop{background:#10252280}
@media(max-width:650px){header{padding:20px}.brand{font-size:22px}.brand-sub{display:block;margin:0;font-size:12px}.local-label{font-size:12px}main{padding:4px 16px 110px}h1{font-size:28px}.hero{padding:24px;border-radius:20px}.hero-grid{gap:10px}.day-ring{width:98px;height:98px}.hero .number{font-size:48px}.hero h1{font-size:26px}.hero .eyebrow{font-size:11px;letter-spacing:1px}.hero p{font-size:14px}.grid{gap:8px}.task{padding:16px 12px;gap:7px}.task .big{font-size:29px}.task .big small{margin-left:3px;font-size:12px}.task h3{font-size:15px}.task p{font-size:12px}.task .button{font-size:13px;padding:8px 4px;min-height:44px}.panel{padding:20px 18px}.grid.two,.term-grid{grid-template-columns:1fr}.section-head h2{font-size:21px}nav{bottom:max(10px,env(safe-area-inset-bottom));width:calc(100% - 32px);justify-content:space-around;border-radius:18px}nav a{padding:11px 14px;flex:1;text-align:center}.group-row{grid-template-columns:28px 1fr auto;gap:10px}.group-row button,.group-row .button{padding:8px 12px;font-size:13px}.group-row h3{font-size:16px}.group-row p{font-size:13px}.flash h1{font-size:38px}.question{font-size:18px}.calendar{gap:5px}.calendar a{padding:10px 2px;font-size:12px}.calendar small{font-size:10px}.actions button{padding:10px;font-size:14px}.number-row{gap:22px}}

.lesson-select{max-width:260px}.book-progress{display:grid;grid-template-columns:repeat(10,1fr);gap:6px}.book-progress a{border-radius:8px;text-align:center;padding:8px;background:#f7f8fa;text-decoration:none}.book-progress a.done{background:#f28dbb;color:#4c1330}.reading img{width:100%;height:auto}.audit{font-size:13px;background:#fff4db;color:#7c5514;padding:8px 12px;border-radius:8px} .search-term{margin-top:14px}
.lesson-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.lesson-card{padding:25px;background:#fff;border:1px solid var(--line);border-radius:24px;color:var(--ink);text-decoration:none;transition:transform .18s,box-shadow .18s}.lesson-card:hover{transform:translateY(-3px);box-shadow:0 10px 30px #25344810}.lesson-index{font-size:32px;font-weight:800;color:var(--green)}.lesson-card h3{margin:18px 0 8px}.lesson-card p{min-height:42px}.lesson-card progress{width:100%;height:6px;margin:16px 0;accent-color:#253448}.full-notes{line-height:1.95;overflow-wrap:anywhere}#page-number{width:68px;padding:10px}.source-image{background:white}.lesson-card:focus-visible{outline:3px solid #253448;outline-offset:3px}@media(max-width:650px){.lesson-grid{grid-template-columns:1fr;gap:12px}.lesson-card{padding:20px}.lesson-card p{min-height:0}#page-form{gap:4px}#page-form button{padding:10px}.source-image{max-width:100%}}

/* Four-color notes: labels accompany color so meaning is never color-only. */
:root{--red:#ad3030;--blue:#245c9c;--green:#267044}
.note-key{display:flex;flex-wrap:wrap;gap:8px 18px;max-width:1080px;margin:0 auto 16px;padding:0 24px;font-size:13px}.note-key span{border-bottom:3px solid currentColor;padding:3px 0}.note-key .black{color:#20242b}.note-key .red{color:var(--red)}.note-key .blue{color:var(--blue)}.note-key .green{color:var(--green)}
.note-focus,.warning{color:var(--red);background:#fff1f0;border-left:3px solid var(--red);padding:12px 16px;border-radius:8px}
.note-analysis{color:var(--blue);background:#eef4fc;border-left:3px solid var(--blue);padding:12px 16px;border-radius:8px}
.note-summary{color:var(--green);background:#eef7f0;border-left:3px solid var(--green);padding:12px 16px;border-radius:8px}
.note-original{color:#20242b;background:#fff;padding:12px;border-radius:8px}.definition{color:#20242b}.option.correct{color:var(--green)}.option.wrong{color:var(--red)}.option:disabled{opacity:1}.pill.blue{color:var(--blue);background:#eef4fc}
