:root{--bg: #0f1115;--card: #171a21;--ink: #e8eaed;--ink2: #9aa0a6;--line: #262b34;--accent: #4c8dff;--ok: #34c759;--bad: #ff453a;--radius: 14px}@media(prefers-color-scheme:light){:root{--bg: #f7f8fa;--card: #ffffff;--ink: #14181d;--ink2: #6b7280;--line: #e5e7eb;--accent: #2563eb;--ok: #15803d;--bad: #dc2626}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink)}body{font:15px/1.6 -apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,sans-serif;-webkit-text-size-adjust:100%;padding-bottom:calc(64px + env(safe-area-inset-bottom))}.app{min-height:100vh}.view{max-width:640px;margin:0 auto;padding:20px 16px 8px}h1{font-size:22px;margin:0 0 14px;letter-spacing:-.01em}h2{font-size:15px;margin:0 0 8px;color:var(--ink)}p{margin:8px 0}.muted{color:var(--ink2)}.small{font-size:13px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:12px}.row{display:flex;justify-content:space-around;gap:8px;text-align:center}.metric-num{font-size:26px;font-weight:650;line-height:1.2}.metric-label{font-size:12px;color:var(--ink2)}.big-num{font-size:20px;font-weight:600}button{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:10px;min-height:44px;padding:10px 14px;cursor:pointer;-webkit-tap-highlight-color:transparent}button:hover{border-color:var(--ink2)}button:disabled{cursor:default}.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.primary:hover{filter:brightness(1.06);border-color:var(--accent)}.ghost{background:transparent;border-color:transparent;padding:6px 8px;color:var(--accent);min-height:36px}.danger{color:var(--bad);border-color:var(--bad);background:transparent;width:100%}.big-btn{width:100%;min-height:52px;margin-top:14px;font-size:16px}.row-btns{display:flex;gap:8px;margin:10px 0}.row-btns button{flex:1}.spread{display:flex;justify-content:space-between;align-items:center;gap:10px}.plain{list-style:none;margin:0;padding:0}.plain li{padding:8px 0;border-bottom:1px solid var(--line)}.plain li:last-child{border-bottom:0}.link-row{display:flex;justify-content:space-between;width:100%;background:transparent;border:0;padding:4px 0;text-align:left;min-height:32px}.bar{height:6px;background:var(--line);border-radius:3px;overflow:hidden;margin:6px 0}.bar-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .25s ease}.nav{position:fixed;left:0;right:0;bottom:0;display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:20}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;border-radius:0;background:transparent;padding:8px 0;color:var(--ink2);min-height:56px}.nav-item.on{color:var(--accent)}.nav-icon{font-size:17px;line-height:1}.nav-label{font-size:11px}.quiz-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.quiz-card{margin-top:12px}.stem{font-size:17px;line-height:1.55;font-weight:500;margin:0 0 14px}.options{display:flex;flex-direction:column;gap:8px}.option{display:flex;gap:10px;align-items:flex-start;text-align:left;min-height:52px;padding:12px 14px;line-height:1.5}.option .idx{flex:0 0 20px;color:var(--ink2);font-variant-numeric:tabular-nums}.option.correct{border-color:var(--ok);color:var(--ok)}.option.correct .idx{color:var(--ok)}.option.wrong{border-color:var(--bad);color:var(--bad)}.option.wrong .idx{color:var(--bad)}.option.dim{opacity:.45}.result{margin-top:14px;padding:14px;border-radius:10px;border:1px solid var(--line)}.result.ok{border-color:var(--ok)}.result.bad{border-color:var(--bad)}.verdict{font-weight:600;margin:0 0 6px}.result.ok .verdict{color:var(--ok)}.result.bad .verdict{color:var(--bad)}.explain{margin:0 0 6px}.ref{font-size:13px;color:var(--ink2);margin:4px 0}.tags{margin:6px 0 0}.tag{display:inline-block;font-size:12px;color:var(--ink2);border:1px solid var(--line);border-radius:999px;padding:1px 8px;margin:0 6px 4px 0}.tag-new{color:var(--accent)}.tag-due{color:var(--bad)}.grades{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.grade{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:58px;justify-content:center}.grade-main{font-weight:600}.grade-sub{font-size:12px;color:var(--ink2)}.grade.good{border-color:var(--ok)}.grade.again{border-color:var(--bad)}.hint{margin:8px 0 0;text-align:center}.field{display:block;margin:12px 0}.field span{display:block;font-size:13px;color:var(--ink2);margin-bottom:6px}input{width:100%;min-height:44px;padding:10px 12px;font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px}input:focus{outline:2px solid var(--accent);outline-offset:-1px}.code-box{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:6px 6px 6px 12px;margin:8px 0}.code-box code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:17px;letter-spacing:2px}.file-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;cursor:pointer;flex:1}.file-btn input{display:none}.bars{display:flex;align-items:flex-end;gap:2px;height:80px;margin:10px 0 6px}.bar-col{flex:1;height:100%;display:flex;align-items:flex-end}.bar-inner{width:100%;background:var(--accent);border-radius:2px 2px 0 0;min-height:3px}.bar-col.zero .bar-inner{background:var(--line)}.toast{position:sticky;top:0;z-index:30;max-width:640px;margin:0 auto;padding:10px 16px;background:var(--accent);color:#fff;font-size:14px;border-radius:0 0 10px 10px}@media(min-width:700px){.view{padding-top:32px}.nav{position:sticky;bottom:0;max-width:640px;margin:0 auto;border:1px solid var(--line);border-radius:14px 14px 0 0}body{padding-bottom:0}}
