:root{color-scheme:light;--bg:#f5f4ee;--surface:#fffefa;--ink:#233a31;--muted:#778178;--line:#dedfd5;--green:#244f3f;--soft:#e6ece3;--accent:#b7c96f;--shadow:0 10px 35px #263d3009;--danger:#ae6257;--amber:#a37b35;--body:system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif}
:root[data-theme=dark]{color-scheme:dark;--bg:#17231e;--surface:#202f27;--ink:#e4eadd;--muted:#a3afa2;--line:#3b4c40;--green:#b7d5aa;--soft:#2b4133;--accent:#b7c96f;--shadow:0 10px 35px #0002}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.55}button,input,select{font:inherit}button{cursor:pointer;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:12px;min-height:44px;padding:9px 16px;touch-action:manipulation}button:hover{border-color:var(--green)}button:disabled{opacity:.35;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:3px}a{color:inherit}h1,h2,h3,p{margin:0}small,.muted{color:var(--muted)}.wrap{max-width:1140px;margin:auto;padding:28px 32px 30px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:32px}.brand{display:flex;align-items:center;gap:12px}.logo{width:42px;height:44px;border-radius:13px;background:var(--green);color:var(--bg);display:grid;place-items:center;font:700 20px Georgia,serif}.brand strong{font-family:Georgia,serif;font-size:21px;letter-spacing:-.4px}.brand small{display:block;font-size:11px;letter-spacing:1.4px}.icon-btn{padding:8px 12px;min-width:44px}.eyebrow{font-size:11px;letter-spacing:2.5px;font-weight:700;color:var(--muted)}.hero{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center;margin-bottom:30px}.hero h1{font-size:36px;letter-spacing:-1.2px;line-height:1.4;margin:7px 0 10px;font-weight:650}.hero p{color:var(--muted);font-size:14px}.hero-number{border-left:1px solid var(--line);padding-left:34px;text-align:right}.hero-number b{font:52px Georgia,serif;color:var(--green);display:block}.hero-number span{font-size:12px;color:var(--muted)}.dashboard{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}.section-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.section-label h2{font-size:16px}.section-label span{font-size:12px;color:var(--muted)}.subject-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.subject{position:relative;text-align:left;padding:16px 17px;box-shadow:var(--shadow);overflow:hidden}.subject.active{border-color:var(--green);background:var(--soft)}.subject .name{font-size:16px;font-weight:650}.subject .english{font-size:10px;color:var(--muted);display:block;min-height:15px;margin:2px 0 13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.subject .numbers{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.mini-progress{height:3px;background:var(--line);margin-top:9px;border-radius:10px;overflow:hidden}.mini-progress i{display:block;height:100%;background:var(--subject-color,var(--green))}.all-subject{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;padding:13px 17px}.all-subject .english{margin:0;min-height:0}.all-subject .numbers{gap:10px}.settings{border:1px solid var(--line);border-radius:20px;padding:22px;background:var(--surface);position:sticky;top:24px}.settings h2{font-size:16px;margin-bottom:18px}.field{margin:18px 0}.field-label{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}.segmented{display:flex;gap:5px;padding:4px;border:1px solid var(--line);border-radius:13px}.segmented button{flex:1;font-size:13px;border:0;padding:7px 5px;min-height:38px;background:transparent;white-space:nowrap}.segmented button.selected{background:var(--soft);color:var(--green);font-weight:650}.settings select{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:11px;color:var(--ink);padding:10px 12px;min-height:44px}.primary{background:var(--green);color:var(--bg);border-color:var(--green);font-weight:650}.start{width:100%;margin-top:5px;font-size:15px;min-height:49px}.selection-info{text-align:center;font-size:12px;color:var(--muted);margin:9px 0 0}.resume{width:100%;font-size:12px;margin-top:12px;background:transparent}.stats{display:flex;gap:17px;font-size:12px;margin-bottom:22px;flex-wrap:wrap}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;background:var(--muted)}.dot.ok{background:#73966d}.dot.fuzzy{background:var(--amber)}.dot.no{background:var(--danger)}.catalog{margin-top:34px}.search{width:100%;background:var(--surface);border:1px solid var(--line);color:var(--ink);border-radius:12px;padding:12px 14px;margin-bottom:12px;min-height:46px}.module-list{display:grid;gap:0;border:1px solid var(--line);border-radius:15px;overflow:hidden;background:var(--surface);max-height:420px;overflow-y:auto}.module-row{display:grid;grid-template-columns:29px 1fr auto;gap:8px;align-items:center;text-align:left;border:0;border-radius:0;border-bottom:1px solid var(--line);padding:13px 16px;background:transparent}.module-row:last-child{border:0}.module-row .no{font:13px Georgia,serif;color:var(--muted)}.module-row strong{font-size:13px;display:block;font-weight:550}.module-row small{font-size:11px;display:block;margin-top:2px}.module-row .status{font-size:12px}.empty{text-align:center;padding:32px;color:var(--muted)}.footer{display:flex;justify-content:space-between;gap:16px;margin-top:28px;padding-top:20px;border-top:1px solid var(--line);font-size:11px;color:var(--muted);align-items:center;flex-wrap:wrap}.footer button{min-height:34px;border:0;background:none;padding:5px 7px;font-size:11px}.deck{max-width:860px;margin:0 auto;padding:20px 28px calc(160px + env(safe-area-inset-bottom))}.deck-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.deck-head .deck-label{text-align:center;font-size:12px;color:var(--muted)}.deck-head .deck-label b{display:block;color:var(--ink);font-size:14px}.deck-progress{height:3px;background:var(--line);border-radius:10px;margin-bottom:24px;overflow:hidden}.deck-progress i{height:100%;background:var(--green);display:block;transition:width .2s}.card{background:var(--surface);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);overflow:hidden}.card-heading{padding:25px 28px 22px;border-bottom:1px solid var(--line)}.card-meta{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:11px;margin-bottom:12px}.badge{color:var(--subject-color,var(--green));font-weight:650}.card h1{font:26px/1.23 Georgia,"Times New Roman",serif;letter-spacing:-.3px}.card .cue{font-size:14px;color:var(--muted);margin-top:12px}.recall{min-height:265px;padding:42px 24px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center}.recall .recall-icon{font:36px Georgia,serif;color:var(--green);margin-bottom:14px}.recall p{font-size:13px;color:var(--muted);margin:0 0 23px}.reveal{padding:11px 33px}.source-content{padding:20px;display:grid;gap:15px}.source-part{margin:0;max-width:580px;justify-self:center;width:100%}.source-image{width:100%;height:auto;display:block;cursor:zoom-in;border-radius:5px;background:white}.source-part figcaption{display:flex;justify-content:space-between;gap:12px;font-size:10px;color:var(--muted);padding:8px 1px 0}.source-part figcaption button{font-size:10px;border:0;background:none;min-height:28px;padding:0 5px}.content-note{text-align:center;color:var(--muted);font-size:11px;padding:0 15px 18px}.study-bar{position:fixed;bottom:0;left:0;right:0;background:var(--bg);border-top:1px solid var(--line);padding:12px 20px calc(12px + env(safe-area-inset-bottom));z-index:5}.study-bar-inner{max-width:805px;margin:auto}.ratings{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.ratings button{font-size:13px;min-height:43px}.ratings button[data-value=ok].selected{background:#73966d;color:#fff;border-color:#73966d}.ratings button[data-value=fuzzy].selected{background:var(--amber);color:#fff;border-color:var(--amber)}.ratings button[data-value=no].selected{background:var(--danger);color:#fff;border-color:var(--danger)}.navigation{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px}.navigation button{min-height:36px;font-size:12px;padding:5px 15px;background:transparent}.auto{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:5px;cursor:pointer}.auto input{accent-color:var(--green);width:16px;height:16px}.complete{max-width:570px;margin:65px auto;padding:36px;text-align:center;border:1px solid var(--line);border-radius:24px;background:var(--surface)}.complete h1{font-size:27px;margin:12px 0}.complete p{color:var(--muted);margin-bottom:25px}.complete .stats{justify-content:center}.complete button{margin:5px}.loading{padding:25vh 24px;text-align:center;color:var(--muted)}#toast{position:fixed;left:50%;bottom:160px;transform:translate(-50%,15px);opacity:0;transition:.2s;background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:12px;font-size:13px;pointer-events:none;z-index:50;max-width:90vw;text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid var(--line);padding:0;border-radius:16px;background:var(--bg);color:var(--ink);width:min(96vw,1080px);height:90dvh;max-height:90dvh}dialog::backdrop{background:#0009}.viewer-tools{height:60px;padding:8px 12px;display:flex;gap:10px;justify-content:flex-end;border-bottom:1px solid var(--line)}.viewer-tools button{font-size:12px;min-height:38px}.viewer-body{height:calc(100% - 60px);overflow:auto;padding:12px}.viewer-body img{display:block;width:100%;max-width:900px;margin:auto}.viewer-body img.zoomed{width:200%;max-width:none;min-width:1000px}
@media(min-width:1100px){.subject-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.all-subject{grid-column:1/-1}}
@media(max-width:750px){.wrap{padding:20px 18px 25px}.topbar{margin-bottom:27px}.brand strong{font-size:20px}.hero{margin-bottom:23px;gap:10px}.hero h1{font-size:29px;letter-spacing:-.8px}.hero p{font-size:12px;max-width:250px}.hero-number{padding-left:16px}.hero-number b{font-size:39px}.hero-number span{font-size:10px}.dashboard{grid-template-columns:1fr;gap:24px}.settings{position:static;padding:18px;display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.settings h2{grid-column:1/-1;margin-bottom:0}.field{margin:14px 0 0}.settings .filter-field{grid-column:1/-1}.start,.selection-info,.resume{grid-column:1/-1}.start{margin-top:18px}.settings .field-label{font-size:11px}.stats{font-size:11px;margin-bottom:17px;gap:15px}.subject{padding:13px 14px}.subject .name{font-size:15px}.subject .english{font-size:9px;margin-bottom:10px}.catalog{margin-top:27px}.deck{padding:14px 14px calc(155px + env(safe-area-inset-bottom))}.deck-head{margin-bottom:14px}.deck-head button{font-size:12px;padding:7px 11px}.deck-progress{margin-bottom:17px}.card{border-radius:19px}.card-heading{padding:20px 20px 18px}.card h1{font-size:24px}.card .cue{font-size:13px;margin-top:10px}.source-content{padding:13px;gap:12px}.source-part figcaption{font-size:9px}.study-bar{padding:10px 14px calc(10px + env(safe-area-inset-bottom))}.ratings{gap:7px}.ratings button{font-size:12px;padding:8px 5px}.navigation button{padding:5px 12px}.auto{font-size:10px}.footer{gap:10px}.complete{margin:40px 16px;padding:27px 20px}.module-row{padding:12px}}
.typed-content{padding:26px 30px 30px;font-size:16px;line-height:1.8;overflow-wrap:break-word}
.typed-content p{margin:0 0 17px}.typed-content p:last-child{margin-bottom:0}
.typed-content h2{font-size:12px;line-height:1.5;letter-spacing:.9px;color:var(--muted);text-transform:uppercase;margin:27px 0 12px;font-weight:650}
.typed-content>h2:first-child{margin-top:0}.typed-content strong{font-weight:650;color:var(--ink)}
.typed-content ul,.typed-content ol{padding-left:22px;margin:0 0 19px}.typed-content li{padding-left:3px;margin:0 0 9px}.typed-content li::marker{color:var(--green)}
.formula-block{border:1px solid var(--line);background:var(--soft);border-radius:13px;padding:18px 20px;margin:14px 0 20px;max-width:100%}
.formula-label{font:11px/1.5 var(--body);color:var(--muted);margin-bottom:9px;letter-spacing:.3px}
.formula{font:21px/1.95 Georgia,"Times New Roman",serif;color:var(--ink);text-align:center;overflow-wrap:anywhere;max-width:100%}
.formula sup,.formula sub{font-size:.68em;line-height:0}.fraction{display:inline-flex;flex-direction:column;vertical-align:middle;align-items:stretch;max-width:100%;line-height:1.45;margin:2px 3px;text-align:center}
.fraction .numerator,.fraction .denominator{display:block;padding:2px 6px;min-width:0;overflow-wrap:anywhere}
.fraction .numerator{border-bottom:1px solid currentColor}.table-wrap{max-width:100%;margin:16px 0 23px;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.typed-content table{width:100%;border-collapse:collapse;font-size:13px;line-height:1.65;table-layout:fixed;word-break:normal;overflow-wrap:anywhere}
.typed-content th,.typed-content td{padding:12px 13px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}
.typed-content th:last-child,.typed-content td:last-child{border-right:0}.typed-content tbody tr:last-child>*{border-bottom:0}
.typed-content thead th{background:var(--soft);font-weight:650;font-size:11px;color:var(--muted)}.typed-content tbody th{font-weight:550;width:31%}
.memory-tip{border-left:3px solid var(--accent);padding:13px 16px;background:var(--soft);border-radius:0 10px 10px 0;font-size:13px;line-height:1.8;margin-top:25px}
.memory-tip span{display:block;font-size:10px;letter-spacing:1px;color:var(--muted);margin-bottom:5px}.original-diagram{margin:18px auto 24px;max-width:560px}.original-diagram figcaption{font:10px/1.5 var(--body)}
@media(max-width:750px){.typed-content{padding:21px 20px 25px;font-size:15px;line-height:1.8}.typed-content h2{font-size:11px}.formula-block{padding:15px 13px;border-radius:11px}.formula{font-size:19px}.fraction .numerator,.fraction .denominator{padding:2px 4px}.typed-content table{font-size:12px;line-height:1.65}.typed-content th,.typed-content td{padding:10px 8px}.typed-content thead th{font-size:10px}.memory-tip{padding:12px 13px;font-size:12px}.original-diagram figcaption{font-size:9px}}
@media(max-width:360px){.typed-content{padding:19px 15px}.formula{font-size:18px}.settings{grid-template-columns:1fr}.hero h1{font-size:26px}.typed-content th,.typed-content td{padding:9px 6px;font-size:11px}}
.mobile-launch{display:none}
@media(max-width:750px){.wrap{padding-bottom:calc(110px + env(safe-area-inset-bottom))}.mobile-launch{position:fixed;bottom:0;left:0;right:0;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:15px;background:var(--bg);border-top:1px solid var(--line);padding:12px 18px calc(12px + env(safe-area-inset-bottom));font-size:13px}.mobile-launch small{display:block;font-size:10px}.mobile-launch button{font-size:13px;min-width:135px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
