:root{--bg:#f5f6fa;--card:#fff;--tx:#1e2230;--mu:#7a8094;--line:#e6e8ef;--ac:#6366f1;--we:rgba(100,110,140,.07);--tdbg:rgba(99,102,241,.10);--r:12px}
@media(prefers-color-scheme:dark){:root{--bg:#12141c;--card:#1b1e29;--tx:#e8eaf2;--mu:#8b91a7;--line:#2a2e3d;--we:rgba(255,255,255,.035);--tdbg:rgba(99,102,241,.2)}}
*{box-sizing:border-box}
body{margin:0;font:14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--tx)}
a{color:var(--ac)}
header{display:flex;align-items:center;gap:16px;padding:10px 18px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.logo{font-weight:700;font-size:18px;color:var(--ac)}
nav{display:flex;gap:4px;flex:1;overflow-x:auto}
button,input,select,textarea{font:inherit;color:inherit}
button{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:6px 12px;cursor:pointer;white-space:nowrap}
button:hover{border-color:var(--ac)}
nav button{border:0;background:none;color:var(--mu)}
nav button.on{background:var(--tdbg);color:var(--ac);font-weight:600}
button.pri{background:var(--ac);border-color:var(--ac);color:#fff}
button.danger{color:#ef4444}
input,select,textarea{border:1px solid var(--line);background:var(--bg);border-radius:8px;padding:7px 10px;width:100%}
label{display:block;font-size:12px;color:var(--mu);margin-top:8px}
label input,label select{margin-top:3px;color:var(--tx)}
main{padding:16px;max-width:1600px;margin:auto}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px;min-width:0}
h3{margin:0 0 10px;font-size:15px}h4{margin:18px 0 8px;font-size:13px;color:var(--mu)}
.muted{color:var(--mu)}.late{color:#ef4444}.sp{flex:1}
.row{display:flex;gap:8px;align-items:center}.row.end{margin-top:14px}
.home{display:grid;grid-template-columns:380px minmax(0,1fr);gap:14px;align-items:start}
@media(max-width:950px){.home,.notes{grid-template-columns:1fr!important}}
#qa{display:flex;gap:6px;margin-bottom:8px}#qa #qd{width:150px}
.list{list-style:none;margin:8px 0 0;padding:0}.plain{margin:0;padding-left:18px;color:var(--mu)}
.item{display:flex;align-items:center;gap:10px;padding:8px 2px;border-bottom:1px solid var(--line)}
.item .mid{flex:1;min-width:0;cursor:pointer}
.item .t{font-weight:500;overflow:hidden;text-overflow:ellipsis}
.meta{font-size:12px;color:var(--mu);display:flex;gap:10px;flex-wrap:wrap}
.bump{width:42px;height:42px;border-radius:50%;font-size:22px;padding:0;background:var(--tdbg);color:var(--ac);border:0;flex:none}
.bump:active{transform:scale(.86);background:var(--ac);color:#fff}
.chk{width:18px;height:18px;flex:none}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%}
.tlbar{display:flex;align-items:center;gap:12px;margin-bottom:8px}.tlbar h3{margin:0}
.tlwrap{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.tlnames{flex:0 0 190px;border-right:1px solid var(--line);background:var(--card);z-index:2}
.tlnames .h{height:52px;border-bottom:1px solid var(--line)}
.tn{height:36px;line-height:35px;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-size:13px;border-bottom:1px solid var(--line)}
.tlscroll{flex:1;overflow-x:auto;min-width:0}
.tlin{position:relative}
.mrow{height:24px;position:relative}
.ms{position:absolute;top:0;height:24px;line-height:24px;padding-left:6px;font-size:12px;font-weight:600;border-left:1px solid var(--line);overflow:hidden;white-space:nowrap}
.drow{display:flex;height:28px;border-bottom:1px solid var(--line)}
.dh{flex:0 0 34px;text-align:center;font-size:11px;line-height:28px;color:var(--mu)}
.dh.td{color:var(--ac);font-weight:700}
.tbody{position:relative;background:repeating-linear-gradient(to bottom,transparent 0,transparent 35px,var(--line) 35px,var(--line) 36px)}
.cols{position:absolute;inset:0;display:flex}
.dc{flex:0 0 34px}.dc.we{background:var(--we)}.dc.td{background:var(--tdbg)}
.bar{position:absolute;height:26px;border-radius:7px;color:#fff;font-size:12px;line-height:26px;padding:0 10px;overflow:hidden;white-space:nowrap;cursor:grab;touch-action:none;user-select:none;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.bar.late{outline:2px solid #ef4444;outline-offset:1px}.bar.done{opacity:.45;text-decoration:line-through}
.bar span{pointer-events:none}.rs{position:absolute;right:0;top:0;width:9px;height:100%;cursor:ew-resize}
.notes{display:grid;grid-template-columns:290px minmax(0,1fr);gap:14px;align-items:start}
.ntitle{font-size:18px;font-weight:600}
.tb{display:flex;gap:4px;flex-wrap:wrap;margin:10px 0}.tb button{padding:4px 10px}
.ed{min-height:55vh;padding:14px;border:1px solid var(--line);border-radius:8px;outline:none;background:var(--bg);line-height:1.6}
.ed img{max-width:100%;border-radius:6px;cursor:pointer}
.ed h2,.ed h3{margin:.6em 0 .3em}
.nitem{padding:9px 6px;border-bottom:1px solid var(--line);cursor:pointer}.nitem.on{background:var(--tdbg)}
.nitem b{display:block}.nitem span{font-size:12px;color:var(--mu)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:12px}
.stat{background:var(--bg);border-radius:10px;padding:10px 12px}.stat b{display:block;font-size:24px}.stat span{font-size:12px;color:var(--mu)}
.chart{display:flex;align-items:flex-end;gap:2px;height:150px;padding-bottom:18px}.chart.small{height:120px}
.col{flex:1;position:relative;height:100%;display:flex;align-items:flex-end}
.col b{display:block;width:100%;background:var(--ac);border-radius:3px 3px 0 0;min-height:2px}
.col i{position:absolute;bottom:-17px;left:50%;transform:translateX(-50%);font-size:10px;color:var(--mu);font-style:normal;white-space:nowrap}
.two{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media(max-width:700px){.two{grid-template-columns:1fr}}
.scroll{overflow-x:auto}table{border-collapse:collapse;width:100%}td,th{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;font-size:13px}
dialog{border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--tx);width:min(520px,94vw);padding:18px}
dialog::backdrop{background:rgba(0,0,0,.45)}
dialog input,dialog textarea{margin-top:6px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.chips button{padding:3px 9px;font-size:12px}
#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,80px);background:#222637;color:#fff;padding:10px 16px;border-radius:10px;opacity:0;transition:.25s;z-index:99;max-width:90vw}
#toast.on{transform:translate(-50%,0);opacity:1}#toast a{color:#a5b4fc;margin-left:8px}
body.login{display:grid;place-items:center;min-height:100vh}.lg{width:min(340px,90vw);display:grid;gap:12px;text-align:center}
