:root{--g:#1f8a33;--gd:#166a27;--c:#2b2d2f;--bg:#f3f4f5;--line:#d7dadd;--red:#b3261e;--amber:#9a5b00}
*{box-sizing:border-box}
body{margin:0;font:16px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--c);background:var(--bg)}
header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:#fff;border-bottom:3px solid var(--g);position:sticky;top:0;z-index:5}
.logo{height:38px}#who{font-size:14px;color:#555}
main{max-width:980px;margin:0 auto;padding:14px 14px 80px}
h1{font-size:22px;margin:6px 0 12px}h2{font-size:18px;margin:0 0 8px}
.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:14px}
label{display:block;font-weight:600;font-size:14px;margin:10px 0 3px}
input,select,textarea{width:100%;font:inherit;padding:11px;border:1px solid #aab0b5;border-radius:8px;background:#fff}
textarea{min-height:70px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--g);border-color:var(--g)}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 10px}
@media(max-width:520px){.grid{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:1fr 1fr}}
.full{grid-column:1/-1}
button,.btn{font:inherit;font-weight:700;border:0;border-radius:8px;padding:12px 16px;background:var(--g);color:#fff;cursor:pointer;text-decoration:none;display:inline-block;text-align:center}
button.sec,.btn.sec{background:#fff;color:var(--c);border:1px solid #aab0b5}
button.danger{background:var(--red)}button:disabled{opacity:.5}
.row{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;align-items:center}
.row>*{flex:1 1 auto}
.job{display:flex;justify-content:space-between;align-items:center;padding:13px;border-bottom:1px solid var(--line);cursor:pointer}
.job:hover{background:#f0f8f1}.job small{color:#666}
.badge{font-size:12px;font-weight:700;padding:3px 8px;border-radius:99px;background:#e5e7e9;white-space:nowrap}
.badge.g{background:#dff1e2;color:var(--gd)}.badge.a{background:#fdecc8;color:var(--amber)}.badge.r{background:#f9dedc;color:var(--red)}
.stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}
.stat div{background:var(--bg);border-radius:8px;padding:10px}.stat b{display:block;font-size:22px}.stat span{font-size:12px;color:#555}
.cmp{padding:12px;border-radius:8px;margin-top:10px;font-weight:600}
.cmp.more{background:#dff1e2}.cmp.less{background:#fdecc8}.cmp.even{background:#e5e7e9}
.internal{font-size:12px;color:var(--amber);font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.pile{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:10px;background:#fff}
.pile.void{opacity:.55;text-decoration:line-through}
.pile .head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.reads{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.reads span{background:var(--bg);border-radius:6px;padding:3px 8px;font-size:13px}
.meta{font-size:13px;color:#555}
.err{background:#f9dedc;color:var(--red);padding:10px;border-radius:8px;margin-top:10px;font-weight:600}
.warn{color:var(--amber);font-weight:700;font-size:13px}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;justify-content:center;z-index:20}
@media(min-width:700px){.modal{align-items:center}}
.sheet{background:#fff;width:100%;max-width:560px;max-height:92vh;overflow:auto;border-radius:14px 14px 0 0;padding:16px}
@media(min-width:700px){.sheet{border-radius:14px}}
#toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--c);color:#fff;padding:10px 16px;border-radius:99px;opacity:0;transition:opacity .25s;pointer-events:none;z-index:30}
#toast.on{opacity:1}
.hist{border-left:3px solid var(--g);padding:4px 10px;margin:8px 0;font-size:14px}
.back{background:none;border:0;color:var(--gd);padding:4px 0;font-weight:700}
.hint{font-size:12px;color:#666;margin-top:2px}

.ht{width:100%;border-collapse:collapse;font-size:14px}.ht th,.ht td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}.ht th{background:var(--bg)}

.planwrap{overflow:auto;border:1px solid var(--line);border-radius:6px;background:#fff;-webkit-overflow-scrolling:touch}
.pinstage{max-height:55vh;touch-action:pan-x pan-y pinch-zoom}
.planbox{position:relative;width:100%}
.planbox img{width:100%;display:block;user-select:none;-webkit-user-drag:none}
.pin{position:absolute;transform:translate(-50%,-50%);min-width:18px;height:18px;padding:0 3px;border-radius:99px;background:var(--g);color:#fff;border:2px solid #fff;font-size:10px;font-weight:700;line-height:14px;text-align:center;box-shadow:0 0 0 1px rgba(0,0,0,.35);pointer-events:auto}
.pin.sel{background:var(--red);transform:translate(-50%,-50%) scale(1.3);z-index:2}
.chips{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}
.chip{padding:4px 8px;border-radius:99px;font-size:13px;min-width:34px;background:#fff;color:var(--c);border:1px solid #aab0b5}
.chip.done{background:#dff1e2;border-color:var(--g)}.chip.on{outline:3px solid var(--c)}

.refrow{display:flex;gap:8px;align-items:flex-start;font-weight:600;background:#fdecc8;border-radius:8px;padding:10px;margin-top:12px}.refrow input{margin-top:3px}
