:root{--bg: #f7f6f2;--surface: #ffffff;--surface-2: #f0eee8;--text: #1d1d1b;--text-2: #5c5b56;--text-3: #8a8983;--border: #e3e1da;--border-2: #cfccc3;--accent: #1f6f8b;--accent-bg: #e3f0f4;--accent-text: #164f63;--ok: #2f7d32;--ok-bg: #e6f3e6;--bad: #b3261e;--bad-bg: #fbe9e7;--warn: #8a5a00;--warn-bg: #fdf1d8;--added: #6a4c93;--added-bg: #f1ecf8;--radius: 10px;--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #161615;--surface: #1f1f1d;--surface-2: #2a2a27;--text: #ecebe6;--text-2: #b4b2ab;--text-3: #85847d;--border: #33322f;--border-2: #45443f;--accent: #6cb6cf;--accent-bg: #1c3640;--accent-text: #a9d8e8;--ok: #7cc47f;--ok-bg: #1f3320;--bad: #f08a80;--bad-bg: #3a1f1c;--warn: #e8b85a;--warn-bg: #3a2e14;--added: #c3a8ea;--added-bg: #2c2340;color-scheme:dark}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 var(--font);padding-bottom:calc(64px + env(safe-area-inset-bottom))}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:26px;line-height:1.25;margin:8px 0 12px;font-weight:650}h2.section{font-size:18px;margin:28px 0 10px;font-weight:600}.muted{color:var(--text-2)}.small{font-size:13.5px}.error{color:var(--bad)}.lead{font-size:17px;color:var(--text-2);margin:0 0 8px}.grow{flex:1;min-width:0}.big{font-size:32px;font-weight:650;margin:8px 0}.loading{padding:40px 0;text-align:center}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:16px;padding:10px 16px;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.brand{font-weight:650;color:var(--text)}.topnav{display:none;gap:4px;flex:1}.topnav a{color:var(--text-2);padding:6px 10px;border-radius:8px}.topnav a.active{color:var(--accent-text);background:var(--accent-bg)}.icon-btn{margin-left:auto;color:var(--text-2);display:flex;padding:6px;border-radius:8px}.page{max-width:760px;margin:0 auto;padding:12px 16px 40px}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:10;display:flex;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 6px;font-size:11.5px;color:var(--text-3)}.tabbar a.active{color:var(--accent)}.tabbar a:hover{text-decoration:none}@media (min-width: 820px){body{padding-bottom:0}.tabbar{display:none}.topnav{display:flex}.icon-btn{margin-left:0}}.back{display:inline-flex;align-items:center;gap:2px;color:var(--text-2);font-size:14px;margin:4px 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex-direction:column;font:inherit;font-size:15px;padding:9px 16px;border-radius:var(--radius);cursor:pointer;border:1px solid var(--border-2);background:var(--surface);color:var(--text);text-align:center}.btn:hover{text-decoration:none;background:var(--surface-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(1.08)}@media (prefers-color-scheme: dark){.btn.primary{color:#0e1d22}}.btn.ghost{border-color:transparent;background:transparent;color:var(--text-2)}.btn.wide{width:100%;margin-top:12px}.btn .small{font-size:12px}.btn.primary .muted{color:inherit;opacity:.8}.link-btn{background:none;border:0;color:var(--accent);font:inherit;cursor:pointer;padding:0}.actions{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.actions.center{justify-content:center}.pill{font-size:12px;padding:2px 8px;border-radius:99px;background:var(--surface-2);color:var(--text-3);white-space:nowrap}.bar{height:5px;background:var(--surface-2);border-radius:3px;overflow:hidden;margin-top:6px}.bar i{display:block;height:100%;background:var(--accent);border-radius:3px;transition:width .3s}.mastery{display:flex;align-items:center;gap:10px;margin-top:10px}.mastery .bar{flex:1;margin:0}.tile{display:flex;flex-direction:column;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:14px 16px;margin-bottom:10px;color:var(--text)}.tile-link:hover{text-decoration:none;border-color:var(--border-2)}.row-between{flex-direction:row;align-items:center;justify-content:space-between;gap:12px}.list{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden}.list-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);color:var(--text)}.list-row:last-child{border-bottom:0}.list-row:hover{text-decoration:none;background:var(--surface-2)}.list-row.disabled{color:var(--text-3)}.list-row.disabled:hover{background:none}.list-row.column{flex-direction:column;align-items:flex-start;gap:2px}.empty{text-align:center;padding:24px 12px}.search-input,select,input,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-2);border-radius:var(--radius);padding:9px 12px;width:100%}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}mark{background:color-mix(in srgb,#f5c542 45%,transparent);color:inherit;border-radius:2px;padding:0 1px}.topics{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.topic-row{display:flex;gap:12px;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:12px;color:var(--text)}.topic-row:hover{text-decoration:none;border-color:var(--border-2)}.topic-row .grow{display:flex;flex-direction:column;gap:2px}.topic-row .status{color:var(--text-3)}.num{flex:none;width:28px;height:28px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;font-size:13px;color:var(--text-2)}.num.done{background:var(--ok-bg);color:var(--ok)}.reader h1{font-size:28px}.toc{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 14px;margin:12px 0 8px}.toc summary{cursor:pointer;display:flex;align-items:center;gap:8px;color:var(--text-2)}.toc ol{margin:8px 0 4px;padding-left:22px}.toc li{margin:4px 0}.content{font-size:17px;line-height:1.68}.content h2{font-size:21px;margin:36px 0 12px;line-height:1.3;scroll-margin-top:70px}.content h3{font-size:18px;margin:26px 0 8px}.content h4{font-size:16px;margin:20px 0 6px}.content p{margin:0 0 14px}.content ul,.content ol:not(.flow){padding-left:22px;margin:0 0 14px}.content li{margin:4px 0}.content strong{font-weight:620}.table-wrap{overflow-x:auto;margin:0 0 18px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.content table{border-collapse:collapse;width:100%;font-size:15px;line-height:1.45}.content th,.content td{text-align:left;vertical-align:top;padding:9px 12px;border-bottom:1px solid var(--border)}.content th{background:var(--surface-2);font-weight:600}.content tr:last-child td{border-bottom:0}.cmatrix td,.cmatrix th{text-align:center!important;white-space:nowrap}.cmatrix td:first-child{text-align:left!important}.formula{font-family:"Cambria Math","STIX Two Math",Georgia,serif;font-size:18px;line-height:1.5;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px;margin:0 0 14px;overflow-wrap:anywhere}.note{font-size:14px;color:var(--text-2)}aside.box{border-radius:12px;padding:14px 16px 2px;margin:0 0 18px;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--border-2)}aside.box .box-label{font-size:12px;text-transform:uppercase;letter-spacing:.05em;font-weight:600;color:var(--text-3);margin-bottom:4px}aside.box .box-title{font-weight:640;font-size:17px;margin-bottom:6px}aside.box p{margin-bottom:12px}.box-term{border-left-color:var(--accent)!important;background:var(--accent-bg)!important;border-color:transparent!important}.box-term .box-label{color:var(--accent-text)!important}.box-warn{border-left-color:var(--warn)!important;background:var(--warn-bg)!important;border-color:transparent!important}.box-warn .box-label{color:var(--warn)!important}.box-example{border-left-color:var(--text-3)!important}.box-simple{border-left-color:var(--ok)!important;background:var(--ok-bg)!important;border-color:transparent!important}.box-simple .box-label{color:var(--ok)!important}.box-practice{border-left-color:var(--accent)!important}.box-practice .box-label{color:var(--accent-text)!important}.box-added{border:1px dashed var(--added)!important;border-left:4px solid var(--added)!important;background:var(--added-bg)!important}.box-added .box-label{color:var(--added)!important}ol.flow{list-style:none;counter-reset:step;padding:0;margin:0 0 18px;display:flex;flex-direction:column;gap:0}ol.flow li{counter-increment:step;position:relative;padding:10px 14px 10px 48px;background:var(--surface);border:1px solid var(--border);border-radius:10px;margin:0 0 14px}ol.flow li:before{content:counter(step);position:absolute;left:12px;top:10px;width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--surface);font-size:13px;font-weight:600;display:grid;place-items:center}ol.flow li:not(:last-child):after{content:"";position:absolute;left:23px;bottom:-15px;height:14px;border-left:2px solid var(--border-2)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin:0 0 18px}.cards .card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:4px;font-size:15px;line-height:1.45}.cards .card span{color:var(--text-2)}.ladder{display:flex;flex-direction:column;gap:8px;margin:0 0 18px}.ladder .step{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 14px;display:flex;flex-direction:column;font-size:15px}.ladder .step:nth-child(2){margin-left:16px}.ladder .step:nth-child(3){margin-left:32px}.ladder .step:nth-child(4){margin-left:48px}.ladder .step span{color:var(--text-2)}.fig{margin:0 0 20px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;overflow-x:auto}.fig svg{width:100%;min-width:470px;height:auto;display:block}.fig figcaption{font-size:14px;color:var(--text-2);margin-top:8px}.fig text{fill:var(--text);font-size:13px;text-anchor:middle;font-family:var(--font)}.fig text.h{font-weight:600;font-size:13.5px}.fig text.muted{fill:var(--text-2);font-size:12px}.fig .axis line,.fig .whisk line{stroke:var(--border-2);stroke-width:1.5}.fig .bars rect{fill:var(--accent);opacity:.85}.fig .bars rect.alt{opacity:.45}.fig .node rect{stroke-width:1.2}.fig .node.a rect{fill:var(--accent-bg);stroke:var(--accent)}.fig .node.b rect{fill:var(--ok-bg);stroke:var(--ok)}.fig .node.c rect{fill:var(--added-bg);stroke:var(--added)}.fig .arrow path{fill:none;stroke:var(--text-3);stroke-width:1.6}.fig .ahead{fill:var(--text-3)}.fig .nest rect,.fig .stack rect{stroke:var(--accent);stroke-width:1}.fig .l1{fill:color-mix(in srgb,var(--accent) 6%,var(--surface))}.fig .l2{fill:color-mix(in srgb,var(--accent) 13%,var(--surface))}.fig .l3{fill:color-mix(in srgb,var(--accent) 21%,var(--surface))}.fig .l4{fill:color-mix(in srgb,var(--accent) 30%,var(--surface))}.fig .box rect{fill:var(--accent-bg);stroke:var(--accent)}.fig .box rect.alt{fill:var(--ok-bg);stroke:var(--ok)}.fig .med line{stroke:var(--text);stroke-width:2.5}.topic-end{margin-top:32px;padding-top:16px;border-top:1px solid var(--border)}.pager{display:flex;justify-content:space-between;gap:12px;font-size:14px}.pager a{display:flex;align-items:center;gap:4px;max-width:48%}.pager .right{text-align:right;margin-left:auto}.widget-card{background:var(--surface);border:1px solid var(--accent);border-radius:12px;padding:14px 16px;margin:0 0 20px;font-size:15px}.widget-title{font-weight:620;margin-bottom:10px}.widget-card label{display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--text-2)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-top:10px}.widget-result{display:flex;flex-wrap:wrap;gap:10px 24px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.widget-result>div{display:flex;flex-direction:column}.widget-result b{font-size:22px;font-weight:650}.widget-result.stats b{font-size:18px}.widget-result p{flex-basis:100%;margin:0}.seg{display:inline-flex;border:1px solid var(--border-2);border-radius:var(--radius);overflow:hidden}.seg button{font:inherit;font-size:14px;border:0;background:var(--surface);color:var(--text-2);padding:6px 14px;cursor:pointer}.seg button.on{background:var(--accent);color:var(--surface)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.slider{margin-bottom:6px}.slider input{padding:0;border:0;accent-color:var(--accent)}.scope{display:flex;flex-direction:column;gap:4px;margin:16px 0;color:var(--text-2);font-size:14px}.modes{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.mode{display:flex;flex-direction:column;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;color:var(--text)}.mode:hover{text-decoration:none;border-color:var(--accent)}.mode .count{color:var(--accent-text);margin-top:6px}.trainer{margin-top:16px}.question{font-size:18px;font-weight:560;margin:16px 0 12px;line-height:1.45}.options{display:flex;flex-direction:column;gap:8px}.option{font:inherit;text-align:left;padding:12px 14px;border-radius:var(--radius);border:1px solid var(--border-2);background:var(--surface);color:var(--text);cursor:pointer;line-height:1.4}.option:hover:not(:disabled){border-color:var(--accent)}.option.small{font-size:14px}.option.active{border-color:var(--accent);background:var(--accent-bg)}.option.right{border-color:var(--ok);background:var(--ok-bg)}.option.wrong{border-color:var(--bad);background:var(--bad-bg)}.option.dim{opacity:.55}.option:disabled{cursor:default;color:var(--text)}.feedback{margin-top:12px;border-radius:var(--radius);padding:12px 14px;font-size:15px}.feedback p{margin:6px 0 0}.feedback.ok{background:var(--ok-bg)}.feedback.ok b{color:var(--ok)}.feedback.bad{background:var(--bad-bg)}.feedback.bad b{color:var(--bad)}.feedback.neutral{background:var(--accent-bg)}.calc{display:flex;gap:8px;flex-wrap:wrap}.calc input{flex:1;min-width:160px}.calc .error{flex-basis:100%;margin:0}.flashcard{font:inherit;width:100%;min-height:220px;margin:12px 0;padding:24px;border-radius:16px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center}.flashcard .front{font-size:21px;font-weight:620;line-height:1.35}.flashcard .back{font-size:16.5px;line-height:1.55;color:var(--text-2)}.flashcard.flipped{cursor:default}.grades{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.grades.three{grid-template-columns:repeat(3,1fr);margin-top:12px}.grades .btn{padding:8px 4px}.match{display:grid;grid-template-columns:2fr 3fr;gap:10px}.match>div{display:flex;flex-direction:column;gap:8px}@media (max-width: 520px){.match,.two-col{grid-template-columns:1fr}}.exam-bar{position:sticky;top:53px;z-index:5;display:flex;justify-content:space-between;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 14px;font-variant-numeric:tabular-nums}.exam{padding-left:22px}.exam li{margin-bottom:22px}.exam li .question{font-size:16.5px;margin:0 0 10px}.review{padding-left:22px}.review li{margin-bottom:14px;padding-left:4px}.review li p{margin:2px 0}.review li.ok::marker{color:var(--ok)}.review li.bad::marker{color:var(--bad);font-weight:700}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:12px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column}.stat b{font-size:22px;font-weight:650}.glossary{margin:16px 0}.glossary>div{padding:12px 0;border-bottom:1px solid var(--border)}.glossary dt{font-weight:620}.glossary dd{margin:4px 0 0;color:var(--text-2)}.fig .line path{fill:none;stroke:var(--accent);stroke-width:2.5}.fig .line path.alt{stroke:var(--added);stroke-dasharray:6 4}.fig .line path.ok{stroke:var(--ok)}.fig .grid line{stroke:var(--border);stroke-width:1;stroke-dasharray:3 4}.fig .venn circle{stroke-width:1.5;fill-opacity:.35}.fig .venn .a{fill:var(--accent);stroke:var(--accent)}.fig .venn .b{fill:var(--ok);stroke:var(--ok)}.fig .venn .c{fill:var(--added);stroke:var(--added)}.auth{max-width:420px;margin:24px auto 0}.auth-brand{color:var(--accent);font-weight:650;margin-bottom:4px}.auth-form{display:flex;flex-direction:column;gap:12px;margin-top:12px}.auth-form label{display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--text-2)}.auth-form .btn.wide{margin-top:4px}.auth-code{margin-top:28px;padding-top:16px;border-top:1px solid var(--border)}.auth-code p{margin:0 0 6px}.auth-row{display:flex;gap:8px;align-items:center}.auth-row input{flex:1;min-width:0}.auth-error{color:#c0392b;margin:0}@media (prefers-color-scheme: dark){.auth-error{color:#ff8a7a}}.linkbox{display:flex;flex-direction:column;gap:8px;margin-top:12px;padding:14px;background:var(--surface);border:1px solid var(--accent);border-radius:14px}.linkbox p{margin:0}.admin-actions{display:flex;gap:14px;flex-shrink:0}.link-btn.danger{color:#c0392b}@media (prefers-color-scheme: dark){.link-btn.danger{color:#ff8a7a}}@media (max-width: 520px){.list-row.row-between{flex-direction:column;align-items:flex-start}}@media (max-width: 560px){.table-wrap.stack{border:0;background:none;overflow:visible}.table-wrap.stack table,.table-wrap.stack tbody,.table-wrap.stack tr,.table-wrap.stack td{display:block;width:100%}.table-wrap.stack thead{display:none}.table-wrap.stack tr{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:8px 12px;margin-bottom:8px}.table-wrap.stack td{border:0!important;padding:4px 0!important}.table-wrap.stack td[data-label]:not([data-label=""]):before{content:attr(data-label);display:block;font-size:12px;color:var(--text-2)}.table-wrap.stack td:first-child{font-weight:600}}.table-wrap:focus-visible,.fig:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.scroll-hint{display:block;font-size:12px;color:var(--text-2);margin:-12px 0 14px}.next-steps{display:flex;flex-direction:column;gap:8px;margin:12px 0 16px}.step-link{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:12px;color:var(--text)}.step-link:hover{text-decoration:none;background:var(--surface-2)}.step-link .n{width:26px;height:26px;border-radius:50%;background:var(--accent-bg);color:var(--accent);display:grid;place-items:center;font-size:13px;font-weight:600;flex-shrink:0}.step-link.main{border-color:var(--accent)}.meta-line{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--text-2);font-size:14px;margin:0 0 14px}.hint{font-size:13px;color:var(--text-2);margin:6px 0 0}.about{margin:0 0 12px}.about summary{cursor:pointer;color:var(--accent);font-size:14px;margin-top:4px}.about p{margin:0}.about:not([open]) .lead{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.split-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:10px 0 14px}.status-pill{display:inline-block;font-size:12px;padding:1px 8px;border-radius:10px;background:var(--surface-2);color:var(--text-2)}.status-pill.ok{background:var(--ok-bg);color:var(--ok)}.status-pill.warn{background:var(--added-bg);color:var(--added)}.status-pill.read{background:var(--accent-bg);color:var(--accent)}details.subject-block>summary{list-style:none;cursor:pointer}details.subject-block>summary::-webkit-details-marker{display:none}details.subject-block>summary h2:after{content:" ▾";color:var(--text-3);font-size:14px}details.subject-block:not([open])>summary h2:after{content:" ▸"}.match-picked{position:sticky;top:64px;z-index:2;background:var(--accent-bg);color:var(--text);border:1px solid var(--accent);border-radius:10px;padding:8px 12px;font-size:14px;display:flex;justify-content:space-between;gap:8px;align-items:center}.toc-fab{position:fixed;right:16px;bottom:calc(80px + env(safe-area-inset-bottom));z-index:5;width:44px;height:44px;border-radius:50%;border:1px solid var(--border-2);background:var(--surface);color:var(--text);display:grid;place-items:center;box-shadow:0 2px 8px #0000001f;cursor:pointer}@media (min-width: 900px){.toc-fab{bottom:24px}}.skeleton{display:flex;flex-direction:column;gap:10px}.skeleton i{display:block;height:54px;border-radius:12px;background:var(--surface-2);animation:pulse 1.2s ease-in-out infinite}.skeleton i:first-child{height:30px;width:50%}@keyframes pulse{50%{opacity:.5}}.calc-label{display:block;font-size:14px;color:var(--text-2);margin:4px 0}.calc .calc-label,.calc .hint{flex-basis:100%;margin-top:0}.section-sub{font-size:15px;font-weight:600;margin:20px 0 8px}.admin-actions.wrap{flex-wrap:wrap;gap:8px;margin:12px 0 4px}.btn.danger{color:#c0392b}@media (prefers-color-scheme: dark){.btn.danger{color:#ff8a7a}}.list-row .status-pill+.status-pill{margin-left:4px}.activity{display:grid;grid-template-columns:repeat(14,1fr);gap:4px;height:90px;align-items:end;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 10px 4px}.activity-col{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:3px}.activity-col i{display:block;width:100%;max-width:18px;min-height:2px;background:var(--accent);border-radius:3px 3px 0 0}.activity-col i.zero{background:var(--surface-2)}.activity-col span{font-size:10px;color:var(--text-3)}
