:root{--bg:#eef4f3;--card:#fff;--ink:#0f2530;--mut:#5b7078;--line:#dbe6e4;--acc:#0f766e;--accbg:#d9f1ee;--ok:#15803d;--okbg:#e2f5e8;--warn:#a85a00;--warnbg:#fff1d6;--bad:#b42318;--badbg:#fde8e6;--sh:0 1px 2px rgba(15,37,48,.06),0 6px 20px rgba(15,37,48,.05);color-scheme:light dark}
@media(prefers-color-scheme:dark){:root{--bg:#0a1517;--card:#112126;--ink:#e6f0ef;--mut:#92aaaa;--line:#21383c;--acc:#4fd1c5;--accbg:#12383a;--ok:#5fd68a;--okbg:#12301f;--warn:#f0b35a;--warnbg:#3a2b0e;--bad:#f58a80;--badbg:#3a1a18;--sh:none}}
*{box-sizing:border-box}body{margin:0;font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink);-webkit-tap-highlight-color:transparent}
button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0;border-radius:12px;padding:11px 16px;min-height:44px;font-weight:600;transition:background .15s,opacity .15s}
button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
@media(hover:hover){button:hover{filter:brightness(.96)}}button:disabled{opacity:.45;cursor:not-allowed}
.primary{background:var(--acc);color:#fff}@media(prefers-color-scheme:dark){.primary{color:#062a28}}
.secondary{background:var(--accbg);color:var(--acc)}.danger{background:var(--badbg);color:var(--bad)}.small{padding:6px 12px;min-height:36px;font-size:13px}
.filebtn{display:inline-flex;align-items:center;background:var(--accbg);color:var(--acc);padding:11px 16px;min-height:44px;border-radius:12px;font-weight:600;cursor:pointer}.filebtn input{display:none}
header{background:var(--ink);color:#fff;padding-top:env(safe-area-inset-top)}@media(prefers-color-scheme:dark){header{background:#0d1d20}}
.header-inner,main{max-width:980px;margin:auto}.header-inner{padding:16px 18px;display:flex;gap:12px;align-items:center}
.logo{width:42px;height:42px;border-radius:12px;background:#2dd4bf;color:#06322e;display:grid;place-items:center;font-weight:800;letter-spacing:.5px}
h1,h2,h3,h4,p{margin-top:0}h1{font-size:19px;margin-bottom:1px}header p{margin:0;color:#a8c3c2;font-size:13px}main{padding:16px 16px 96px}
.cloudbar{display:flex;gap:8px;align-items:center;padding:8px 16px;font-size:12px;color:var(--mut);max-width:980px;margin:auto}.cloudbar #cloudStatus{margin-right:auto}.cloudbar button{min-height:34px;padding:5px 12px;font-size:12px}
.cloud-ok{color:var(--ok)}.cloud-warn{color:var(--warn)}.cloud-error{color:var(--bad)}
.card,.hero,.subject,.stat,.complete-panel{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh)}
.card{padding:16px;margin:12px 0}.hero{padding:16px 18px;margin-bottom:12px}.hero h2{margin-bottom:4px;font-size:20px}.hero p,.muted{color:var(--mut);font-size:13px;margin-bottom:0}
.today{display:flex;gap:18px;align-items:center;margin:0 0 12px;background:linear-gradient(135deg,var(--accbg),var(--card) 70%)}.today h2{margin:0 0 2px;font-size:20px}.today-txt p{margin-bottom:10px}
.ring{--p:0%;flex:0 0 96px;width:96px;height:96px;border-radius:50%;background:conic-gradient(var(--acc) var(--p),var(--line) 0);display:grid;place-items:center;position:relative}.ring::before{content:"";position:absolute;inset:10px;border-radius:50%;background:var(--card)}.ring b{position:relative;font-size:17px;font-variant-numeric:tabular-nums}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}.stat{padding:12px}.stat span{display:block;color:var(--mut);font-size:12px}.stat b{font-size:22px;font-variant-numeric:tabular-nums}.smallstats{margin:10px 0}.smallstats .stat b{font-size:19px}
nav{display:flex;gap:6px;overflow:auto;margin-bottom:14px}nav button{background:var(--card);border:1px solid var(--line);white-space:nowrap;color:var(--mut);display:flex;gap:6px;align-items:center}nav button i{font-style:normal}nav button.active{background:var(--acc);border-color:var(--acc);color:#fff}@media(prefers-color-scheme:dark){nav button.active{color:#062a28}}nav button[hidden]{display:none}
.page{display:none}.page.active{display:block}.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.card label{display:block;font-size:12px;color:var(--mut);margin:10px 0 5px}input,select{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 12px;min-height:44px}.card input,.card select,#search{width:100%}#search{margin-bottom:10px}
.complete-panel{position:sticky;top:0;z-index:20;display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:10px 12px;margin-bottom:12px}.complete-panel select{min-width:200px}.complete-panel span{font-size:13px;color:var(--mut);flex:1;min-width:160px}
.subject{margin:10px 0;overflow:hidden}.subject summary{list-style:none;padding:14px;font-weight:700;display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;cursor:pointer;min-height:52px}.subject summary::-webkit-details-marker{display:none}.sname{flex:1}.meta{font-size:13px;color:var(--mut);font-weight:500;font-variant-numeric:tabular-nums}.meta b{color:var(--acc)}
.sbar{flex:0 0 100%;height:5px;border-radius:5px;background:var(--line);overflow:hidden}.sbar u{display:block;height:100%;background:var(--acc);border-radius:5px}
.subject[open] summary{border-bottom:1px solid var(--line)}.body{padding:0 8px 10px}.section{font-size:12px;font-weight:700;color:var(--acc);padding:14px 6px 6px}
.topic{display:flex;align-items:center;gap:10px;padding:8px 8px;border-radius:10px;min-height:44px}.topic-name{flex:1}.serial-number{flex:0 0 34px;text-align:right;font-variant-numeric:tabular-nums;color:var(--mut);font-size:12px}.duration{font-size:12px;color:var(--mut)}
.topic.completed{background:var(--okbg);color:var(--ok)}.topic.completed .topic-name{font-weight:600}.topic.selected{background:var(--accbg);outline:2px solid var(--acc)}.topic.selectable{cursor:pointer}.topic input{width:20px;height:20px;min-height:0;accent-color:var(--acc)}
.done-mark{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--ok);color:#fff;font-size:12px;font-weight:800}.empty-mark{width:22px;height:22px;border-radius:50%;border:2px solid var(--line)}
.big{font-size:36px;font-weight:800;margin:6px 0;font-variant-numeric:tabular-nums}.bar{height:10px;background:var(--line);border-radius:10px;overflow:hidden}.bar i{display:block;height:100%;width:0;background:var(--acc);border-radius:10px;transition:width .3s}.item{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}
.revision-group{border:1px solid var(--line);border-radius:14px;padding:12px;margin:10px 0}.revision-group h4{margin:0 0 8px;display:flex;gap:8px;align-items:center}
.revision-topic-card{background:var(--bg);border-radius:12px;padding:12px;margin:8px 0}.revision-topic-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.revision-topic-name{font-weight:600;flex:1}.revision-topic-meta{margin:4px 0 0;font-size:12px}
.revision-topic-actions,.revision-group .actions{display:flex;gap:8px;margin-top:10px}.revision-topic-actions button{flex:1}
[data-action=forgot]{background:var(--badbg)!important;color:var(--bad)!important}[data-action=good]{background:var(--warnbg)!important;color:var(--warn)!important}[data-action=easy]{background:var(--okbg)!important;color:var(--ok)!important}
.tag{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600;background:var(--accbg);color:var(--acc)}.tag.never{background:var(--badbg);color:var(--bad)}.tag.manual{background:var(--warnbg);color:var(--warn)}.tag.auto{background:var(--okbg);color:var(--ok)}
.admin-topic,.checkrow{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--line)}.admin-topic span{flex:1}.checkrow input{width:20px;min-height:0;accent-color:var(--acc)}
.settings-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.settings-grid label{margin:0}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}.row b{margin-right:auto}
.notice{background:var(--warnbg);color:var(--warn);border-radius:14px;padding:12px 14px;margin-bottom:12px;font-size:13px}#resetProgress,#adminRemoveSubject{margin-left:auto}
.account-info{display:grid;grid-template-columns:1fr 1fr;gap:18px}.history-date{margin-bottom:22px}.history-date>h3{margin-bottom:8px;position:sticky;top:0;background:var(--card);padding:6px 0;z-index:5}.history-header{padding:10px 0;border-top:1px solid var(--line)}.history-header h4{margin:0 0 6px;color:var(--acc)}.history-subject{margin:0 0 8px 10px}.history-topic{display:flex;justify-content:space-between;gap:12px;padding:7px 0 7px 12px;border-bottom:1px solid var(--line)}
.auth-overlay{position:fixed;inset:0;background:rgba(10,21,23,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.auth-overlay.hidden{display:none}
.auth-card{width:min(420px,100%);background:var(--card);border-radius:20px;padding:26px;box-shadow:0 24px 60px rgba(0,0,0,.3)}.auth-card h2{margin-bottom:4px}.auth-card input{display:block;width:100%;margin:10px 0}.auth-card .row button{flex:1}.auth-display-name-row[hidden]{display:none!important}
@media(max-width:700px){main{padding:12px 12px 100px}.stats{grid-template-columns:repeat(2,1fr)}.grid,.settings-grid,.account-info{grid-template-columns:1fr}.duration{display:none}.history-topic{display:block}.history-topic .muted{display:block}.today{gap:14px}
nav{position:fixed;left:0;right:0;bottom:0;z-index:50;margin:0;gap:0;background:var(--card);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}nav button{flex:1;flex-direction:column;gap:2px;border:0;background:none;padding:6px 2px;min-height:52px;font-size:11px;border-radius:10px}nav button i{font-size:19px}nav button.active{background:var(--accbg);color:var(--acc)}.cloudbar{flex-wrap:wrap}.cloudbar #cloudStatus{width:100%}.complete-panel select{min-width:0;flex:1}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--ok);color:#fff;padding:12px 20px;border-radius:999px;font-weight:700;z-index:2000;box-shadow:0 8px 24px rgba(0,0,0,.25);animation:pop .35s ease-out}@keyframes pop{from{transform:translate(-50%,16px) scale(.9);opacity:0}}
.nxt{display:block;font-size:12px;font-weight:500;color:var(--mut)}.chk{display:flex;gap:8px;align-items:center;margin:0 0 10px;font-size:13px;color:var(--mut)}.chk input{width:20px;min-height:0;accent-color:var(--acc)}
.cal{display:flex;gap:4px;align-items:flex-end;height:110px}.calcol{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;font-size:11px;color:var(--mut)}.calcol i{display:block;width:100%;min-height:3px;background:var(--acc);border-radius:4px 4px 0 0}.calcol small{opacity:.7}
