:root{--bg:#0f1420;--panel:#171e2e;--panel2:#1e2740;--line:#2a3552;--txt:#e6eaf5;--sub:#8b96b3;--blue:#4f8cff;--orange:#ff9f43;--purple:#a66cff;--green:#2ecc71;--gray:#7f8c9b;--red:#ff5c5c;--yellow:#ffd32a}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--txt);font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif}#app{display:flex;min-height:100vh}nav{width:200px;background:var(--panel);border-right:1px solid var(--line);padding:16px 10px;position:sticky;top:0;height:100vh;flex-shrink:0}nav h1{font-size:15px;color:var(--blue);margin-bottom:14px;padding:0 8px}.navitem{padding:9px 12px;border-radius:8px;cursor:pointer;color:var(--sub);font-size:14px;margin-bottom:2px}.navitem:hover{background:var(--panel2)}.navitem.active{background:var(--blue);color:#fff}.badge{float:right;background:var(--red);color:#fff;border-radius:8px;font-size:11px;padding:0 6px}main{flex:1;padding:22px 26px;max-width:1100px}h2{font-size:20px;margin-bottom:14px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:16px}.metric{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:12px}.metric .v{font-size:22px;font-weight:700;color:var(--blue)}.metric .l{font-size:12px;color:var(--sub);margin-top:4px}.metric.warn .v{color:var(--yellow)}.metric.danger .v{color:var(--red)}.taskrow{display:flex;align-items:flex-start;gap:10px;padding:10px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:var(--panel2)}.taskrow.done{opacity:.55}.taskrow .body{flex:1}.taskrow .title{font-size:14px;font-weight:600}.taskrow .meta{font-size:12px;color:var(--sub);margin-top:3px}.taskrow .steps{font-size:12px;color:var(--sub);margin-top:4px;white-space:pre-wrap}.tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:6px;margin-right:4px}.btn{background:var(--blue);color:#fff;border:0;border-radius:8px;padding:6px 12px;font-size:13px;cursor:pointer;white-space:nowrap}.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--sub)}.btn.green{background:var(--green)}.btn.red{background:var(--red)}.btn.orange{background:var(--orange)}.btn:disabled{opacity:.4;cursor:not-allowed}select,input,textarea{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:7px 10px;font-size:13px;width:100%}textarea{min-height:60px}label{font-size:12px;color:var(--sub);display:block;margin:8px 0 4px}.block-title{font-size:13px;color:var(--sub);margin:14px 0 8px;border-left:3px solid var(--blue);padding-left:8px}.c-综合{background:var(--blue)}.c-案例{background:var(--orange)}.c-论文{background:var(--purple)}.c-测验{background:var(--green)}.c-复盘{background:var(--gray)}.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.calday{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px;min-height:150px;font-size:12px}.calday h4{font-size:12px;margin-bottom:6px}.ct{border-radius:6px;padding:3px 6px;margin-bottom:4px;color:#fff;cursor:pointer;font-size:11px}.q{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:10px;background:var(--panel2)}.q .opt{display:block;padding:6px 10px;border-radius:6px;cursor:pointer;margin-top:4px;border:1px solid transparent}.q .opt:hover{background:var(--panel)}.q .opt.sel{border-color:var(--blue);background:#22407a}table{width:100%;border-collapse:collapse;font-size:13px}th,td{border-bottom:1px solid var(--line);padding:8px;text-align:left}th{color:var(--sub);font-size:12px}.flex{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.timer{font-variant-numeric:tabular-nums;font-weight:700;color:var(--green)}.muted{color:var(--sub);font-size:12px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:99}.modal .box{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px;width:460px;max-height:80vh;overflow:auto}
