:root{--paper: #fbf6ea;--paper-2: #f3e9d2;--card: #ffffff;--ink: #2b2118;--ink-soft: #6b5a48;--line: #e2d4b4;--red: #8e2b1f;--gold: #e0b14a;--good: #2f7a3a;--good-bg: #e3f3e2;--mid: #9a6a0c;--mid-bg: #fdf1d2;--low: #b0321f;--low-bg: #fbe2dc;--serif: "PT Serif", Georgia, serif;--sans: "PT Sans", "Segoe UI", Arial, sans-serif}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper: #1d1914;--paper-2: #2a241c;--card: #262019;--ink: #f1e8d8;--ink-soft: #b9a98f;--line: #463b2d;--red: #e07a62;--good: #7cc983;--good-bg: #1f3522;--mid: #e6b54d;--mid-bg: #3a2f17;--low: #f08a72;--low-bg: #3d2119}}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.45 var(--sans)}h1,h2,h3{font-family:var(--serif);margin:0 0 6px}h2{font-size:1.35rem}h3{font-size:1.05rem;color:var(--red)}.muted{color:var(--ink-soft)}.err{color:var(--low);font-weight:700;min-height:1.2em;margin:4px 0}.btn{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:9px;padding:8px 14px;font:700 .92rem var(--sans);cursor:pointer}.btn:hover{border-color:var(--gold)}.btn.primary{background:var(--red);border-color:var(--red);color:#fff}.btn.danger{background:var(--low);border-color:var(--low);color:#fff}.btn.ghost{background:transparent}.btn.small{padding:4px 9px;font-size:.8rem}.btn.wide{width:100%;padding:11px}.danger-text{color:var(--low)}input{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:9px;font:inherit;background:var(--card);color:var(--ink)}input:focus{outline:2px solid var(--gold);border-color:var(--gold)}label{display:flex;flex-direction:column;gap:4px;font-weight:700;font-size:.9rem}.row{display:flex;gap:8px}.row.end{justify-content:flex-end}.login{min-height:100vh;display:grid;place-items:center;padding:16px}.login .card{width:100%;max-width:400px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:0 8px 30px #00000014;text-align:center}.login form{display:flex;flex-direction:column;gap:10px;text-align:left;margin-top:12px}.crest{font-size:2.6rem}.tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:var(--paper-2);padding:4px;border-radius:10px;margin-top:14px}.tabs button{border:0;background:none;border-radius:8px;padding:8px;font:700 .9rem var(--sans);color:var(--ink-soft);cursor:pointer}.tabs button.on{background:var(--card);color:var(--red);box-shadow:0 1px 3px #0000001f}header{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:2}header b{font-family:var(--serif);font-size:1.1rem;margin-right:auto}.layout{display:grid;grid-template-columns:240px 1fr;gap:16px;padding:16px;max-width:1280px;margin:0 auto}aside{display:flex;flex-direction:column;gap:8px}.classes{display:flex;flex-direction:column;gap:6px}.cls{text-align:left;border:1px solid var(--line);background:var(--card);border-radius:10px;padding:8px 10px;cursor:pointer;color:var(--ink);font:inherit;display:flex;flex-direction:column}.cls small{color:var(--ink-soft)}.cls.on{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold) inset}.newc{display:flex;gap:6px}main section{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-top:14px}.top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.stats{display:flex;flex-wrap:wrap;gap:6px 16px;color:var(--ink-soft)}.stats b{color:var(--ink)}.code{background:var(--card);border:2px dashed var(--gold);border-radius:14px;padding:8px 18px;text-align:center;display:flex;flex-direction:column}.code b{font:700 2rem/1.1 ui-monospace,Consolas,monospace;letter-spacing:.12em;color:var(--red)}.code small{color:var(--ink-soft);font-size:.75rem}.seg{display:flex;flex-wrap:wrap;gap:6px}.seg button{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:999px;padding:6px 12px;font:700 .88rem var(--sans);cursor:pointer}.seg button.on{background:var(--red);border-color:var(--red);color:#fff}.empty{background:var(--card);border:1px dashed var(--line);border-radius:14px;padding:18px}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th{text-align:left;font-size:.78rem;color:var(--ink-soft);font-weight:700;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}th span{margin-left:4px}td{padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:middle}td small{display:block;color:var(--ink-soft);font-size:.75rem}td.acc{text-align:center;font-weight:700;border-radius:6px;white-space:nowrap}td.acc small{display:inline;margin-left:4px;font-weight:400}.acc.good{color:var(--good);background:var(--good-bg)}.acc.mid{color:var(--mid);background:var(--mid-bg)}.acc.low{color:var(--low);background:var(--low-bg)}.acc.none{color:var(--ink-soft)}td.acts{white-space:nowrap;text-align:right}td.acts .btn+.btn{margin-left:4px}.legend{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:.8rem;margin:8px 0 0}.legend .acc{padding:1px 8px;border-radius:6px;font-weight:700}b.good{color:var(--good)}b.mid{color:var(--mid)}b.low{color:var(--low)}.topics{display:flex;flex-direction:column;gap:6px}.topic{display:grid;grid-template-columns:minmax(150px,1.2fr) 2fr 48px 64px;align-items:center;gap:10px;font-size:.9rem}.topic small{color:var(--ink-soft)}.bar{height:10px;background:var(--paper-2);border-radius:6px;overflow:hidden}.bar i{display:block;height:100%;border-radius:6px}.bar i.good{background:var(--good)}.bar i.mid{background:var(--gold)}.bar i.low{background:var(--low)}.danger-zone{background:none!important;border:0!important;text-align:right;padding:0!important}.dlg-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#140e0873;display:grid;place-items:center;padding:16px;z-index:10}.dlg{background:var(--card);border-radius:14px;padding:18px 20px;max-width:420px;width:100%;box-shadow:0 12px 40px #0000004d}.bigpass{font:700 1.8rem ui-monospace,Consolas,monospace;letter-spacing:.1em;text-align:center;background:var(--paper-2);border-radius:10px;padding:10px;color:var(--red)}@media(max-width:760px){.layout{grid-template-columns:1fr;padding:12px 16px}.topic{grid-template-columns:1fr 1fr 44px}.topic small{display:none}}.top-side{display:flex;flex-direction:column;align-items:stretch;gap:8px}.taskform{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:8px 0 12px}.taskform label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;font-weight:600}.taskform select,.taskform input{font:inherit;padding:7px 9px;border:1px solid #d9cba9;border-radius:8px;background:#fff}.taskform select{max-width:340px}.taskform input[type=number]{width:90px}.tasks{display:flex;flex-direction:column;gap:8px}.task{border:1px solid #e3d6b5;border-radius:10px;background:#fffdf7;padding:8px 12px}.task.over{opacity:.7}.task summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none}.task summary>span:first-child{flex:1}.task summary i{color:#a33;font-style:normal}.tdone{white-space:nowrap}.tprog{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 16px;margin-top:8px}.tprog>div{display:grid;grid-template-columns:1fr 80px auto;gap:8px;align-items:center;font-size:.85rem}.tprog>div i{height:8px;border-radius:4px;background:linear-gradient(90deg,#5a9a4a var(--p),#eee6d2 var(--p))}.tprog>div.ok b{color:#2f7a35}.tprog>div.in-prog b{color:#a06e12}.grade-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 6px}.g-tab{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:4px 11px;font:600 .82rem var(--sans);cursor:pointer}.g-tab:hover{border-color:var(--gold)}.g-tab.on{background:var(--paper-2);border-color:var(--gold);color:var(--red);font-weight:700}.weak-callout{display:flex;align-items:center;gap:12px;background:#fff8eb;border:1px solid #fedb9b;border-left:4px solid var(--gold);border-radius:8px;padding:10px 14px;margin:10px 0}.weak-callout-icon{font-size:1.4rem}.weak-callout-info{flex:1;font-size:.9rem;line-height:1.35;color:var(--ink)}.task-badges{display:flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;white-space:nowrap}.badge-done{background:#e3f3e2;color:#23632c;border:1px solid #c2e5bf;padding:2px 7px;border-radius:6px}.badge-prog{background:#fdf3dc;color:#8f6004;border:1px solid #fae2af;padding:2px 7px;border-radius:6px}.badge-none{background:#f3efe6;color:#736b5c;border:1px solid #e2dac9;padding:2px 7px;border-radius:6px}.panel-logo{display:block;width:min(220px,70%);height:auto;margin:0 auto 6px}.attention.has{border-left:4px solid #d98a2b;padding-left:12px}.attention.none{border-left:4px solid #4c9a52;padding-left:12px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{background:#fff3d6;border:1px solid #ecd08a;border-radius:999px;padding:4px 12px;font-size:.9rem}.contest{background:#fffaf0;border:1px solid #e6d3a6;border-radius:12px;padding:12px 14px;margin:10px 0}.contest.live{border-color:#c4943f;box-shadow:0 0 0 2px #c4943f2e}.contest-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}.contest-head .btn{margin-left:auto}.rank{list-style:none;margin:0;padding:0;display:grid;gap:4px}.rank li{display:grid;grid-template-columns:2.2rem 1fr auto;align-items:center;gap:8px}.rank em{font-style:normal;font-weight:700}.contest-past{margin-top:10px}
