:root{--ink:#203630;--muted:#657870;--green:#146957;--dark:#104c40;--line:#dce5de;--bg:#f5f6f0;font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);line-height:1.65;font-size:15px}*{box-sizing:border-box}body{margin:0}a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}button,input,select{font:inherit;touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #d1a14c;outline-offset:3px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.8rem,3vw,2.6rem);line-height:1.35;letter-spacing:-.04em;margin-bottom:18px}h2{font-size:1.35rem;line-height:1.5}h3{font-size:1.1rem}.header{max-width:1440px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:24px 5%;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);font-weight:750;font-size:1.25rem;white-space:nowrap}.brand-icon{background:var(--green);color:white;width:36px;height:36px;display:grid;place-items:center;border-radius:10px;font-family:Georgia;font-size:26px}.version{font-size:10px;font-weight:500;color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:1px 5px}.header nav{display:flex;align-items:center;gap:25px;font-size:14px}.header nav a{color:var(--ink)}.header form{margin:0}.quiet{border:0;background:none;padding:8px;color:var(--muted)}.shell{max-width:1240px;margin:auto;padding:48px 30px 80px;min-height:75vh}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:40px}.eyebrow{font-size:11px;font-weight:750;letter-spacing:.18em;color:var(--green);margin:0 0 16px}.lead{color:var(--muted);font-size:1.04rem;line-height:1.9;margin-bottom:0}.muted{color:var(--muted)}.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 3px 12px #183a2e03}.button{display:inline-flex;align-items:center;justify-content:center;gap:14px;background:var(--green);color:#fff;border:1px solid var(--green);border-radius:9px;padding:11px 20px;font-size:14px;font-weight:600;white-space:nowrap;min-height:44px}.button:hover{background:var(--dark);color:#fff;text-decoration:none}.button.secondary{background:transparent;color:var(--green);border-color:var(--line)}.button.secondary:hover{background:#edf4ed}.small{padding:8px 12px;font-size:13px}.full{width:100%}.pill{display:inline-block;font-size:11px;font-weight:650;letter-spacing:.04em;border-radius:5px;padding:4px 9px;background:#edf3e8;color:var(--green)}.course-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:24px}.course-card{padding:32px}.course-top{display:flex;justify-content:space-between}.course-code{font-family:Georgia,serif;font-size:48px;line-height:1;margin:32px 0 18px;color:var(--green)}.progress-label{display:flex;justify-content:space-between;font-size:12px;margin-top:28px;color:var(--muted)}progress{width:100%;height:7px;border:0;border-radius:10px;overflow:hidden;background:#e8eee7;accent-color:var(--green)}progress::-webkit-progress-bar{background:#e8eee7}progress::-webkit-progress-value{background:var(--green)}.card-actions{display:flex;align-items:center;justify-content:space-between;margin-top:26px}.note-card{background:#edf1e5}.note-card ol{padding-left:23px;margin:28px 0 0}.note-card li{padding-left:7px;margin-bottom:20px}.note-card li p{color:var(--muted);font-size:13px;margin:3px 0}.section{margin-top:44px}.list{padding:0 24px}.list-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0;border-bottom:1px solid var(--line);color:var(--ink)}.list-row:last-child{border:0}.list-row small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.empty{padding:32px;border:1px dashed #cbd6cb;border-radius:12px;color:var(--muted);text-align:center}.breadcrumb{display:block;margin-bottom:24px;font-size:13px}.source-note{background:#eff3ed;border:1px solid var(--line);padding:14px 18px;border-radius:9px;color:#52685e;font-size:12px;margin-bottom:28px}.source-note summary{cursor:pointer;font-weight:650}.source-note p{margin:12px 0 0}.weeks-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.week-card h2{min-height:60px}.lesson-list{list-style:none;padding:0;margin:20px 0}.lesson-list li a{display:grid;grid-template-columns:20px 1fr 14px;align-items:start;gap:8px;color:var(--ink);font-size:13px;padding:10px 0;border-top:1px solid #eef1eb}.status-dot{width:18px;height:18px;display:inline-grid;place-items:center;border:1px solid var(--line);border-radius:50%;font-size:11px;color:#8d9c94;margin-top:2px}.status-dot.complete{background:var(--green);color:white;border-color:var(--green)}.text-link{font-size:13px;font-weight:650}.reading-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:28px;align-items:start}.reading-nav{position:sticky;top:25px;max-height:85vh;overflow:auto;padding:5px 0}.reading-nav nav{display:flex;flex-direction:column;gap:5px}.reading-nav a{font-size:12px;padding:10px 12px;color:var(--muted);border-radius:7px}.reading-nav .active{background:#e5edde;color:var(--green);font-weight:650}.reading-card{padding:32px;min-width:0}.reading-card h1{font-size:1.8rem;margin-top:24px}.reading-tools,.inline-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.inline-actions form{margin:0}.reading-bottom{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:25px;margin-top:36px;font-size:13px}.prose{font-size:15px;line-height:1.95;overflow-wrap:anywhere}.prose h1{font-size:1.6rem}.prose h2{font-size:1.3rem;margin-top:32px}.prose h3{margin-top:25px}.prose img{display:block;max-width:100%;height:auto;margin:20px auto}.prose table{display:block;overflow:auto;border-collapse:collapse;font-size:12px;margin:20px 0}.prose th,.prose td{border:1px solid var(--line);padding:9px 12px;min-width:90px;vertical-align:top}.prose th{background:#eff3ed}.prose pre{position:relative;background:#1c302b;color:#e0ede3;border-radius:10px;padding:48px 18px 18px;overflow:auto;line-height:1.65;font-size:12px;white-space:pre;max-height:600px}.prose code{font-family:Consolas,"Cascadia Code",monospace}.copy-code{position:absolute;right:10px;top:9px;background:#365047;color:#fff;border:1px solid #5e7369;border-radius:5px;font-size:11px;padding:3px 10px;min-height:30px}.math.block{overflow-x:auto;padding:16px 0}.prose blockquote{border-left:3px solid #a6bba6;margin-left:0;padding-left:20px;color:var(--muted)}.search-form{display:flex;gap:12px;margin:25px 0}input:not([type=checkbox]):not([type=radio]),select{border:1px solid #cbd6ce;background:#fff;padding:11px 13px;border-radius:8px;min-width:0;width:100%;color:var(--ink)}.search-form input{flex:1}.search-form select{max-width:230px}.search-result{margin:18px 0}.search-result h2{margin:13px 0;font-size:1.1rem}.search-result p{font-size:13px;color:var(--muted);margin:0}.pager{display:flex;gap:25px;margin-top:25px}.login-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:90px;align-items:center;max-width:1000px;margin:40px auto}.login-grid h1{font-size:clamp(2rem,4vw,3.2rem);line-height:1.5}.login-card{padding:36px}.login-card h2{font-size:1.8rem;margin:20px 0 5px}.login-card label{display:block;font-size:13px;font-weight:600;margin:22px 0 8px}.login-card button{margin-top:28px}.fine{font-size:11px;color:var(--muted);margin:20px 0 0}.decor{font:italic 60px Georgia;color:#a4b6a2;margin-top:45px;letter-spacing:.08em}.decor span{display:block;font:12px Georgia;letter-spacing:.05em;margin-top:14px}.alert{padding:14px;background:#fff0eb;border:1px solid #edc7bb;color:#a43633;border-radius:8px;font-size:13px}.error-card{max-width:650px;margin:40px auto}.question{margin:20px 0}.question legend{font-weight:650;padding:0 8px}.question fieldset{border:0;padding:0;margin:0}.option{display:flex;gap:12px;border:1px solid var(--line);padding:13px;border-radius:8px;margin:10px 0;cursor:pointer;align-items:baseline}.option:has(input:checked){background:#eef4e9;border-color:#7da58d}.option input{accent-color:var(--green)}.score{font-size:54px;font-family:Georgia;color:var(--green);line-height:1.2}.correct{border-left:4px solid var(--green)}.incorrect{border-left:4px solid #bc6350}.answer-detail{padding:16px;background:#f2f5ef;border-radius:8px;font-size:14px;margin-top:16px}.stats-row{display:flex;gap:15px;flex-wrap:wrap}.stat{padding:16px 24px;background:#eaf0e1;border-radius:10px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:absolute;left:10px;top:-100px;background:white;padding:12px;z-index:10}.skip:focus{top:10px}footer{border-top:1px solid var(--line);padding:23px 5%;font-size:11px;color:var(--muted);display:flex;justify-content:space-between;max-width:1440px;margin:auto}#toast:not(:empty){position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--dark);color:white;padding:12px 24px;border-radius:9px;z-index:20}details.compact{margin:20px 0}
@media(max-width:850px){.shell{padding:30px 20px 60px}.reading-layout{grid-template-columns:1fr}.reading-nav{position:static;max-height:160px;padding:15px;background:#edf2e8;border-radius:10px}.course-grid{grid-template-columns:1fr}.login-grid{gap:35px}.header nav{gap:14px}.reading-card{padding:24px}.page-heading{align-items:flex-start}}
@media(max-width:600px){.header{padding:18px 20px;align-items:flex-start;flex-direction:column;gap:15px}.header nav{width:100%;justify-content:space-between;gap:10px;font-size:13px}.shell{padding:28px 16px 50px}.page-heading{display:block;margin-bottom:28px}.page-heading .button{margin-top:20px}.weeks-grid{grid-template-columns:1fr}.card{padding:22px}.list{padding:0 20px}.course-code{font-size:40px}.login-grid{grid-template-columns:1fr;margin:8px 0;gap:28px}.login-grid .decor{display:none}.login-grid h1{font-size:2.2rem}.login-card{padding:26px}.search-form{flex-wrap:wrap}.search-form input{flex-basis:100%}.search-form select{flex:1;max-width:none}.reading-tools{flex-wrap:wrap}.reading-card{padding:20px 16px}.reading-card h1{font-size:1.5rem}.prose{font-size:14px}.reading-nav{max-height:120px}.question{padding:18px}.option{padding:12px 10px}.week-card h2{min-height:0}footer span{display:none}.list-row{font-size:13px}.card-actions{gap:15px}.source-note{font-size:11px}.stats-row{gap:10px}.stat{padding:14px}}
