:root{--bg:#f4f6f8;--surface:#fff;--surface-2:#f8fafb;--ink:#151a21;--ink-2:#5b6675;--ink-3:#8a94a3;--line:#e3e7ec;--line-strong:#cfd6de;--brand:#27a05b;--brand-ink:#1b7742;--brand-soft:#e7f5ed;--accent:#f59a15;--accent-soft:#fff3e0;--accent-ink:#8a5a00;--brand-mid:#bfe3ce;--danger:#d94b3f;--danger-soft:#fcedec;--info:#3b6fd4;--info-soft:#eaf1fd;--r-sm:8px;--r-md:12px;--r-lg:18px;--r-xl:26px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--shadow:0 1px 2px #151a210f, 0 8px 24px #151a2114;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.45}#root{flex-direction:column;min-height:100dvh;display:flex}.app-shell{background:var(--surface-2);flex-direction:column;flex:1;width:100%;max-width:480px;margin:0 auto;display:flex}@media (width>=481px){.app-shell{border-left:1px solid var(--line);border-right:1px solid var(--line)}}.appbar{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4) var(--sp-3);border-bottom:1px solid var(--line);background:var(--surface);z-index:2;display:flex;position:sticky;top:0}.appbar h1{letter-spacing:-.01em;margin:0;font-size:16px;font-weight:700}.appbar .spacer{flex:1}.app-main{padding:var(--sp-4);background:var(--surface-2);flex:1}.tabbar{border-top:1px solid var(--line);background:var(--surface);z-index:2;padding-bottom:env(safe-area-inset-bottom,0px);grid-template-columns:repeat(4,1fr);display:grid;position:sticky;bottom:0}.tab{text-align:center;color:var(--ink-3);padding:9px 0 11px;font-size:11px;font-weight:600;text-decoration:none}.tab .ic{margin:0 auto 3px;display:block}.tab.on{color:var(--brand-ink)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4)}.card+.card{margin-top:var(--sp-3)}.card h2{margin:0 0 var(--sp-2);font-size:13.5px;font-weight:700}.muted{color:var(--ink-2);margin:0;font-size:12.5px}.tiny{color:var(--ink-3);font-size:11.5px}.row{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.row+.row{margin-top:var(--sp-3)}.field{margin-bottom:var(--sp-3)}.field label{color:var(--ink-2);margin-bottom:5px;font-size:12px;font-weight:700;display:block}.input{border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);padding:11px var(--sp-3);color:var(--ink);width:100%;font-size:14px;font-family:var(--font);display:block}.input::placeholder{color:var(--ink-3)}.input:focus-visible{outline:2px solid var(--brand);outline-offset:1px;border-color:var(--brand)}.input:disabled{background:var(--surface-2);color:var(--ink-3)}.hint{color:var(--ink-3);margin-top:5px;font-size:11px}.topic-picker{gap:var(--sp-2);display:grid}.topic-path{margin:var(--sp-2) 0 0;color:var(--ink);font-size:14px}.btn{text-align:center;width:100%;padding:11px var(--sp-3);border-radius:var(--r-sm);background:var(--brand);color:var(--surface);border:1px solid var(--brand);font-size:13.5px;font-weight:700;font-family:var(--font);cursor:pointer;text-decoration:none;display:block}.btn.ghost{background:var(--surface);color:var(--brand-ink);border-color:var(--line-strong)}.btn.sm{padding:8px var(--sp-2);font-size:12.5px}.btn.neutral{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn:focus-visible{outline:2px solid var(--brand-ink);outline-offset:2px}.btn:disabled{opacity:.6;cursor:default}.btn-row{gap:var(--sp-2);margin-top:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}.link{color:var(--brand-ink);font-weight:700;text-decoration:none}.link:focus-visible{outline:2px solid var(--brand-ink);outline-offset:2px}.note{border-radius:var(--r-md);padding:var(--sp-3);border:1px solid var(--danger);background:var(--danger-soft);color:var(--danger);margin-bottom:var(--sp-3);font-size:12px}.note b{font-weight:700}.subject{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin:var(--sp-4) 0 var(--sp-2);font-size:11px;font-weight:800}.subject:first-child{margin-top:0}.branch{letter-spacing:.04em;color:var(--ink-2);margin:var(--sp-3) 0 var(--sp-2);font-size:11px;font-weight:700}.topic{align-items:center;gap:var(--sp-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:11px var(--sp-3);color:inherit;text-decoration:none;display:flex}.topic+.topic{margin-top:var(--sp-2)}.topic .name{font-size:13.5px;font-weight:600;display:block}.topic .pct{color:var(--ink-2);font-size:12px;font-weight:700}.topic .prog{margin-top:6px}.topic:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.pill-ok{background:var(--brand-soft);color:var(--brand-ink);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:10.5px;font-weight:800;display:inline-block}.pill-warn{background:var(--accent-soft);color:var(--accent-ink);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:10.5px;font-weight:800;display:inline-block}.lock-banner{background:var(--danger-soft);border:1px solid var(--danger);border-radius:var(--r-md);padding:var(--sp-3);margin-bottom:var(--sp-3)}.lock-banner h2{color:var(--danger);margin:0 0 4px;font-size:13.5px;font-weight:700}.lock-banner p{color:var(--danger);margin:0;font-size:12px}.locked-item{align-items:center;gap:var(--sp-3);background:var(--bg);border:1px dashed var(--line-strong);border-radius:var(--r-md);padding:11px var(--sp-3);color:var(--ink-3);display:flex}.locked-item+.locked-item{margin-top:var(--sp-2)}.locked-item .name{flex:1;font-size:13.5px;font-weight:600}.lesson-view{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);width:100%;min-height:320px;display:block;overflow:hidden}.lesson-canvas{width:100%;height:auto;display:block}.lesson-pager{align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);display:flex}.lesson-pager .btn{flex:1}.page-count{color:var(--ink);font-size:11.5px;font-weight:700}.lesson-actions{margin:var(--sp-4) calc(-1 * var(--sp-4)) calc(-1 * var(--sp-4));padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--line);background:var(--surface);padding-bottom:calc(var(--sp-3) + env(safe-area-inset-bottom,0px));position:sticky;bottom:0}.lesson-fallback{margin-top:var(--sp-2);display:block}.timeline{margin:var(--sp-3) 0 var(--sp-2);align-items:center;gap:6px;display:flex}.seg{border-radius:999px;flex:1;height:10px}.seg.now{background:var(--brand)}.seg.next{background:var(--brand-mid)}.tl-labels{color:var(--ink-3);justify-content:space-between;font-size:10.5px;font-weight:600;display:flex}.note.ok{border-color:var(--brand-mid);background:var(--brand-soft);color:var(--brand-ink)}.note.info{border-color:var(--info);background:var(--info-soft);color:var(--info)}.bar{background:var(--line);border-radius:999px;height:9px;display:block;overflow:hidden}.bar>span{background:var(--brand);border-radius:999px;height:100%;display:block}.bar.thin{height:7px}.bar.grey>span{background:var(--line-strong)}.qtag{background:var(--info-soft);color:var(--info);border-radius:999px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-block}.qtext{margin:var(--sp-3) 0 var(--sp-4);font-size:14.5px;font-weight:600;line-height:1.5}.opt{align-items:center;gap:var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r-md);padding:12px var(--sp-3);background:var(--surface);color:inherit;text-align:left;width:100%;font-size:13.5px;font-family:var(--font);cursor:pointer;text-decoration:none;display:flex}.opt+.opt{margin-top:var(--sp-2)}.opt .key{border:1px solid var(--line-strong);width:24px;height:24px;color:var(--ink-2);border-radius:50%;flex:0 0 24px;justify-content:center;align-items:center;font-size:12px;font-weight:800;display:flex}.opt:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.opt:disabled{cursor:default}.opt.correct{border-color:var(--brand);background:var(--brand-soft)}.opt.correct .key{background:var(--brand);border-color:var(--brand);color:var(--surface)}.opt.wrong{border-color:var(--danger);background:var(--danger-soft)}.opt.wrong .key{background:var(--danger);border-color:var(--danger);color:var(--surface)}.card.judged-ok{background:var(--brand-soft);border-color:var(--brand-mid)}.card.judged-ok h2{color:var(--brand-ink)}.card.judged-wrong{background:var(--danger-soft);border-color:var(--danger)}.card.judged-wrong h2{color:var(--danger)}.daily-count{color:var(--ink-3);font-size:11.5px;font-weight:700}.weak{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--danger);border-radius:var(--r-md);padding:var(--sp-3)}.weak+.weak{margin-top:var(--sp-3)}.weak .top{justify-content:space-between;align-items:baseline;gap:var(--sp-2);display:flex}.weak .t{font-size:13.5px;font-weight:700}.weak .s{color:var(--danger);font-size:12px;font-weight:700}.weak .sub{color:var(--ink-3);margin-top:1px;font-size:11.5px}.nodata{align-items:center;gap:var(--sp-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:11px var(--sp-3);display:flex}.nodata+.nodata{margin-top:var(--sp-2)}.nodata .name{font-size:13.5px;font-weight:600;display:block}.nodata .prog{margin-top:6px}.pill-grey{background:var(--bg);color:var(--ink-3);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:10.5px;font-weight:800;display:inline-block}.streak{background:var(--accent-soft);color:var(--accent-ink);border-radius:999px;align-items:center;gap:5px;padding:4px 10px;font-size:12.5px;font-weight:700;display:inline-flex}.streak svg{fill:var(--accent)}.goal{align-items:center;gap:var(--sp-4);display:flex}.ring{background:conic-gradient(var(--brand) 0 var(--swept), var(--line) var(--swept) 100%);border-radius:50%;flex:0 0 92px;justify-content:center;align-items:center;width:92px;height:92px;display:flex}.ring .hole{background:var(--surface);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:70px;height:70px;line-height:1.1;display:flex}.ring .num{letter-spacing:-.02em;font-size:19px;font-weight:800}.ring .den{color:var(--ink-3);font-size:10.5px;font-weight:600}.company-page{padding:var(--sp-5) var(--sp-4);flex:1;width:100%;max-width:1180px;margin:0 auto}.desk{background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-lg);box-shadow:var(--shadow);overflow:hidden}.desk-bar{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line);display:flex}.desk-bar .t{font-size:14px;font-weight:700}.desk-bar .who{color:var(--ink-2);margin-left:auto;font-size:12px}.desk-body{gap:var(--sp-4);padding:var(--sp-4);background:var(--surface-2);grid-template-columns:1fr 1fr;display:grid}@media (width<=700px){.desk-body{grid-template-columns:1fr}}.drop{border:2px dashed var(--line-strong);border-radius:var(--r-md);background:var(--surface);padding:var(--sp-5) var(--sp-4);text-align:center;width:100%;font-family:var(--font);color:var(--ink);cursor:pointer;display:block}.drop .big{margin-bottom:4px;font-size:13.5px;font-weight:700;display:block}.drop .tiny{display:block}.drop:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.drop.dragging{border-color:var(--brand);background:var(--brand-soft)}.drop:disabled{cursor:default;color:var(--ink-3);background:var(--surface-2)}.desk-body table{border-collapse:collapse;width:100%;margin-top:var(--sp-3);font-size:12.5px}.desk-body th,.desk-body td{text-align:left;border-bottom:1px solid var(--line);padding:8px 10px}.desk-body th{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);font-size:11px}.desk-body .num{text-align:right}.import-report{margin-top:var(--sp-3)}.rejects{padding-left:var(--sp-4);color:var(--ink-3);margin:5px 0 0;font-size:11px}.rejects li{margin-top:2px}
